Commonwealth Bank Capabilities

Naftiko 0.5 capability definitions for Commonwealth Bank - 100 capabilities showing integration workflows and service orchestrations.

Sort
Expand

Checks the health and connectivity status of an Albert POS terminal.

naftiko: "0.5"
info:
  label: "Albert POS Terminal Status"
  description: "Checks the health and connectivity status of an Albert POS terminal."
  tags:
    - merchant-services
    - albert-pos
capability:
  exposes:
    - type: mcp
      namespace: merchant-services
      port: 8080
      tools:
        - name: get-data
          description: "Checks the health and connectivity status of an Albert POS terminal."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary identifier."
          call: "albert_pos.get-data"
          with:
            input_id: "{{input_id}}"
  consumes:
    - type: http
      namespace: albert_pos
      baseUri: "https://api.internal.commbank.com.au/merchant-services/v1"
      authentication:
        type: bearer
        token: "$secrets.albert_pos_token"
      resources:
        - name: data
          path: "/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: get-data
              method: GET

Retrieves the status of an Alteryx workflow execution, returning workflow name, run status, output record count, and duration.

naftiko: "0.5"
info:
  label: "Alteryx Data Workflow Status"
  description: "Retrieves the status of an Alteryx workflow execution, returning workflow name, run status, output record count, and duration."
  tags:
    - data-engineering
    - alteryx
    - etl
capability:
  exposes:
    - type: mcp
      namespace: data-engineering
      port: 8080
      tools:
        - name: get-workflow-status
          description: "Look up an Alteryx workflow execution status. Returns name, status, output records, and duration."
          inputParameters:
            - name: job_id
              in: body
              type: string
              description: "The Alteryx workflow job ID."
          call: "alteryx.get-job"
          with:
            job_id: "{{job_id}}"
          outputParameters:
            - name: workflow_name
              type: string
              mapping: "$.name"
            - name: status
              type: string
              mapping: "$.status"
            - name: output_records
              type: number
              mapping: "$.outputRecordCount"
            - name: duration_seconds
              type: number
              mapping: "$.duration"
  consumes:
    - type: http
      namespace: alteryx
      baseUri: "https://alteryx.internal.commbank.com.au/api/v3"
      authentication:
        type: bearer
        token: "$secrets.alteryx_token"
      resources:
        - name: jobs
          path: "/jobs/{{job_id}}"
          inputParameters:
            - name: job_id
              in: path
          operations:
            - name: get-job
              method: GET

When a high-value transaction is flagged, pulls transaction details from core banking, screens the counterparty against sanctions lists, and files a suspicious activity report in ServiceNow if warranted.

naftiko: "0.5"
info:
  label: "AML Transaction Screening Pipeline"
  description: "When a high-value transaction is flagged, pulls transaction details from core banking, screens the counterparty against sanctions lists, and files a suspicious activity report in ServiceNow if warranted."
  tags:
    - aml
    - compliance
    - sanctions
    - servicenow
    - transaction-monitoring
capability:
  exposes:
    - type: mcp
      namespace: aml-compliance
      port: 8080
      tools:
        - name: screen-transaction
          description: "Given a transaction ID, screen the counterparty against sanctions and compliance databases and file a report if needed."
          inputParameters:
            - name: transaction_id
              in: body
              type: string
              description: "The core banking transaction identifier."
            - name: threshold_amount
              in: body
              type: number
              description: "The AML reporting threshold amount in AUD."
          steps:
            - name: get-transaction
              type: call
              call: "core-banking.get-transaction"
              with:
                transaction_id: "{{transaction_id}}"
            - name: screen-counterparty
              type: call
              call: "sanctions.screen-entity"
              with:
                entity_name: "{{get-transaction.counterparty_name}}"
                country: "{{get-transaction.counterparty_country}}"
            - name: file-report
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "AML Alert: {{get-transaction.counterparty_name}} - TXN {{transaction_id}}"
                category: "aml_compliance"
                description: "Transaction amount: {{get-transaction.amount}} {{get-transaction.currency}}. Sanctions match: {{screen-counterparty.match_status}}. Score: {{screen-counterparty.risk_score}}."
  consumes:
    - type: http
      namespace: core-banking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: transactions
          path: "/transactions/{{transaction_id}}"
          inputParameters:
            - name: transaction_id
              in: path
          operations:
            - name: get-transaction
              method: GET
    - type: http
      namespace: sanctions
      baseUri: "https://api.internal.commbank.com.au/compliance/v1"
      authentication:
        type: bearer
        token: "$secrets.sanctions_token"
      resources:
        - name: screening
          path: "/sanctions/screen"
          operations:
            - name: screen-entity
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://commbank.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST

Investigates AML alerts by pulling transaction data, running enhanced due diligence, and filing reports.

naftiko: "0.5"
info:
  label: "Anti-Money Laundering Investigation Pipeline"
  description: "Investigates AML alerts by pulling transaction data, running enhanced due diligence, and filing reports."
  tags:
    - compliance
    - aml
    - austrac
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: anti-money-laundering-investigation
      port: 8080
      tools:
        - name: run-anti-money-laundering-investigation
          description: "Investigates AML alerts by pulling transaction data, running enhanced due diligence, and filing reports."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "corebanking.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "compliance.run-check"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: compliance
      baseUri: "https://api.internal.commbank.com.au/compliance/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: checks
          path: "/checks"
          operations:
            - name: run-check
              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/messages"
          operations:
            - name: send-notification
              method: POST

Onboards API developers by provisioning sandbox access, creating portal accounts, and sending documentation.

naftiko: "0.5"
info:
  label: "API Developer Onboarding Pipeline"
  description: "Onboards API developers by provisioning sandbox access, creating portal accounts, and sending documentation."
  tags:
    - developer-platform
    - api-gateway
    - apigee
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: api-developer-onboarding
      port: 8080
      tools:
        - name: run-api-developer-onboarding-pipeline
          description: "Onboards API developers by provisioning sandbox access, creating portal accounts, and sending documentation."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "corebanking.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "salesforce.get-account"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "outlook.send-email"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://commbank.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Retrieves APRA prudential reporting data including capital adequacy ratios.

naftiko: "0.5"
info:
  label: "APRA Prudential Data Lookup"
  description: "Retrieves APRA prudential reporting data including capital adequacy ratios."
  tags:
    - regulatory
    - apra
capability:
  exposes:
    - type: mcp
      namespace: regulatory
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves APRA prudential reporting data including capital adequacy ratios."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary identifier."
          call: "apra.get-data"
          with:
            input_id: "{{input_id}}"
  consumes:
    - type: http
      namespace: apra
      baseUri: "https://api.internal.commbank.com.au/regulatory/v1"
      authentication:
        type: bearer
        token: "$secrets.apra_token"
      resources:
        - name: data
          path: "/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: get-data
              method: GET

Forecasts ATM cash demand by analyzing transaction patterns, running ML predictions, and scheduling replenishment.

naftiko: "0.5"
info:
  label: "ATM Cash Forecasting Pipeline"
  description: "Forecasts ATM cash demand by analyzing transaction patterns, running ML predictions, and scheduling replenishment."
  tags:
    - operations
    - atm
    - snowflake
    - machine-learning
capability:
  exposes:
    - type: mcp
      namespace: atm-cash-forecasting
      port: 8080
      tools:
        - name: run-atm-cash-forecasting-pipeline
          description: "Forecasts ATM cash demand by analyzing transaction patterns, running ML predictions, and scheduling replenishment."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "snowflake.execute-query"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "ml.run-model"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://commbank.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: ml
      baseUri: "https://ml.internal.commbank.com.au/v1"
      authentication:
        type: bearer
        token: "$secrets.ml_token"
      resources:
        - name: models
          path: "/predict"
          operations:
            - name: run-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/messages"
          operations:
            - name: send-notification
              method: POST

Retrieves cash transaction threshold report details submitted to AUSTRAC.

naftiko: "0.5"
info:
  label: "AUSTRAC CTT Report Lookup"
  description: "Retrieves cash transaction threshold report details submitted to AUSTRAC."
  tags:
    - compliance
    - austrac
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves cash transaction threshold report details submitted to AUSTRAC."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary identifier."
          call: "austrac.get-data"
          with:
            input_id: "{{input_id}}"
  consumes:
    - type: http
      namespace: austrac
      baseUri: "https://api.internal.commbank.com.au/compliance/v1"
      authentication:
        type: bearer
        token: "$secrets.austrac_token"
      resources:
        - name: data
          path: "/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: get-data
              method: GET

Triggers a release pipeline in Azure DevOps for a given project and definition, then posts the release status to Microsoft Teams.

naftiko: "0.5"
info:
  label: "Azure DevOps Release Pipeline Trigger"
  description: "Triggers a release pipeline in Azure DevOps for a given project and definition, then posts the release status to Microsoft Teams."
  tags:
    - ci-cd
    - azure-devops
    - microsoft-teams
    - deployment
capability:
  exposes:
    - type: mcp
      namespace: release-management
      port: 8080
      tools:
        - name: trigger-release
          description: "Trigger an Azure DevOps release pipeline and notify the team in Microsoft Teams with release status."
          inputParameters:
            - name: project
              in: body
              type: string
              description: "The Azure DevOps project name."
            - name: definition_id
              in: body
              type: string
              description: "The release definition ID."
            - name: artifact_version
              in: body
              type: string
              description: "The build artifact version to deploy."
          steps:
            - name: create-release
              type: call
              call: "azdo.create-release"
              with:
                project: "{{project}}"
                definition_id: "{{definition_id}}"
                artifact_version: "{{artifact_version}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "releases"
                text: "Release triggered: {{project}} definition {{definition_id}} version {{artifact_version}}. Release ID: {{create-release.id}}. Status: {{create-release.status}}."
  consumes:
    - type: http
      namespace: azdo
      baseUri: "https://vsrm.dev.azure.com/commbank"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azdo_pat"
      resources:
        - name: releases
          path: "/{{project}}/_apis/release/releases"
          inputParameters:
            - name: project
              in: path
          operations:
            - name: create-release
              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: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves the current deployment status of a workload on Azure Kubernetes Service, returning replica count, available replicas, and image version.

naftiko: "0.5"
info:
  label: "Azure Kubernetes Deployment Status"
  description: "Retrieves the current deployment status of a workload on Azure Kubernetes Service, returning replica count, available replicas, and image version."
  tags:
    - platform
    - kubernetes
    - azure-kubernetes-service
    - deployment
capability:
  exposes:
    - type: mcp
      namespace: platform-ops
      port: 8080
      tools:
        - name: get-deployment-status
          description: "Look up the deployment status of an AKS workload. Returns replica count, available replicas, and image version."
          inputParameters:
            - name: cluster_name
              in: body
              type: string
              description: "The AKS cluster name."
            - name: namespace
              in: body
              type: string
              description: "The Kubernetes namespace."
            - name: deployment_name
              in: body
              type: string
              description: "The Kubernetes deployment name."
          call: "aks.get-deployment"
          with:
            cluster_name: "{{cluster_name}}"
            namespace: "{{namespace}}"
            deployment_name: "{{deployment_name}}"
          outputParameters:
            - name: replicas
              type: number
              mapping: "$.status.replicas"
            - name: available_replicas
              type: number
              mapping: "$.status.availableReplicas"
            - name: image
              type: string
              mapping: "$.spec.template.spec.containers[0].image"
  consumes:
    - type: http
      namespace: aks
      baseUri: "https://management.azure.com/subscriptions/{{subscription_id}}/resourceGroups/{{rg}}/providers/Microsoft.ContainerService/managedClusters"
      authentication:
        type: bearer
        token: "$secrets.azure_token"
      resources:
        - name: deployments
          path: "/{{cluster_name}}/apis/apps/v1/namespaces/{{namespace}}/deployments/{{deployment_name}}"
          inputParameters:
            - name: cluster_name
              in: path
            - name: namespace
              in: path
            - name: deployment_name
              in: path
          operations:
            - name: get-deployment
              method: GET

Retrieves real-time market data from Bloomberg Enterprise Data for a given instrument, returning last price, bid, ask, and volume.

naftiko: "0.5"
info:
  label: "Bloomberg Market Data Snapshot"
  description: "Retrieves real-time market data from Bloomberg Enterprise Data for a given instrument, returning last price, bid, ask, and volume."
  tags:
    - trading
    - market-data
    - bloomberg
    - bloomberg-enterprise-data
capability:
  exposes:
    - type: mcp
      namespace: market-data
      port: 8080
      tools:
        - name: get-market-snapshot
          description: "Retrieve real-time market data for an instrument from Bloomberg. Returns last price, bid, ask, and volume."
          inputParameters:
            - name: instrument_id
              in: body
              type: string
              description: "The Bloomberg instrument identifier (e.g., AUDUSD Curncy)."
          call: "bloomberg.get-instrument"
          with:
            instrument_id: "{{instrument_id}}"
          outputParameters:
            - name: last_price
              type: number
              mapping: "$.data.PX_LAST"
            - name: bid
              type: number
              mapping: "$.data.PX_BID"
            - name: ask
              type: number
              mapping: "$.data.PX_ASK"
            - name: volume
              type: number
              mapping: "$.data.VOLUME"
  consumes:
    - type: http
      namespace: bloomberg
      baseUri: "https://bsapi.bloomberg.com/eap/catalogs/bbg/datasets"
      authentication:
        type: bearer
        token: "$secrets.bloomberg_token"
      resources:
        - name: instruments
          path: "/snapshots/{{instrument_id}}"
          inputParameters:
            - name: instrument_id
              in: path
          operations:
            - name: get-instrument
              method: GET

Retrieves a document from Box by file ID, returning file name, size, download URL, and last modified date.

naftiko: "0.5"
info:
  label: "Box Document Retrieval"
  description: "Retrieves a document from Box by file ID, returning file name, size, download URL, and last modified date."
  tags:
    - document-management
    - box
capability:
  exposes:
    - type: mcp
      namespace: document-store
      port: 8080
      tools:
        - name: get-document
          description: "Retrieve a document from Box by file ID. Returns file name, size, download URL, and last modified."
          inputParameters:
            - name: file_id
              in: body
              type: string
              description: "The Box file ID."
          call: "box.get-file"
          with:
            file_id: "{{file_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.name"
            - name: size
              type: number
              mapping: "$.size"
            - name: download_url
              type: string
              mapping: "$.shared_link.download_url"
            - name: modified_at
              type: string
              mapping: "$.modified_at"
  consumes:
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files/{{file_id}}"
          inputParameters:
            - name: file_id
              in: path
          operations:
            - name: get-file
              method: GET

Retrieves BPAY payment transaction status by payment reference.

naftiko: "0.5"
info:
  label: "BPAY Payment Status Lookup"
  description: "Retrieves BPAY payment transaction status by payment reference."
  tags:
    - payments
    - bpay
capability:
  exposes:
    - type: mcp
      namespace: payments
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves BPAY payment transaction status by payment reference."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary identifier."
          call: "bpay.get-data"
          with:
            input_id: "{{input_id}}"
  consumes:
    - type: http
      namespace: bpay
      baseUri: "https://api.internal.commbank.com.au/payments/v1"
      authentication:
        type: bearer
        token: "$secrets.bpay_token"
      resources:
        - name: data
          path: "/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: get-data
              method: GET

