TD Bank Group Capabilities

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

Sort
Expand

Retrieves the current balance, available balance, and hold amount for a customer account from the core banking API. Used by tellers and contact center agents.

naftiko: "0.5"
info:
  label: "Account Balance Lookup"
  description: "Retrieves the current balance, available balance, and hold amount for a customer account from the core banking API. Used by tellers and contact center agents."
  tags:
    - banking
    - accounts
    - core-banking
capability:
  exposes:
    - type: mcp
      namespace: account-inquiry
      port: 8080
      tools:
        - name: get-account-balance
          description: "Look up current balance, available balance, and hold amount for a customer account."
          inputParameters:
            - name: account_number
              in: body
              type: string
              description: "The customer account number."
          call: "corebanking.get-balance"
          with:
            account_number: "{{account_number}}"
          outputParameters:
            - name: current_balance
              type: number
              mapping: "$.currentBalance"
            - name: available_balance
              type: number
              mapping: "$.availableBalance"
            - name: hold_amount
              type: number
              mapping: "$.holdAmount"
            - name: currency
              type: string
              mapping: "$.currency"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.td.com/core-banking/v1"
      authentication:
        type: bearer
        token: "$secrets.corebanking_token"
      resources:
        - name: accounts
          path: "/accounts/{{account_number}}/balance"
          inputParameters:
            - name: account_number
              in: path
          operations:
            - name: get-balance
              method: GET

Processes a customer account closure: transfers remaining balance, closes the account in core banking, updates Salesforce, archives documents in SharePoint, and sends closure confirmation.

naftiko: "0.5"
info:
  label: "Account Closure Orchestrator"
  description: "Processes a customer account closure: transfers remaining balance, closes the account in core banking, updates Salesforce, archives documents in SharePoint, and sends closure confirmation."
  tags:
    - banking
    - accounts
    - salesforce
    - sharepoint
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: account-closure
      port: 8080
      tools:
        - name: close-account
          description: "Orchestrate full account closure across banking, CRM, and document systems."
          inputParameters:
            - name: account_number
              in: body
              type: string
              description: "Account number to close."
            - name: customer_email
              in: body
              type: string
              description: "Customer email."
            - name: sf_account_id
              in: body
              type: string
              description: "Salesforce account ID."
            - name: transfer_to
              in: body
              type: string
              description: "Account to transfer remaining balance to."
          steps:
            - name: get-balance
              type: call
              call: "corebanking.get-balance"
              with:
                account_number: "{{account_number}}"
            - name: transfer-balance
              type: call
              call: "payments.internal-transfer"
              with:
                from_account: "{{account_number}}"
                to_account: "{{transfer_to}}"
                amount: "{{get-balance.available_balance}}"
            - name: close-account
              type: call
              call: "corebanking.close-account"
              with:
                account_number: "{{account_number}}"
            - name: update-sf
              type: call
              call: "salesforce.update-account"
              with:
                account_id: "{{sf_account_id}}"
                Account_Status__c: "Closed"
            - name: archive-docs
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "closed_accounts"
                folder_path: "Archive/{{account_number}}"
            - name: send-confirmation
              type: call
              call: "outlook.send-email"
              with:
                to: "{{customer_email}}"
                subject: "TD Bank - Account Closure Confirmation"
                body: "Your account {{account_number}} has been closed. Remaining balance of ${{get-balance.available_balance}} has been transferred."
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.td.com/core-banking/v1"
      authentication:
        type: bearer
        token: "$secrets.corebanking_token"
      resources:
        - name: balance
          path: "/accounts/{{account_number}}/balance"
          inputParameters:
            - name: account_number
              in: path
          operations:
            - name: get-balance
              method: GET
        - name: accounts
          path: "/accounts/{{account_number}}/close"
          inputParameters:
            - name: account_number
              in: path
          operations:
            - name: close-account
              method: POST
    - type: http
      namespace: payments
      baseUri: "https://api.td.com/payments/v1"
      authentication:
        type: bearer
        token: "$secrets.payments_token"
      resources:
        - name: transfers
          path: "/internal-transfers"
          operations:
            - name: internal-transfer
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://td.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: update-account
              method: PATCH
    - type: http
      namespace: 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: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Remediates customer accounts by correcting errors, adjusting balances, and sending notifications.

naftiko: "0.5"
info:
  label: "Account Remediation Orchestrator"
  description: "Remediates customer accounts by correcting errors, adjusting balances, and sending notifications."
  tags:
    - operations
    - customer-service
    - finance
capability:
  exposes:
    - type: mcp
      namespace: operations
      port: 8080
      tools:
        - name: run-account-remediation-orchestrator
          description: "Remediates customer accounts by correcting errors, adjusting balances, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Account Remediation Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Searches for transactions in a customer account.

naftiko: "0.5"
info:
  label: "Account Transaction Search"
  description: "Searches for transactions in a customer account."
  tags:
    - banking
    - customer-service
capability:
  exposes:
    - type: mcp
      namespace: banking
      port: 8080
      tools:
        - name: get-account
          description: "Searches for transactions in a customer account."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The account transaction search identifier."
          call: "banking-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: banking-api
      baseUri: "https://api.td.com/banking/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: account
          path: "/account/transaction/search/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-account
              method: GET

Submits a batch of ACH payment instructions from a Snowflake staging table, processes them through the payments gateway, and updates the status back in the database.

naftiko: "0.5"
info:
  label: "ACH Payment Batch Processor"
  description: "Submits a batch of ACH payment instructions from a Snowflake staging table, processes them through the payments gateway, and updates the status back in the database."
  tags:
    - banking
    - payments
    - ach
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: ach-processing
      port: 8080
      tools:
        - name: process-ach-batch
          description: "Retrieve ACH batch from Snowflake, submit to payments gateway, and update status."
          inputParameters:
            - name: batch_id
              in: body
              type: string
              description: "ACH batch ID in the staging table."
          steps:
            - name: get-batch
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "SELECT * FROM PAYMENTS.ACH_STAGING WHERE batch_id = '{{batch_id}}' AND status = 'pending'"
            - name: submit-ach
              type: call
              call: "payments.submit-ach-batch"
              with:
                batch_id: "{{batch_id}}"
                transactions: "{{get-batch.data}}"
            - name: update-status
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "UPDATE PAYMENTS.ACH_STAGING SET status = 'submitted', gateway_ref = '{{submit-ach.gateway_reference}}' WHERE batch_id = '{{batch_id}}'"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://td.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: payments
      baseUri: "https://api.td.com/payments/v1"
      authentication:
        type: bearer
        token: "$secrets.payments_token"
      resources:
        - name: ach
          path: "/ach/batches"
          operations:
            - name: submit-ach-batch
              method: POST

Manages annual compliance certifications by distributing attestations, tracking completion, and filing results.

naftiko: "0.5"
info:
  label: "Annual Compliance Certification Orchestrator"
  description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
  tags:
    - compliance
    - hr
    - legal
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: run-annual-compliance-certification-orchestrator
          description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Annual Compliance Certification Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

When an AML alert is triggered, retrieves the customer profile, pulls transaction history, runs enhanced due diligence checks, logs findings in ServiceNow, and notifies the compliance team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Anti-Money Laundering Alert Processor"
  description: "When an AML alert is triggered, retrieves the customer profile, pulls transaction history, runs enhanced due diligence checks, logs findings in ServiceNow, and notifies the compliance team in Microsoft Teams."
  tags:
    - banking
    - compliance
    - aml
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: aml-processing
      port: 8080
      tools:
        - name: process-aml-alert
          description: "Orchestrate AML alert investigation across multiple systems."
          inputParameters:
            - name: alert_id
              in: body
              type: string
              description: "AML alert ID."
            - name: customer_id
              in: body
              type: string
              description: "Customer ID under investigation."
            - name: account_number
              in: body
              type: string
              description: "Account number with suspicious activity."
          steps:
            - name: get-customer
              type: call
              call: "corebanking.get-customer"
              with:
                customer_id: "{{customer_id}}"
            - name: get-transactions
              type: call
              call: "corebanking.get-transactions"
              with:
                account_number: "{{account_number}}"
                days: "90"
            - name: run-edd
              type: call
              call: "compliance.enhanced-due-diligence"
              with:
                customer_name: "{{get-customer.full_name}}"
                country: "{{get-customer.country}}"
                transactions: "{{get-transactions.transactions}}"
            - name: log-findings
              type: call
              call: "servicenow.create-record"
              with:
                table: "u_aml_investigation"
                alert_id: "{{alert_id}}"
                customer_id: "{{customer_id}}"
                risk_level: "{{run-edd.risk_level}}"
                findings: "{{run-edd.findings}}"
            - name: notify-compliance
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "$secrets.compliance_channel_id"
                text: "AML Alert {{alert_id}}: Customer {{get-customer.full_name}}, Risk: {{run-edd.risk_level}}. Investigation logged: {{log-findings.sys_id}}."
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.td.com/core-banking/v1"
      authentication:
        type: bearer
        token: "$secrets.corebanking_token"
      resources:
        - name: customers
          path: "/customers/{{customer_id}}"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-customer
              method: GET
        - name: transactions
          path: "/accounts/{{account_number}}/transactions"
          inputParameters:
            - name: account_number
              in: path
          operations:
            - name: get-transactions
              method: GET
    - type: http
      namespace: compliance
      baseUri: "https://api.td.com/compliance/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: edd
          path: "/enhanced-due-diligence"
          operations:
            - name: enhanced-due-diligence
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://td.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation.

naftiko: "0.5"
info:
  label: "API Lifecycle Management Orchestrator"
  description: "Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation."
  tags:
    - engineering
    - api
    - operations
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: run-api-lifecycle-management-orchestrator
          description: "Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed API Lifecycle Management Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Queries historical ATM withdrawal data from Snowflake, runs a forecast model, and publishes replenishment schedules to the cash management system with a Slack alert to operations.

naftiko: "0.5"
info:
  label: "ATM Cash Forecast Pipeline"
  description: "Queries historical ATM withdrawal data from Snowflake, runs a forecast model, and publishes replenishment schedules to the cash management system with a Slack alert to operations."
  tags:
    - banking
    - atm
    - forecasting
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: atm-forecasting
      port: 8080
      tools:
        - name: forecast-atm-cash
          description: "Query ATM withdrawal history, forecast demand, and schedule replenishment."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "Geographic region for ATM forecasting."
            - name: forecast_days
              in: body
              type: integer
              description: "Number of days to forecast."
          steps:
            - name: get-history
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "SELECT atm_id, date, withdrawal_total FROM ATM_DATA.WITHDRAWALS WHERE region = '{{region}}' AND date >= DATEADD(day, -90, CURRENT_DATE)"
            - name: submit-forecast
              type: call
              call: "cashmanagement.generate-forecast"
              with:
                region: "{{region}}"
                history: "{{get-history.data}}"
                forecast_days: "{{forecast_days}}"
            - name: notify-ops
              type: call
              call: "slack.post-message"
              with:
                channel: "#atm-operations"
                text: "ATM cash forecast for {{region}} generated. {{submit-forecast.atm_count}} ATMs scheduled for replenishment over next {{forecast_days}} days."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://td.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: cashmanagement
      baseUri: "https://api.td.com/cash-management/v1"
      authentication:
        type: bearer
        token: "$secrets.cashmanagement_token"
      resources:
        - name: forecasts
          path: "/forecasts"
          operations:
            - name: generate-forecast
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Checks the operational status of an ATM.

naftiko: "0.5"
info:
  label: "ATM Status Checker"
  description: "Checks the operational status of an ATM."
  tags:
    - operations
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: operations
      port: 8080
      tools:
        - name: get-atm
          description: "Checks the operational status of an ATM."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The atm status checker identifier."
          call: "operations-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: operations-api
      baseUri: "https://api.td.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: atm
          path: "/atm/status/checker/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-atm
              method: GET

Orchestrates banking workflow 1 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Banking Workflow 1"
  description: "Orchestrates banking workflow 1 by coordinating across systems, validating data, and sending notifications."
  tags:
    - banking
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: banking
      port: 8080
      tools:
        - name: run-banking-workflow-001
          description: "Orchestrates banking workflow 1 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Banking Workflow 1 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Orchestrates banking workflow 2 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Banking Workflow 2"
  description: "Orchestrates banking workflow 2 by coordinating across systems, validating data, and sending notifications."
  tags:
    - banking
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: banking
      port: 8080
      tools:
        - name: run-banking-workflow-002
          description: "Orchestrates banking workflow 2 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Banking Workflow 2 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves banking operational data for workflow 3.

