TD Bank Group Capabilities
Naftiko 0.5 capability definitions for TD Bank Group - 100 capabilities showing integration workflows and service orchestrations.
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