Generates branch performance reports by pulling metrics from Salesforce, computing KPIs, and refreshing dashboards.

naftiko: "0.5"
info:
  label: "Branch Performance Reporting Pipeline"
  description: "Generates branch performance reports by pulling metrics from Salesforce, computing KPIs, and refreshing dashboards."
  tags:
    - operations
    - salesforce
    - snowflake
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: branch-performance-reporting
      port: 8080
      tools:
        - name: run-branch-performance-reporting-pipeli
          description: "Generates branch performance reports by pulling metrics from Salesforce, computing KPIs, and refreshing dashboards."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "salesforce.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "snowflake.execute-query"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "powerbi.refresh-dataset"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://commbank.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://commbank.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: "/datasets/refresh"
          operations:
            - name: refresh-dataset
              method: POST

Opens new business accounts by verifying ABN/ACN, running AML checks, and provisioning the account.

naftiko: "0.5"
info:
  label: "Business Account Opening Pipeline"
  description: "Opens new business accounts by verifying ABN/ACN, running AML checks, and provisioning the account."
  tags:
    - business-banking
    - compliance
    - core-banking
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: business-account-opening
      port: 8080
      tools:
        - name: run-business-account-opening-pipeline
          description: "Opens new business accounts by verifying ABN/ACN, running AML checks, and provisioning the account."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "compliance.run-check"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "corebanking.get-account"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: compliance
      baseUri: "https://api.internal.commbank.com.au/compliance/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: checks
          path: "/checks"
          operations:
            - name: run-check
              method: POST
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              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/messages"
          operations:
            - name: send-notification
              method: POST

Assesses business lending by pulling financials from Xero, running credit scoring, and routing for approval via Salesforce.

naftiko: "0.5"
info:
  label: "Business Lending Assessment Pipeline"
  description: "Assesses business lending by pulling financials from Xero, running credit scoring, and routing for approval via Salesforce."
  tags:
    - lending
    - business-banking
    - xero
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: business-lending-assessment
      port: 8080
      tools:
        - name: run-business-lending-assessment-pipelin
          description: "Assesses business lending by pulling financials from Xero, running credit scoring, and routing for approval via Salesforce."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "xero.get-accounts"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "ml.run-model"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "salesforce.get-account"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: xero
      baseUri: "https://api.xero.com/api.xro/2.0"
      authentication:
        type: bearer
        token: "$secrets.xero_token"
      resources:
        - name: accounts
          path: "/Accounts"
          operations:
            - name: get-accounts
              method: GET
    - type: http
      namespace: ml
      baseUri: "https://ml.internal.commbank.com.au/v1"
      authentication:
        type: bearer
        token: "$secrets.ml_token"
      resources:
        - name: models
          path: "/predict"
          operations:
            - name: run-model
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://commbank.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account"
          operations:
            - name: get-account
              method: GET

Retrieves automated property valuation estimate for a given property address.

naftiko: "0.5"
info:
  label: "CBA Property Valuation Lookup"
  description: "Retrieves automated property valuation estimate for a given property address."
  tags:
    - lending
    - property-valuation
capability:
  exposes:
    - type: mcp
      namespace: lending
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves automated property valuation estimate for a given property address."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary identifier."
          call: "property_valuation.get-data"
          with:
            input_id: "{{input_id}}"
  consumes:
    - type: http
      namespace: property_valuation
      baseUri: "https://api.internal.commbank.com.au/lending/v1"
      authentication:
        type: bearer
        token: "$secrets.property_valuation_token"
      resources:
        - name: data
          path: "/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: get-data
              method: GET

Assesses climate risk for the loan portfolio by pulling property data, running climate models, and reporting.

naftiko: "0.5"
info:
  label: "Climate Risk Assessment Pipeline"
  description: "Assesses climate risk for the loan portfolio by pulling property data, running climate models, and reporting."
  tags:
    - risk-management
    - climate
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: climate-risk-assessment
      port: 8080
      tools:
        - name: run-climate-risk-assessment-pipeline
          description: "Assesses climate risk for the loan portfolio by pulling property data, running climate models, and reporting."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "snowflake.execute-query"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "ml.run-model"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://commbank.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: ml
      baseUri: "https://ml.internal.commbank.com.au/v1"
      authentication:
        type: bearer
        token: "$secrets.ml_token"
      resources:
        - name: models
          path: "/predict"
          operations:
            - name: run-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/messages"
          operations:
            - name: send-notification
              method: POST

Pulls Azure consumption data, identifies underutilized resources, creates a cost optimization recommendation in ServiceNow, and notifies the FinOps team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Cloud Cost Optimization Pipeline"
  description: "Pulls Azure consumption data, identifies underutilized resources, creates a cost optimization recommendation in ServiceNow, and notifies the FinOps team via Microsoft Teams."
  tags:
    - finops
    - cloud-cost
    - microsoft-azure
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: finops
      port: 8080
      tools:
        - name: optimize-cloud-costs
          description: "Given an Azure subscription ID, identify cost optimization opportunities and create recommendations."
          inputParameters:
            - name: subscription_id
              in: body
              type: string
              description: "The Azure subscription ID."
            - name: lookback_days
              in: body
              type: number
              description: "Number of days to analyze for usage patterns."
          steps:
            - name: get-consumption
              type: call
              call: "azure.get-consumption"
              with:
                subscription_id: "{{subscription_id}}"
                days: "{{lookback_days}}"
            - name: get-advisor-recommendations
              type: call
              call: "azure.get-advisor"
              with:
                subscription_id: "{{subscription_id}}"
                category: "Cost"
            - name: create-ticket
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Cloud cost optimization: {{subscription_id}}"
                description: "Total spend: ${{get-consumption.total_cost}}. Potential savings: ${{get-advisor-recommendations.estimated_savings}}. Top recommendations: {{get-advisor-recommendations.summary}}."
            - name: notify-finops
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "finops"
                text: "Cost optimization identified for subscription {{subscription_id}}: ${{get-advisor-recommendations.estimated_savings}} potential savings. ServiceNow task: {{create-ticket.number}}."
  consumes:
    - type: http
      namespace: azure
      baseUri: "https://management.azure.com/subscriptions"
      authentication:
        type: bearer
        token: "$secrets.azure_token"
      resources:
        - name: consumption
          path: "/{{subscription_id}}/providers/Microsoft.Consumption/usageDetails"
          inputParameters:
            - name: subscription_id
              in: path
          operations:
            - name: get-consumption
              method: GET
        - name: advisor
          path: "/{{subscription_id}}/providers/Microsoft.Advisor/recommendations"
          inputParameters:
            - name: subscription_id
              in: path
          operations:
            - name: get-advisor
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://commbank.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/sc_task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves managed fund details and unit prices from Colonial First State.

naftiko: "0.5"
info:
  label: "Colonial First State Fund Lookup"
  description: "Retrieves managed fund details and unit prices from Colonial First State."
  tags:
    - wealth-management
    - colonial-first-state
capability:
  exposes:
    - type: mcp
      namespace: wealth-management
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves managed fund details and unit prices from Colonial First State."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary identifier."
          call: "colonial_first_state.get-data"
          with:
            input_id: "{{input_id}}"
  consumes:
    - type: http
      namespace: colonial_first_state
      baseUri: "https://api.internal.commbank.com.au/wealth-management/v1"
      authentication:
        type: bearer
        token: "$secrets.colonial_first_state_token"
      resources:
        - name: data
          path: "/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: get-data
              method: GET

Retrieves mobile banking app session details for customer engagement analytics.

naftiko: "0.5"
info:
  label: "CommBank App Session Lookup"
  description: "Retrieves mobile banking app session details for customer engagement analytics."
  tags:
    - digital-banking
    - commbank-app
capability:
  exposes:
    - type: mcp
      namespace: digital-banking
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves mobile banking app session details for customer engagement analytics."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary identifier."
          call: "commbank_app.get-data"
          with:
            input_id: "{{input_id}}"
  consumes:
    - type: http
      namespace: commbank_app
      baseUri: "https://api.internal.commbank.com.au/digital-banking/v1"
      authentication:
        type: bearer
        token: "$secrets.commbank_app_token"
      resources:
        - name: data
          path: "/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: get-data
              method: GET

Retrieves loyalty rewards points balance and transaction history.

naftiko: "0.5"
info:
  label: "CommBank Rewards Points Lookup"
  description: "Retrieves loyalty rewards points balance and transaction history."
  tags:
    - loyalty
    - commbank-rewards
capability:
  exposes:
    - type: mcp
      namespace: loyalty
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves loyalty rewards points balance and transaction history."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary identifier."
          call: "commbank_rewards.get-data"
          with:
            input_id: "{{input_id}}"
  consumes:
    - type: http
      namespace: commbank_rewards
      baseUri: "https://api.internal.commbank.com.au/loyalty/v1"
      authentication:
        type: bearer
        token: "$secrets.commbank_rewards_token"
      resources:
        - name: data
          path: "/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: get-data
              method: GET

Retrieves personalized Yello merchant offers available to a customer.

naftiko: "0.5"
info:
  label: "CommBank Yello Offer Lookup"
  description: "Retrieves personalized Yello merchant offers available to a customer."
  tags:
    - loyalty
    - commbank-yello
capability:
  exposes:
    - type: mcp
      namespace: loyalty
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves personalized Yello merchant offers available to a customer."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary identifier."
          call: "commbank_yello.get-data"
          with:
            input_id: "{{input_id}}"
  consumes:
    - type: http
      namespace: commbank_yello
      baseUri: "https://api.internal.commbank.com.au/loyalty/v1"
      authentication:
        type: bearer
        token: "$secrets.commbank_yello_token"
      resources:
        - name: data
          path: "/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: get-data
              method: GET

Retrieves insurance policy details from CommInsure including coverage and premium.

naftiko: "0.5"
info:
  label: "CommInsure Policy Lookup"
  description: "Retrieves insurance policy details from CommInsure including coverage and premium."
  tags:
    - insurance
    - comminsure
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves insurance policy details from CommInsure including coverage and premium."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary identifier."
          call: "comminsure.get-data"
          with:
            input_id: "{{input_id}}"
  consumes:
    - type: http
      namespace: comminsure
      baseUri: "https://api.internal.commbank.com.au/insurance/v1"
      authentication:
        type: bearer
        token: "$secrets.comminsure_token"
      resources:
        - name: data
          path: "/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: get-data
              method: GET

Searches Confluence for a knowledge article by keyword and returns the article title, URL, and last updated date.

naftiko: "0.5"
info:
  label: "Confluence Knowledge Article Lookup"
  description: "Searches Confluence for a knowledge article by keyword and returns the article title, URL, and last updated date."
  tags:
    - knowledge-management
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: knowledge-base
      port: 8080
      tools:
        - name: search-knowledge-article
          description: "Search Confluence for a knowledge article by keyword. Returns title, URL, and last updated date."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The search keyword or phrase."
          call: "confluence.search"
          with:
            query: "{{query}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.results[0].title"
            - name: url
              type: string
              mapping: "$.results[0]._links.webui"
            - name: last_updated
              type: string
              mapping: "$.results[0].version.when"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://commbank.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content/search"
          operations:
            - name: search
              method: GET

Processes credit card applications by running identity verification, credit assessment, and provisioning.

naftiko: "0.5"
info:
  label: "Credit Card Application Pipeline"
  description: "Processes credit card applications by running identity verification, credit assessment, and provisioning."
  tags:
    - retail-banking
    - credit-cards
    - identity-verification
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: credit-card-application
      port: 8080
      tools:
        - name: run-credit-card-application-pipeline
          description: "Processes credit card applications by running identity verification, credit assessment, and provisioning."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "corebanking.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "ml.run-model"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: ml
      baseUri: "https://ml.internal.commbank.com.au/v1"
      authentication:
        type: bearer
        token: "$secrets.ml_token"
      resources:
        - name: models
          path: "/predict"
          operations:
            - name: run-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/messages"
          operations:
            - name: send-notification
              method: POST

When a customer raises a credit card dispute in Salesforce Service Cloud, retrieves the transaction from core banking, creates a case in ServiceNow, and notifies the disputes team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Credit Card Dispute Resolution Pipeline"
  description: "When a customer raises a credit card dispute in Salesforce Service Cloud, retrieves the transaction from core banking, creates a case in ServiceNow, and notifies the disputes team via Microsoft Teams."
  tags:
    - credit-cards
    - disputes
    - salesforce-service-cloud
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: card-disputes
      port: 8080
      tools:
        - name: process-card-dispute
          description: "Given a Salesforce case ID and transaction reference, orchestrate dispute resolution across core banking, ServiceNow, and Teams."
          inputParameters:
            - name: case_id
              in: body
              type: string
              description: "The Salesforce Service Cloud case ID."
            - name: transaction_ref
              in: body
              type: string
              description: "The credit card transaction reference."
          steps:
            - name: get-case
              type: call
              call: "salesforce.get-case"
              with:
                case_id: "{{case_id}}"
            - name: get-transaction
              type: call
              call: "core-banking.get-card-transaction"
              with:
                transaction_ref: "{{transaction_ref}}"
            - name: create-dispute-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Card dispute: {{get-case.Subject}}"
                category: "card_disputes"
                description: "Customer: {{get-case.ContactName}}. Amount: {{get-transaction.amount}} {{get-transaction.currency}}. Merchant: {{get-transaction.merchant_name}}."
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "card-disputes"
                text: "New dispute: {{get-case.Subject}} - ${{get-transaction.amount}} at {{get-transaction.merchant_name}}. ServiceNow: {{create-dispute-ticket.number}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://commbank.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case/{{case_id}}"
          inputParameters:
            - name: case_id
              in: path
          operations:
            - name: get-case
              method: GET
    - type: http
      namespace: core-banking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: card-transactions
          path: "/cards/transactions/{{transaction_ref}}"
          inputParameters:
            - name: transaction_ref
              in: path
          operations:
            - name: get-card-transaction
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://commbank.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Aggregates customer data from Salesforce CRM, core banking, and Workday financial planning to build a unified customer profile for relationship managers.

naftiko: "0.5"
info:
  label: "Customer 360 View Builder"
  description: "Aggregates customer data from Salesforce CRM, core banking, and Workday financial planning to build a unified customer profile for relationship managers."
  tags:
    - customer-360
    - salesforce
    - core-banking
    - crm
capability:
  exposes:
    - type: mcp
      namespace: customer-insights
      port: 8080
      tools:
        - name: build-customer-360
          description: "Given a customer ID, aggregate data from Salesforce, core banking, and financial systems into a unified profile."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The core banking customer identifier."
          steps:
            - name: get-crm-profile
              type: call
              call: "salesforce.get-account"
              with:
                account_id: "{{customer_id}}"
            - name: get-banking-profile
              type: call
              call: "core-banking.get-customer"
              with:
                customer_id: "{{customer_id}}"
            - name: get-products
              type: call
              call: "core-banking.get-customer-products"
              with:
                customer_id: "{{customer_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://commbank.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: core-banking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: customers
          path: "/customers/{{customer_id}}"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-customer
              method: GET
        - name: products
          path: "/customers/{{customer_id}}/products"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-customer-products
              method: GET