naftiko: "0.5"
info:
  label: "Banking Data Query 3"
  description: "Retrieves banking operational data for workflow 3."
  tags:
    - banking
    - operations
capability:
  exposes:
    - type: mcp
      namespace: banking
      port: 8080
      tools:
        - name: get-data-3
          description: "Query banking data for workflow 3."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "banking-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: banking-api
      baseUri: "https://api.td.com/banking/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-3
              method: GET

Orchestrates banking workflow 4 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Banking Workflow 4"
  description: "Orchestrates banking workflow 4 by coordinating across systems, validating data, and sending notifications."
  tags:
    - banking
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: banking
      port: 8080
      tools:
        - name: run-banking-workflow-004
          description: "Orchestrates banking workflow 4 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Banking Workflow 4 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Orchestrates banking workflow 5 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Banking Workflow 5"
  description: "Orchestrates banking workflow 5 by coordinating across systems, validating data, and sending notifications."
  tags:
    - banking
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: banking
      port: 8080
      tools:
        - name: run-banking-workflow-005
          description: "Orchestrates banking workflow 5 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Banking Workflow 5 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves banking operational data for workflow 6.

naftiko: "0.5"
info:
  label: "Banking Data Query 6"
  description: "Retrieves banking operational data for workflow 6."
  tags:
    - banking
    - operations
capability:
  exposes:
    - type: mcp
      namespace: banking
      port: 8080
      tools:
        - name: get-data-6
          description: "Query banking data for workflow 6."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "banking-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: banking-api
      baseUri: "https://api.td.com/banking/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-6
              method: GET

Manages branch consolidation by transferring accounts, reassigning staff, and updating branch directory.

naftiko: "0.5"
info:
  label: "Branch Consolidation Orchestrator"
  description: "Manages branch consolidation by transferring accounts, reassigning staff, and updating branch directory."
  tags:
    - operations
    - hr
    - customer-service
capability:
  exposes:
    - type: mcp
      namespace: operations
      port: 8080
      tools:
        - name: run-branch-consolidation-orchestrator
          description: "Manages branch consolidation by transferring accounts, reassigning staff, and updating branch directory."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Branch Consolidation Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Searches for TD Bank branches by ZIP code or city and returns branch addresses, hours, and services available.

naftiko: "0.5"
info:
  label: "Branch Locator"
  description: "Searches for TD Bank branches by ZIP code or city and returns branch addresses, hours, and services available."
  tags:
    - banking
    - branch
    - locator
capability:
  exposes:
    - type: mcp
      namespace: branch-locator
      port: 8080
      tools:
        - name: find-branches
          description: "Search for branches by location."
          inputParameters:
            - name: zip_code
              in: body
              type: string
              description: "ZIP or postal code."
            - name: radius_miles
              in: body
              type: integer
              description: "Search radius in miles."
          call: "branches.search"
          with:
            zip: "{{zip_code}}"
            radius: "{{radius_miles}}"
          outputParameters:
            - name: branches
              type: array
              mapping: "$.branches"
            - name: count
              type: integer
              mapping: "$.totalCount"
  consumes:
    - type: http
      namespace: branches
      baseUri: "https://api.td.com/branches/v1"
      authentication:
        type: bearer
        token: "$secrets.branches_token"
      resources:
        - name: search
          path: "/search"
          inputParameters:
            - name: zip
              in: query
            - name: radius
              in: query
          operations:
            - name: search
              method: GET

Queries the data warehouse for branch-level KPIs, refreshes the Power BI dashboard, and sends a summary to regional managers via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Branch Performance Dashboard Refresh"
  description: "Queries the data warehouse for branch-level KPIs, refreshes the Power BI dashboard, and sends a summary to regional managers via Microsoft Teams."
  tags:
    - banking
    - analytics
    - power-bi
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: branch-analytics
      port: 8080
      tools:
        - name: refresh-branch-dashboard
          description: "Refresh branch performance dashboard and notify regional managers."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "Regional code for branch filtering."
            - name: pbi_dataset_id
              in: body
              type: string
              description: "Power BI dataset ID."
            - name: teams_webhook
              in: body
              type: string
              description: "Teams webhook for manager notification."
          steps:
            - name: query-kpis
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "SELECT branch_id, total_deposits, new_accounts, nps_score FROM branch_kpis WHERE region = '{{region}}' AND date = CURRENT_DATE"
            - name: refresh-pbi
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "{{pbi_dataset_id}}"
            - name: notify-managers
              type: call
              call: "msteams.send-message"
              with:
                webhook_url: "{{teams_webhook}}"
                text: "Branch performance dashboard for region {{region}} has been refreshed. {{query-kpis.row_count}} branches updated."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://td.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/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST
    - type: http
      namespace: msteams
      baseUri: "{{webhook_url}}"
      authentication:
        type: none
      resources:
        - name: webhook
          path: ""
          operations:
            - name: send-message
              method: POST

Files a credit card dispute: retrieves the transaction, creates a dispute case in the card system, logs in ServiceNow, and sends acknowledgement to the cardholder.

naftiko: "0.5"
info:
  label: "Card Dispute Filing Pipeline"
  description: "Files a credit card dispute: retrieves the transaction, creates a dispute case in the card system, logs in ServiceNow, and sends acknowledgement to the cardholder."
  tags:
    - banking
    - credit-card
    - disputes
    - servicenow
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: card-disputes
      port: 8080
      tools:
        - name: file-card-dispute
          description: "File a credit card dispute and notify the cardholder."
          inputParameters:
            - name: transaction_id
              in: body
              type: string
              description: "Disputed transaction ID."
            - name: card_number
              in: body
              type: string
              description: "Card number (last 4 digits)."
            - name: reason
              in: body
              type: string
              description: "Dispute reason."
            - name: cardholder_email
              in: body
              type: string
              description: "Cardholder email."
          steps:
            - name: get-transaction
              type: call
              call: "corebanking.get-transaction-detail"
              with:
                transaction_id: "{{transaction_id}}"
            - name: create-dispute
              type: call
              call: "cards.create-dispute"
              with:
                transaction_id: "{{transaction_id}}"
                card_number: "{{card_number}}"
                reason: "{{reason}}"
            - name: log-case
              type: call
              call: "servicenow.create-record"
              with:
                table: "u_card_disputes"
                dispute_id: "{{create-dispute.dispute_id}}"
                transaction_id: "{{transaction_id}}"
                status: "open"
            - name: notify-cardholder
              type: call
              call: "outlook.send-email"
              with:
                to: "{{cardholder_email}}"
                subject: "TD Bank - Dispute Filed"
                body: "Your dispute for transaction {{transaction_id}} on card ending {{card_number}} has been filed. Reference: {{create-dispute.dispute_id}}. We will investigate within 10 business days."
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.td.com/core-banking/v1"
      authentication:
        type: bearer
        token: "$secrets.corebanking_token"
      resources:
        - name: transactions
          path: "/transactions/{{transaction_id}}"
          inputParameters:
            - name: transaction_id
              in: path
          operations:
            - name: get-transaction-detail
              method: GET
    - type: http
      namespace: cards
      baseUri: "https://api.td.com/cards/v1"
      authentication:
        type: bearer
        token: "$secrets.cards_token"
      resources:
        - name: disputes
          path: "/disputes"
          operations:
            - name: create-dispute
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://td.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Manages client onboarding documents by collecting via DocuSign, validating, and storing in the document management system.

naftiko: "0.5"
info:
  label: "Client Onboarding Document Orchestrator"
  description: "Manages client onboarding documents by collecting via DocuSign, validating, and storing in the document management system."
  tags:
    - customer-service
    - compliance
    - docusign
capability:
  exposes:
    - type: mcp
      namespace: customer-service
      port: 8080
      tools:
        - name: run-client-onboarding-document-orchestrator
          description: "Manages client onboarding documents by collecting via DocuSign, validating, and storing in the document management system."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Client Onboarding Document Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Routes a commercial loan application through credit analysis in Snowflake, risk scoring, committee approval tracking in Salesforce, and final notification to the relationship manager.

naftiko: "0.5"
info:
  label: "Commercial Lending Approval Workflow"
  description: "Routes a commercial loan application through credit analysis in Snowflake, risk scoring, committee approval tracking in Salesforce, and final notification to the relationship manager."
  tags:
    - banking
    - lending
    - commercial
    - snowflake
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: commercial-lending
      port: 8080
      tools:
        - name: process-commercial-loan
          description: "Orchestrate commercial loan approval from credit analysis through committee decision."
          inputParameters:
            - name: application_id
              in: body
              type: string
              description: "Commercial loan application ID."
            - name: borrower_id
              in: body
              type: string
              description: "Commercial borrower entity ID."
            - name: loan_amount
              in: body
              type: number
              description: "Requested loan amount."
            - name: rm_email
              in: body
              type: string
              description: "Relationship manager email."
          steps:
            - name: run-credit-analysis
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "CALL LENDING.RUN_CREDIT_ANALYSIS('{{borrower_id}}', {{loan_amount}})"
            - name: score-risk
              type: call
              call: "lending.score-commercial-risk"
              with:
                borrower_id: "{{borrower_id}}"
                financials: "{{run-credit-analysis.data}}"
            - name: update-sf
              type: call
              call: "salesforce.update-opportunity"
              with:
                opportunity_id: "{{application_id}}"
                Risk_Score__c: "{{score-risk.risk_score}}"
                StageName: "Credit Committee Review"
            - name: notify-rm
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{rm_email}}"
                text: "Commercial loan {{application_id}} for ${{loan_amount}} - Risk score: {{score-risk.risk_score}}. Submitted to credit committee."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://td.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: lending
      baseUri: "https://api.td.com/lending/v1"
      authentication:
        type: bearer
        token: "$secrets.lending_token"
      resources:
        - name: risk-scoring
          path: "/commercial/risk-score"
          operations:
            - name: score-commercial-risk
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://td.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: update-opportunity
              method: PATCH
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: chat
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Reviews commercial loan portfolio by analyzing performance, flagging risks, and generating review packages.

naftiko: "0.5"
info:
  label: "Commercial Loan Review Orchestrator"
  description: "Reviews commercial loan portfolio by analyzing performance, flagging risks, and generating review packages."
  tags:
    - lending
    - risk
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: lending
      port: 8080
      tools:
        - name: run-commercial-loan-review-orchestrator
          description: "Reviews commercial loan portfolio by analyzing performance, flagging risks, and generating review packages."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Commercial Loan Review Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Archives compliance documents to SharePoint, creates a metadata record in Snowflake for searchability, and logs the archival in ServiceNow.

naftiko: "0.5"
info:
  label: "Compliance Document Archival Pipeline"
  description: "Archives compliance documents to SharePoint, creates a metadata record in Snowflake for searchability, and logs the archival in ServiceNow."
  tags:
    - banking
    - compliance
    - sharepoint
    - snowflake
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: compliance-archive
      port: 8080
      tools:
        - name: archive-compliance-doc
          description: "Archive a compliance document to SharePoint with metadata tracking."
          inputParameters:
            - name: document_title
              in: body
              type: string
              description: "Document title."
            - name: document_type
              in: body
              type: string
              description: "Document type (policy, procedure, report)."
            - name: sharepoint_site
              in: body
              type: string
              description: "SharePoint site ID."
          steps:
            - name: upload-doc
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "{{sharepoint_site}}"
                folder_path: "ComplianceArchive/{{document_type}}"
                file_name: "{{document_title}}"
            - name: log-metadata
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "INSERT INTO COMPLIANCE.DOCUMENT_ARCHIVE (title, type, archived_date, sharepoint_url) VALUES ('{{document_title}}', '{{document_type}}', CURRENT_TIMESTAMP, '{{upload-doc.webUrl}}')"
            - name: create-sn-record
              type: call
              call: "servicenow.create-record"
              with:
                table: "u_compliance_documents"
                title: "{{document_title}}"
                type: "{{document_type}}"
                status: "archived"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
            - name: file_name
              in: path
          operations:
            - name: upload-file
              method: PUT
    - type: http
      namespace: snowflake
      baseUri: "https://td.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: servicenow
      baseUri: "https://td.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST

Compiles Suspicious Activity Report data from investigation findings, submits the SAR to FINTRAC, archives the filing in SharePoint, and updates the case in ServiceNow.