Handles customer complaints by logging in Salesforce, assessing severity, and escalating to the relevant team.

naftiko: "0.5"
info:
  label: "Customer Complaint Handling Pipeline"
  description: "Handles customer complaints by logging in Salesforce, assessing severity, and escalating to the relevant team."
  tags:
    - customer-support
    - salesforce
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: customer-complaint-handling
      port: 8080
      tools:
        - name: run-customer-complaint-handling-pipelin
          description: "Handles customer complaints by logging in Salesforce, assessing severity, and escalating to the relevant team."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "salesforce.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "servicenow.create-incident"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://commbank.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://commbank.service-now.com/api/now/table"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: send-notification
              method: POST

Processes data portability requests under CDR by extracting customer data, packaging it, and delivering via the API.

naftiko: "0.5"
info:
  label: "Customer Data Portability Pipeline"
  description: "Processes data portability requests under CDR by extracting customer data, packaging it, and delivering via the API."
  tags:
    - open-banking
    - cdr
    - data-portability
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: customer-data-portability
      port: 8080
      tools:
        - name: run-customer-data-portability-pipeline
          description: "Processes data portability requests under CDR by extracting customer data, packaging it, and delivering via the API."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "corebanking.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "compliance.run-check"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: compliance
      baseUri: "https://api.internal.commbank.com.au/compliance/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: checks
          path: "/checks"
          operations:
            - name: run-check
              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/messages"
          operations:
            - name: send-notification
              method: POST

Processes customer hardship claims by reviewing account history, assessing eligibility, and creating a support case.

naftiko: "0.5"
info:
  label: "Customer Hardship Assessment Pipeline"
  description: "Processes customer hardship claims by reviewing account history, assessing eligibility, and creating a support case."
  tags:
    - customer-support
    - hardship
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: customer-hardship-assessment
      port: 8080
      tools:
        - name: run-customer-hardship-assessment-pipeli
          description: "Processes customer hardship claims by reviewing account history, assessing eligibility, and creating a support case."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "salesforce.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "corebanking.get-account"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://commbank.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              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/messages"
          operations:
            - name: send-notification
              method: POST

On new retail customer creation in Salesforce, provisions a core banking profile, runs KYC screening, and sends a welcome notification via Microsoft Teams to the relationship manager.

naftiko: "0.5"
info:
  label: "Customer Onboarding Orchestrator"
  description: "On new retail customer creation in Salesforce, provisions a core banking profile, runs KYC screening, and sends a welcome notification via Microsoft Teams to the relationship manager."
  tags:
    - banking
    - onboarding
    - salesforce
    - servicenow
    - microsoft-teams
    - kyc
capability:
  exposes:
    - type: mcp
      namespace: customer-onboarding
      port: 8080
      tools:
        - name: trigger-customer-onboarding
          description: "Given a Salesforce contact ID and account type, orchestrate the full retail customer onboarding across core banking, KYC, and notification systems."
          inputParameters:
            - name: contact_id
              in: body
              type: string
              description: "The Salesforce contact ID for the new customer."
            - name: account_type
              in: body
              type: string
              description: "The banking account type (e.g., savings, transaction, term-deposit)."
            - name: branch_code
              in: body
              type: string
              description: "The branch code where the account is being opened."
          steps:
            - name: get-contact
              type: call
              call: "salesforce.get-contact"
              with:
                contact_id: "{{contact_id}}"
            - name: create-core-profile
              type: call
              call: "core-banking.create-customer"
              with:
                full_name: "{{get-contact.Name}}"
                email: "{{get-contact.Email}}"
                account_type: "{{account_type}}"
                branch_code: "{{branch_code}}"
            - name: run-kyc
              type: call
              call: "kyc-service.screen-customer"
              with:
                customer_id: "{{create-core-profile.customer_id}}"
                full_name: "{{get-contact.Name}}"
            - name: notify-rm
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "retail-onboarding"
                text: "New customer onboarded: {{get-contact.Name}} ({{account_type}}). KYC status: {{run-kyc.status}}. Core ID: {{create-core-profile.customer_id}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://commbank.my.salesforce.com/services/data/v58.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: core-banking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: customers
          path: "/customers"
          operations:
            - name: create-customer
              method: POST
    - type: http
      namespace: kyc-service
      baseUri: "https://api.internal.commbank.com.au/kyc/v1"
      authentication:
        type: bearer
        token: "$secrets.kyc_token"
      resources:
        - name: screening
          path: "/screen"
          operations:
            - name: screen-customer
              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: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Responds to cybersecurity incidents by correlating Splunk alerts, creating ServiceNow incidents, and notifying the CISO.

naftiko: "0.5"
info:
  label: "Cybersecurity Incident Response Pipeline"
  description: "Responds to cybersecurity incidents by correlating Splunk alerts, creating ServiceNow incidents, and notifying the CISO."
  tags:
    - security
    - splunk
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: cybersecurity-incident-response
      port: 8080
      tools:
        - name: run-cybersecurity-incident-response-pip
          description: "Responds to cybersecurity incidents by correlating Splunk alerts, creating ServiceNow incidents, and notifying the CISO."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "splunk.create-search"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "servicenow.create-incident"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://splunk.commbank.com.au:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: search
          path: "/search/jobs"
          operations:
            - name: create-search
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://commbank.service-now.com/api/now/table"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/messages"
          operations:
            - name: send-notification
              method: POST

Retrieves the status of a registered machine learning model in Databricks MLflow, returning model version, stage, and last transition date.

naftiko: "0.5"
info:
  label: "Databricks ML Model Status"
  description: "Retrieves the status of a registered machine learning model in Databricks MLflow, returning model version, stage, and last transition date."
  tags:
    - machine-learning
    - databricks
    - mlops
capability:
  exposes:
    - type: mcp
      namespace: ml-ops
      port: 8080
      tools:
        - name: get-model-status
          description: "Look up a registered ML model in Databricks MLflow. Returns version, stage, and last transition date."
          inputParameters:
            - name: model_name
              in: body
              type: string
              description: "The registered model name."
          call: "databricks.get-model-version"
          with:
            model_name: "{{model_name}}"
          outputParameters:
            - name: version
              type: string
              mapping: "$.model_version.version"
            - name: stage
              type: string
              mapping: "$.model_version.current_stage"
            - name: last_transition
              type: string
              mapping: "$.model_version.last_updated_timestamp"
  consumes:
    - type: http
      namespace: databricks
      baseUri: "https://commbank.cloud.databricks.com/api/2.0/mlflow"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: model-versions
          path: "/registered-models/get-latest-versions"
          operations:
            - name: get-model-version
              method: POST

Retrieves the current health status of a microservice from Datadog, returning uptime percentage, error rate, and latency P99.

naftiko: "0.5"
info:
  label: "Datadog Service Health Check"
  description: "Retrieves the current health status of a microservice from Datadog, returning uptime percentage, error rate, and latency P99."
  tags:
    - monitoring
    - observability
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: platform-health
      port: 8080
      tools:
        - name: get-service-health
          description: "Look up the health status of a service in Datadog. Returns uptime, error rate, and P99 latency."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "The Datadog service name."
          call: "datadog.get-service-metrics"
          with:
            service_name: "{{service_name}}"
          outputParameters:
            - name: uptime_pct
              type: number
              mapping: "$.series[0].uptime"
            - name: error_rate
              type: number
              mapping: "$.series[0].error_rate"
            - name: latency_p99
              type: number
              mapping: "$.series[0].latency_p99"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      resources:
        - name: metrics
          path: "/query"
          operations:
            - name: get-service-metrics
              method: GET

Processes debit card disputes by investigating the transaction, issuing provisional credit, and notifying the customer.

naftiko: "0.5"
info:
  label: "Debit Card Dispute Pipeline"
  description: "Processes debit card disputes by investigating the transaction, issuing provisional credit, and notifying the customer."
  tags:
    - retail-banking
    - disputes
    - payments
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: debit-card-dispute
      port: 8080
      tools:
        - name: run-debit-card-dispute-pipeline
          description: "Processes debit card disputes by investigating the transaction, issuing provisional credit, and notifying the customer."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "corebanking.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "servicenow.create-incident"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "outlook.send-email"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://commbank.service-now.com/api/now/table"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Checks the health of digital banking APIs via Apigee, retrieves error rates from New Relic, and posts a combined health report to Microsoft Teams.

naftiko: "0.5"
info:
  label: "Digital Banking API Health Pipeline"
  description: "Checks the health of digital banking APIs via Apigee, retrieves error rates from New Relic, and posts a combined health report to Microsoft Teams."
  tags:
    - digital-banking
    - apigee
    - new-relic
    - microsoft-teams
    - api-management
capability:
  exposes:
    - type: mcp
      namespace: api-health
      port: 8080
      tools:
        - name: check-api-health
          description: "Given an API proxy name, check its health in Apigee and New Relic and post a summary to Teams."
          inputParameters:
            - name: api_proxy
              in: body
              type: string
              description: "The Apigee API proxy name."
            - name: newrelic_app_id
              in: body
              type: string
              description: "The New Relic application ID."
          steps:
            - name: get-apigee-stats
              type: call
              call: "apigee.get-proxy-stats"
              with:
                proxy_name: "{{api_proxy}}"
            - name: get-newrelic-metrics
              type: call
              call: "newrelic.get-app-metrics"
              with:
                app_id: "{{newrelic_app_id}}"
            - name: post-report
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "api-health"
                text: "API Health: {{api_proxy}} - Traffic: {{get-apigee-stats.total_requests}}/hr, Errors: {{get-apigee-stats.error_rate}}%, Apdex: {{get-newrelic-metrics.apdex_score}}, Response: {{get-newrelic-metrics.avg_response_time}}ms."
  consumes:
    - type: http
      namespace: apigee
      baseUri: "https://api.enterprise.apigee.com/v1/organizations/commbank"
      authentication:
        type: bearer
        token: "$secrets.apigee_token"
      resources:
        - name: stats
          path: "/environments/prod/stats/apiproxy/{{proxy_name}}"
          inputParameters:
            - name: proxy_name
              in: path
          operations:
            - name: get-proxy-stats
              method: GET
    - type: http
      namespace: newrelic
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: apiKey
        key: "$secrets.newrelic_api_key"
      resources:
        - name: applications
          path: "/applications/{{app_id}}/metrics/data.json"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: get-app-metrics
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Provisions digital wallet cards by verifying the customer, tokenizing the card, and confirming activation.

naftiko: "0.5"
info:
  label: "Digital Wallet Provisioning Pipeline"
  description: "Provisions digital wallet cards by verifying the customer, tokenizing the card, and confirming activation."
  tags:
    - digital-banking
    - payments
    - tokenization
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: digital-wallet-provisioning
      port: 8080
      tools:
        - name: run-digital-wallet-provisioning-pipelin
          description: "Provisions digital wallet cards by verifying the customer, tokenizing the card, and confirming activation."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "corebanking.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "ml.run-model"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: ml
      baseUri: "https://ml.internal.commbank.com.au/v1"
      authentication:
        type: bearer
        token: "$secrets.ml_token"
      resources:
        - name: models
          path: "/predict"
          operations:
            - name: run-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/messages"
          operations:
            - name: send-notification
              method: POST

Retrieves application performance metrics from Dynatrace, returning response time, failure rate, throughput, and user satisfaction score.

naftiko: "0.5"
info:
  label: "Dynatrace Application Performance Lookup"
  description: "Retrieves application performance metrics from Dynatrace, returning response time, failure rate, throughput, and user satisfaction score."
  tags:
    - monitoring
    - apm
    - dynatrace
capability:
  exposes:
    - type: mcp
      namespace: apm
      port: 8080
      tools:
        - name: get-app-performance
          description: "Look up application performance in Dynatrace. Returns response time, failure rate, throughput, and satisfaction score."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The Dynatrace application entity ID."
          call: "dynatrace.get-app-metrics"
          with:
            entity_id: "{{entity_id}}"
          outputParameters:
            - name: response_time_ms
              type: number
              mapping: "$.result[0].data[0].values.avg"
            - name: failure_rate
              type: number
              mapping: "$.result[1].data[0].values.avg"
            - name: throughput
              type: number
              mapping: "$.result[2].data[0].values.count"
  consumes:
    - type: http
      namespace: dynatrace
      baseUri: "https://commbank.live.dynatrace.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.dynatrace_token"
      resources:
        - name: metrics
          path: "/metrics/query"
          operations:
            - name: get-app-metrics
              method: POST

On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint document folder, and sends a Microsoft Teams welcome message.

naftiko: "0.5"
info:
  label: "Employee Onboarding Pipeline"
  description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint document folder, and sends a Microsoft Teams welcome message."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-employee-onboarding
          description: "Given a Workday employee ID, orchestrate the full employee onboarding sequence across ServiceNow, SharePoint, and Microsoft Teams."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "The Workday worker ID for the new hire."
            - name: start_date
              in: body
              type: string
              description: "The employee start date in YYYY-MM-DD format."
            - name: department
              in: body
              type: string
              description: "The department the new hire is joining."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{workday_employee_id}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New hire onboarding: {{get-employee.full_name}}"
                category: "hr_onboarding"
                assigned_group: "IT_Onboarding"
                description: "Onboarding for {{get-employee.full_name}} starting {{start_date}} in {{department}}."
            - name: provision-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "hr_onboarding_site"
                folder_path: "OnboardingDocs/{{get-employee.full_name}}_{{start_date}}"
            - name: send-welcome
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-employee.work_email}}"
                text: "Welcome to Commonwealth Bank, {{get-employee.first_name}}! Your IT onboarding ticket is {{open-ticket.number}}. Documents are ready at {{provision-folder.url}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://commbank.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Assesses first home buyer eligibility by checking grant qualification, running serviceability, and generating pre-approval.

naftiko: "0.5"
info:
  label: "First Home Buyer Assessment Pipeline"
  description: "Assesses first home buyer eligibility by checking grant qualification, running serviceability, and generating pre-approval."
  tags:
    - lending
    - first-home-buyer
    - home-loans
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: first-home-buyer-assessment
      port: 8080
      tools:
        - name: run-first-home-buyer-assessment-pipelin
          description: "Assesses first home buyer eligibility by checking grant qualification, running serviceability, and generating pre-approval."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "corebanking.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "ml.run-model"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: ml
      baseUri: "https://ml.internal.commbank.com.au/v1"
      authentication:
        type: bearer
        token: "$secrets.ml_token"
      resources:
        - name: models
          path: "/predict"
          operations:
            - name: run-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/messages"
          operations:
            - name: send-notification
              method: POST

Investigates suspected fraud by pulling transaction history, running ML fraud scoring, and creating a case in ServiceNow.

naftiko: "0.5"
info:
  label: "Fraud Transaction Investigation Pipeline"
  description: "Investigates suspected fraud by pulling transaction history, running ML fraud scoring, and creating a case in ServiceNow."
  tags:
    - fraud
    - payments
    - machine-learning
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: fraud-transaction-investigation
      port: 8080
      tools:
        - name: run-fraud-transaction-investigation-pip
          description: "Investigates suspected fraud by pulling transaction history, running ML fraud scoring, and creating a case in ServiceNow."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "corebanking.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "ml.run-model"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "servicenow.create-incident"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: ml
      baseUri: "https://ml.internal.commbank.com.au/v1"
      authentication:
        type: bearer
        token: "$secrets.ml_token"
      resources:
        - name: models
          path: "/predict"
          operations:
            - name: run-model
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://commbank.service-now.com/api/now/table"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/incident"
          operations:
            - name: create-incident
              method: POST

Provides institutional FX advisory quotes by fetching market rates, computing spread, and delivering via Microsoft Teams.

naftiko: "0.5"
info:
  label: "FX Advisory Quote Pipeline"
  description: "Provides institutional FX advisory quotes by fetching market rates, computing spread, and delivering via Microsoft Teams."
  tags:
    - treasury
    - forex
    - bloomberg
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: fx-advisory-quote
      port: 8080
      tools:
        - name: run-fx-advisory-quote-pipeline
          description: "Provides institutional FX advisory quotes by fetching market rates, computing spread, and delivering via Microsoft Teams."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "bloomberg.get-data"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "ml.run-model"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: bloomberg
      baseUri: "https://bsapi.bloomberg.com/eap/catalogs/bbg"
      authentication:
        type: bearer
        token: "$secrets.bloomberg_token"
      resources:
        - name: data
          path: "/datasets"
          operations:
            - name: get-data
              method: GET
    - type: http
      namespace: ml
      baseUri: "https://ml.internal.commbank.com.au/v1"
      authentication:
        type: bearer
        token: "$secrets.ml_token"
      resources:
        - name: models
          path: "/predict"
          operations:
            - name: run-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/messages"
          operations:
            - name: send-notification
              method: POST

Retrieves the latest GitHub Actions workflow run status for a given repository, returning run conclusion, duration, and triggering commit SHA.

naftiko: "0.5"
info:
  label: "GitHub Actions Build Status"
  description: "Retrieves the latest GitHub Actions workflow run status for a given repository, returning run conclusion, duration, and triggering commit SHA."
  tags:
    - ci-cd
    - github-actions
    - engineering
capability:
  exposes:
    - type: mcp
      namespace: ci-cd
      port: 8080
      tools:
        - name: get-build-status
          description: "Look up the latest GitHub Actions workflow run for a repository. Returns conclusion, duration, and commit SHA."
          inputParameters:
            - name: repo
              in: body
              type: string
              description: "The repository in owner/repo format."
            - name: workflow_id
              in: body
              type: string
              description: "The workflow file name or ID."
          call: "github.get-workflow-run"
          with:
            repo: "{{repo}}"
            workflow_id: "{{workflow_id}}"
          outputParameters:
            - name: conclusion
              type: string
              mapping: "$.workflow_runs[0].conclusion"
            - name: duration_seconds
              type: number
              mapping: "$.workflow_runs[0].run_duration"
            - name: head_sha
              type: string
              mapping: "$.workflow_runs[0].head_sha"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: workflow-runs
          path: "/repos/{{repo}}/actions/workflows/{{workflow_id}}/runs"
          inputParameters:
            - name: repo
              in: path
            - name: workflow_id
              in: path
          operations:
            - name: get-workflow-run
              method: GET

Retrieves digital channel performance metrics from Google Analytics for the CommBank app, returning sessions, conversion rate, and bounce rate.

naftiko: "0.5"
info:
  label: "Google Analytics Digital Channel Report"
  description: "Retrieves digital channel performance metrics from Google Analytics for the CommBank app, returning sessions, conversion rate, and bounce rate."
  tags:
    - digital-analytics
    - google-analytics
    - marketing
capability:
  exposes:
    - type: mcp
      namespace: digital-analytics
      port: 8080
      tools:
        - name: get-channel-report
          description: "Look up Google Analytics channel metrics. Returns sessions, conversion rate, and bounce rate."
          inputParameters:
            - name: property_id
              in: body
              type: string
              description: "The Google Analytics 4 property ID."
            - name: date_range
              in: body
              type: string
              description: "The date range (e.g., last7days, last30days)."
          call: "ga4.get-report"
          with:
            property_id: "{{property_id}}"
            date_range: "{{date_range}}"
          outputParameters:
            - name: sessions
              type: number
              mapping: "$.rows[0].metricValues[0].value"
            - name: conversion_rate
              type: number
              mapping: "$.rows[0].metricValues[1].value"
            - name: bounce_rate
              type: number
              mapping: "$.rows[0].metricValues[2].value"
  consumes:
    - type: http
      namespace: ga4
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: get-report
              method: POST

Retrieves a Grafana alert rule by UID, returning rule name, current state, evaluation interval, and associated dashboard.

naftiko: "0.5"
info:
  label: "Grafana Alert Rule Lookup"
  description: "Retrieves a Grafana alert rule by UID, returning rule name, current state, evaluation interval, and associated dashboard."
  tags:
    - monitoring
    - grafana
    - alerting
capability:
  exposes:
    - type: mcp
      namespace: observability-alerts
      port: 8080
      tools:
        - name: get-alert-rule
          description: "Look up a Grafana alert rule by UID. Returns rule name, state, evaluation interval, and dashboard."
          inputParameters:
            - name: rule_uid
              in: body
              type: string
              description: "The Grafana alert rule UID."
          call: "grafana.get-alert-rule"
          with:
            rule_uid: "{{rule_uid}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.title"
            - name: state
              type: string
              mapping: "$.state"
            - name: eval_interval
              type: string
              mapping: "$.intervalSeconds"
  consumes:
    - type: http
      namespace: grafana
      baseUri: "https://grafana.internal.commbank.com.au/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_token"
      resources:
        - name: alert-rules
          path: "/v1/provisioning/alert-rules/{{rule_uid}}"
          inputParameters:
            - name: rule_uid
              in: path
          operations:
            - name: get-alert-rule
              method: GET

Processes a home loan application by running credit checks, property valuation, and submitting for approval with broker notification.

naftiko: "0.5"
info:
  label: "Home Loan Application Pipeline"
  description: "Processes a home loan application by running credit checks, property valuation, and submitting for approval with broker notification."
  tags:
    - lending
    - home-loans
    - credit-check
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: home-loan-application
      port: 8080
      tools:
        - name: run-home-loan-application-pipeline
          description: "Processes a home loan application by running credit checks, property valuation, and submitting for approval with broker notification."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "corebanking.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "ml.run-model"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: ml
      baseUri: "https://ml.internal.commbank.com.au/v1"
      authentication:
        type: bearer
        token: "$secrets.ml_token"
      resources:
        - name: models
          path: "/predict"
          operations:
            - name: run-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/messages"
          operations:
            - name: send-notification
              method: POST

Retrieves current home loan interest rates by product type and LVR band.

naftiko: "0.5"
info:
  label: "Home Loan Rate Lookup"
  description: "Retrieves current home loan interest rates by product type and LVR band."
  tags:
    - lending
    - home-loans
capability:
  exposes:
    - type: mcp
      namespace: lending
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves current home loan interest rates by product type and LVR band."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary identifier."
          call: "home_loans.get-data"
          with:
            input_id: "{{input_id}}"
  consumes:
    - type: http
      namespace: home_loans
      baseUri: "https://api.internal.commbank.com.au/lending/v1"
      authentication:
        type: bearer
        token: "$secrets.home_loans_token"
      resources:
        - name: data
          path: "/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: get-data
              method: GET

Retrieves the performance metrics of a HubSpot marketing campaign, returning email sent count, open rate, click rate, and conversion count.

naftiko: "0.5"
info:
  label: "HubSpot Marketing Campaign Status"
  description: "Retrieves the performance metrics of a HubSpot marketing campaign, returning email sent count, open rate, click rate, and conversion count."
  tags:
    - marketing
    - hubspot
    - campaign
capability:
  exposes:
    - type: mcp
      namespace: marketing-ops
      port: 8080
      tools:
        - name: get-campaign-performance
          description: "Look up HubSpot campaign performance. Returns emails sent, open rate, click rate, and conversions."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The HubSpot campaign ID."
          call: "hubspot.get-campaign"
          with:
            campaign_id: "{{campaign_id}}"
          outputParameters:
            - name: emails_sent
              type: number
              mapping: "$.counters.sent"
            - name: open_rate
              type: number
              mapping: "$.counters.openRate"
            - name: click_rate
              type: number
              mapping: "$.counters.clickRate"
            - name: conversions
              type: number
              mapping: "$.counters.conversions"
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/marketing/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: campaigns
          path: "/campaigns/{{campaign_id}}"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign
              method: GET

When a P1 incident is raised in ServiceNow, pulls affected service details, pages the on-call engineer via PagerDuty, and posts an alert to the Microsoft Teams incident channel.

naftiko: "0.5"
info:
  label: "Incident Escalation Pipeline"
  description: "When a P1 incident is raised in ServiceNow, pulls affected service details, pages the on-call engineer via PagerDuty, and posts an alert to the Microsoft Teams incident channel."
  tags:
    - incident-management
    - servicenow
    - pagerduty
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: incident-ops
      port: 8080
      tools:
        - name: escalate-p1-incident
          description: "Given a ServiceNow incident number, escalate by paging the on-call engineer and posting to the Teams incident channel."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number (e.g., INC0012345)."
          steps:
            - name: get-incident
              type: call
              call: "servicenow.get-incident"
              with:
                incident_number: "{{incident_number}}"
            - name: page-oncall
              type: call
              call: "pagerduty.create-incident"
              with:
                service_id: "{{get-incident.assignment_group}}"
                title: "P1 Escalation: {{get-incident.short_description}}"
                urgency: "high"
            - name: post-alert
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "p1-incidents"
                text: "P1 ESCALATION: {{get-incident.short_description}}. Incident: {{incident_number}}. On-call paged: {{page-oncall.assigned_to}}."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://commbank.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: get-incident
              method: GET
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_token"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Executes institutional trades by sourcing prices from Bloomberg, booking in the OMS, and confirming with the client.

naftiko: "0.5"
info:
  label: "Institutional Trade Execution Pipeline"
  description: "Executes institutional trades by sourcing prices from Bloomberg, booking in the OMS, and confirming with the client."
  tags:
    - institutional-banking
    - bloomberg
    - oms
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: institutional-trade-execution
      port: 8080
      tools:
        - name: run-institutional-trade-execution-pipel
          description: "Executes institutional trades by sourcing prices from Bloomberg, booking in the OMS, and confirming with the client."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "bloomberg.get-data"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "corebanking.get-account"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "outlook.send-email"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: bloomberg
      baseUri: "https://bsapi.bloomberg.com/eap/catalogs/bbg"
      authentication:
        type: bearer
        token: "$secrets.bloomberg_token"
      resources:
        - name: data
          path: "/datasets"
          operations:
            - name: get-data
              method: GET
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Processes CommInsure claims by verifying policy, assessing claim, and routing to the claims team.

naftiko: "0.5"
info:
  label: "Insurance Claim Processing Pipeline"
  description: "Processes CommInsure claims by verifying policy, assessing claim, and routing to the claims team."
  tags:
    - insurance
    - comminsure
    - servicenow
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: insurance-claim-processing
      port: 8080
      tools:
        - name: run-insurance-claim-processing-pipeline
          description: "Processes CommInsure claims by verifying policy, assessing claim, and routing to the claims team."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "corebanking.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "servicenow.create-incident"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "outlook.send-email"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://commbank.service-now.com/api/now/table"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Processes international money transfers by screening via sanctions lists, executing via SWIFT, and confirming.

naftiko: "0.5"
info:
  label: "International Money Transfer Pipeline"
  description: "Processes international money transfers by screening via sanctions lists, executing via SWIFT, and confirming."
  tags:
    - payments
    - swift
    - sanctions-screening
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: international-money-transfer
      port: 8080
      tools:
        - name: run-international-money-transfer-pipeli
          description: "Processes international money transfers by screening via sanctions lists, executing via SWIFT, and confirming."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "corebanking.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "compliance.run-check"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "outlook.send-email"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: compliance
      baseUri: "https://api.internal.commbank.com.au/compliance/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: checks
          path: "/checks"
          operations:
            - name: run-check
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Retrieves the current sprint velocity and story point breakdown from Jira for a given board, returning completed points, remaining points, and sprint burndown status.

naftiko: "0.5"
info:
  label: "Jira Sprint Velocity Report"
  description: "Retrieves the current sprint velocity and story point breakdown from Jira for a given board, returning completed points, remaining points, and sprint burndown status."
  tags:
    - engineering
    - agile
    - jira
capability:
  exposes:
    - type: mcp
      namespace: engineering-metrics
      port: 8080
      tools:
        - name: get-sprint-velocity
          description: "Look up the current sprint velocity for a Jira board. Returns completed points, remaining points, and burndown status."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "The Jira board ID."
          call: "jira.get-sprint-report"
          with:
            board_id: "{{board_id}}"
          outputParameters:
            - name: completed_points
              type: number
              mapping: "$.sprint.completedPoints"
            - name: remaining_points
              type: number
              mapping: "$.sprint.remainingPoints"
            - name: burndown_status
              type: string
              mapping: "$.sprint.burndownStatus"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://commbank.atlassian.net/rest/agile/1.0"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprints
          path: "/board/{{board_id}}/sprint"
          inputParameters:
            - name: board_id
              in: path
          operations:
            - name: get-sprint-report
              method: GET

Retrieves consumer group lag metrics for a Kafka topic from the Kafka monitoring API, returning total lag, partition count, and maximum partition lag.

naftiko: "0.5"
info:
  label: "Kafka Consumer Lag Monitor"
  description: "Retrieves consumer group lag metrics for a Kafka topic from the Kafka monitoring API, returning total lag, partition count, and maximum partition lag."
  tags:
    - streaming
    - kafka
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: event-streaming
      port: 8080
      tools:
        - name: get-consumer-lag
          description: "Look up consumer group lag for a Kafka topic. Returns total lag, partition count, and max partition lag."
          inputParameters:
            - name: consumer_group
              in: body
              type: string
              description: "The Kafka consumer group name."
            - name: topic
              in: body
              type: string
              description: "The Kafka topic name."
          call: "kafka-monitor.get-lag"
          with:
            consumer_group: "{{consumer_group}}"
            topic: "{{topic}}"
          outputParameters:
            - name: total_lag
              type: number
              mapping: "$.consumerGroup.totalLag"
            - name: partition_count
              type: number
              mapping: "$.consumerGroup.partitionCount"
            - name: max_partition_lag
              type: number
              mapping: "$.consumerGroup.maxPartitionLag"
  consumes:
    - type: http
      namespace: kafka-monitor
      baseUri: "https://kafka-monitor.internal.commbank.com.au/api/v1"
      authentication:
        type: bearer
        token: "$secrets.kafka_monitor_token"
      resources:
        - name: consumer-groups
          path: "/consumer-groups/{{consumer_group}}/topics/{{topic}}/lag"
          inputParameters:
            - name: consumer_group
              in: path
            - name: topic
              in: path
          operations:
            - name: get-lag
              method: GET

Refreshes KYC profiles by pulling latest customer data, running screening checks, and updating compliance records.