naftiko: "0.5"
info:
  label: "Compliance SAR Filing Pipeline"
  description: "Compiles Suspicious Activity Report data from investigation findings, submits the SAR to FINTRAC, archives the filing in SharePoint, and updates the case in ServiceNow."
  tags:
    - banking
    - compliance
    - aml
    - sar
    - sharepoint
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: sar-filing
      port: 8080
      tools:
        - name: file-sar
          description: "Compile SAR data, submit to FINTRAC, archive, and update investigation case."
          inputParameters:
            - name: case_id
              in: body
              type: string
              description: "ServiceNow investigation case ID."
            - name: customer_id
              in: body
              type: string
              description: "Customer ID under investigation."
            - name: narrative
              in: body
              type: string
              description: "SAR narrative text."
          steps:
            - name: submit-sar
              type: call
              call: "regulatory.submit-sar"
              with:
                customer_id: "{{customer_id}}"
                narrative: "{{narrative}}"
            - name: archive-filing
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "compliance_archive"
                folder_path: "SAR_Filings/{{customer_id}}"
                file_name: "SAR_{{submit-sar.filing_id}}.pdf"
            - name: update-case
              type: call
              call: "servicenow.update-record"
              with:
                table: "u_aml_investigation"
                sys_id: "{{case_id}}"
                sar_filed: "true"
                sar_filing_id: "{{submit-sar.filing_id}}"
  consumes:
    - type: http
      namespace: regulatory
      baseUri: "https://api.td.com/regulatory/v1"
      authentication:
        type: bearer
        token: "$secrets.regulatory_token"
      resources:
        - name: sar
          path: "/sar-filings"
          operations:
            - name: submit-sar
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
            - name: file_name
              in: path
          operations:
            - name: upload-file
              method: PUT
    - type: http
      namespace: servicenow
      baseUri: "https://td.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}/{{sys_id}}"
          inputParameters:
            - name: table
              in: path
            - name: sys_id
              in: path
          operations:
            - name: update-record
              method: PATCH

Retrieves a Confluence wiki page.

naftiko: "0.5"
info:
  label: "Confluence Page Viewer"
  description: "Retrieves a Confluence wiki page."
  tags:
    - collaboration
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: collaboration
      port: 8080
      tools:
        - name: get-confluence
          description: "Retrieves a Confluence wiki page."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The confluence page viewer identifier."
          call: "collaboration-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: collaboration-api
      baseUri: "https://api.td.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: confluence
          path: "/confluence/page/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-confluence
              method: GET

Processes a credit card payment by debiting the customer account, posting to the credit card ledger, and sending a payment confirmation email.

naftiko: "0.5"
info:
  label: "Credit Card Payment Processor"
  description: "Processes a credit card payment by debiting the customer account, posting to the credit card ledger, and sending a payment confirmation email."
  tags:
    - banking
    - payments
    - credit-card
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: card-payments
      port: 8080
      tools:
        - name: process-card-payment
          description: "Process a credit card payment and send confirmation."
          inputParameters:
            - name: card_number
              in: body
              type: string
              description: "Credit card number (last 4 digits)."
            - name: payment_account
              in: body
              type: string
              description: "Account to debit for payment."
            - name: amount
              in: body
              type: number
              description: "Payment amount."
            - name: customer_email
              in: body
              type: string
              description: "Customer email for confirmation."
          steps:
            - name: post-payment
              type: call
              call: "payments.post-card-payment"
              with:
                card_number: "{{card_number}}"
                from_account: "{{payment_account}}"
                amount: "{{amount}}"
            - name: send-confirmation
              type: call
              call: "outlook.send-email"
              with:
                to: "{{customer_email}}"
                subject: "TD Bank - Credit Card Payment Confirmation"
                body: "Your payment of ${{amount}} to card ending {{card_number}} has been processed. Confirmation: {{post-payment.confirmation_id}}."
  consumes:
    - type: http
      namespace: payments
      baseUri: "https://api.td.com/payments/v1"
      authentication:
        type: bearer
        token: "$secrets.payments_token"
      resources:
        - name: card-payments
          path: "/credit-card/payments"
          operations:
            - name: post-card-payment
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Retrieves the credit risk score for a customer.

naftiko: "0.5"
info:
  label: "Credit Risk Score Lookup"
  description: "Retrieves the credit risk score for a customer."
  tags:
    - risk
    - lending
capability:
  exposes:
    - type: mcp
      namespace: risk
      port: 8080
      tools:
        - name: get-credit
          description: "Retrieves the credit risk score for a customer."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The credit risk score lookup identifier."
          call: "risk-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: risk-api
      baseUri: "https://api.td.com/risk/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: credit
          path: "/credit/risk/score/lookup/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-credit
              method: GET

Pulls a customer's credit score from the credit bureau for underwriting and risk assessment purposes.

naftiko: "0.5"
info:
  label: "Credit Score Retrieval"
  description: "Pulls a customer's credit score from the credit bureau for underwriting and risk assessment purposes."
  tags:
    - banking
    - lending
    - credit
capability:
  exposes:
    - type: mcp
      namespace: credit-services
      port: 8080
      tools:
        - name: get-credit-score
          description: "Pull a credit score for a customer."
          inputParameters:
            - name: ssn
              in: body
              type: string
              description: "Customer SSN or SIN."
            - name: report_type
              in: body
              type: string
              description: "Report type (soft, hard)."
          call: "credit.pull-report"
          with:
            ssn: "{{ssn}}"
            report_type: "{{report_type}}"
          outputParameters:
            - name: score
              type: integer
              mapping: "$.creditScore"
            - name: risk_band
              type: string
              mapping: "$.riskBand"
            - name: inquiry_date
              type: string
              mapping: "$.inquiryDate"
  consumes:
    - type: http
      namespace: credit
      baseUri: "https://api.creditbureau.com/v2"
      authentication:
        type: bearer
        token: "$secrets.credit_api_token"
      resources:
        - name: reports
          path: "/reports"
          operations:
            - name: pull-report
              method: POST

Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters.

naftiko: "0.5"
info:
  label: "Cross-Functional Project Kickoff Orchestrator"
  description: "Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters."
  tags:
    - project-management
    - collaboration
    - operations
capability:
  exposes:
    - type: mcp
      namespace: project-management
      port: 8080
      tools:
        - name: run-cross-functional-project-kickoff-orchestrator
          description: "Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Cross-Functional Project Kickoff Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Logs a customer complaint in Salesforce Service Cloud, creates a ServiceNow case for investigation, and sends an acknowledgement to the customer via email.

naftiko: "0.5"
info:
  label: "Customer Complaint Handler"
  description: "Logs a customer complaint in Salesforce Service Cloud, creates a ServiceNow case for investigation, and sends an acknowledgement to the customer via email."
  tags:
    - banking
    - customer-service
    - salesforce
    - servicenow
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: complaints
      port: 8080
      tools:
        - name: log-customer-complaint
          description: "Log a customer complaint across CRM and ticketing systems with email acknowledgement."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "Customer ID."
            - name: customer_email
              in: body
              type: string
              description: "Customer email."
            - name: complaint_text
              in: body
              type: string
              description: "Description of the complaint."
            - name: category
              in: body
              type: string
              description: "Complaint category."
          steps:
            - name: create-sf-case
              type: call
              call: "salesforce.create-case"
              with:
                AccountId: "{{customer_id}}"
                Subject: "Customer complaint: {{category}}"
                Description: "{{complaint_text}}"
                Origin: "Phone"
            - name: create-sn-case
              type: call
              call: "servicenow.create-record"
              with:
                table: "sn_customerservice_case"
                short_description: "Customer complaint: {{category}}"
                description: "{{complaint_text}}"
                contact: "{{customer_id}}"
            - name: send-ack
              type: call
              call: "outlook.send-email"
              with:
                to: "{{customer_email}}"
                subject: "TD Bank - We received your complaint"
                body: "We have received your complaint (Reference: {{create-sf-case.id}}). Our team will investigate and follow up within 48 hours."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://td.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://td.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Analyzes a customer's product holdings in Snowflake, generates cross-sell recommendations, creates a Salesforce task for the relationship manager, and sends a personalized offer via email.

naftiko: "0.5"
info:
  label: "Customer Cross-Sell Recommender"
  description: "Analyzes a customer's product holdings in Snowflake, generates cross-sell recommendations, creates a Salesforce task for the relationship manager, and sends a personalized offer via email."
  tags:
    - banking
    - cross-sell
    - snowflake
    - salesforce
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: cross-sell
      port: 8080
      tools:
        - name: generate-cross-sell
          description: "Analyze customer holdings and generate cross-sell recommendations."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "Customer ID."
            - name: rm_sf_id
              in: body
              type: string
              description: "Relationship manager Salesforce user ID."
            - name: customer_email
              in: body
              type: string
              description: "Customer email."
          steps:
            - name: analyze-holdings
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "CALL ANALYTICS.CROSS_SELL_RECOMMENDATIONS('{{customer_id}}')"
            - name: create-sf-task
              type: call
              call: "salesforce.create-task"
              with:
                OwnerId: "{{rm_sf_id}}"
                Subject: "Cross-sell opportunity for customer {{customer_id}}"
                Description: "Recommended products: {{analyze-holdings.data}}"
                ActivityDate: "2026-04-03"
            - name: send-offer
              type: call
              call: "outlook.send-email"
              with:
                to: "{{customer_email}}"
                subject: "TD Bank - Products tailored for you"
                body: "Based on your banking relationship, we think you would benefit from: {{analyze-holdings.data}}. Contact your advisor to learn more."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://td.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: salesforce
      baseUri: "https://td.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: tasks
          path: "/sobjects/Task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Handles customer data privacy requests by locating records, processing deletions, and confirming compliance.

naftiko: "0.5"
info:
  label: "Customer Data Privacy Request Handler"
  description: "Handles customer data privacy requests by locating records, processing deletions, and confirming compliance."
  tags:
    - compliance
    - privacy
    - customer-service
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: run-customer-data-privacy-request-handler
          description: "Handles customer data privacy requests by locating records, processing deletions, and confirming compliance."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Customer Data Privacy Request Handler for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations.

naftiko: "0.5"
info:
  label: "Customer Journey Mapping Orchestrator"
  description: "Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations."
  tags:
    - customer-experience
    - analytics
    - product-management
capability:
  exposes:
    - type: mcp
      namespace: customer-experience
      port: 8080
      tools:
        - name: run-customer-journey-mapping-orchestrator
          description: "Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Customer Journey Mapping Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

When a new customer account is created in the core banking system, provisions the customer in Salesforce CRM, opens a ServiceNow onboarding ticket, and sends a welcome email via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Customer Onboarding Orchestrator"
  description: "When a new customer account is created in the core banking system, provisions the customer in Salesforce CRM, opens a ServiceNow onboarding ticket, and sends a welcome email via Microsoft Outlook."
  tags:
    - banking
    - onboarding
    - salesforce
    - servicenow
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: customer-onboarding
      port: 8080
      tools:
        - name: onboard-customer
          description: "Orchestrate new customer onboarding across CRM, ticketing, and email."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "Core banking customer ID."
            - name: customer_name
              in: body
              type: string
              description: "Full name of the customer."
            - name: email
              in: body
              type: string
              description: "Customer email address."
            - name: account_type
              in: body
              type: string
              description: "Type of account opened (checking, savings, etc.)."
          steps:
            - name: create-crm-record
              type: call
              call: "salesforce.create-account"
              with:
                Name: "{{customer_name}}"
                Type: "Customer"
                Description: "New {{account_type}} account holder"
                PersonEmail: "{{email}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New customer onboarding: {{customer_name}}"
                category: "customer_onboarding"
                description: "Onboarding for {{customer_name}}, account type: {{account_type}}, CRM ID: {{create-crm-record.id}}"
            - name: send-welcome
              type: call
              call: "outlook.send-email"
              with:
                to: "{{email}}"
                subject: "Welcome to TD Bank, {{customer_name}}!"
                body: "Thank you for opening your {{account_type}} account with TD Bank. Your onboarding reference is {{open-ticket.number}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://td.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account"
          operations:
            - name: create-account
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://td.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: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Retrieves a customer's full profile from the core banking system including name, address, contact info, and account summary. Used by branch and contact center staff.

naftiko: "0.5"
info:
  label: "Customer Profile Lookup"
  description: "Retrieves a customer's full profile from the core banking system including name, address, contact info, and account summary. Used by branch and contact center staff."
  tags:
    - banking
    - customer-service
    - core-banking
capability:
  exposes:
    - type: mcp
      namespace: customer-profile
      port: 8080
      tools:
        - name: get-customer-profile
          description: "Retrieve a full customer profile by customer ID."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "Core banking customer ID."
          call: "corebanking.get-customer"
          with:
            customer_id: "{{customer_id}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.fullName"
            - name: email
              type: string
              mapping: "$.email"
            - name: phone
              type: string
              mapping: "$.phone"
            - name: accounts
              type: array
              mapping: "$.accounts"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.td.com/core-banking/v1"
      authentication:
        type: bearer
        token: "$secrets.corebanking_token"
      resources:
        - name: customers
          path: "/customers/{{customer_id}}"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-customer
              method: GET