naftiko: "0.5"
info:
  label: "KYC Refresh Pipeline"
  description: "Refreshes KYC profiles by pulling latest customer data, running screening checks, and updating compliance records."
  tags:
    - compliance
    - kyc
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: kyc-refresh
      port: 8080
      tools:
        - name: run-kyc-refresh-pipeline
          description: "Refreshes KYC profiles by pulling latest customer data, running screening checks, and updating compliance records."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "salesforce.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "kyc.screen-customer"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://commbank.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: kyc
      baseUri: "https://api.internal.commbank.com.au/kyc/v1"
      authentication:
        type: bearer
        token: "$secrets.kyc_token"
      resources:
        - name: screening
          path: "/screen"
          operations:
            - name: screen-customer
              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/messages"
          operations:
            - name: send-notification
              method: POST

When a business loan application advances to document collection, generates required document checklist in ServiceNow, creates a SharePoint folder for uploads, and emails the applicant via Microsoft Outlook with upload instructions.

naftiko: "0.5"
info:
  label: "Loan Origination Document Pipeline"
  description: "When a business loan application advances to document collection, generates required document checklist in ServiceNow, creates a SharePoint folder for uploads, and emails the applicant via Microsoft Outlook with upload instructions."
  tags:
    - lending
    - loan-origination
    - servicenow
    - sharepoint
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: business-lending
      port: 8080
      tools:
        - name: initiate-doc-collection
          description: "Given a loan application ID, create the document checklist, provision storage, and notify the applicant."
          inputParameters:
            - name: application_id
              in: body
              type: string
              description: "The loan application identifier."
            - name: applicant_email
              in: body
              type: string
              description: "The applicant's email address."
            - name: loan_type
              in: body
              type: string
              description: "The loan type (e.g., commercial, equipment, property)."
          steps:
            - name: create-checklist
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Document collection: Application {{application_id}}"
                category: "loan_origination"
                description: "Loan type: {{loan_type}}. Required documents per policy for {{loan_type}} loans."
            - name: create-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "lending_docs"
                folder_path: "Applications/{{application_id}}"
            - name: send-email
              type: call
              call: "outlook.send-email"
              with:
                to: "{{applicant_email}}"
                subject: "Document Upload Required - Loan Application {{application_id}}"
                body: "Please upload your required documents to: {{create-folder.url}}. Your document checklist reference is {{create-checklist.number}}."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://commbank.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/sc_task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: 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: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/users/{{from}}/sendMail"
          operations:
            - name: send-email
              method: POST

Checks the status of a payment processed through the Mastercard gateway, returning authorization code, settlement status, and merchant details.

naftiko: "0.5"
info:
  label: "Mastercard Payment Gateway Status"
  description: "Checks the status of a payment processed through the Mastercard gateway, returning authorization code, settlement status, and merchant details."
  tags:
    - payments
    - mastercard
    - card-processing
capability:
  exposes:
    - type: mcp
      namespace: payment-gateway
      port: 8080
      tools:
        - name: get-payment-status
          description: "Check Mastercard gateway payment status. Returns authorization code, settlement status, and merchant details."
          inputParameters:
            - name: payment_id
              in: body
              type: string
              description: "The Mastercard payment transaction ID."
          call: "mastercard.get-transaction"
          with:
            payment_id: "{{payment_id}}"
          outputParameters:
            - name: auth_code
              type: string
              mapping: "$.transaction.authorizationCode"
            - name: settlement_status
              type: string
              mapping: "$.transaction.settlementStatus"
            - name: merchant_name
              type: string
              mapping: "$.transaction.merchant.name"
  consumes:
    - type: http
      namespace: mastercard
      baseUri: "https://api.mastercard.com/mdes/digitization/v1"
      authentication:
        type: oauth
        client_id: "$secrets.mastercard_client_id"
        client_secret: "$secrets.mastercard_client_secret"
      resources:
        - name: transactions
          path: "/transactions/{{payment_id}}"
          inputParameters:
            - name: payment_id
              in: path
          operations:
            - name: get-transaction
              method: GET

Onboards new merchants by verifying ABN, provisioning POS terminals, and creating accounts with notification.

naftiko: "0.5"
info:
  label: "Merchant Onboarding Pipeline"
  description: "Onboards new merchants by verifying ABN, provisioning POS terminals, and creating accounts with notification."
  tags:
    - merchant-services
    - albert-pos
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: merchant-onboarding
      port: 8080
      tools:
        - name: run-merchant-onboarding-pipeline
          description: "Onboards new merchants by verifying ABN, provisioning POS terminals, and creating accounts with notification."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "salesforce.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "corebanking.get-account"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://commbank.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              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/messages"
          operations:
            - name: send-notification
              method: POST

Updates a feature flag for the CommBank mobile app, triggers a Harness deployment pipeline, and notifies the mobile team via Microsoft Teams with rollout percentage.

naftiko: "0.5"
info:
  label: "Mobile Banking Feature Toggle Pipeline"
  description: "Updates a feature flag for the CommBank mobile app, triggers a Harness deployment pipeline, and notifies the mobile team via Microsoft Teams with rollout percentage."
  tags:
    - mobile-banking
    - feature-flags
    - harness
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: mobile-ops
      port: 8080
      tools:
        - name: toggle-mobile-feature
          description: "Given a feature flag key and rollout percentage, update the flag in Harness and notify the mobile team."
          inputParameters:
            - name: feature_key
              in: body
              type: string
              description: "The Harness feature flag key."
            - name: rollout_pct
              in: body
              type: number
              description: "The target rollout percentage (0-100)."
            - name: environment
              in: body
              type: string
              description: "The target environment (e.g., production, staging)."
          steps:
            - name: update-flag
              type: call
              call: "harness.update-feature-flag"
              with:
                feature_key: "{{feature_key}}"
                environment: "{{environment}}"
                rollout_percentage: "{{rollout_pct}}"
            - name: notify-mobile-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "mobile-releases"
                text: "Feature flag '{{feature_key}}' updated in {{environment}}: rollout now {{rollout_pct}}%. Updated by automation."
  consumes:
    - type: http
      namespace: harness
      baseUri: "https://app.harness.io/cf/admin"
      authentication:
        type: bearer
        token: "$secrets.harness_token"
      resources:
        - name: feature-flags
          path: "/features/{{feature_key}}"
          inputParameters:
            - name: feature_key
              in: path
          operations:
            - name: update-feature-flag
              method: PATCH
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

When a mortgage application is submitted via Salesforce, retrieves the applicant credit score from Equifax, runs affordability checks, and updates the Salesforce opportunity with decision status and notifies the broker via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Mortgage Application Pipeline"
  description: "When a mortgage application is submitted via Salesforce, retrieves the applicant credit score from Equifax, runs affordability checks, and updates the Salesforce opportunity with decision status and notifies the broker via Microsoft Teams."
  tags:
    - lending
    - mortgage
    - salesforce
    - credit
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: lending
      port: 8080
      tools:
        - name: process-mortgage-application
          description: "Given a Salesforce opportunity ID, orchestrate credit check, affordability assessment, and broker notification for a mortgage application."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "The Salesforce opportunity ID for the mortgage application."
            - name: applicant_id
              in: body
              type: string
              description: "The customer identifier for the applicant."
          steps:
            - name: get-opportunity
              type: call
              call: "salesforce.get-opportunity"
              with:
                opportunity_id: "{{opportunity_id}}"
            - name: credit-check
              type: call
              call: "equifax.get-credit-score"
              with:
                applicant_id: "{{applicant_id}}"
                full_name: "{{get-opportunity.ContactName}}"
            - name: affordability-check
              type: call
              call: "lending-engine.assess-affordability"
              with:
                loan_amount: "{{get-opportunity.Amount}}"
                credit_score: "{{credit-check.score}}"
                income: "{{get-opportunity.AnnualIncome}}"
            - name: update-opportunity
              type: call
              call: "salesforce.update-opportunity"
              with:
                opportunity_id: "{{opportunity_id}}"
                stage: "{{affordability-check.decision}}"
            - name: notify-broker
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "mortgage-decisions"
                text: "Mortgage {{opportunity_id}} for {{get-opportunity.ContactName}}: Credit score {{credit-check.score}}, Decision: {{affordability-check.decision}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://commbank.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: get-opportunity
              method: GET
            - name: update-opportunity
              method: PATCH
    - type: http
      namespace: equifax
      baseUri: "https://api.equifax.com.au/v2"
      authentication:
        type: bearer
        token: "$secrets.equifax_token"
      resources:
        - name: credit-scores
          path: "/credit/score"
          operations:
            - name: get-credit-score
              method: POST
    - type: http
      namespace: lending-engine
      baseUri: "https://api.internal.commbank.com.au/lending/v1"
      authentication:
        type: bearer
        token: "$secrets.lending_token"
      resources:
        - name: affordability
          path: "/assess"
          operations:
            - name: assess-affordability
              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: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves customer account balance from NetBank core banking by BSB and account number.

naftiko: "0.5"
info:
  label: "NetBank Account Balance Lookup"
  description: "Retrieves customer account balance from NetBank core banking by BSB and account number."
  tags:
    - retail-banking
    - netbank
capability:
  exposes:
    - type: mcp
      namespace: retail-banking
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves customer account balance from NetBank core banking by BSB and account number."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary identifier."
          call: "netbank.get-data"
          with:
            input_id: "{{input_id}}"
  consumes:
    - type: http
      namespace: netbank
      baseUri: "https://api.internal.commbank.com.au/retail-banking/v1"
      authentication:
        type: bearer
        token: "$secrets.netbank_token"
      resources:
        - name: data
          path: "/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: get-data
              method: GET

Reconciles New Payments Platform transactions by matching against core banking records and notifying treasury.

naftiko: "0.5"
info:
  label: "NPP Payment Reconciliation Pipeline"
  description: "Reconciles New Payments Platform transactions by matching against core banking records and notifying treasury."
  tags:
    - payments
    - npp
    - core-banking
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: npp-payment-reconciliation
      port: 8080
      tools:
        - name: run-npp-payment-reconciliation-pipeline
          description: "Reconciles New Payments Platform transactions by matching against core banking records and notifying treasury."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "corebanking.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "snowflake.execute-query"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://commbank.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/messages"
          operations:
            - name: send-notification
              method: POST

Processes a New Payments Platform (NPP) real-time payment by validating the PayID, debiting the source account, crediting the destination, and logging the transaction in the audit system.

naftiko: "0.5"
info:
  label: "NPP Real-Time Payment Processing Pipeline"
  description: "Processes a New Payments Platform (NPP) real-time payment by validating the PayID, debiting the source account, crediting the destination, and logging the transaction in the audit system."
  tags:
    - payments
    - npp
    - real-time-payments
    - core-banking
capability:
  exposes:
    - type: mcp
      namespace: real-time-payments
      port: 8080
      tools:
        - name: process-npp-payment
          description: "Given source and destination details, process an NPP real-time payment including PayID validation, debit, credit, and audit logging."
          inputParameters:
            - name: source_bsb
              in: body
              type: string
              description: "The source account BSB."
            - name: source_account
              in: body
              type: string
              description: "The source account number."
            - name: payid
              in: body
              type: string
              description: "The destination PayID (email or phone)."
            - name: amount
              in: body
              type: number
              description: "The payment amount in AUD."
            - name: description
              in: body
              type: string
              description: "The payment description."
          steps:
            - name: resolve-payid
              type: call
              call: "npp.resolve-payid"
              with:
                payid: "{{payid}}"
            - name: debit-source
              type: call
              call: "core-banking.debit-account"
              with:
                bsb: "{{source_bsb}}"
                account: "{{source_account}}"
                amount: "{{amount}}"
                reference: "{{description}}"
            - name: credit-destination
              type: call
              call: "npp.submit-payment"
              with:
                destination_bsb: "{{resolve-payid.bsb}}"
                destination_account: "{{resolve-payid.account_number}}"
                amount: "{{amount}}"
                description: "{{description}}"
            - name: log-audit
              type: call
              call: "audit.log-transaction"
              with:
                transaction_id: "{{credit-destination.transaction_id}}"
                type: "NPP_PAYMENT"
                amount: "{{amount}}"
                status: "{{credit-destination.status}}"
  consumes:
    - type: http
      namespace: npp
      baseUri: "https://api.internal.commbank.com.au/npp/v1"
      authentication:
        type: bearer
        token: "$secrets.npp_token"
      resources:
        - name: payid
          path: "/payid/resolve"
          operations:
            - name: resolve-payid
              method: POST
        - name: payments
          path: "/payments"
          operations:
            - name: submit-payment
              method: POST
    - type: http
      namespace: core-banking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts/debit"
          operations:
            - name: debit-account
              method: POST
    - type: http
      namespace: audit
      baseUri: "https://api.internal.commbank.com.au/audit/v1"
      authentication:
        type: bearer
        token: "$secrets.audit_token"
      resources:
        - name: transactions
          path: "/log"
          operations:
            - name: log-transaction
              method: POST

When a customer authorizes data sharing via CDR, records the consent in the consent registry, provisions API access tokens, and notifies the data recipient via webhook.

naftiko: "0.5"
info:
  label: "Open Banking Consent Management Pipeline"
  description: "When a customer authorizes data sharing via CDR, records the consent in the consent registry, provisions API access tokens, and notifies the data recipient via webhook."
  tags:
    - open-banking
    - cdr
    - consent
    - api-management
capability:
  exposes:
    - type: mcp
      namespace: open-banking
      port: 8080
      tools:
        - name: process-cdr-consent
          description: "Given a customer ID and data recipient, process a CDR consent authorization including registry update, token provisioning, and recipient notification."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "The banking customer identifier."
            - name: data_recipient_id
              in: body
              type: string
              description: "The accredited data recipient identifier."
            - name: scopes
              in: body
              type: string
              description: "The consented data scopes (e.g., accounts, transactions, balances)."
          steps:
            - name: register-consent
              type: call
              call: "consent-registry.create-consent"
              with:
                customer_id: "{{customer_id}}"
                recipient_id: "{{data_recipient_id}}"
                scopes: "{{scopes}}"
            - name: provision-token
              type: call
              call: "token-service.create-token"
              with:
                consent_id: "{{register-consent.consent_id}}"
                scopes: "{{scopes}}"
            - name: notify-recipient
              type: call
              call: "webhook.send-notification"
              with:
                recipient_url: "{{register-consent.callback_url}}"
                consent_id: "{{register-consent.consent_id}}"
                status: "active"
  consumes:
    - type: http
      namespace: consent-registry
      baseUri: "https://api.internal.commbank.com.au/openbanking/v1"
      authentication:
        type: bearer
        token: "$secrets.openbanking_token"
      resources:
        - name: consents
          path: "/consents"
          operations:
            - name: create-consent
              method: POST
    - type: http
      namespace: token-service
      baseUri: "https://api.internal.commbank.com.au/openbanking/v1"
      authentication:
        type: bearer
        token: "$secrets.openbanking_token"
      resources:
        - name: tokens
          path: "/tokens"
          operations:
            - name: create-token
              method: POST
    - type: http
      namespace: webhook
      baseUri: "https://api.internal.commbank.com.au/webhooks/v1"
      authentication:
        type: bearer
        token: "$secrets.webhook_token"
      resources:
        - name: notifications
          path: "/send"
          operations:
            - name: send-notification
              method: POST

Manages Open Banking data sharing by validating consent, extracting account data, and serving via the CDR API.

naftiko: "0.5"
info:
  label: "Open Banking Data Sharing Pipeline"
  description: "Manages Open Banking data sharing by validating consent, extracting account data, and serving via the CDR API."
  tags:
    - open-banking
    - cdr
    - consent-management
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: open-banking-data-sharing
      port: 8080
      tools:
        - name: run-open-banking-data-sharing-pipeline
          description: "Manages Open Banking data sharing by validating consent, extracting account data, and serving via the CDR API."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "corebanking.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "compliance.run-check"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "servicenow.create-incident"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: compliance
      baseUri: "https://api.internal.commbank.com.au/compliance/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: checks
          path: "/checks"
          operations:
            - name: run-check
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://commbank.service-now.com/api/now/table"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/incident"
          operations:
            - name: create-incident
              method: POST

Queries Oracle Database for tablespace utilization and returns current size, used space, free space, and utilization percentage.

naftiko: "0.5"
info:
  label: "Oracle Database Health Check"
  description: "Queries Oracle Database for tablespace utilization and returns current size, used space, free space, and utilization percentage."
  tags:
    - database
    - oracle
    - oracle-database
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: db-ops
      port: 8080
      tools:
        - name: get-tablespace-utilization
          description: "Look up Oracle tablespace utilization. Returns total size, used, free, and utilization percentage."
          inputParameters:
            - name: database_name
              in: body
              type: string
              description: "The Oracle database service name."
            - name: tablespace_name
              in: body
              type: string
              description: "The tablespace name to check."
          call: "oracle.get-tablespace"
          with:
            database_name: "{{database_name}}"
            tablespace_name: "{{tablespace_name}}"
          outputParameters:
            - name: total_size_gb
              type: number
              mapping: "$.tablespace.totalSizeGB"
            - name: used_gb
              type: number
              mapping: "$.tablespace.usedGB"
            - name: free_gb
              type: number
              mapping: "$.tablespace.freeGB"
            - name: utilization_pct
              type: number
              mapping: "$.tablespace.utilizationPct"
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://oracle-mgmt.internal.commbank.com.au/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_mgmt_token"
      resources:
        - name: tablespaces
          path: "/databases/{{database_name}}/tablespaces/{{tablespace_name}}"
          inputParameters:
            - name: database_name
              in: path
            - name: tablespace_name
              in: path
          operations:
            - name: get-tablespace
              method: GET

Retrieves Osko real-time payment status via the New Payments Platform.

naftiko: "0.5"
info:
  label: "Osko Instant Payment Status"
  description: "Retrieves Osko real-time payment status via the New Payments Platform."
  tags:
    - payments
    - osko
capability:
  exposes:
    - type: mcp
      namespace: payments
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves Osko real-time payment status via the New Payments Platform."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary identifier."
          call: "osko.get-data"
          with:
            input_id: "{{input_id}}"
  consumes:
    - type: http
      namespace: osko
      baseUri: "https://api.internal.commbank.com.au/payments/v1"
      authentication:
        type: bearer
        token: "$secrets.osko_token"
      resources:
        - name: data
          path: "/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: get-data
              method: GET

Retrieves a firewall rule from Palo Alto Networks by rule name, returning rule action, source zones, destination zones, and application filter.

naftiko: "0.5"
info:
  label: "Palo Alto Firewall Rule Lookup"
  description: "Retrieves a firewall rule from Palo Alto Networks by rule name, returning rule action, source zones, destination zones, and application filter."
  tags:
    - security
    - firewall
    - palo-alto-networks
capability:
  exposes:
    - type: mcp
      namespace: network-security
      port: 8080
      tools:
        - name: get-firewall-rule
          description: "Look up a Palo Alto Networks firewall rule by name. Returns action, source zones, destination zones, and application filter."
          inputParameters:
            - name: rule_name
              in: body
              type: string
              description: "The firewall rule name."
            - name: device_group
              in: body
              type: string
              description: "The Panorama device group."
          call: "paloalto.get-rule"
          with:
            rule_name: "{{rule_name}}"
            device_group: "{{device_group}}"
          outputParameters:
            - name: action
              type: string
              mapping: "$.result.entry.action"
            - name: source_zones
              type: string
              mapping: "$.result.entry.from.member"
            - name: destination_zones
              type: string
              mapping: "$.result.entry.to.member"
            - name: applications
              type: string
              mapping: "$.result.entry.application.member"
  consumes:
    - type: http
      namespace: paloalto
      baseUri: "https://panorama.internal.commbank.com.au/restapi/v10.2"
      authentication:
        type: apiKey
        key: "$secrets.paloalto_api_key"
      resources:
        - name: security-rules
          path: "/Policies/SecurityRules"
          operations:
            - name: get-rule
              method: GET

Processes pension payments by calculating entitlements, executing payments, and notifying members.

naftiko: "0.5"
info:
  label: "Pension Payment Processing Pipeline"
  description: "Processes pension payments by calculating entitlements, executing payments, and notifying members."
  tags:
    - superannuation
    - pension
    - bpay
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: pension-payment-processing
      port: 8080
      tools:
        - name: run-pension-payment-processing-pipeline
          description: "Processes pension payments by calculating entitlements, executing payments, and notifying members."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "cfs.get-fund"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "corebanking.get-account"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "outlook.send-email"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: cfs
      baseUri: "https://api.internal.commbank.com.au/cfs/v1"
      authentication:
        type: bearer
        token: "$secrets.cfs_token"
      resources:
        - name: funds
          path: "/funds"
          operations:
            - name: get-fund
              method: GET
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Processes personal loan top-up requests by checking eligibility, running credit assessment, and disbursing funds.

naftiko: "0.5"
info:
  label: "Personal Loan Top-Up Pipeline"
  description: "Processes personal loan top-up requests by checking eligibility, running credit assessment, and disbursing funds."
  tags:
    - lending
    - personal-loans
    - core-banking
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: personal-loan-top-up
      port: 8080
      tools:
        - name: run-personal-loan-top-up-pipeline
          description: "Processes personal loan top-up requests by checking eligibility, running credit assessment, and disbursing funds."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "corebanking.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "ml.run-model"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: ml
      baseUri: "https://ml.internal.commbank.com.au/v1"
      authentication:
        type: bearer
        token: "$secrets.ml_token"
      resources:
        - name: models
          path: "/predict"
          operations:
            - name: run-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/messages"
          operations:
            - name: send-notification
              method: POST

Triggers a dataset refresh in Power BI for a given workspace and dataset, returning the refresh status and completion time.

naftiko: "0.5"
info:
  label: "Power BI Report Refresh Trigger"
  description: "Triggers a dataset refresh in Power BI for a given workspace and dataset, returning the refresh status and completion time."
  tags:
    - analytics
    - reporting
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: bi-reporting
      port: 8080
      tools:
        - name: refresh-dataset
          description: "Trigger a Power BI dataset refresh. Returns refresh status and estimated completion time."
          inputParameters:
            - name: workspace_id
              in: body
              type: string
              description: "The Power BI workspace ID."
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID."
          call: "powerbi.refresh-dataset"
          with:
            workspace_id: "{{workspace_id}}"
            dataset_id: "{{dataset_id}}"
          outputParameters:
            - name: refresh_id
              type: string
              mapping: "$.id"
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: workspace_id
              in: path
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST

Manages property settlement by coordinating with the conveyancer, releasing funds, and registering the mortgage.

naftiko: "0.5"
info:
  label: "Property Settlement Pipeline"
  description: "Manages property settlement by coordinating with the conveyancer, releasing funds, and registering the mortgage."
  tags:
    - lending
    - property
    - settlements
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: property-settlement
      port: 8080
      tools:
        - name: run-property-settlement-pipeline
          description: "Manages property settlement by coordinating with the conveyancer, releasing funds, and registering the mortgage."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "corebanking.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "ml.run-model"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: ml
      baseUri: "https://ml.internal.commbank.com.au/v1"
      authentication:
        type: bearer
        token: "$secrets.ml_token"
      resources:
        - name: models
          path: "/predict"
          operations:
            - name: run-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/messages"
          operations:
            - name: send-notification
              method: POST

Triggers a Qlik Sense app reload for a given app ID and returns the reload status and task execution time.

naftiko: "0.5"
info:
  label: "Qlik Sense Dashboard Reload"
  description: "Triggers a Qlik Sense app reload for a given app ID and returns the reload status and task execution time."
  tags:
    - analytics
    - qlik-sense
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: bi-qlik
      port: 8080
      tools:
        - name: reload-qlik-app
          description: "Trigger a Qlik Sense app reload. Returns reload status and execution time."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "The Qlik Sense app ID."
          call: "qlik.reload-app"
          with:
            app_id: "{{app_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: execution_time
              type: number
              mapping: "$.executionTime"
  consumes:
    - type: http
      namespace: qlik
      baseUri: "https://qlik.internal.commbank.com.au/api/v1"
      authentication:
        type: bearer
        token: "$secrets.qlik_token"
      resources:
        - name: reloads
          path: "/reloads"
          operations:
            - name: reload-app
              method: POST

Retrieves the current foreign exchange rate for a currency pair from Bloomberg Enterprise Data, returning bid, ask, mid, and timestamp.

naftiko: "0.5"
info:
  label: "Real-Time FX Rate Lookup"
  description: "Retrieves the current foreign exchange rate for a currency pair from Bloomberg Enterprise Data, returning bid, ask, mid, and timestamp."
  tags:
    - treasury
    - forex
    - bloomberg
    - bloomberg-enterprise-data
capability:
  exposes:
    - type: mcp
      namespace: treasury
      port: 8080
      tools:
        - name: get-fx-rate
          description: "Look up the real-time FX rate for a currency pair from Bloomberg. Returns bid, ask, mid, and timestamp."
          inputParameters:
            - name: currency_pair
              in: body
              type: string
              description: "The currency pair (e.g., AUDUSD, EURAUD)."
          call: "bloomberg.get-fx-rate"
          with:
            currency_pair: "{{currency_pair}}"
          outputParameters:
            - name: bid
              type: number
              mapping: "$.data.PX_BID"
            - name: ask
              type: number
              mapping: "$.data.PX_ASK"
            - name: mid
              type: number
              mapping: "$.data.PX_MID"
            - name: timestamp
              type: string
              mapping: "$.data.LAST_UPDATE"
  consumes:
    - type: http
      namespace: bloomberg
      baseUri: "https://bsapi.bloomberg.com/eap/catalogs/bbg/datasets"
      authentication:
        type: bearer
        token: "$secrets.bloomberg_token"
      resources:
        - name: fx-rates
          path: "/snapshots/{{currency_pair}}+Curncy"
          inputParameters:
            - name: currency_pair
              in: path
          operations:
            - name: get-fx-rate
              method: GET

Handles regulatory breach notifications by assessing impact, filing with APRA, and notifying the board.

naftiko: "0.5"
info:
  label: "Regulatory Breach Notification Pipeline"
  description: "Handles regulatory breach notifications by assessing impact, filing with APRA, and notifying the board."
  tags:
    - compliance
    - apra
    - regulatory
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: regulatory-breach-notification
      port: 8080
      tools:
        - name: run-regulatory-breach-notification-pipe
          description: "Handles regulatory breach notifications by assessing impact, filing with APRA, and notifying the board."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "compliance.run-check"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "corebanking.get-account"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "outlook.send-email"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: compliance
      baseUri: "https://api.internal.commbank.com.au/compliance/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: checks
          path: "/checks"
          operations:
            - name: run-check
              method: POST
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Extracts transaction data from SAP BW, transforms it into APRA reporting format, uploads the report to SharePoint, and notifies the compliance team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Regulatory Reporting Pipeline"
  description: "Extracts transaction data from SAP BW, transforms it into APRA reporting format, uploads the report to SharePoint, and notifies the compliance team via Microsoft Teams."
  tags:
    - compliance
    - regulatory-reporting
    - sap-bw
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: regulatory-reporting
      port: 8080
      tools:
        - name: generate-apra-report
          description: "Given a reporting period and report type, extract data from SAP BW, generate the APRA report, and distribute to compliance."
          inputParameters:
            - name: report_period
              in: body
              type: string
              description: "The reporting period in YYYY-MM format."
            - name: report_type
              in: body
              type: string
              description: "The APRA report type (e.g., ARF_320_0, ARF_330_0)."
          steps:
            - name: extract-data
              type: call
              call: "sapbw.run-query"
              with:
                query_name: "APRA_{{report_type}}"
                period: "{{report_period}}"
            - name: generate-report
              type: call
              call: "reporting-engine.transform"
              with:
                data: "{{extract-data.results}}"
                template: "{{report_type}}"
            - name: upload-report
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "compliance_reports"
                file_path: "APRA/{{report_type}}/{{report_period}}.xlsx"
                content: "{{generate-report.file_content}}"
            - name: notify-compliance
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "regulatory-reporting"
                text: "APRA report {{report_type}} for {{report_period}} generated and uploaded. File: {{upload-report.url}}."
  consumes:
    - type: http
      namespace: sapbw
      baseUri: "https://commbank-bw.sap.com/sap/bw/ina"
      authentication:
        type: basic
        username: "$secrets.sapbw_user"
        password: "$secrets.sapbw_password"
      resources:
        - name: queries
          path: "/GetResponse"
          operations:
            - name: run-query
              method: POST
    - type: http
      namespace: reporting-engine
      baseUri: "https://api.internal.commbank.com.au/reporting/v1"
      authentication:
        type: bearer
        token: "$secrets.reporting_token"
      resources:
        - name: transform
          path: "/transform"
          operations:
            - name: transform
              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:/{{file_path}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: file_path
              in: path
          operations:
            - name: upload-file
              method: PUT
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves a pending access certification campaign from SailPoint, returning campaign name, reviewer, number of items, and due date.

naftiko: "0.5"
info:
  label: "SailPoint Access Certification Review"
  description: "Retrieves a pending access certification campaign from SailPoint, returning campaign name, reviewer, number of items, and due date."
  tags:
    - identity
    - access-management
    - sailpoint
capability:
  exposes:
    - type: mcp
      namespace: identity-governance
      port: 8080
      tools:
        - name: get-certification-campaign
          description: "Look up a SailPoint access certification campaign. Returns campaign name, reviewer, item count, and due date."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The SailPoint certification campaign ID."
          call: "sailpoint.get-campaign"
          with:
            campaign_id: "{{campaign_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.name"
            - name: reviewer
              type: string
              mapping: "$.reviewer.name"
            - name: item_count
              type: number
              mapping: "$.totalItems"
            - name: due_date
              type: string
              mapping: "$.dueDate"
  consumes:
    - type: http
      namespace: sailpoint
      baseUri: "https://commbank.api.identitynow.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sailpoint_token"
      resources:
        - name: campaigns
          path: "/campaigns/{{campaign_id}}"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign
              method: GET

When a new business banking lead is created in Salesforce, enriches it with Bloomberg Intelligence firmographic data, scores the lead, and assigns to the appropriate relationship manager.

naftiko: "0.5"
info:
  label: "Salesforce Lead Qualification Pipeline"
  description: "When a new business banking lead is created in Salesforce, enriches it with Bloomberg Intelligence firmographic data, scores the lead, and assigns to the appropriate relationship manager."
  tags:
    - sales
    - crm
    - salesforce
    - bloomberg-intelligence
    - lead-management
capability:
  exposes:
    - type: mcp
      namespace: sales-ops
      port: 8080
      tools:
        - name: qualify-business-lead
          description: "Given a Salesforce lead ID, enrich with firmographic data from Bloomberg, score the lead, and assign to a RM."
          inputParameters:
            - name: lead_id
              in: body
              type: string
              description: "The Salesforce lead ID."
          steps:
            - name: get-lead
              type: call
              call: "salesforce.get-lead"
              with:
                lead_id: "{{lead_id}}"
            - name: get-firmographics
              type: call
              call: "bloomberg.get-company-profile"
              with:
                company_name: "{{get-lead.Company}}"
            - name: update-lead
              type: call
              call: "salesforce.update-lead"
              with:
                lead_id: "{{lead_id}}"
                annual_revenue: "{{get-firmographics.revenue}}"
                industry: "{{get-firmographics.industry}}"
                employee_count: "{{get-firmographics.employee_count}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://commbank.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leads
          path: "/sobjects/Lead/{{lead_id}}"
          inputParameters:
            - name: lead_id
              in: path
          operations:
            - name: get-lead
              method: GET
            - name: update-lead
              method: PATCH
    - type: http
      namespace: bloomberg
      baseUri: "https://bsapi.bloomberg.com/eap/catalogs/bbg/datasets"
      authentication:
        type: bearer
        token: "$secrets.bloomberg_token"
      resources:
        - name: company-profiles
          path: "/company/{{company_name}}"
          inputParameters:
            - name: company_name
              in: path
          operations:
            - name: get-company-profile
              method: GET

When an expense report is submitted in SAP Concur, validates policy compliance, routes for manager approval in Workday, and notifies the submitter via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "SAP Concur Expense Approval Pipeline"
  description: "When an expense report is submitted in SAP Concur, validates policy compliance, routes for manager approval in Workday, and notifies the submitter via Microsoft Outlook."
  tags:
    - expense-management
    - sap-concur
    - workday
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: expense-management
      port: 8080
      tools:
        - name: process-expense-report
          description: "Given a Concur expense report ID, validate against policy, route for approval, and notify the submitter."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "The SAP Concur expense report ID."
            - name: submitter_employee_id
              in: body
              type: string
              description: "The Workday employee ID of the submitter."
          steps:
            - name: get-report
              type: call
              call: "concur.get-expense-report"
              with:
                report_id: "{{report_id}}"
            - name: get-submitter
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{submitter_employee_id}}"
            - name: get-manager
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{get-submitter.manager_id}}"
            - name: notify-submitter
              type: call
              call: "outlook.send-email"
              with:
                to: "{{get-submitter.work_email}}"
                subject: "Expense report {{report_id}} submitted for approval"
                body: "Your expense report totalling {{get-report.total_amount}} {{get-report.currency}} has been routed to {{get-manager.full_name}} for approval."
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us2.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: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/users/{{to}}/sendMail"
          inputParameters:
            - name: to
              in: path
          operations:
            - name: send-email
              method: POST