Migrates customer segments by updating profiles, adjusting product eligibility, and notifying relationship managers.

naftiko: "0.5"
info:
  label: "Customer Segment Migration Orchestrator"
  description: "Migrates customer segments by updating profiles, adjusting product eligibility, and notifying relationship managers."
  tags:
    - customer-service
    - product-management
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: customer-service
      port: 8080
      tools:
        - name: run-customer-segment-migration-orchestrator
          description: "Migrates customer segments by updating profiles, adjusting product eligibility, and notifying relationship managers."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Customer Segment Migration Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Runs end-of-day reconciliation by comparing core banking totals with payment gateway totals in Snowflake, identifies discrepancies, and alerts the operations team via Slack with a ServiceNow ticket.

naftiko: "0.5"
info:
  label: "Daily Reconciliation Pipeline"
  description: "Runs end-of-day reconciliation by comparing core banking totals with payment gateway totals in Snowflake, identifies discrepancies, and alerts the operations team via Slack with a ServiceNow ticket."
  tags:
    - banking
    - reconciliation
    - snowflake
    - slack
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: reconciliation
      port: 8080
      tools:
        - name: run-daily-reconciliation
          description: "Compare banking and payment totals, identify discrepancies, and alert operations."
          inputParameters:
            - name: business_date
              in: body
              type: string
              description: "Business date for reconciliation in YYYY-MM-DD."
          steps:
            - name: run-recon
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "CALL OPERATIONS.DAILY_RECONCILIATION('{{business_date}}')"
            - name: check-discrepancies
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "SELECT * FROM OPERATIONS.RECON_DISCREPANCIES WHERE business_date = '{{business_date}}'"
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Daily recon discrepancies for {{business_date}}"
                category: "operations"
                description: "{{check-discrepancies.row_count}} discrepancies found. Review OPERATIONS.RECON_DISCREPANCIES."
            - name: alert-ops
              type: call
              call: "slack.post-message"
              with:
                channel: "#banking-ops"
                text: "Daily reconciliation for {{business_date}} complete. {{check-discrepancies.row_count}} discrepancies. Ticket: {{create-ticket.number}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://td.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: servicenow
      baseUri: "https://td.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: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports.

naftiko: "0.5"
info:
  label: "Data Governance Review Orchestrator"
  description: "Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports."
  tags:
    - data-governance
    - compliance
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: data-governance
      port: 8080
      tools:
        - name: run-data-governance-review-orchestrator
          description: "Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Data Governance Review Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

When deposit rates are updated in the product catalog, queries affected customers from Snowflake and sends personalized rate-change notifications via email.

naftiko: "0.5"
info:
  label: "Deposit Rate Change Notification"
  description: "When deposit rates are updated in the product catalog, queries affected customers from Snowflake and sends personalized rate-change notifications via email."
  tags:
    - banking
    - products
    - notifications
    - snowflake
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: rate-notifications
      port: 8080
      tools:
        - name: notify-rate-change
          description: "Query affected customers and send deposit rate change notifications."
          inputParameters:
            - name: product_code
              in: body
              type: string
              description: "Product code with rate change."
            - name: new_rate
              in: body
              type: number
              description: "New interest rate."
            - name: effective_date
              in: body
              type: string
              description: "Rate effective date."
          steps:
            - name: get-customers
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "SELECT customer_id, email, account_number FROM BANKING.DEPOSIT_ACCOUNTS WHERE product_code = '{{product_code}}' AND status = 'active'"
            - name: send-notifications
              type: call
              call: "outlook.send-email"
              with:
                to: "{{get-customers.data}}"
                subject: "TD Bank - Deposit Rate Update"
                body: "Your deposit rate has been updated to {{new_rate}}% effective {{effective_date}}. Contact us with questions."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://td.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: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Retrieves a customer's active digital banking sessions including device, IP, and location. Used by fraud and security teams for session analysis.

naftiko: "0.5"
info:
  label: "Digital Banking Session Viewer"
  description: "Retrieves a customer's active digital banking sessions including device, IP, and location. Used by fraud and security teams for session analysis."
  tags:
    - banking
    - security
    - digital-banking
capability:
  exposes:
    - type: mcp
      namespace: session-viewer
      port: 8080
      tools:
        - name: get-active-sessions
          description: "Retrieve active digital banking sessions for a customer."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "Customer ID."
          call: "digital.get-sessions"
          with:
            customer_id: "{{customer_id}}"
          outputParameters:
            - name: sessions
              type: array
              mapping: "$.activeSessions"
            - name: session_count
              type: integer
              mapping: "$.count"
  consumes:
    - type: http
      namespace: digital
      baseUri: "https://api.td.com/digital-banking/v1"
      authentication:
        type: bearer
        token: "$secrets.digital_token"
      resources:
        - name: sessions
          path: "/customers/{{customer_id}}/sessions"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-sessions
              method: GET

Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks.

naftiko: "0.5"
info:
  label: "Digital Transformation Progress Orchestrator"
  description: "Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks."
  tags:
    - strategy
    - analytics
    - project-management
capability:
  exposes:
    - type: mcp
      namespace: strategy
      port: 8080
      tools:
        - name: run-digital-transformation-progress-orchestrator
          description: "Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Digital Transformation Progress Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Executes disaster recovery tests by failing over systems, validating recovery, and documenting results.

naftiko: "0.5"
info:
  label: "Disaster Recovery Test Orchestrator"
  description: "Executes disaster recovery tests by failing over systems, validating recovery, and documenting results."
  tags:
    - infrastructure
    - operations
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: infrastructure
      port: 8080
      tools:
        - name: run-disaster-recovery-test-orchestrator
          description: "Executes disaster recovery tests by failing over systems, validating recovery, and documenting results."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Disaster Recovery Test Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

When an employee departs, disables their Active Directory account, revokes Workday access, closes ServiceNow access requests, and sends a confirmation to the manager via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Employee Offboarding Orchestrator"
  description: "When an employee departs, disables their Active Directory account, revokes Workday access, closes ServiceNow access requests, and sends a confirmation to the manager via Microsoft Teams."
  tags:
    - banking
    - hr
    - offboarding
    - workday
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-offboarding
      port: 8080
      tools:
        - name: offboard-employee
          description: "Orchestrate employee offboarding across identity, HR, and notification systems."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "Workday employee ID."
            - name: manager_email
              in: body
              type: string
              description: "Manager email for notification."
            - name: last_day
              in: body
              type: string
              description: "Employee last day in YYYY-MM-DD format."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: disable-ad
              type: call
              call: "msgraph.disable-user"
              with:
                user_principal_name: "{{get-employee.work_email}}"
            - name: close-tickets
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Offboarding: {{get-employee.full_name}} - access revocation"
                category: "hr_offboarding"
                description: "Revoke all access for {{get-employee.full_name}}, last day: {{last_day}}."
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{manager_email}}"
                text: "Offboarding complete for {{get-employee.full_name}}. AD disabled, access revoked. ServiceNow ticket: {{close-tickets.number}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: msgraph
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: users
          path: "/users/{{user_principal_name}}"
          inputParameters:
            - name: user_principal_name
              in: path
          operations:
            - name: disable-user
              method: PATCH
    - type: http
      namespace: servicenow
      baseUri: "https://td.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: chat
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves the current exchange rate between two currencies from the treasury rates service. Used by tellers and FX desk staff.

naftiko: "0.5"
info:
  label: "Exchange Rate Lookup"
  description: "Retrieves the current exchange rate between two currencies from the treasury rates service. Used by tellers and FX desk staff."
  tags:
    - banking
    - treasury
    - foreign-exchange
capability:
  exposes:
    - type: mcp
      namespace: fx-rates
      port: 8080
      tools:
        - name: get-exchange-rate
          description: "Look up the current exchange rate between two currencies."
          inputParameters:
            - name: from_currency
              in: body
              type: string
              description: "Source currency code (e.g., USD)."
            - name: to_currency
              in: body
              type: string
              description: "Target currency code (e.g., CAD)."
          call: "treasury.get-rate"
          with:
            from: "{{from_currency}}"
            to: "{{to_currency}}"
          outputParameters:
            - name: rate
              type: number
              mapping: "$.rate"
            - name: timestamp
              type: string
              mapping: "$.timestamp"
            - name: spread
              type: number
              mapping: "$.spread"
  consumes:
    - type: http
      namespace: treasury
      baseUri: "https://api.td.com/treasury/v1"
      authentication:
        type: bearer
        token: "$secrets.treasury_token"
      resources:
        - name: rates
          path: "/fx-rates"
          inputParameters:
            - name: from
              in: query
            - name: to
              in: query
          operations:
            - name: get-rate
              method: GET

Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI.

naftiko: "0.5"
info:
  label: "Executive Dashboard Refresh Orchestrator"
  description: "Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI."
  tags:
    - analytics
    - power-bi
    - business
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: run-executive-dashboard-refresh-orchestrator
          description: "Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Executive Dashboard Refresh Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

When a fraud detection system flags a transaction, retrieves the transaction details, checks the customer's risk profile in Salesforce, creates a ServiceNow incident, and sends an alert to the fraud team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Fraud Alert Triage Pipeline"
  description: "When a fraud detection system flags a transaction, retrieves the transaction details, checks the customer's risk profile in Salesforce, creates a ServiceNow incident, and sends an alert to the fraud team via Microsoft Teams."
  tags:
    - banking
    - fraud-detection
    - salesforce
    - servicenow
    - microsoft-teams
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: fraud-triage
      port: 8080
      tools:
        - name: triage-fraud-alert
          description: "Triage a flagged transaction by checking risk profile, creating incident, and notifying the fraud team."
          inputParameters:
            - name: transaction_id
              in: body
              type: string
              description: "Flagged transaction ID."
            - name: account_number
              in: body
              type: string
              description: "Customer account number."
            - name: amount
              in: body
              type: number
              description: "Transaction amount."
          steps:
            - name: get-transaction
              type: call
              call: "corebanking.get-transaction-detail"
              with:
                transaction_id: "{{transaction_id}}"
            - name: get-risk-profile
              type: call
              call: "salesforce.get-risk-profile"
              with:
                account_number: "{{account_number}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Fraud alert: ${{amount}} on account {{account_number}}"
                category: "fraud"
                urgency: "1"
                description: "Transaction {{transaction_id}} for ${{amount}}. Merchant: {{get-transaction.merchant}}. Risk score: {{get-risk-profile.risk_score}}."
            - name: notify-fraud-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "$secrets.fraud_team_channel_id"
                text: "FRAUD ALERT: ${{amount}} on account {{account_number}}. Transaction: {{transaction_id}}. Risk: {{get-risk-profile.risk_score}}. Incident: {{create-incident.number}}."
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.td.com/core-banking/v1"
      authentication:
        type: bearer
        token: "$secrets.corebanking_token"
      resources:
        - name: transactions
          path: "/transactions/{{transaction_id}}"
          inputParameters:
            - name: transaction_id
              in: path
          operations:
            - name: get-transaction-detail
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://td.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: risk-profiles
          path: "/sobjects/Risk_Profile__c/Account__c/{{account_number}}"
          inputParameters:
            - name: account_number
              in: path
          operations:
            - name: get-risk-profile
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://td.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Investigates fraud cases by pulling transaction patterns, cross-referencing alerts, and documenting findings.

naftiko: "0.5"
info:
  label: "Fraud Investigation Orchestrator"
  description: "Investigates fraud cases by pulling transaction patterns, cross-referencing alerts, and documenting findings."
  tags:
    - security
    - risk
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: security
      port: 8080
      tools:
        - name: run-fraud-investigation-orchestrator
          description: "Investigates fraud cases by pulling transaction patterns, cross-referencing alerts, and documenting findings."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Fraud Investigation Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves current foreign exchange rates.

naftiko: "0.5"
info:
  label: "FX Rate Lookup"
  description: "Retrieves current foreign exchange rates."
  tags:
    - trading
    - finance
capability:
  exposes:
    - type: mcp
      namespace: trading
      port: 8080
      tools:
        - name: get-fx
          description: "Retrieves current foreign exchange rates."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The fx rate lookup identifier."
          call: "trading-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: trading-api
      baseUri: "https://api.td.com/trading/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: fx
          path: "/fx/rate/lookup/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-fx
              method: GET

Retrieves current GIC (Guaranteed Investment Certificate) rates by term from the product catalog. Used by branch advisors and digital channels.

naftiko: "0.5"
info:
  label: "GIC Rate Lookup"
  description: "Retrieves current GIC (Guaranteed Investment Certificate) rates by term from the product catalog. Used by branch advisors and digital channels."
  tags:
    - banking
    - wealth-management
    - gic
    - product-catalog
capability:
  exposes:
    - type: mcp
      namespace: product-rates
      port: 8080
      tools:
        - name: get-gic-rates
          description: "Look up current GIC rates by term length."
          inputParameters:
            - name: term_months
              in: body
              type: integer
              description: "GIC term in months."
          call: "products.get-gic-rates"
          with:
            term: "{{term_months}}"
          outputParameters:
            - name: rate
              type: number
              mapping: "$.annualRate"
            - name: min_deposit
              type: number
              mapping: "$.minimumDeposit"
            - name: term
              type: string
              mapping: "$.termDescription"
  consumes:
    - type: http
      namespace: products
      baseUri: "https://api.td.com/products/v1"
      authentication:
        type: bearer
        token: "$secrets.products_token"
      resources:
        - name: gic-rates
          path: "/gic/rates"
          inputParameters:
            - name: term
              in: query
          operations:
            - name: get-gic-rates
              method: GET

Retrieves a file from Google Drive.

naftiko: "0.5"
info:
  label: "Google Drive File Viewer"
  description: "Retrieves a file from Google Drive."
  tags:
    - collaboration
    - google-drive
capability:
  exposes:
    - type: mcp
      namespace: collaboration
      port: 8080
      tools:
        - name: get-google
          description: "Retrieves a file from Google Drive."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The google drive file viewer identifier."
          call: "collaboration-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: collaboration-api
      baseUri: "https://api.td.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: google
          path: "/google/drive/file/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-google
              method: GET

Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests.

naftiko: "0.5"
info:
  label: "Infrastructure Capacity Planning Orchestrator"
  description: "Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests."
  tags:
    - infrastructure
    - planning
    - finance
capability:
  exposes:
    - type: mcp
      namespace: infrastructure
      port: 8080
      tools:
        - name: run-infrastructure-capacity-planning-orchestrator
          description: "Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Infrastructure Capacity Planning Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Processes an Interac e-Transfer by validating recipient, debiting the sender account, submitting to the Interac network, and sending a confirmation to both parties.

naftiko: "0.5"
info:
  label: "Interac e-Transfer Processor"
  description: "Processes an Interac e-Transfer by validating recipient, debiting the sender account, submitting to the Interac network, and sending a confirmation to both parties."
  tags:
    - banking
    - payments
    - interac
    - e-transfer
capability:
  exposes:
    - type: mcp
      namespace: etransfer
      port: 8080
      tools:
        - name: send-etransfer
          description: "Process an Interac e-Transfer from sender to recipient."
          inputParameters:
            - name: sender_account
              in: body
              type: string
              description: "Sender account number."
            - name: recipient_email
              in: body
              type: string
              description: "Recipient email for e-Transfer."
            - name: amount
              in: body
              type: number
              description: "Transfer amount in CAD."
            - name: message
              in: body
              type: string
              description: "Optional message to recipient."
          steps:
            - name: validate-balance
              type: call
              call: "corebanking.get-balance"
              with:
                account_number: "{{sender_account}}"
            - name: submit-transfer
              type: call
              call: "payments.send-etransfer"
              with:
                from_account: "{{sender_account}}"
                recipient_email: "{{recipient_email}}"
                amount: "{{amount}}"
                message: "{{message}}"
            - name: send-confirmation
              type: call
              call: "outlook.send-email"
              with:
                to: "{{recipient_email}}"
                subject: "You've received an Interac e-Transfer"
                body: "You have received ${{amount}} CAD via Interac e-Transfer. Reference: {{submit-transfer.reference_id}}."
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.td.com/core-banking/v1"
      authentication:
        type: bearer
        token: "$secrets.corebanking_token"
      resources:
        - name: accounts
          path: "/accounts/{{account_number}}/balance"
          inputParameters:
            - name: account_number
              in: path
          operations:
            - name: get-balance
              method: GET
    - type: http
      namespace: payments
      baseUri: "https://api.td.com/payments/v1"
      authentication:
        type: bearer
        token: "$secrets.payments_token"
      resources:
        - name: etransfers
          path: "/interac/e-transfers"
          operations:
            - name: send-etransfer
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Rebalances investment portfolios by analyzing drift, generating trade lists, and executing trades.

naftiko: "0.5"
info:
  label: "Investment Portfolio Rebalancing Orchestrator"
  description: "Rebalances investment portfolios by analyzing drift, generating trade lists, and executing trades."
  tags:
    - wealth-management
    - trading
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: wealth-management
      port: 8080
      tools:
        - name: run-investment-portfolio-rebalancing-orchestrator
          description: "Rebalances investment portfolios by analyzing drift, generating trade lists, and executing trades."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Investment Portfolio Rebalancing Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Executes a securities trade for a wealth client: validates the order against compliance rules, submits to the trading platform, updates the portfolio in the wealth system, and confirms via email.

naftiko: "0.5"
info:
  label: "Investment Trade Execution Pipeline"
  description: "Executes a securities trade for a wealth client: validates the order against compliance rules, submits to the trading platform, updates the portfolio in the wealth system, and confirms via email."
  tags:
    - banking
    - wealth-management
    - trading
    - compliance
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: trade-execution
      port: 8080
      tools:
        - name: execute-trade
          description: "Validate, execute, and confirm a securities trade for a wealth client."
          inputParameters:
            - name: client_id
              in: body
              type: string
              description: "Wealth client ID."
            - name: symbol
              in: body
              type: string
              description: "Security symbol."
            - name: quantity
              in: body
              type: integer
              description: "Number of shares/units."
            - name: order_type
              in: body
              type: string
              description: "Order type (market, limit)."
            - name: side
              in: body
              type: string
              description: "Buy or sell."
            - name: client_email
              in: body
              type: string
              description: "Client email for confirmation."
          steps:
            - name: validate-compliance
              type: call
              call: "compliance.validate-trade"
              with:
                client_id: "{{client_id}}"
                symbol: "{{symbol}}"
                quantity: "{{quantity}}"
                side: "{{side}}"
            - name: submit-order
              type: call
              call: "trading.submit-order"
              with:
                client_id: "{{client_id}}"
                symbol: "{{symbol}}"
                quantity: "{{quantity}}"
                order_type: "{{order_type}}"
                side: "{{side}}"
            - name: update-portfolio
              type: call
              call: "wealth.update-holdings"
              with:
                client_id: "{{client_id}}"
                trade_ref: "{{submit-order.trade_reference}}"
            - name: confirm-trade
              type: call
              call: "outlook.send-email"
              with:
                to: "{{client_email}}"
                subject: "TD Wealth - Trade Confirmation"
                body: "Your {{side}} order for {{quantity}} shares of {{symbol}} has been executed. Reference: {{submit-order.trade_reference}}. Price: ${{submit-order.execution_price}}."
  consumes:
    - type: http
      namespace: compliance
      baseUri: "https://api.td.com/compliance/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: trade-validation
          path: "/trade-validation"
          operations:
            - name: validate-trade
              method: POST
    - type: http
      namespace: trading
      baseUri: "https://api.td.com/trading/v1"
      authentication:
        type: bearer
        token: "$secrets.trading_token"
      resources:
        - name: orders
          path: "/orders"
          operations:
            - name: submit-order
              method: POST
    - type: http
      namespace: wealth
      baseUri: "https://api.td.com/wealth/v1"
      authentication:
        type: bearer
        token: "$secrets.wealth_token"
      resources:
        - name: holdings
          path: "/clients/{{client_id}}/holdings"
          inputParameters:
            - name: client_id
              in: path
          operations:
            - name: update-holdings
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams.

naftiko: "0.5"
info:
  label: "IT Change Management Orchestrator"
  description: "Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams."
  tags:
    - it
    - servicenow
    - operations
capability:
  exposes:
    - type: mcp
      namespace: it
      port: 8080
      tools:
        - name: run-it-change-management-orchestrator
          description: "Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed IT Change Management Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Creates a ServiceNow change request, routes for CAB approval, deploys via Azure DevOps, and notifies stakeholders in Microsoft Teams upon completion.

naftiko: "0.5"
info:
  label: "IT Change Request Pipeline"
  description: "Creates a ServiceNow change request, routes for CAB approval, deploys via Azure DevOps, and notifies stakeholders in Microsoft Teams upon completion."
  tags:
    - banking
    - it-operations
    - servicenow
    - azure-devops
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: change-management
      port: 8080
      tools:
        - name: process-change-request
          description: "Create change request, manage approval, trigger deployment, and notify."
          inputParameters:
            - name: title
              in: body
              type: string
              description: "Change request title."
            - name: description
              in: body
              type: string
              description: "Detailed change description."
            - name: pipeline_id
              in: body
              type: string
              description: "Azure DevOps pipeline ID to trigger."
            - name: teams_webhook
              in: body
              type: string
              description: "Teams webhook for notifications."
          steps:
            - name: create-cr
              type: call
              call: "servicenow.create-change"
              with:
                short_description: "{{title}}"
                description: "{{description}}"
                type: "normal"
            - name: trigger-deploy
              type: call
              call: "azuredevops.run-pipeline"
              with:
                pipeline_id: "{{pipeline_id}}"
                parameters:
                  change_number: "{{create-cr.number}}"
            - name: notify-stakeholders
              type: call
              call: "msteams.send-message"
              with:
                webhook_url: "{{teams_webhook}}"
                text: "Change {{create-cr.number}} deployed. Pipeline run: {{trigger-deploy.run_id}}. Status: {{trigger-deploy.status}}."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://td.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: azuredevops
      baseUri: "https://dev.azure.com/td-bank"
      authentication:
        type: bearer
        token: "$secrets.azuredevops_token"
      resources:
        - name: pipelines
          path: "/{{project}}/_apis/pipelines/{{pipeline_id}}/runs"
          inputParameters:
            - name: pipeline_id
              in: path
          operations:
            - name: run-pipeline
              method: POST
    - type: http
      namespace: msteams
      baseUri: "{{webhook_url}}"
      authentication:
        type: none
      resources:
        - name: webhook
          path: ""
          operations:
            - name: send-message
              method: POST

Retrieves a Jira issue by key and returns key fields. Used by project and IT teams.

naftiko: "0.5"
info:
  label: "Jira Issue Viewer"
  description: "Retrieves a Jira issue by key and returns key fields. Used by project and IT teams."
  tags:
    - project-management
    - jira
capability:
  exposes:
    - type: mcp
      namespace: pm-lookup
      port: 8080
      tools:
        - name: get-jira-issue
          description: "Look up a Jira issue by key."
          inputParameters:
            - name: issue_key
              in: body
              type: string
              description: "Jira issue key."
          call: "jira.get-issue"
          with:
            issue_key: "{{issue_key}}"
          outputParameters:
            - name: summary
              type: string
              mapping: "$.fields.summary"
            - name: status
              type: string
              mapping: "$.fields.status.name"
            - name: assignee
              type: string
              mapping: "$.fields.assignee.displayName"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://td.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue/{{issue_key}}"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: get-issue
              method: GET

Retrieves a Jira ticket by issue key.

naftiko: "0.5"
info:
  label: "Jira Ticket Viewer"
  description: "Retrieves a Jira ticket by issue key."
  tags:
    - engineering
    - jira
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: get-jira
          description: "Retrieves a Jira ticket by issue key."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The jira ticket viewer identifier."
          call: "engineering-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: engineering-api
      baseUri: "https://api.td.com/engineering/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: jira
          path: "/jira/ticket/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-jira
              method: GET

Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates.

naftiko: "0.5"
info:
  label: "Knowledge Base Refresh Orchestrator"
  description: "Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates."
  tags:
    - knowledge-management
    - collaboration
    - operations
capability:
  exposes:
    - type: mcp
      namespace: knowledge-management
      port: 8080
      tools:
        - name: run-knowledge-base-refresh-orchestrator
          description: "Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Knowledge Base Refresh Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Runs Know Your Customer verification by checking customer identity against a third-party identity verification service, screens against sanctions lists, and logs the result in Salesforce and ServiceNow.

naftiko: "0.5"
info:
  label: "KYC Verification Pipeline"
  description: "Runs Know Your Customer verification by checking customer identity against a third-party identity verification service, screens against sanctions lists, and logs the result in Salesforce and ServiceNow."
  tags:
    - banking
    - compliance
    - kyc
    - salesforce
    - servicenow
    - identity-verification