Looks up a SAP payment order by reference number and returns status, amount, currency, and beneficiary details for the payments operations team.

naftiko: "0.5"
info:
  label: "SAP Payment Order Status"
  description: "Looks up a SAP payment order by reference number and returns status, amount, currency, and beneficiary details for the payments operations team."
  tags:
    - payments
    - erp
    - sap
    - finance
capability:
  exposes:
    - type: mcp
      namespace: payments
      port: 8080
      tools:
        - name: get-payment-order
          description: "Look up a SAP payment order by reference number. Returns status, amount, currency, and beneficiary."
          inputParameters:
            - name: payment_ref
              in: body
              type: string
              description: "The SAP payment order reference number."
          call: "sap.get-payment"
          with:
            payment_ref: "{{payment_ref}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.d.PaymentStatus"
            - name: amount
              type: string
              mapping: "$.d.Amount"
            - name: currency
              type: string
              mapping: "$.d.Currency"
            - name: beneficiary
              type: string
              mapping: "$.d.BeneficiaryName"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://commbank-s4.sap.com/sap/opu/odata/sap/FI_PAYMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
      resources:
        - name: payment-orders
          path: "/A_PaymentOrder('{{payment_ref}}')"
          inputParameters:
            - name: payment_ref
              in: path
          operations:
            - name: get-payment
              method: GET

Retrieves the status of a ServiceNow change request, returning current state, approval status, planned start date, and risk assessment.

naftiko: "0.5"
info:
  label: "ServiceNow Change Request Status"
  description: "Retrieves the status of a ServiceNow change request, returning current state, approval status, planned start date, and risk assessment."
  tags:
    - change-management
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: change-management
      port: 8080
      tools:
        - name: get-change-request
          description: "Look up a ServiceNow change request. Returns state, approval status, planned start, and risk assessment."
          inputParameters:
            - name: change_number
              in: body
              type: string
              description: "The ServiceNow change request number (e.g., CHG0012345)."
          call: "servicenow.get-change"
          with:
            change_number: "{{change_number}}"
          outputParameters:
            - name: state
              type: string
              mapping: "$.result.state"
            - name: approval
              type: string
              mapping: "$.result.approval"
            - name: planned_start
              type: string
              mapping: "$.result.start_date"
            - name: risk
              type: string
              mapping: "$.result.risk"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://commbank.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: changes
          path: "/table/change_request"
          operations:
            - name: get-change
              method: GET

Retrieves IT incident details from ServiceNow for technology operations.

naftiko: "0.5"
info:
  label: "ServiceNow IT Incident Lookup"
  description: "Retrieves IT incident details from ServiceNow for technology operations."
  tags:
    - operations
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: operations
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves IT incident details from ServiceNow for technology operations."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary identifier."
          call: "servicenow.get-data"
          with:
            input_id: "{{input_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://api.internal.commbank.com.au/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: data
          path: "/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: get-data
              method: GET

Assesses SME cash flow lending by pulling accounting data from Xero, running risk models, and generating loan offers.

naftiko: "0.5"
info:
  label: "SME Cash Flow Lending Pipeline"
  description: "Assesses SME cash flow lending by pulling accounting data from Xero, running risk models, and generating loan offers."
  tags:
    - business-banking
    - sme-lending
    - xero
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: sme-cash-flow-lending
      port: 8080
      tools:
        - name: run-sme-cash-flow-lending-pipeline
          description: "Assesses SME cash flow lending by pulling accounting data from Xero, running risk models, and generating loan offers."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "xero.get-accounts"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "ml.run-model"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "salesforce.get-account"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: xero
      baseUri: "https://api.xero.com/api.xro/2.0"
      authentication:
        type: bearer
        token: "$secrets.xero_token"
      resources:
        - name: accounts
          path: "/Accounts"
          operations:
            - name: get-accounts
              method: GET
    - type: http
      namespace: ml
      baseUri: "https://ml.internal.commbank.com.au/v1"
      authentication:
        type: bearer
        token: "$secrets.ml_token"
      resources:
        - name: models
          path: "/predict"
          operations:
            - name: run-model
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://commbank.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account"
          operations:
            - name: get-account
              method: GET

Executes a SQL query against a Snowflake warehouse and returns the query result set, execution time, and rows returned.

naftiko: "0.5"
info:
  label: "Snowflake Query Execution"
  description: "Executes a SQL query against a Snowflake warehouse and returns the query result set, execution time, and rows returned."
  tags:
    - data-warehouse
    - snowflake
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: data-warehouse
      port: 8080
      tools:
        - name: run-snowflake-query
          description: "Execute a SQL query on Snowflake. Returns result set, execution time, and row count."
          inputParameters:
            - name: warehouse
              in: body
              type: string
              description: "The Snowflake warehouse name."
            - name: database
              in: body
              type: string
              description: "The Snowflake database name."
            - name: sql
              in: body
              type: string
              description: "The SQL query to execute."
          call: "snowflake.execute-query"
          with:
            warehouse: "{{warehouse}}"
            database: "{{database}}"
            statement: "{{sql}}"
          outputParameters:
            - name: rows_returned
              type: number
              mapping: "$.resultSetMetaData.numRows"
            - name: execution_time_ms
              type: number
              mapping: "$.stats.executionTime"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://commbank.au-east-1.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Runs a security event search in Splunk for a given time range and source type, returning event count, top sources, and severity breakdown.

naftiko: "0.5"
info:
  label: "Splunk Security Event Search"
  description: "Runs a security event search in Splunk for a given time range and source type, returning event count, top sources, and severity breakdown."
  tags:
    - security
    - siem
    - splunk
capability:
  exposes:
    - type: mcp
      namespace: security-ops
      port: 8080
      tools:
        - name: search-security-events
          description: "Search Splunk for security events. Returns event count, top sources, and severity breakdown."
          inputParameters:
            - name: search_query
              in: body
              type: string
              description: "The SPL search query."
            - name: time_range
              in: body
              type: string
              description: "The time range (e.g., -24h, -7d)."
          call: "splunk.run-search"
          with:
            search: "{{search_query}}"
            earliest_time: "{{time_range}}"
          outputParameters:
            - name: event_count
              type: number
              mapping: "$.results.total"
            - name: top_sources
              type: string
              mapping: "$.results.top_sources"
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://splunk.internal.commbank.com.au:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: search
          path: "/search/jobs/export"
          operations:
            - name: run-search
              method: POST

Certifies staff system access by pulling entitlements from SailPoint, routing reviews, and revoking uncertified access.

naftiko: "0.5"
info:
  label: "Staff Access Certification Pipeline"
  description: "Certifies staff system access by pulling entitlements from SailPoint, routing reviews, and revoking uncertified access."
  tags:
    - security
    - sailpoint
    - access-certification
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: staff-access-certification
      port: 8080
      tools:
        - name: run-staff-access-certification-pipeline
          description: "Certifies staff system access by pulling entitlements from SailPoint, routing reviews, and revoking uncertified access."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "sailpoint.get-identity"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "compliance.run-check"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: sailpoint
      baseUri: "https://commbank.api.identitynow.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sailpoint_token"
      resources:
        - name: identities
          path: "/identities"
          operations:
            - name: get-identity
              method: GET
    - type: http
      namespace: compliance
      baseUri: "https://api.internal.commbank.com.au/compliance/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: checks
          path: "/checks"
          operations:
            - name: run-check
              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/messages"
          operations:
            - name: send-notification
              method: POST

Processes super fund rollovers by verifying member details, initiating transfer, and confirming with the member.

naftiko: "0.5"
info:
  label: "Superannuation Rollover Pipeline"
  description: "Processes super fund rollovers by verifying member details, initiating transfer, and confirming with the member."
  tags:
    - superannuation
    - colonial-first-state
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: superannuation-rollover
      port: 8080
      tools:
        - name: run-superannuation-rollover-pipeline
          description: "Processes super fund rollovers by verifying member details, initiating transfer, and confirming with the member."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "cfs.get-fund"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "corebanking.get-account"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "outlook.send-email"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: cfs
      baseUri: "https://api.internal.commbank.com.au/cfs/v1"
      authentication:
        type: bearer
        token: "$secrets.cfs_token"
      resources:
        - name: funds
          path: "/funds"
          operations:
            - name: get-fund
              method: GET
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Retrieves metadata for a Tableau workbook including view count, last refresh time, and data source connection status.

naftiko: "0.5"
info:
  label: "Tableau Dashboard Lookup"
  description: "Retrieves metadata for a Tableau workbook including view count, last refresh time, and data source connection status."
  tags:
    - analytics
    - tableau
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: bi-analytics
      port: 8080
      tools:
        - name: get-workbook-info
          description: "Look up Tableau workbook metadata. Returns view count, last refresh time, and data source status."
          inputParameters:
            - name: workbook_id
              in: body
              type: string
              description: "The Tableau workbook ID."
          call: "tableau.get-workbook"
          with:
            workbook_id: "{{workbook_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.workbook.name"
            - name: view_count
              type: number
              mapping: "$.workbook.viewCount"
            - name: last_refresh
              type: string
              mapping: "$.workbook.updatedAt"
  consumes:
    - type: http
      namespace: tableau
      baseUri: "https://tableau.internal.commbank.com.au/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: workbooks
          path: "/sites/{{site_id}}/workbooks/{{workbook_id}}"
          inputParameters:
            - name: workbook_id
              in: path
          operations:
            - name: get-workbook
              method: GET

Manages technology changes by creating ServiceNow change requests, running pre-deployment checks, and notifying teams.

naftiko: "0.5"
info:
  label: "Technology Change Management Pipeline"
  description: "Manages technology changes by creating ServiceNow change requests, running pre-deployment checks, and notifying teams."
  tags:
    - operations
    - servicenow
    - azure-devops
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: technology-change-management
      port: 8080
      tools:
        - name: run-technology-change-management-pipeli
          description: "Manages technology changes by creating ServiceNow change requests, running pre-deployment checks, and notifying teams."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "servicenow.create-incident"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "snowflake.execute-query"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://commbank.service-now.com/api/now/table"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://commbank.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/messages"
          operations:
            - name: send-notification
              method: POST

Runs a data quality validation query against Teradata and returns row count, null percentage, and duplicate count for a given table.

naftiko: "0.5"
info:
  label: "Teradata Data Quality Check"
  description: "Runs a data quality validation query against Teradata and returns row count, null percentage, and duplicate count for a given table."
  tags:
    - data-quality
    - teradata
    - data-governance
capability:
  exposes:
    - type: mcp
      namespace: data-quality
      port: 8080
      tools:
        - name: check-data-quality
          description: "Run data quality checks on a Teradata table. Returns row count, null percentage, and duplicate count."
          inputParameters:
            - name: database_name
              in: body
              type: string
              description: "The Teradata database name."
            - name: table_name
              in: body
              type: string
              description: "The table name to validate."
            - name: key_column
              in: body
              type: string
              description: "The primary key column for duplicate checking."
          call: "teradata.run-quality-check"
          with:
            database: "{{database_name}}"
            table: "{{table_name}}"
            key_column: "{{key_column}}"
          outputParameters:
            - name: row_count
              type: number
              mapping: "$.quality.rowCount"
            - name: null_pct
              type: number
              mapping: "$.quality.nullPercentage"
            - name: duplicate_count
              type: number
              mapping: "$.quality.duplicateCount"
  consumes:
    - type: http
      namespace: teradata
      baseUri: "https://teradata.internal.commbank.com.au/api/v1"
      authentication:
        type: bearer
        token: "$secrets.teradata_token"
      resources:
        - name: quality
          path: "/quality/check"
          operations:
            - name: run-quality-check
              method: POST

Runs a Terraform plan against the current state, identifies drift, creates a ServiceNow change request for remediation, and alerts the platform team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Terraform Infrastructure Drift Detection Pipeline"
  description: "Runs a Terraform plan against the current state, identifies drift, creates a ServiceNow change request for remediation, and alerts the platform team via Microsoft Teams."
  tags:
    - infrastructure
    - terraform
    - servicenow
    - microsoft-teams
    - platform