capability:
  exposes:
    - type: mcp
      namespace: kyc-verification
      port: 8080
      tools:
        - name: verify-customer-kyc
          description: "Run KYC identity verification, sanctions screening, and log results across systems."
          inputParameters:
            - name: customer_id
              in: body
              type: string
              description: "Customer ID in the core banking system."
            - name: full_name
              in: body
              type: string
              description: "Customer full legal name."
            - name: date_of_birth
              in: body
              type: string
              description: "Date of birth in YYYY-MM-DD format."
            - name: country
              in: body
              type: string
              description: "Country of residence ISO code."
          steps:
            - name: verify-identity
              type: call
              call: "idverify.check-identity"
              with:
                full_name: "{{full_name}}"
                dob: "{{date_of_birth}}"
                country: "{{country}}"
            - name: screen-sanctions
              type: call
              call: "sanctions.screen-entity"
              with:
                name: "{{full_name}}"
                entity_type: "individual"
            - name: update-crm
              type: call
              call: "salesforce.update-account"
              with:
                account_id: "{{customer_id}}"
                KYC_Status__c: "{{verify-identity.status}}"
                Sanctions_Clear__c: "{{screen-sanctions.is_clear}}"
            - name: log-compliance
              type: call
              call: "servicenow.create-record"
              with:
                table: "u_kyc_log"
                customer_id: "{{customer_id}}"
                kyc_result: "{{verify-identity.status}}"
                sanctions_result: "{{screen-sanctions.is_clear}}"
  consumes:
    - type: http
      namespace: idverify
      baseUri: "https://api.idverify.com/v2"
      authentication:
        type: bearer
        token: "$secrets.idverify_token"
      resources:
        - name: identity
          path: "/checks"
          operations:
            - name: check-identity
              method: POST
    - type: http
      namespace: sanctions
      baseUri: "https://api.sanctions-screening.com/v1"
      authentication:
        type: bearer
        token: "$secrets.sanctions_api_token"
      resources:
        - name: screening
          path: "/screen"
          operations:
            - name: screen-entity
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://td.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: update-account
              method: PATCH
    - type: http
      namespace: servicenow
      baseUri: "https://td.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST

Retrieves the amortization schedule for a loan.

naftiko: "0.5"
info:
  label: "Loan Amortization Schedule"
  description: "Retrieves the amortization schedule for a loan."
  tags:
    - lending
    - finance
capability:
  exposes:
    - type: mcp
      namespace: lending
      port: 8080
      tools:
        - name: get-loan
          description: "Retrieves the amortization schedule for a loan."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The loan amortization schedule identifier."
          call: "lending-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: lending-api
      baseUri: "https://api.td.com/lending/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: loan
          path: "/loan/amortization/schedule/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-loan
              method: GET

Retrieves the current status of a loan application including decision, underwriting stage, and conditions. Used by loan officers and customer service agents.

naftiko: "0.5"
info:
  label: "Loan Application Status Lookup"
  description: "Retrieves the current status of a loan application including decision, underwriting stage, and conditions. Used by loan officers and customer service agents."
  tags:
    - banking
    - lending
    - loan-origination
capability:
  exposes:
    - type: mcp
      namespace: lending-inquiry
      port: 8080
      tools:
        - name: get-loan-status
          description: "Look up loan application status by application ID."
          inputParameters:
            - name: application_id
              in: body
              type: string
              description: "The loan application ID."
          call: "lending.get-application"
          with:
            application_id: "{{application_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: decision
              type: string
              mapping: "$.decision"
            - name: stage
              type: string
              mapping: "$.underwritingStage"
            - name: conditions
              type: array
              mapping: "$.outstandingConditions"
  consumes:
    - type: http
      namespace: lending
      baseUri: "https://api.td.com/lending/v1"
      authentication:
        type: bearer
        token: "$secrets.lending_token"
      resources:
        - name: applications
          path: "/applications/{{application_id}}"
          inputParameters:
            - name: application_id
              in: path
          operations:
            - name: get-application
              method: GET

Orchestrates loan origination by collecting applications, running credit checks, and processing approvals.

naftiko: "0.5"
info:
  label: "Loan Origination Orchestrator"
  description: "Orchestrates loan origination by collecting applications, running credit checks, and processing approvals."
  tags:
    - lending
    - risk
    - customer-service
capability:
  exposes:
    - type: mcp
      namespace: lending
      port: 8080
      tools:
        - name: run-loan-origination-orchestrator
          description: "Orchestrates loan origination by collecting applications, running credit checks, and processing approvals."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Loan Origination Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Queries upcoming loan payment due dates from the lending system, and sends reminder emails to customers three days before their payment is due.

naftiko: "0.5"
info:
  label: "Loan Payment Reminder Sender"
  description: "Queries upcoming loan payment due dates from the lending system, and sends reminder emails to customers three days before their payment is due."
  tags:
    - banking
    - lending
    - notifications
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: loan-reminders
      port: 8080
      tools:
        - name: send-payment-reminders
          description: "Query upcoming loan payments and send reminder emails to customers."
          inputParameters:
            - name: days_ahead
              in: body
              type: integer
              description: "Number of days ahead to look for due payments."
          steps:
            - name: get-upcoming
              type: call
              call: "lending.get-upcoming-payments"
              with:
                days_ahead: "{{days_ahead}}"
            - name: send-reminders
              type: call
              call: "outlook.send-email"
              with:
                to: "{{get-upcoming.customer_emails}}"
                subject: "TD Bank - Loan Payment Reminder"
                body: "Your loan payment of ${{get-upcoming.amount}} is due on {{get-upcoming.due_date}}. Please ensure funds are available."
  consumes:
    - type: http
      namespace: lending
      baseUri: "https://api.td.com/lending/v1"
      authentication:
        type: bearer
        token: "$secrets.lending_token"
      resources:
        - name: payments
          path: "/upcoming-payments"
          inputParameters:
            - name: days_ahead
              in: query
          operations:
            - name: get-upcoming-payments
              method: GET
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports.

naftiko: "0.5"
info:
  label: "Marketing Campaign Performance Orchestrator"
  description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
  tags:
    - marketing
    - analytics
    - finance
capability:
  exposes:
    - type: mcp
      namespace: marketing
      port: 8080
      tools:
        - name: run-marketing-campaign-performance-orchestrator
          description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Marketing Campaign Performance Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Sends an email via Microsoft Outlook. Used across workflows for customer and internal notifications.

naftiko: "0.5"
info:
  label: "Microsoft Outlook Email Sender"
  description: "Sends an email via Microsoft Outlook. Used across workflows for customer and internal notifications."
  tags:
    - notification
    - microsoft-outlook
    - email
capability:
  exposes:
    - type: mcp
      namespace: email-sender
      port: 8080
      tools:
        - name: send-email
          description: "Send an email via Microsoft Outlook."
          inputParameters:
            - name: to
              in: body
              type: string
              description: "Recipient email."
            - name: subject
              in: body
              type: string
              description: "Email subject."
            - name: body
              in: body
              type: string
              description: "Email body."
          call: "outlook.send-email"
          with:
            to: "{{to}}"
            subject: "{{subject}}"
            body: "{{body}}"
          outputParameters:
            - name: message_id
              type: string
              mapping: "$.id"
  consumes:
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Sends a message to a Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Microsoft Teams Message Sender"
  description: "Sends a message to a Microsoft Teams channel."
  tags:
    - communications
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: communications
      port: 8080
      tools:
        - name: get-microsoft
          description: "Sends a message to a Microsoft Teams channel."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The microsoft teams message sender identifier."
          call: "communications-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: communications-api
      baseUri: "https://api.td.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: microsoft
          path: "/microsoft/teams/message/sender/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-microsoft
              method: GET

Orchestrates mortgage application processing: pulls credit report, submits to underwriting engine, updates Salesforce opportunity, and notifies the loan officer via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Mortgage Origination Pipeline"
  description: "Orchestrates mortgage application processing: pulls credit report, submits to underwriting engine, updates Salesforce opportunity, and notifies the loan officer via Microsoft Teams."
  tags:
    - banking
    - lending
    - mortgage
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: mortgage-origination
      port: 8080
      tools:
        - name: process-mortgage-application
          description: "Orchestrate mortgage application from credit pull through underwriting to notification."
          inputParameters:
            - name: application_id
              in: body
              type: string
              description: "Mortgage application ID."
            - name: borrower_ssn
              in: body
              type: string
              description: "Borrower SSN for credit pull."
            - name: loan_amount
              in: body
              type: number
              description: "Requested loan amount."
            - name: sf_opportunity_id
              in: body
              type: string
              description: "Salesforce opportunity ID."
            - name: loan_officer_email
              in: body
              type: string
              description: "Loan officer email for notification."
          steps:
            - name: pull-credit
              type: call
              call: "credit.pull-report"
              with:
                ssn: "{{borrower_ssn}}"
                report_type: "mortgage"
            - name: submit-underwriting
              type: call
              call: "lending.submit-underwriting"
              with:
                application_id: "{{application_id}}"
                credit_score: "{{pull-credit.score}}"
                loan_amount: "{{loan_amount}}"
            - name: update-sf
              type: call
              call: "salesforce.update-opportunity"
              with:
                opportunity_id: "{{sf_opportunity_id}}"
                StageName: "{{submit-underwriting.decision}}"
                Credit_Score__c: "{{pull-credit.score}}"
            - name: notify-officer
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{loan_officer_email}}"
                text: "Mortgage application {{application_id}} - Decision: {{submit-underwriting.decision}}. Credit score: {{pull-credit.score}}. Loan: ${{loan_amount}}."
  consumes:
    - type: http
      namespace: credit
      baseUri: "https://api.creditbureau.com/v2"
      authentication:
        type: bearer
        token: "$secrets.credit_api_token"
      resources:
        - name: reports
          path: "/reports"
          operations:
            - name: pull-report
              method: POST
    - type: http
      namespace: lending
      baseUri: "https://api.td.com/lending/v1"
      authentication:
        type: bearer
        token: "$secrets.lending_token"
      resources:
        - name: underwriting
          path: "/applications/{{application_id}}/underwrite"
          inputParameters:
            - name: application_id
              in: path
          operations:
            - name: submit-underwriting
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://td.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: update-opportunity
              method: PATCH
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: chat
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves current mortgage rates by product type and term. Used by mortgage specialists and digital channels.

naftiko: "0.5"
info:
  label: "Mortgage Rate Viewer"
  description: "Retrieves current mortgage rates by product type and term. Used by mortgage specialists and digital channels."
  tags:
    - banking
    - lending
    - mortgage
    - product-catalog
capability:
  exposes:
    - type: mcp
      namespace: mortgage-rates
      port: 8080
      tools:
        - name: get-mortgage-rates
          description: "Look up current mortgage rates by product type and term."
          inputParameters:
            - name: product_type
              in: body
              type: string
              description: "Mortgage product type (fixed, variable, arm)."
            - name: term_years
              in: body
              type: integer
              description: "Mortgage term in years."
          call: "products.get-mortgage-rates"
          with:
            type: "{{product_type}}"
            term: "{{term_years}}"
          outputParameters:
            - name: rate
              type: number
              mapping: "$.annualRate"
            - name: apr
              type: number
              mapping: "$.apr"
            - name: points
              type: number
              mapping: "$.points"
  consumes:
    - type: http
      namespace: products
      baseUri: "https://api.td.com/products/v1"
      authentication:
        type: bearer
        token: "$secrets.products_token"
      resources:
        - name: mortgage-rates
          path: "/mortgage/rates"
          inputParameters:
            - name: type
              in: query
            - name: term
              in: query
          operations:
            - name: get-mortgage-rates
              method: GET

Links a savings account to a checking account for overdraft protection: verifies both accounts, enables the link in core banking, updates Salesforce, and confirms to the customer.

naftiko: "0.5"
info:
  label: "Overdraft Protection Activator"
  description: "Links a savings account to a checking account for overdraft protection: verifies both accounts, enables the link in core banking, updates Salesforce, and confirms to the customer."
  tags:
    - banking
    - accounts
    - overdraft
    - salesforce
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: account-services
      port: 8080
      tools:
        - name: activate-overdraft-protection
          description: "Link accounts for overdraft protection and confirm to customer."
          inputParameters:
            - name: checking_account
              in: body
              type: string
              description: "Checking account number."
            - name: savings_account
              in: body
              type: string
              description: "Savings account for backup."
            - name: customer_email
              in: body
              type: string
              description: "Customer email for confirmation."
            - name: sf_account_id
              in: body
              type: string
              description: "Salesforce account ID."
          steps:
            - name: link-accounts
              type: call
              call: "corebanking.link-overdraft"
              with:
                primary: "{{checking_account}}"
                backup: "{{savings_account}}"
            - name: update-crm
              type: call
              call: "salesforce.update-account"
              with:
                account_id: "{{sf_account_id}}"
                Overdraft_Protection__c: "true"
            - name: confirm
              type: call
              call: "outlook.send-email"
              with:
                to: "{{customer_email}}"
                subject: "TD Bank - Overdraft Protection Activated"
                body: "Overdraft protection is now active on your checking account {{checking_account}}, linked to savings {{savings_account}}."
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.td.com/core-banking/v1"
      authentication:
        type: bearer
        token: "$secrets.corebanking_token"
      resources:
        - name: overdraft
          path: "/accounts/overdraft-link"
          operations:
            - name: link-overdraft
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://td.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: update-account
              method: PATCH
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Handles payment exceptions by investigating failures, routing for resolution, and updating payment status.

naftiko: "0.5"
info:
  label: "Payment Exception Handling Orchestrator"
  description: "Handles payment exceptions by investigating failures, routing for resolution, and updating payment status."
  tags:
    - operations
    - finance
    - customer-service
capability:
  exposes:
    - type: mcp
      namespace: operations
      port: 8080
      tools:
        - name: run-payment-exception-handling-orchestrator
          description: "Handles payment exceptions by investigating failures, routing for resolution, and updating payment status."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Payment Exception Handling Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Triggers a Power BI dataset refresh.

naftiko: "0.5"
info:
  label: "Power BI Dashboard Refresher"
  description: "Triggers a Power BI dataset refresh."
  tags:
    - analytics
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: get-power
          description: "Triggers a Power BI dataset refresh."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The power bi dashboard refresher identifier."
          call: "analytics-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: analytics-api
      baseUri: "https://api.td.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: power
          path: "/power/bi/dashboard/refresher/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-power
              method: GET

Triggers a refresh on a Power BI dataset. Used to keep analytics dashboards current after data loads.

naftiko: "0.5"
info:
  label: "Power BI Dataset Refresher"
  description: "Triggers a refresh on a Power BI dataset. Used to keep analytics dashboards current after data loads."
  tags:
    - analytics
    - power-bi
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: bi-refresh
      port: 8080
      tools:
        - name: refresh-pbi-dataset
          description: "Trigger a Power BI dataset refresh."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "Power BI dataset ID."
          call: "powerbi.refresh-dataset"
          with:
            dataset_id: "{{dataset_id}}"
          outputParameters:
            - name: request_id
              type: string
              mapping: "$.requestId"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST

Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports.

naftiko: "0.5"
info:
  label: "Procurement Spend Analysis Orchestrator"
  description: "Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports."
  tags:
    - procurement
    - analytics
    - finance
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: run-procurement-spend-analysis-orchestrator
          description: "Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Procurement Spend Analysis Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders.

naftiko: "0.5"
info:
  label: "Quarterly Business Review Orchestrator"
  description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
  tags:
    - analytics
    - business
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: run-quarterly-business-review-orchestrator
          description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Quarterly Business Review Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Extracts required data from Snowflake, compiles regulatory reports for OSFI and FINTRAC, uploads to the regulatory filing portal, and logs the submission in ServiceNow.

naftiko: "0.5"
info:
  label: "Regulatory Reporting Orchestrator"
  description: "Extracts required data from Snowflake, compiles regulatory reports for OSFI and FINTRAC, uploads to the regulatory filing portal, and logs the submission in ServiceNow."
  tags:
    - banking
    - compliance
    - regulatory-reporting
    - snowflake
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: reg-reporting
      port: 8080
      tools:
        - name: generate-regulatory-report
          description: "Extract data, compile regulatory report, submit to regulator, and log."
          inputParameters:
            - name: report_type
              in: body
              type: string
              description: "Type of regulatory report (e.g., OSFI_D2G, FINTRAC_STR)."
            - name: reporting_period
              in: body
              type: string
              description: "Reporting period in YYYY-MM format."
          steps:
            - name: extract-data
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "CALL generate_regulatory_data('{{report_type}}', '{{reporting_period}}')"
            - name: submit-filing
              type: call
              call: "regulatory.submit-report"
              with:
                report_type: "{{report_type}}"
                period: "{{reporting_period}}"
                data: "{{extract-data.data}}"
            - name: log-submission
              type: call
              call: "servicenow.create-record"
              with:
                table: "u_regulatory_filings"
                report_type: "{{report_type}}"
                period: "{{reporting_period}}"
                filing_id: "{{submit-filing.filing_id}}"
                status: "submitted"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://td.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: regulatory
      baseUri: "https://api.td.com/regulatory/v1"
      authentication:
        type: bearer
        token: "$secrets.regulatory_token"
      resources:
        - name: filings
          path: "/filings"
          operations:
            - name: submit-report
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://td.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: records
          path: "/table/{{table}}"
          inputParameters:
            - name: table
              in: path
          operations:
            - name: create-record
              method: POST

Runs regulatory stress tests by applying scenarios, calculating impacts, and generating submission reports.

naftiko: "0.5"
info:
  label: "Regulatory Stress Test Orchestrator"
  description: "Runs regulatory stress tests by applying scenarios, calculating impacts, and generating submission reports."
  tags:
    - compliance
    - risk
    - finance
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: run-regulatory-stress-test-orchestrator
          description: "Runs regulatory stress tests by applying scenarios, calculating impacts, and generating submission reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Regulatory Stress Test Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Calculates daily risk exposure across the lending portfolio from Snowflake, updates the risk dashboard in Power BI, and emails a summary to the CRO.

naftiko: "0.5"
info:
  label: "Risk Exposure Dashboard Updater"
  description: "Calculates daily risk exposure across the lending portfolio from Snowflake, updates the risk dashboard in Power BI, and emails a summary to the CRO."
  tags:
    - banking
    - risk-management
    - snowflake
    - power-bi
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: risk-dashboard
      port: 8080
      tools:
        - name: update-risk-dashboard
          description: "Calculate risk exposure, refresh Power BI, and email CRO."
          inputParameters:
            - name: pbi_dataset_id
              in: body
              type: string
              description: "Power BI risk dashboard dataset ID."
            - name: cro_email
              in: body
              type: string
              description: "CRO email address."
          steps:
            - name: calc-exposure
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "CALL RISK.CALCULATE_DAILY_EXPOSURE()"
            - name: refresh-pbi
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "{{pbi_dataset_id}}"
            - name: email-cro
              type: call
              call: "outlook.send-email"
              with:
                to: "{{cro_email}}"
                subject: "Daily Risk Exposure Summary"
                body: "Daily risk exposure calculation complete. Dashboard refreshed. Total exposure: {{calc-exposure.data}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://td.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/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Retrieves a Salesforce account by account ID.

naftiko: "0.5"
info:
  label: "Salesforce Account Viewer"
  description: "Retrieves a Salesforce account by account ID."
  tags:
    - sales
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: sales
      port: 8080
      tools:
        - name: get-salesforce
          description: "Retrieves a Salesforce account by account ID."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The salesforce account viewer identifier."
          call: "sales-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: sales-api
      baseUri: "https://api.td.com/sales/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: salesforce
          path: "/salesforce/account/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-salesforce
              method: GET

Retrieves a Salesforce account record by ID with key fields for customer management. Used by relationship managers.

naftiko: "0.5"
info:
  label: "Salesforce CRM Account Viewer"
  description: "Retrieves a Salesforce account record by ID with key fields for customer management. Used by relationship managers."
  tags:
    - crm
    - salesforce
    - banking
capability:
  exposes:
    - type: mcp
      namespace: crm-viewer
      port: 8080
      tools:
        - name: get-salesforce-account
          description: "Retrieve a Salesforce account record by ID."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "Salesforce Account ID."
          call: "salesforce.get-account"
          with:
            account_id: "{{account_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.Name"
            - name: type
              type: string
              mapping: "$.Type"
            - name: industry
              type: string
              mapping: "$.Industry"
            - name: annual_revenue
              type: number
              mapping: "$.AnnualRevenue"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://td.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

Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation.

naftiko: "0.5"
info:
  label: "Security Audit Orchestrator"
  description: "Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation."
  tags:
    - security
    - servicenow
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: security
      port: 8080
      tools:
        - name: run-security-audit-orchestrator
          description: "Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Security Audit Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Creates a new incident in ServiceNow.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Creator"
  description: "Creates a new incident in ServiceNow."
  tags:
    - it
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: it
      port: 8080
      tools:
        - name: get-servicenow
          description: "Creates a new incident in ServiceNow."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The servicenow incident creator identifier."
          call: "it-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: it-api
      baseUri: "https://api.td.com/it/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: servicenow
          path: "/servicenow/incident/creator/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-servicenow
              method: GET

Retrieves a ServiceNow incident by number and returns key details. Used by IT and operations staff to check ticket status.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Viewer"
  description: "Retrieves a ServiceNow incident by number and returns key details. Used by IT and operations staff to check ticket status."
  tags:
    - incident-management
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: incident-lookup
      port: 8080
      tools:
        - name: get-incident
          description: "Look up a ServiceNow incident by number."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The incident number (e.g., INC0012345)."
          call: "servicenow.get-incident"
          with:
            number: "{{incident_number}}"
          outputParameters:
            - name: state
              type: string
              mapping: "$.result.state"
            - name: short_description
              type: string
              mapping: "$.result.short_description"
            - name: assigned_to
              type: string
              mapping: "$.result.assigned_to.display_value"
            - name: priority
              type: string
              mapping: "$.result.priority"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://td.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          inputParameters:
            - name: sysparm_query
              in: query
          operations:
            - name: get-incident
              method: GET

Uploads a file to a SharePoint document library. Used across workflows for document storage.

naftiko: "0.5"
info:
  label: "SharePoint File Uploader"
  description: "Uploads a file to a SharePoint document library. Used across workflows for document storage."
  tags:
    - document-management
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: doc-upload
      port: 8080
      tools:
        - name: upload-to-sharepoint
          description: "Upload a file to SharePoint."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "SharePoint site ID."
            - name: folder_path
              in: body
              type: string
              description: "Folder path."
            - name: file_name
              in: body
              type: string
              description: "File name."
          call: "sharepoint.upload-file"
          with:
            site_id: "{{site_id}}"
            folder_path: "{{folder_path}}"
            file_name: "{{file_name}}"
          outputParameters:
            - name: web_url
              type: string
              mapping: "$.webUrl"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
            - name: file_name
              in: path
          operations:
            - name: upload-file
              method: PUT

Sends a notification to a Slack channel.

naftiko: "0.5"
info:
  label: "Slack Notification Publisher"
  description: "Sends a notification to a Slack channel."
  tags:
    - communications
    - slack
capability:
  exposes:
    - type: mcp
      namespace: communications
      port: 8080
      tools:
        - name: get-slack
          description: "Sends a notification to a Slack channel."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The slack notification publisher identifier."
          call: "communications-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: communications-api
      baseUri: "https://api.td.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: slack
          path: "/slack/notification/publisher/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-slack
              method: GET

Sends a message to a Slack channel. Used across TD operations for alerts and notifications.

naftiko: "0.5"
info:
  label: "Slack Notification Sender"
  description: "Sends a message to a Slack channel. Used across TD operations for alerts and notifications."
  tags:
    - notification
    - slack
    - messaging
capability:
  exposes:
    - type: mcp
      namespace: notifications
      port: 8080
      tools:
        - name: send-slack-message
          description: "Send a message to a Slack channel."
          inputParameters:
            - name: channel
              in: body
              type: string
              description: "Slack channel name or ID."
            - name: text
              in: body
              type: string
              description: "Message text."
          call: "slack.post-message"
          with:
            channel: "{{channel}}"
            text: "{{text}}"
          outputParameters:
            - name: ts
              type: string
              mapping: "$.ts"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Opens a new small business account: runs business verification, creates the account in core banking, provisions in Salesforce, sets up online banking, and welcomes the business owner via email.