capability:
  exposes:
    - type: mcp
      namespace: infra-ops
      port: 8080
      tools:
        - name: detect-infra-drift
          description: "Given a Terraform workspace, run a plan to detect drift, create a change request, and notify the platform team."
          inputParameters:
            - name: workspace_id
              in: body
              type: string
              description: "The Terraform Cloud workspace ID."
            - name: organization
              in: body
              type: string
              description: "The Terraform Cloud organization name."
          steps:
            - name: trigger-plan
              type: call
              call: "terraform.create-run"
              with:
                workspace_id: "{{workspace_id}}"
                is_destroy: false
                message: "Automated drift detection"
            - name: create-change
              type: call
              call: "servicenow.create-change"
              with:
                short_description: "Infrastructure drift detected: workspace {{workspace_id}}"
                category: "infrastructure"
                description: "Terraform plan run {{trigger-plan.id}} detected changes. Resources to add: {{trigger-plan.resource_additions}}, change: {{trigger-plan.resource_changes}}, destroy: {{trigger-plan.resource_destructions}}."
            - name: notify-platform
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "platform-engineering"
                text: "Infrastructure drift detected in workspace {{workspace_id}}. Plan: +{{trigger-plan.resource_additions}} ~{{trigger-plan.resource_changes}} -{{trigger-plan.resource_destructions}}. CHG: {{create-change.number}}."
  consumes:
    - type: http
      namespace: terraform
      baseUri: "https://app.terraform.io/api/v2"
      authentication:
        type: bearer
        token: "$secrets.terraform_token"
      resources:
        - name: runs
          path: "/runs"
          operations:
            - name: create-run
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://commbank.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Submits a bond trade request via Tradeweb, records the execution in Bloomberg AIM, and notifies the trading desk via Microsoft Teams with fill details.

naftiko: "0.5"
info:
  label: "Tradeweb Bond Trade Execution Pipeline"
  description: "Submits a bond trade request via Tradeweb, records the execution in Bloomberg AIM, and notifies the trading desk via Microsoft Teams with fill details."
  tags:
    - trading
    - fixed-income
    - tradeweb
    - bloomberg-aim
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: fixed-income-trading
      port: 8080
      tools:
        - name: execute-bond-trade
          description: "Given bond details and trade parameters, submit an order via Tradeweb, record in Bloomberg AIM, and notify the desk."
          inputParameters:
            - name: isin
              in: body
              type: string
              description: "The bond ISIN code."
            - name: side
              in: body
              type: string
              description: "The trade side (buy or sell)."
            - name: notional
              in: body
              type: number
              description: "The notional amount of the trade."
            - name: counterparty
              in: body
              type: string
              description: "The counterparty dealer ID."
          steps:
            - name: submit-rfq
              type: call
              call: "tradeweb.submit-rfq"
              with:
                isin: "{{isin}}"
                side: "{{side}}"
                notional: "{{notional}}"
                counterparty: "{{counterparty}}"
            - name: record-trade
              type: call
              call: "bloomberg-aim.record-execution"
              with:
                trade_id: "{{submit-rfq.trade_id}}"
                isin: "{{isin}}"
                price: "{{submit-rfq.fill_price}}"
                notional: "{{notional}}"
            - name: notify-desk
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "fi-trading-desk"
                text: "Bond trade executed: {{isin}} {{side}} {{notional}} @ {{submit-rfq.fill_price}}. Tradeweb ID: {{submit-rfq.trade_id}}. AIM ref: {{record-trade.aim_reference}}."
  consumes:
    - type: http
      namespace: tradeweb
      baseUri: "https://api.tradeweb.com/v2"
      authentication:
        type: bearer
        token: "$secrets.tradeweb_token"
      resources:
        - name: rfq
          path: "/rfq"
          operations:
            - name: submit-rfq
              method: POST
    - type: http
      namespace: bloomberg-aim
      baseUri: "https://bsapi.bloomberg.com/aim/api/v1"
      authentication:
        type: bearer
        token: "$secrets.bloomberg_aim_token"
      resources:
        - name: executions
          path: "/executions"
          operations:
            - name: record-execution
              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: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves fraud alert details from Splunk for a given transaction ID, returning risk score, alert category, and flagged patterns for the fraud operations team.

naftiko: "0.5"
info:
  label: "Transaction Fraud Alert Lookup"
  description: "Retrieves fraud alert details from Splunk for a given transaction ID, returning risk score, alert category, and flagged patterns for the fraud operations team."
  tags:
    - fraud
    - security
    - splunk
    - transaction-monitoring
capability:
  exposes:
    - type: mcp
      namespace: fraud-ops
      port: 8080
      tools:
        - name: get-fraud-alert
          description: "Look up a fraud alert by transaction ID in Splunk. Returns risk score, alert category, and flagged patterns."
          inputParameters:
            - name: transaction_id
              in: body
              type: string
              description: "The unique transaction identifier."
          call: "splunk.search-alert"
          with:
            transaction_id: "{{transaction_id}}"
          outputParameters:
            - name: risk_score
              type: number
              mapping: "$.results[0].risk_score"
            - name: alert_category
              type: string
              mapping: "$.results[0].category"
            - name: flagged_patterns
              type: string
              mapping: "$.results[0].patterns"
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://splunk.internal.commbank.com.au:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: search
          path: "/search/jobs/export"
          operations:
            - name: search-alert
              method: POST

Generates daily treasury cash positions by aggregating across all accounts, computing net position, and distributing.

naftiko: "0.5"
info:
  label: "Treasury Daily Cash Position Pipeline"
  description: "Generates daily treasury cash positions by aggregating across all accounts, computing net position, and distributing."
  tags:
    - treasury
    - core-banking
    - bloomberg
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: treasury-daily-cash-position
      port: 8080
      tools:
        - name: run-treasury-daily-cash-position-pipeli
          description: "Generates daily treasury cash positions by aggregating across all accounts, computing net position, and distributing."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "corebanking.get-account"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "bloomberg.get-data"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "msteams.send-notification"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.internal.commbank.com.au/core/v2"
      authentication:
        type: bearer
        token: "$secrets.core_banking_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: bloomberg
      baseUri: "https://bsapi.bloomberg.com/eap/catalogs/bbg"
      authentication:
        type: bearer
        token: "$secrets.bloomberg_token"
      resources:
        - name: data
          path: "/datasets"
          operations:
            - name: get-data
              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/messages"
          operations:
            - name: send-notification
              method: POST

Runs a vulnerability scan report from SolarWinds, correlates findings with the CMDB in ServiceNow, and creates remediation tasks assigned to the owning team.

naftiko: "0.5"
info:
  label: "Vulnerability Scan Report Pipeline"
  description: "Runs a vulnerability scan report from SolarWinds, correlates findings with the CMDB in ServiceNow, and creates remediation tasks assigned to the owning team."
  tags:
    - security
    - vulnerability-management
    - solarwinds
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: vuln-management
      port: 8080
      tools:
        - name: process-vuln-report
          description: "Given a scan ID, retrieve SolarWinds vulnerability results, match to CMDB, and create ServiceNow remediation tasks."
          inputParameters:
            - name: scan_id
              in: body
              type: string
              description: "The SolarWinds vulnerability scan ID."
          steps:
            - name: get-scan-results
              type: call
              call: "solarwinds.get-scan"
              with:
                scan_id: "{{scan_id}}"
            - name: get-cmdb-ci
              type: call
              call: "servicenow.get-ci"
              with:
                ip_address: "{{get-scan-results.host_ip}}"
            - name: create-remediation
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Vulnerability remediation: {{get-scan-results.top_vuln}} on {{get-cmdb-ci.name}}"
                category: "security_remediation"
                assigned_group: "{{get-cmdb-ci.support_group}}"
                description: "Critical vulns: {{get-scan-results.critical_count}}. High: {{get-scan-results.high_count}}. Host: {{get-scan-results.host_ip}}. CI: {{get-cmdb-ci.name}}."
  consumes:
    - type: http
      namespace: solarwinds
      baseUri: "https://solarwinds.internal.commbank.com.au/api/v2"
      authentication:
        type: bearer
        token: "$secrets.solarwinds_token"
      resources:
        - name: scans
          path: "/scans/{{scan_id}}/results"
          inputParameters:
            - name: scan_id
              in: path
          operations:
            - name: get-scan
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://commbank.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: cmdb
          path: "/table/cmdb_ci"
          operations:
            - name: get-ci
              method: GET
        - name: tasks
          path: "/table/sc_task"
          operations:
            - name: create-task
              method: POST

When a wealth portfolio drifts beyond threshold, pulls current allocations from Bloomberg AIM, calculates rebalance trades, and submits orders to the trading system while notifying the portfolio manager via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Wealth Management Portfolio Rebalance Pipeline"
  description: "When a wealth portfolio drifts beyond threshold, pulls current allocations from Bloomberg AIM, calculates rebalance trades, and submits orders to the trading system while notifying the portfolio manager via Microsoft Teams."
  tags:
    - wealth-management
    - portfolio
    - bloomberg-aim
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: wealth-management
      port: 8080
      tools:
        - name: rebalance-portfolio
          description: "Given a portfolio ID and drift threshold, calculate and submit rebalancing trades and notify the portfolio manager."
          inputParameters:
            - name: portfolio_id
              in: body
              type: string
              description: "The Bloomberg AIM portfolio identifier."
            - name: drift_threshold
              in: body
              type: number
              description: "The maximum allowable drift percentage before rebalancing."
          steps:
            - name: get-allocations
              type: call
              call: "bloomberg-aim.get-portfolio"
              with:
                portfolio_id: "{{portfolio_id}}"
            - name: calculate-trades
              type: call
              call: "rebalance-engine.calculate"
              with:
                current_allocations: "{{get-allocations.positions}}"
                target_allocations: "{{get-allocations.model}}"
                threshold: "{{drift_threshold}}"
            - name: submit-orders
              type: call
              call: "bloomberg-aim.submit-orders"
              with:
                portfolio_id: "{{portfolio_id}}"
                orders: "{{calculate-trades.trade_list}}"
            - name: notify-pm
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "wealth-trading"
                text: "Portfolio {{portfolio_id}} rebalanced. {{calculate-trades.trade_count}} trades submitted. Max drift was {{calculate-trades.max_drift}}%."
  consumes:
    - type: http
      namespace: bloomberg-aim
      baseUri: "https://bsapi.bloomberg.com/aim/api/v1"
      authentication:
        type: bearer
        token: "$secrets.bloomberg_aim_token"
      resources:
        - name: portfolios
          path: "/portfolios/{{portfolio_id}}"
          inputParameters:
            - name: portfolio_id
              in: path
          operations:
            - name: get-portfolio
              method: GET
        - name: orders
          path: "/orders"
          operations:
            - name: submit-orders
              method: POST
    - type: http
      namespace: rebalance-engine
      baseUri: "https://api.internal.commbank.com.au/wealth/v1"
      authentication:
        type: bearer
        token: "$secrets.wealth_token"
      resources:
        - name: rebalance
          path: "/rebalance/calculate"
          operations:
            - name: calculate
              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: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Conducts wealth portfolio reviews by pulling positions from Colonial First State, computing performance, and emailing the advisor.

naftiko: "0.5"
info:
  label: "Wealth Portfolio Review Pipeline"
  description: "Conducts wealth portfolio reviews by pulling positions from Colonial First State, computing performance, and emailing the advisor."
  tags:
    - wealth-management
    - colonial-first-state
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: wealth-portfolio-review
      port: 8080
      tools:
        - name: run-wealth-portfolio-review-pipeline
          description: "Conducts wealth portfolio reviews by pulling positions from Colonial First State, computing performance, and emailing the advisor."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary input identifier."
            - name: scope
              in: body
              type: string
              description: "The processing scope."
          steps:
            - name: fetch-data
              type: call
              call: "cfs.get-fund"
              with:
                input_id: "{{input_id}}"
            - name: process-data
              type: call
              call: "snowflake.execute-query"
              with:
                data: "{{fetch-data.result}}"
            - name: deliver-results
              type: call
              call: "outlook.send-email"
              with:
                data: "{{process-data.result}}"
  consumes:
    - type: http
      namespace: cfs
      baseUri: "https://api.internal.commbank.com.au/cfs/v1"
      authentication:
        type: bearer
        token: "$secrets.cfs_token"
      resources:
        - name: funds
          path: "/funds"
          operations:
            - name: get-fund
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://commbank.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: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Retrieves an employee's current compensation from Workday, compares against Mercer market data, and creates a compensation review task in ServiceNow for HR approval.

naftiko: "0.5"
info:
  label: "Workday Compensation Review Pipeline"
  description: "Retrieves an employee's current compensation from Workday, compares against Mercer market data, and creates a compensation review task in ServiceNow for HR approval."
  tags:
    - hr
    - compensation
    - workday
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: hr-compensation
      port: 8080
      tools:
        - name: initiate-comp-review
          description: "Given an employee ID and job profile, pull current compensation from Workday, compare to market data, and create a review task."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID."
            - name: job_profile
              in: body
              type: string
              description: "The Workday job profile code."
          steps:
            - name: get-compensation
              type: call
              call: "workday.get-compensation"
              with:
                worker_id: "{{employee_id}}"
            - name: get-market-data
              type: call
              call: "mercer.get-benchmark"
              with:
                job_profile: "{{job_profile}}"
                country: "AU"
            - name: create-review
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Compensation review: {{employee_id}}"
                category: "hr_compensation"
                description: "Current: {{get-compensation.total_base_pay}} AUD. Market P50: {{get-market-data.p50}}. Market P75: {{get-market-data.p75}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: compensation
          path: "/workers/{{worker_id}}/compensation"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-compensation
              method: GET
    - type: http
      namespace: mercer
      baseUri: "https://api.mercer.com/compensation/v1"
      authentication:
        type: bearer
        token: "$secrets.mercer_token"
      resources:
        - name: benchmarks
          path: "/benchmarks"
          operations:
            - name: get-benchmark
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://commbank.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/sc_task"
          operations:
            - name: create-task
              method: POST

Retrieves portfolio company details from x15 Ventures investment tracking.

naftiko: "0.5"
info:
  label: "x15 Ventures Portfolio Lookup"
  description: "Retrieves portfolio company details from x15 Ventures investment tracking."
  tags:
    - innovation
    - x15-ventures
capability:
  exposes:
    - type: mcp
      namespace: innovation
      port: 8080
      tools:
        - name: get-data
          description: "Retrieves portfolio company details from x15 Ventures investment tracking."
          inputParameters:
            - name: input_id
              in: body
              type: string
              description: "The primary identifier."
          call: "x15_ventures.get-data"
          with:
            input_id: "{{input_id}}"
  consumes:
    - type: http
      namespace: x15_ventures
      baseUri: "https://api.internal.commbank.com.au/innovation/v1"
      authentication:
        type: bearer
        token: "$secrets.x15_ventures_token"
      resources:
        - name: data
          path: "/{{input_id}}"
          inputParameters:
            - name: input_id
              in: path
          operations:
            - name: get-data
              method: GET