naftiko: "0.5"
info:
  label: "Small Business Account Opening Pipeline"
  description: "Opens a new small business account: runs business verification, creates the account in core banking, provisions in Salesforce, sets up online banking, and welcomes the business owner via email."
  tags:
    - banking
    - small-business
    - onboarding
    - salesforce
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: sb-onboarding
      port: 8080
      tools:
        - name: open-business-account
          description: "Orchestrate small business account opening across all systems."
          inputParameters:
            - name: business_name
              in: body
              type: string
              description: "Legal business name."
            - name: ein
              in: body
              type: string
              description: "Employer Identification Number."
            - name: owner_name
              in: body
              type: string
              description: "Business owner full name."
            - name: owner_email
              in: body
              type: string
              description: "Owner email address."
            - name: account_type
              in: body
              type: string
              description: "Business account type."
          steps:
            - name: verify-business
              type: call
              call: "idverify.verify-business"
              with:
                business_name: "{{business_name}}"
                ein: "{{ein}}"
            - name: create-account
              type: call
              call: "corebanking.create-business-account"
              with:
                business_name: "{{business_name}}"
                ein: "{{ein}}"
                account_type: "{{account_type}}"
            - name: create-sf-account
              type: call
              call: "salesforce.create-account"
              with:
                Name: "{{business_name}}"
                Type: "Small Business"
                Account_Number__c: "{{create-account.account_number}}"
            - name: setup-online
              type: call
              call: "digital.provision-business-banking"
              with:
                account_number: "{{create-account.account_number}}"
                admin_email: "{{owner_email}}"
            - name: welcome-email
              type: call
              call: "outlook.send-email"
              with:
                to: "{{owner_email}}"
                subject: "Welcome to TD Bank Business Banking"
                body: "Your business account for {{business_name}} is ready. Account number: {{create-account.account_number}}. Online banking has been provisioned."
  consumes:
    - type: http
      namespace: idverify
      baseUri: "https://api.idverify.com/v2"
      authentication:
        type: bearer
        token: "$secrets.idverify_token"
      resources:
        - name: business
          path: "/business-verification"
          operations:
            - name: verify-business
              method: POST
    - type: http
      namespace: corebanking
      baseUri: "https://api.td.com/core-banking/v1"
      authentication:
        type: bearer
        token: "$secrets.corebanking_token"
      resources:
        - name: business-accounts
          path: "/business-accounts"
          operations:
            - name: create-business-account
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://td.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account"
          operations:
            - name: create-account
              method: POST
    - type: http
      namespace: digital
      baseUri: "https://api.td.com/digital-banking/v1"
      authentication:
        type: bearer
        token: "$secrets.digital_token"
      resources:
        - name: provisioning
          path: "/business-banking/provision"
          operations:
            - name: provision-business-banking
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: send-mail
          path: "/me/sendMail"
          operations:
            - name: send-email
              method: POST

Runs an analytics query against the Snowflake data warehouse.

naftiko: "0.5"
info:
  label: "Snowflake Analytics Query"
  description: "Runs an analytics query against the Snowflake data warehouse."
  tags:
    - analytics
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: get-snowflake
          description: "Runs an analytics query against the Snowflake data warehouse."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The snowflake analytics query identifier."
          call: "analytics-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: analytics-api
      baseUri: "https://api.td.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: snowflake
          path: "/snowflake/analytics/query/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-snowflake
              method: GET

Executes a SQL query against the TD Snowflake data warehouse and returns results. Used for ad-hoc analytics.

naftiko: "0.5"
info:
  label: "Snowflake Query Runner"
  description: "Executes a SQL query against the TD Snowflake data warehouse and returns results. Used for ad-hoc analytics."
  tags:
    - analytics
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: data-query
      port: 8080
      tools:
        - name: run-snowflake-query
          description: "Execute a SQL query on Snowflake and return results."
          inputParameters:
            - name: statement
              in: body
              type: string
              description: "SQL statement to execute."
          call: "snowflake.execute-query"
          with:
            statement: "{{statement}}"
          outputParameters:
            - name: data
              type: array
              mapping: "$.data"
            - name: row_count
              type: integer
              mapping: "$.resultSetMetaData.numRows"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://td.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports.

naftiko: "0.5"
info:
  label: "Sustainability Metrics Collection Orchestrator"
  description: "Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports."
  tags:
    - sustainability
    - analytics
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: sustainability
      port: 8080
      tools:
        - name: run-sustainability-metrics-collection-orchestrator
          description: "Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Sustainability Metrics Collection Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans.

naftiko: "0.5"
info:
  label: "Third Party Risk Assessment Orchestrator"
  description: "Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans."
  tags:
    - risk
    - procurement
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: risk
      port: 8080
      tools:
        - name: run-third-party-risk-assessment-orchestrator
          description: "Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Third Party Risk Assessment Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves recent transaction history for a customer account including transaction date, amount, type, and merchant. Used by customer service agents.

naftiko: "0.5"
info:
  label: "Transaction History Viewer"
  description: "Retrieves recent transaction history for a customer account including transaction date, amount, type, and merchant. Used by customer service agents."
  tags:
    - banking
    - transactions
    - core-banking
capability:
  exposes:
    - type: mcp
      namespace: transaction-inquiry
      port: 8080
      tools:
        - name: get-transaction-history
          description: "Retrieve recent transactions for a customer account."
          inputParameters:
            - name: account_number
              in: body
              type: string
              description: "The customer account number."
            - name: days
              in: body
              type: integer
              description: "Number of days of history to retrieve."
          call: "corebanking.get-transactions"
          with:
            account_number: "{{account_number}}"
            days: "{{days}}"
          outputParameters:
            - name: transactions
              type: array
              mapping: "$.transactions"
            - name: total_count
              type: integer
              mapping: "$.totalCount"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.td.com/core-banking/v1"
      authentication:
        type: bearer
        token: "$secrets.corebanking_token"
      resources:
        - name: transactions
          path: "/accounts/{{account_number}}/transactions"
          inputParameters:
            - name: account_number
              in: path
            - name: fromDate
              in: query
          operations:
            - name: get-transactions
              method: GET

Queries real-time cash positions from the treasury management system, aggregates with Snowflake data, and publishes a liquidity report to SharePoint for treasury leadership.

naftiko: "0.5"
info:
  label: "Treasury Liquidity Report Generator"
  description: "Queries real-time cash positions from the treasury management system, aggregates with Snowflake data, and publishes a liquidity report to SharePoint for treasury leadership."
  tags:
    - banking
    - treasury
    - liquidity
    - snowflake
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: treasury-reporting
      port: 8080
      tools:
        - name: generate-liquidity-report
          description: "Generate treasury liquidity report from real-time data and publish to SharePoint."
          inputParameters:
            - name: report_date
              in: body
              type: string
              description: "Report date in YYYY-MM-DD format."
            - name: sharepoint_site
              in: body
              type: string
              description: "SharePoint site ID."
          steps:
            - name: get-cash-positions
              type: call
              call: "treasury.get-cash-positions"
              with:
                date: "{{report_date}}"
            - name: get-projections
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "SELECT currency, projected_inflow, projected_outflow FROM TREASURY.CASH_PROJECTIONS WHERE date = '{{report_date}}'"
            - name: upload-report
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "{{sharepoint_site}}"
                folder_path: "Treasury/LiquidityReports"
                file_name: "liquidity_{{report_date}}.json"
  consumes:
    - type: http
      namespace: treasury
      baseUri: "https://api.td.com/treasury/v1"
      authentication:
        type: bearer
        token: "$secrets.treasury_token"
      resources:
        - name: cash-positions
          path: "/cash-positions"
          inputParameters:
            - name: date
              in: query
          operations:
            - name: get-cash-positions
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://td.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
            - name: file_name
              in: path
          operations:
            - name: upload-file
              method: PUT

Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign.

naftiko: "0.5"
info:
  label: "Vendor Contract Renewal Pipeline"
  description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
  tags:
    - procurement
    - legal
    - docusign
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: run-vendor-contract-renewal-pipeline
          description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Vendor Contract Renewal Pipeline for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.td.com/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.td.com/v2"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves a wealth management client's investment portfolio summary including asset allocation, total value, and performance metrics from the wealth management platform.

naftiko: "0.5"
info:
  label: "Wealth Portfolio Summary"
  description: "Retrieves a wealth management client's investment portfolio summary including asset allocation, total value, and performance metrics from the wealth management platform."
  tags:
    - banking
    - wealth-management
    - investments
capability:
  exposes:
    - type: mcp
      namespace: wealth-inquiry
      port: 8080
      tools:
        - name: get-portfolio-summary
          description: "Retrieve a wealth client's portfolio summary."
          inputParameters:
            - name: client_id
              in: body
              type: string
              description: "Wealth management client ID."
          call: "wealth.get-portfolio"
          with:
            client_id: "{{client_id}}"
          outputParameters:
            - name: total_value
              type: number
              mapping: "$.totalValue"
            - name: asset_allocation
              type: object
              mapping: "$.assetAllocation"
            - name: ytd_return
              type: number
              mapping: "$.ytdReturn"
            - name: holdings_count
              type: integer
              mapping: "$.holdingsCount"
  consumes:
    - type: http
      namespace: wealth
      baseUri: "https://api.td.com/wealth/v1"
      authentication:
        type: bearer
        token: "$secrets.wealth_token"
      resources:
        - name: portfolios
          path: "/clients/{{client_id}}/portfolio"
          inputParameters:
            - name: client_id
              in: path
          operations:
            - name: get-portfolio
              method: GET

Initiates a domestic wire transfer by validating the account balance, submitting the transfer to the payments gateway, and logging the transaction in the compliance system.

naftiko: "0.5"
info:
  label: "Wire Transfer Processor"
  description: "Initiates a domestic wire transfer by validating the account balance, submitting the transfer to the payments gateway, and logging the transaction in the compliance system."
  tags:
    - banking
    - payments
    - wire-transfer
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: wire-transfers
      port: 8080
      tools:
        - name: process-wire-transfer
          description: "Validate balance, submit wire transfer, and log for compliance."
          inputParameters:
            - name: from_account
              in: body
              type: string
              description: "Source account number."
            - name: to_account
              in: body
              type: string
              description: "Destination account number."
            - name: routing_number
              in: body
              type: string
              description: "Destination bank routing number."
            - name: amount
              in: body
              type: number
              description: "Transfer amount."
            - name: currency
              in: body
              type: string
              description: "Currency code (e.g., USD, CAD)."
          steps:
            - name: check-balance
              type: call
              call: "corebanking.get-balance"
              with:
                account_number: "{{from_account}}"
            - name: submit-transfer
              type: call
              call: "payments.initiate-wire"
              with:
                from_account: "{{from_account}}"
                to_account: "{{to_account}}"
                routing_number: "{{routing_number}}"
                amount: "{{amount}}"
                currency: "{{currency}}"
            - name: log-compliance
              type: call
              call: "compliance.log-transaction"
              with:
                transaction_id: "{{submit-transfer.wire_id}}"
                type: "wire_transfer"
                amount: "{{amount}}"
                currency: "{{currency}}"
  consumes:
    - type: http
      namespace: corebanking
      baseUri: "https://api.td.com/core-banking/v1"
      authentication:
        type: bearer
        token: "$secrets.corebanking_token"
      resources:
        - name: accounts
          path: "/accounts/{{account_number}}/balance"
          inputParameters:
            - name: account_number
              in: path
          operations:
            - name: get-balance
              method: GET
    - type: http
      namespace: payments
      baseUri: "https://api.td.com/payments/v1"
      authentication:
        type: bearer
        token: "$secrets.payments_token"
      resources:
        - name: wires
          path: "/wire-transfers"
          operations:
            - name: initiate-wire
              method: POST
    - type: http
      namespace: compliance
      baseUri: "https://api.td.com/compliance/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: transaction-log
          path: "/transactions"
          operations:
            - name: log-transaction
              method: POST

Retrieves an employee's details from Workday by worker ID. Used by HR and managers for employee information.

naftiko: "0.5"
info:
  label: "Workday Employee Directory Lookup"
  description: "Retrieves an employee's details from Workday by worker ID. Used by HR and managers for employee information."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr-directory
      port: 8080
      tools:
        - name: get-employee
          description: "Look up employee details from Workday by worker ID."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_id}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.fullName"
            - name: department
              type: string
              mapping: "$.department"
            - name: job_title
              type: string
              mapping: "$.jobTitle"
            - name: work_email
              type: string
              mapping: "$.workEmail"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET

Retrieves an employee's details from Workday by worker ID.

naftiko: "0.5"
info:
  label: "Workday Employee Lookup"
  description: "Retrieves an employee's details from Workday by worker ID."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr-directory
      port: 8080
      tools:
        - name: get-employee
          description: "Look up employee details from Workday."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_id}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.fullName"
            - name: department
              type: string
              mapping: "$.department"
            - name: job_title
              type: string
              mapping: "$.jobTitle"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET

Retrieves employee profile from Workday.

naftiko: "0.5"
info:
  label: "Workday Employee Profile"
  description: "Retrieves employee profile from Workday."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: get-workday
          description: "Retrieves employee profile from Workday."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The workday employee profile identifier."
          call: "hr-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: hr-api
      baseUri: "https://api.td.com/hr/v1"
      authentication:
        type: bearer
        token: "$secrets.td_api_token"
      resources:
        - name: workday
          path: "/workday/employee/profile/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-workday
              method: GET