Manulife Capabilities

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

Sort
Expand

Onboards a new financial advisor by creating their Workday profile, provisioning Salesforce access, opening a ServiceNow setup ticket, and sending welcome materials via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Advisor Onboarding Orchestrator"
  description: "Onboards a new financial advisor by creating their Workday profile, provisioning Salesforce access, opening a ServiceNow setup ticket, and sending welcome materials via Microsoft Teams."
  tags:
    - onboarding
    - advisor-management
    - workday
    - salesforce
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: advisor-onboarding
      port: 8080
      tools:
        - name: onboard-advisor
          description: "Orchestrate the full onboarding sequence for a new financial advisor."
          inputParameters:
            - name: advisor_name
              in: body
              type: string
              description: "Full name of the new advisor."
            - name: email
              in: body
              type: string
              description: "Advisor email address."
            - name: region
              in: body
              type: string
              description: "Operating region."
            - name: license_number
              in: body
              type: string
              description: "Financial advisor license number."
          steps:
            - name: create-worker
              type: call
              call: "workday.create-worker"
              with:
                full_name: "{{advisor_name}}"
                email: "{{email}}"
                department: "Wealth Advisory"
                region: "{{region}}"
            - name: create-sfdc-user
              type: call
              call: "salesforce.create-user"
              with:
                name: "{{advisor_name}}"
                email: "{{email}}"
                profile: "Financial_Advisor"
                license: "{{license_number}}"
            - name: open-setup-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New advisor setup: {{advisor_name}}"
                category: "onboarding"
                description: "Provision systems access for {{advisor_name}} ({{email}}). License: {{license_number}}. Region: {{region}}."
            - name: send-welcome
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{email}}"
                text: "Welcome to Manulife, {{advisor_name}}! Your Salesforce access is ready and your setup ticket {{open-setup-ticket.number}} is in progress."
  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"
          operations:
            - name: create-worker
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://manulife.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: users
          path: "/sobjects/User"
          operations:
            - name: create-user
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://manulife.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Screens new client applications against sanctions lists and PEP databases, logging results in ServiceNow and updating the Salesforce compliance flag.

naftiko: "0.5"
info:
  label: "Anti-Money Laundering Screening"
  description: "Screens new client applications against sanctions lists and PEP databases, logging results in ServiceNow and updating the Salesforce compliance flag."
  tags:
    - aml
    - compliance
    - sanctions
    - servicenow
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: aml-screening
      port: 8080
      tools:
        - name: screen-client
          description: "Screen a client against AML/sanctions databases and update compliance records."
          inputParameters:
            - name: client_name
              in: body
              type: string
              description: "Client full name."
            - name: client_id
              in: body
              type: string
              description: "Salesforce client ID."
            - name: country
              in: body
              type: string
              description: "Client country of residence."
          steps:
            - name: run-screening
              type: call
              call: "aml-service.screen"
              with:
                name: "{{client_name}}"
                country: "{{country}}"
            - name: log-result
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "AML screening: {{client_name}}"
                category: "compliance"
                description: "Screening result: {{run-screening.result}}. Match count: {{run-screening.match_count}}. Risk level: {{run-screening.risk_level}}."
            - name: update-salesforce
              type: call
              call: "salesforce.update-account"
              with:
                account_id: "{{client_id}}"
                aml_status: "{{run-screening.result}}"
                aml_risk_level: "{{run-screening.risk_level}}"
  consumes:
    - type: http
      namespace: aml-service
      baseUri: "https://api.manulife.com/compliance/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: screening
          path: "/aml/screen"
          operations:
            - name: screen
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://manulife.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: salesforce
      baseUri: "https://manulife.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

Reviews Azure Active Directory access assignments for Manulife applications to ensure least-privilege compliance.

naftiko: "0.5"
info:
  label: "Azure Active Directory Access Review"
  description: "Reviews Azure Active Directory access assignments for Manulife applications to ensure least-privilege compliance."
  tags:
    - security
    - azure-active-directory
    - access-management
capability:
  exposes:
    - type: mcp
      namespace: access-review
      port: 8080
      tools:
        - name: review-access
          description: "Review Azure AD access assignments for an application."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "Azure AD application ID."
          call: "azuread.get-app-assignments"
          with:
            app_id: "{{app_id}}"
  consumes:
    - type: http
      namespace: azuread
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: app-assignments
          path: "/servicePrincipals/{{app_id}}/appRoleAssignedTo"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: get-app-assignments
              method: GET

Reviews Azure Active Directory access assignments for Manulife applications, identifying over-provisioned accounts for security remediation.

naftiko: "0.5"
info:
  label: "Azure Active Directory Access Reviewer"
  description: "Reviews Azure Active Directory access assignments for Manulife applications, identifying over-provisioned accounts for security remediation."
  tags:
    - security
    - azure-active-directory
    - access-management
capability:
  exposes:
    - type: mcp
      namespace: access-review
      port: 8080
      tools:
        - name: review-access
          description: "Review Azure AD access assignments for an application."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "Azure AD application ID."
          call: "azuread.get-app-assignments"
          with:
            app_id: "{{app_id}}"
  consumes:
    - type: http
      namespace: azuread
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: app-assignments
          path: "/servicePrincipals/{{app_id}}/appRoleAssignedTo"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: get-app-assignments
              method: GET

Monitors Azure Data Factory pipeline runs for data warehouse ETL processes, alerting on failures via Slack.

naftiko: "0.5"
info:
  label: "Azure Data Factory ETL Monitor"
  description: "Monitors Azure Data Factory pipeline runs for data warehouse ETL processes, alerting on failures via Slack."
  tags:
    - data-engineering
    - azure-data-factory
    - slack
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: etl-monitor
      port: 8080
      tools:
        - name: check-etl-status
          description: "Check Azure Data Factory pipeline run status and alert on failures."
          inputParameters:
            - name: pipeline_name
              in: body
              type: string
              description: "ADF pipeline name."
            - name: run_id
              in: body
              type: string
              description: "Pipeline run ID."
          steps:
            - name: get-run-status
              type: call
              call: "adf.get-pipeline-run"
              with:
                pipeline: "{{pipeline_name}}"
                run_id: "{{run_id}}"
            - name: alert-failure
              type: call
              call: "slack.post-message"
              with:
                channel: "data-engineering-alerts"
                text: "ADF pipeline {{pipeline_name}} run {{run_id}}: {{get-run-status.status}}. Duration: {{get-run-status.duration}}. Message: {{get-run-status.message}}."
  consumes:
    - type: http
      namespace: adf
      baseUri: "https://management.azure.com/subscriptions/{{subscription_id}}/resourceGroups/{{rg}}/providers/Microsoft.DataFactory/factories/{{factory}}"
      authentication:
        type: bearer
        token: "$secrets.azure_mgmt_token"
      resources:
        - name: pipeline-runs
          path: "/pipelineruns/{{run_id}}"
          inputParameters:
            - name: run_id
              in: path
          operations:
            - name: get-pipeline-run
              method: GET
    - 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

Triggers risk model execution in Azure Databricks for portfolio risk assessment and Value-at-Risk calculations.

naftiko: "0.5"
info:
  label: "Azure Databricks Risk Model Runner"
  description: "Triggers risk model execution in Azure Databricks for portfolio risk assessment and Value-at-Risk calculations."
  tags:
    - risk-management
    - azure-databricks
    - portfolio
capability:
  exposes:
    - type: mcp
      namespace: risk-modeling
      port: 8080
      tools:
        - name: run-risk-model
          description: "Execute a risk model in Azure Databricks for portfolio analysis."
          inputParameters:
            - name: model_name
              in: body
              type: string
              description: "Risk model name (VaR, CVaR, stress-test)."
            - name: portfolio_id
              in: body
              type: string
              description: "Portfolio identifier."
          call: "databricks.run-job"
          with:
            job_name: "{{model_name}}"
            parameters: "portfolio_id={{portfolio_id}}"
  consumes:
    - type: http
      namespace: databricks
      baseUri: "https://adb-manulife.azuredatabricks.net/api/2.1"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: jobs
          path: "/jobs/run-now"
          operations:
            - name: run-job
              method: POST

Monitors Azure DevOps build pipelines for Manulife digital insurance applications, checking build health and deployment status.

naftiko: "0.5"
info:
  label: "Azure DevOps Deployment Pipeline"
  description: "Monitors Azure DevOps build pipelines for Manulife digital insurance applications, checking build health and deployment status."
  tags:
    - devops
    - azure-devops
    - deployments
capability:
  exposes:
    - type: mcp
      namespace: deployment-monitor
      port: 8080
      tools:
        - name: get-build-status
          description: "Check latest build status for an Azure DevOps pipeline."
          inputParameters:
            - name: project
              in: body
              type: string
              description: "Azure DevOps project name."
            - name: pipeline_id
              in: body
              type: string
              description: "Pipeline definition ID."
          call: "azuredevops.get-latest-build"
          with:
            project: "{{project}}"
            definition_id: "{{pipeline_id}}"
  consumes:
    - type: http
      namespace: azuredevops
      baseUri: "https://dev.azure.com/manulife"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azuredevops_pat"
      resources:
        - name: builds
          path: "/{{project}}/_apis/build/builds?definitions={{definition_id}}&$top=1&api-version=7.0"
          inputParameters:
            - name: project
              in: path
            - name: definition_id
              in: query
          operations:
            - name: get-latest-build
              method: GET

Retrieves real-time market data from Bloomberg Enterprise Data for investment portfolio valuation and risk assessment.

naftiko: "0.5"
info:
  label: "Bloomberg Market Data Feed"
  description: "Retrieves real-time market data from Bloomberg Enterprise Data for investment portfolio valuation and risk assessment."
  tags:
    - market-data
    - bloomberg-enterprise-data
    - investments
capability:
  exposes:
    - type: mcp
      namespace: market-data
      port: 8080
      tools:
        - name: get-market-data
          description: "Retrieve market data for a security from Bloomberg."
          inputParameters:
            - name: security_id
              in: body
              type: string
              description: "Bloomberg security identifier."
            - name: fields
              in: body
              type: string
              description: "Comma-separated list of data fields (e.g., PX_LAST,PX_BID,PX_ASK)."
          call: "bloomberg.get-data"
          with:
            security: "{{security_id}}"
            fields: "{{fields}}"
  consumes:
    - type: http
      namespace: bloomberg
      baseUri: "https://api.bloomberg.com/eap/v1"
      authentication:
        type: bearer
        token: "$secrets.bloomberg_token"
      resources:
        - name: market-data
          path: "/data/{{security}}"
          inputParameters:
            - name: security
              in: path
            - name: fields
              in: query
          operations:
            - name: get-data
              method: GET

Archives completed client onboarding and policy documents from SharePoint to Box with retention policies for regulatory compliance.

naftiko: "0.5"
info:
  label: "Box Client Document Archive"
  description: "Archives completed client onboarding and policy documents from SharePoint to Box with retention policies for regulatory compliance."
  tags:
    - document-management
    - box
    - sharepoint
    - archiving
capability:
  exposes:
    - type: mcp
      namespace: doc-archive
      port: 8080
      tools:
        - name: archive-client-docs
          description: "Move client documents from SharePoint to Box long-term archive."
          inputParameters:
            - name: client_id
              in: body
              type: string
              description: "Client identifier."
            - name: document_category
              in: body
              type: string
              description: "Category (onboarding, policy, claims, kyc)."
          steps:
            - name: get-docs
              type: call
              call: "sharepoint.list-files"
              with:
                site_id: "client_docs"
                folder_path: "{{document_category}}/{{client_id}}"
            - name: upload-to-box
              type: call
              call: "box.upload-file"
              with:
                folder_id: "client_archive"
                file_name: "{{client_id}}_{{document_category}}_archive.zip"
                metadata: "client:{{client_id}},category:{{document_category}},retention:7years"
  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}}:/children"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: list-files
              method: GET
    - type: http
      namespace: box
      baseUri: "https://upload.box.com/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files/content"
          operations:
            - name: upload-file
              method: POST

Retrieves the current status of an insurance claim by claim number, including adjuster assignment, payout amount, and timeline.

naftiko: "0.5"
info:
  label: "Claims Status Lookup"
  description: "Retrieves the current status of an insurance claim by claim number, including adjuster assignment, payout amount, and timeline."
  tags:
    - claims
    - insurance
    - claims-management
capability:
  exposes:
    - type: mcp
      namespace: claims-status
      port: 8080
      tools:
        - name: get-claim-status
          description: "Look up a claim by claim number and return status, adjuster, and payout details."
          inputParameters:
            - name: claim_number
              in: body
              type: string
              description: "The insurance claim number."
          call: "claims-system.get-claim"
          with:
            claim_number: "{{claim_number}}"
  consumes:
    - type: http
      namespace: claims-system
      baseUri: "https://api.manulife.com/claims/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: claims
          path: "/claims/{{claim_number}}"
          inputParameters:
            - name: claim_number
              in: path
          operations:
            - name: get-claim
              method: GET

Monitors Cloudflare WAF events for Manulife web properties, detecting and reporting blocked threats.

naftiko: "0.5"
info:
  label: "Cloudflare Web Application Firewall Monitor"
  description: "Monitors Cloudflare WAF events for Manulife web properties, detecting and reporting blocked threats."
  tags:
    - security
    - cloudflare
    - web-application-firewall
capability:
  exposes:
    - type: mcp
      namespace: waf-monitor
      port: 8080
      tools:
        - name: get-waf-events
          description: "Retrieve WAF blocked events from Cloudflare."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "Cloudflare zone ID."
          call: "cloudflare.get-waf-events"
          with:
            zone_id: "{{zone_id}}"
  consumes:
    - type: http
      namespace: cloudflare
      baseUri: "https://api.cloudflare.com/client/v4"
      authentication:
        type: bearer
        token: "$secrets.cloudflare_token"
      resources:
        - name: waf-events
          path: "/zones/{{zone_id}}/firewall/events"
          inputParameters:
            - name: zone_id
              in: path
          operations:
            - name: get-waf-events
              method: GET

Creates and manages insurance policy knowledge articles in Confluence for advisors and customer service representatives.

naftiko: "0.5"
info:
  label: "Confluence Policy Knowledge Base"
  description: "Creates and manages insurance policy knowledge articles in Confluence for advisors and customer service representatives."
  tags:
    - knowledge-management
    - confluence
    - policy-documentation
capability:
  exposes:
    - type: mcp
      namespace: policy-knowledge
      port: 8080
      tools:
        - name: create-policy-article
          description: "Create a policy knowledge article in Confluence."
          inputParameters:
            - name: title
              in: body
              type: string
              description: "Article title."
            - name: content
              in: body
              type: string
              description: "Article content."
            - name: space_key
              in: body
              type: string
              description: "Confluence space key."
          call: "confluence.create-page"
          with:
            space_key: "{{space_key}}"
            title: "{{title}}"
            content: "{{content}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://manulife.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST

Monitors Manulife digital application health via Dynatrace, tracking response times, error rates, and user sessions.

naftiko: "0.5"
info:
  label: "Dynatrace Application Monitor"
  description: "Monitors Manulife digital application health via Dynatrace, tracking response times, error rates, and user sessions."
  tags:
    - monitoring
    - dynatrace
    - application-health
capability:
  exposes:
    - type: mcp
      namespace: app-monitoring
      port: 8080
      tools:
        - name: get-app-health
          description: "Retrieve application health metrics from Dynatrace."
          inputParameters:
            - name: application_id
              in: body
              type: string
              description: "Dynatrace application entity ID."
          call: "dynatrace.get-metrics"
          with:
            entity_id: "{{application_id}}"
  consumes:
    - type: http
      namespace: dynatrace
      baseUri: "https://manulife.live.dynatrace.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.dynatrace_token"
      resources:
        - name: metrics
          path: "/metrics/query"
          inputParameters:
            - name: entity_id
              in: query
          operations:
            - name: get-metrics
              method: GET

Checks F5 Networks load balancer health for Manulife web application and API gateway pools.

naftiko: "0.5"
info:
  label: "F5 Load Balancer Health Check"
  description: "Checks F5 Networks load balancer health for Manulife web application and API gateway pools."
  tags:
    - infrastructure
    - f5-networks
    - load-balancing
capability:
  exposes:
    - type: mcp
      namespace: lb-health
      port: 8080
      tools:
        - name: check-pool-health
          description: "Check F5 load balancer pool health."
          inputParameters:
            - name: pool_name
              in: body
              type: string
              description: "F5 pool name."
          call: "f5.get-pool-status"
          with:
            pool: "{{pool_name}}"
  consumes:
    - type: http
      namespace: f5
      baseUri: "https://manulife-f5.com/mgmt/tm"
      authentication:
        type: basic
        username: "$secrets.f5_user"
        password: "$secrets.f5_password"
      resources:
        - name: pools
          path: "/ltm/pool/{{pool}}/members"
          inputParameters:
            - name: pool
              in: path
          operations:
            - name: get-pool-status
              method: GET

When the fraud detection system flags a suspicious claim, creates a ServiceNow investigation ticket, freezes the claim in the claims system, and alerts the fraud team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Fraud Detection Alert Pipeline"
  description: "When the fraud detection system flags a suspicious claim, creates a ServiceNow investigation ticket, freezes the claim in the claims system, and alerts the fraud team via Microsoft Teams."
  tags:
    - fraud-detection
    - claims
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: fraud-alerts
      port: 8080
      tools:
        - name: process-fraud-alert
          description: "Process a fraud detection alert across investigation and notification systems."
          inputParameters:
            - name: claim_number
              in: body
              type: string
              description: "The flagged claim number."
            - name: fraud_score
              in: body
              type: number
              description: "Fraud probability score (0-100)."
            - name: indicators
              in: body
              type: string
              description: "Comma-separated fraud indicators."
          steps:
            - name: freeze-claim
              type: call
              call: "claims-system.update-status"
              with:
                claim_number: "{{claim_number}}"
                status: "under_investigation"
            - name: create-investigation
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Fraud investigation: Claim {{claim_number}}"
                category: "fraud"
                priority: "1"
                description: "Fraud score: {{fraud_score}}. Indicators: {{indicators}}."
            - name: alert-fraud-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "fraud-investigations"
                text: "Fraud alert: Claim {{claim_number}} flagged (score: {{fraud_score}}). Investigation ticket: {{create-investigation.number}}. Indicators: {{indicators}}."
  consumes:
    - type: http
      namespace: claims-system
      baseUri: "https://api.manulife.com/claims/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: claims
          path: "/claims/{{claim_number}}/status"
          inputParameters:
            - name: claim_number
              in: path
          operations:
            - name: update-status
              method: PATCH
    - type: http
      namespace: servicenow
      baseUri: "https://manulife.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/General/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Monitors GitHub Actions CI workflows for Manulife digital applications, notifying developers via Slack on build failures.

naftiko: "0.5"
info:
  label: "GitHub Actions CI Pipeline Monitor"
  description: "Monitors GitHub Actions CI workflows for Manulife digital applications, notifying developers via Slack on build failures."
  tags:
    - devops
    - github-actions
    - slack
    - ci-cd
capability:
  exposes:
    - type: mcp
      namespace: ci-monitor
      port: 8080
      tools:
        - name: monitor-ci
          description: "Check GitHub Actions workflow status and alert on failures."
          inputParameters:
            - name: repo_name
              in: body
              type: string
              description: "GitHub repository (org/repo)."
            - name: workflow_name
              in: body
              type: string
              description: "Workflow file name."
          steps:
            - name: get-runs
              type: call
              call: "github.get-workflow-runs"
              with:
                repo: "{{repo_name}}"
                workflow: "{{workflow_name}}"
            - name: notify-failure
              type: call
              call: "slack.post-message"
              with:
                channel: "ci-alerts"
                text: "CI {{get-runs.latest_run.conclusion}} for {{repo_name}}/{{workflow_name}}. Commit: {{get-runs.latest_run.head_sha}}."
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: workflow-runs
          path: "/repos/{{repo}}/actions/workflows/{{workflow}}/runs"
          inputParameters:
            - name: repo
              in: path
            - name: workflow
              in: path
          operations:
            - name: get-workflow-runs
              method: GET
    - 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

Retrieves digital channel performance from Google Analytics for Manulife.com, tracking customer acquisition and conversion metrics.

naftiko: "0.5"
info:
  label: "Google Analytics Digital Channel Tracker"
  description: "Retrieves digital channel performance from Google Analytics for Manulife.com, tracking customer acquisition and conversion metrics."
  tags:
    - marketing
    - google-analytics
    - digital-channels
capability:
  exposes:
    - type: mcp
      namespace: digital-analytics
      port: 8080
      tools:
        - name: get-channel-performance
          description: "Retrieve digital channel performance from Google Analytics."
          inputParameters:
            - name: start_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "End date in YYYY-MM-DD format."
          call: "ga.get-report"
          with:
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
  consumes:
    - type: http
      namespace: ga
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          operations:
            - name: get-report
              method: POST

Manages shared documents in Google Drive for financial advisor collaboration on client portfolios and financial plans.

naftiko: "0.5"
info:
  label: "Google Drive Advisor Document Sharing"
  description: "Manages shared documents in Google Drive for financial advisor collaboration on client portfolios and financial plans."
  tags:
    - collaboration
    - google-drive
    - advisor-tools
capability:
  exposes:
    - type: mcp
      namespace: advisor-docs
      port: 8080
      tools:
        - name: share-advisor-doc
          description: "Create and share a document in Google Drive for advisor collaboration."
          inputParameters:
            - name: title
              in: body
              type: string
              description: "Document title."
            - name: folder_id
              in: body
              type: string
              description: "Google Drive folder ID."
          call: "googledrive.create-file"
          with:
            title: "{{title}}"
            folder_id: "{{folder_id}}"
  consumes:
    - type: http
      namespace: googledrive
      baseUri: "https://www.googleapis.com/drive/v3"
      authentication:
        type: bearer
        token: "$secrets.google_drive_token"
      resources:
        - name: files
          path: "/files"
          operations:
            - name: create-file
              method: POST

Processes group benefits enrollment by creating employee records in the benefits system, updating Salesforce group account, and sending confirmation via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Group Benefits Enrollment Processor"
  description: "Processes group benefits enrollment by creating employee records in the benefits system, updating Salesforce group account, and sending confirmation via Microsoft Outlook."
  tags:
    - group-benefits
    - enrollment
    - salesforce
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: benefits-enrollment
      port: 8080
      tools:
        - name: process-enrollment
          description: "Process a group benefits enrollment for an employee."
          inputParameters:
            - name: group_policy_number
              in: body
              type: string
              description: "The group policy number."
            - name: employee_name
              in: body
              type: string
              description: "Employee name."
            - name: employee_email
              in: body
              type: string
              description: "Employee email."
            - name: plan_selection
              in: body
              type: string
              description: "Selected benefit plan."
          steps:
            - name: create-enrollment
              type: call
              call: "benefits-system.enroll"
              with:
                group_policy: "{{group_policy_number}}"
                employee: "{{employee_name}}"
                plan: "{{plan_selection}}"
            - name: update-group-account
              type: call
              call: "salesforce.update-group-account"
              with:
                policy_number: "{{group_policy_number}}"
                enrolled_count_delta: "1"
            - name: send-confirmation
              type: call
              call: "outlook.send-email"
              with:
                to: "{{employee_email}}"
                subject: "Benefits enrollment confirmation"
                body: "Welcome {{employee_name}}! You have been enrolled in {{plan_selection}} under group policy {{group_policy_number}}. Your member ID: {{create-enrollment.member_id}}."
  consumes:
    - type: http
      namespace: benefits-system
      baseUri: "https://api.manulife.com/benefits/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: enrollments
          path: "/enrollments"
          operations:
            - name: enroll
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://manulife.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: group-accounts
          path: "/sobjects/Group_Policy__c"
          operations:
            - name: update-group-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

Creates and tracks insurance product marketing campaigns in HubSpot, targeting segmented audiences for life, health, and wealth products.

naftiko: "0.5"
info:
  label: "HubSpot Insurance Marketing Campaign"
  description: "Creates and tracks insurance product marketing campaigns in HubSpot, targeting segmented audiences for life, health, and wealth products."
  tags:
    - marketing
    - hubspot
    - campaigns
capability:
  exposes:
    - type: mcp
      namespace: marketing-campaigns
      port: 8080
      tools:
        - name: get-campaign-metrics
          description: "Retrieve campaign performance metrics from HubSpot."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "HubSpot campaign ID."
          call: "hubspot.get-campaign"
          with:
            campaign_id: "{{campaign_id}}"
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: campaigns
          path: "/marketing/v3/campaigns/{{campaign_id}}"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign
              method: GET

Runs Informatica data quality jobs on client master data to cleanse and standardize records across insurance and wealth systems.

naftiko: "0.5"
info:
  label: "Informatica Data Quality Pipeline"
  description: "Runs Informatica data quality jobs on client master data to cleanse and standardize records across insurance and wealth systems."
  tags:
    - data-quality
    - informatica
    - master-data
capability:
  exposes:
    - type: mcp
      namespace: data-quality
      port: 8080
      tools:
        - name: run-dq-pipeline
          description: "Execute an Informatica data quality pipeline on client data."
          inputParameters:
            - name: job_name
              in: body
              type: string
              description: "Informatica DQ job name."
            - name: data_domain
              in: body
              type: string
              description: "Data domain (client, policy, claims)."
          call: "informatica.run-job"
          with:
            job_name: "{{job_name}}"
            domain: "{{data_domain}}"
  consumes:
    - type: http
      namespace: informatica
      baseUri: "https://manulife-iics.informatica.com/saas/api/v2"
      authentication:
        type: bearer
        token: "$secrets.informatica_token"
      resources:
        - name: jobs
          path: "/job"
          operations:
            - name: run-job
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 1"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-1
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-1"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "salesforce.create-account"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-1
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://manulife.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: create-account
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 10"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-10
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-10"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "sharepoint.upload-document"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-10
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://manulife.sharepoint.com/_api/v2.0"
      authentication:
        type: bearer
        token: "$secrets.sharepoint_token"
      resources:
        - name: documents
          path: "/documents"
          operations:
            - name: upload-document
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 11"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-11
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-11"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "hubspot.send-email"
              with:
                to: "{{process.email}}"
                subject: "Workflow 11 Complete"
                body: "{{process.summary}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-11
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/contacts"
          operations:
            - name: send-email
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 12"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-12
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-12"
              with:
                identifier: "{{identifier}}"
            - name: push
              type: call
              call: "datadog.submit-metrics"
              with:
                metric_name: "insurance.workflow_12"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-12
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_token"
      resources:
        - name: metrics
          path: "/metrics"
          operations:
            - name: submit-metrics
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 13"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-13
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-13"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "salesforce.create-account"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-13
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://manulife.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: create-account
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 14"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-14
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-14"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "servicenow.create-incident"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-14
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://manulife.service-now.com/api/now/v1"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 15"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - slack
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-15
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-15"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#insurance"
                text: "Completed workflow 15: {{process.summary}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-15
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: post-message
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 16"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-16
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-16"
              with:
                identifier: "{{identifier}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space: "INSURA"
                title: "Report 16"
                content: "{{process.report}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-16
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://manulife.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 17"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-17
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-17"
              with:
                identifier: "{{identifier}}"
            - name: refresh
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "workflow_17"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-17
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets"
          operations:
            - name: refresh-dataset
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 18"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - jira
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-18
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-18"
              with:
                identifier: "{{identifier}}"
            - name: create-ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "INSU"
                summary: "Task from workflow 18"
                description: "{{process.details}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-18
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://manulife.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issues"
          operations:
            - name: create-issue
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 19"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - teams
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-19
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-19"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "teams.send-message"
              with:
                channel_id: "insurance"
                message: "Workflow 19 complete: {{process.summary}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-19
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: send-message
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 2"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-2
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-2"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "servicenow.create-incident"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-2
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://manulife.service-now.com/api/now/v1"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 20"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-20
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-20"
              with:
                identifier: "{{identifier}}"
            - name: refresh
              type: call
              call: "tableau.publish-datasource"
              with:
                dataset_id: "workflow_20"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-20
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://manulife-tableau.online.tableau.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: datasources
          path: "/datasources"
          operations:
            - name: publish-datasource
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 21"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - box
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-21
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-21"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "box.upload-file"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-21
              method: POST
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files"
          operations:
            - name: upload-file
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 22"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-22
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-22"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "sharepoint.upload-document"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-22
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://manulife.sharepoint.com/_api/v2.0"
      authentication:
        type: bearer
        token: "$secrets.sharepoint_token"
      resources:
        - name: documents
          path: "/documents"
          operations:
            - name: upload-document
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 23"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-23
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-23"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "hubspot.send-email"
              with:
                to: "{{process.email}}"
                subject: "Workflow 23 Complete"
                body: "{{process.summary}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-23
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/contacts"
          operations:
            - name: send-email
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 24"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-24
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-24"
              with:
                identifier: "{{identifier}}"
            - name: push
              type: call
              call: "datadog.submit-metrics"
              with:
                metric_name: "insurance.workflow_24"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-24
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_token"
      resources:
        - name: metrics
          path: "/metrics"
          operations:
            - name: submit-metrics
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 25"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-25
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-25"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "salesforce.create-account"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-25
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://manulife.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/accounts"
          operations:
            - name: create-account
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 26"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-26
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-26"
              with:
                identifier: "{{identifier}}"
            - name: create
              type: call
              call: "servicenow.create-incident"
              with:
                data: "{{process.result}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-26
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://manulife.service-now.com/api/now/v1"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 27"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - slack
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-27
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-27"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#insurance"
                text: "Completed workflow 27: {{process.summary}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-27
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: post-message
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 28"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-28
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-28"
              with:
                identifier: "{{identifier}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space: "INSURA"
                title: "Report 28"
                content: "{{process.report}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-28
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://manulife.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 29"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-29
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-29"
              with:
                identifier: "{{identifier}}"
            - name: refresh
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "workflow_29"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-29
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets"
          operations:
            - name: refresh-dataset
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 3"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - slack
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-3
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-3"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#insurance"
                text: "Completed workflow 3: {{process.summary}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-3
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: post-message
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 30"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - jira
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-30
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-30"
              with:
                identifier: "{{identifier}}"
            - name: create-ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "INSU"
                summary: "Task from workflow 30"
                description: "{{process.details}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-30
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://manulife.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issues"
          operations:
            - name: create-issue
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 31"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - teams
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-31
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-31"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "teams.send-message"
              with:
                channel_id: "insurance"
                message: "Workflow 31 complete: {{process.summary}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-31
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: send-message
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 32"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-32
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-32"
              with:
                identifier: "{{identifier}}"
            - name: refresh
              type: call
              call: "tableau.publish-datasource"
              with:
                dataset_id: "workflow_32"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-32
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://manulife-tableau.online.tableau.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: datasources
          path: "/datasources"
          operations:
            - name: publish-datasource
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 33"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - box
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-33
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-33"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "box.upload-file"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-33
              method: POST
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files"
          operations:
            - name: upload-file
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 34"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-34
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-34"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "sharepoint.upload-document"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-34
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://manulife.sharepoint.com/_api/v2.0"
      authentication:
        type: bearer
        token: "$secrets.sharepoint_token"
      resources:
        - name: documents
          path: "/documents"
          operations:
            - name: upload-document
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 35"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-35
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-35"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "hubspot.send-email"
              with:
                to: "{{process.email}}"
                subject: "Workflow 35 Complete"
                body: "{{process.summary}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-35
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/contacts"
          operations:
            - name: send-email
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 4"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-4
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-4"
              with:
                identifier: "{{identifier}}"
            - name: publish
              type: call
              call: "confluence.create-page"
              with:
                space: "INSURA"
                title: "Report 4"
                content: "{{process.report}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-4
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://manulife.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 5"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-5
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-5"
              with:
                identifier: "{{identifier}}"
            - name: refresh
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "workflow_5"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-5
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets"
          operations:
            - name: refresh-dataset
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 6"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - jira
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-6
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-6"
              with:
                identifier: "{{identifier}}"
            - name: create-ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "INSU"
                summary: "Task from workflow 6"
                description: "{{process.details}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-6
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://manulife.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issues"
          operations:
            - name: create-issue
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 7"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - teams
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-7
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-7"
              with:
                identifier: "{{identifier}}"
            - name: notify
              type: call
              call: "teams.send-message"
              with:
                channel_id: "insurance"
                message: "Workflow 7 complete: {{process.summary}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-7
              method: POST
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.teams_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: send-message
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 8"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - tableau
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-8
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-8"
              with:
                identifier: "{{identifier}}"
            - name: refresh
              type: call
              call: "tableau.publish-datasource"
              with:
                dataset_id: "workflow_8"
                data: "{{process.metrics}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-8
              method: POST
    - type: http
      namespace: tableau
      baseUri: "https://manulife-tableau.online.tableau.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: datasources
          path: "/datasources"
          operations:
            - name: publish-datasource
              method: POST

Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife.

naftiko: "0.5"
info:
  label: "Manulife Workflow 9"
  description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
  tags:
    - insurance
    - operations
    - box
capability:
  exposes:
    - type: mcp
      namespace: insurance
      port: 8080
      tools:
        - name: manulife-workflow-9
          description: "Orchestrates insurance operations including data retrieval, processing, and automated notification for Manulife."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Primary identifier for this workflow"
          steps:
            - name: process
              type: call
              call: "manulife-ops.run-workflow-9"
              with:
                identifier: "{{identifier}}"
            - name: upload
              type: call
              call: "box.upload-file"
              with:
                content: "{{process.document}}"
  consumes:
    - type: http
      namespace: manulife-ops
      baseUri: "https://api.manulife.com/operations/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: operations
          path: "/operations"
          operations:
            - name: run-workflow-9
              method: POST
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files"
          operations:
            - name: upload-file
              method: POST

Retrieves operational data for Manulife insurance workflows.

naftiko: "0.5"
info:
  label: "Manulife Data Lookup 1"
  description: "Retrieves operational data for Manulife insurance workflows."
  tags:
    - insurance
    - operations
capability:
  exposes:
    - type: mcp
      namespace: manulife-data
      port: 8080
      tools:
        - name: get-data-1
          description: "Retrieves operational data for Manulife insurance workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "manulife-data.get-data-1"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: manulife-data
      baseUri: "https://api.manulife.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: data-1
          path: "/data-1/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-1
              method: GET

Retrieves operational data for Manulife insurance workflows.

naftiko: "0.5"
info:
  label: "Manulife Data Lookup 10"
  description: "Retrieves operational data for Manulife insurance workflows."
  tags:
    - insurance
    - operations
capability:
  exposes:
    - type: mcp
      namespace: manulife-data
      port: 8080
      tools:
        - name: get-data-10
          description: "Retrieves operational data for Manulife insurance workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "manulife-data.get-data-10"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: manulife-data
      baseUri: "https://api.manulife.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: data-10
          path: "/data-10/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-10
              method: GET

Retrieves operational data for Manulife insurance workflows.

naftiko: "0.5"
info:
  label: "Manulife Data Lookup 11"
  description: "Retrieves operational data for Manulife insurance workflows."
  tags:
    - insurance
    - operations
capability:
  exposes:
    - type: mcp
      namespace: manulife-data
      port: 8080
      tools:
        - name: get-data-11
          description: "Retrieves operational data for Manulife insurance workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "manulife-data.get-data-11"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: manulife-data
      baseUri: "https://api.manulife.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: data-11
          path: "/data-11/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-11
              method: GET

Retrieves operational data for Manulife insurance workflows.

naftiko: "0.5"
info:
  label: "Manulife Data Lookup 12"
  description: "Retrieves operational data for Manulife insurance workflows."
  tags:
    - insurance
    - operations
capability:
  exposes:
    - type: mcp
      namespace: manulife-data
      port: 8080
      tools:
        - name: get-data-12
          description: "Retrieves operational data for Manulife insurance workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "manulife-data.get-data-12"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: manulife-data
      baseUri: "https://api.manulife.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: data-12
          path: "/data-12/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-12
              method: GET

Retrieves operational data for Manulife insurance workflows.

naftiko: "0.5"
info:
  label: "Manulife Data Lookup 13"
  description: "Retrieves operational data for Manulife insurance workflows."
  tags:
    - insurance
    - operations
capability:
  exposes:
    - type: mcp
      namespace: manulife-data
      port: 8080
      tools:
        - name: get-data-13
          description: "Retrieves operational data for Manulife insurance workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "manulife-data.get-data-13"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: manulife-data
      baseUri: "https://api.manulife.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: data-13
          path: "/data-13/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-13
              method: GET

Retrieves operational data for Manulife insurance workflows.

naftiko: "0.5"
info:
  label: "Manulife Data Lookup 14"
  description: "Retrieves operational data for Manulife insurance workflows."
  tags:
    - insurance
    - operations
capability:
  exposes:
    - type: mcp
      namespace: manulife-data
      port: 8080
      tools:
        - name: get-data-14
          description: "Retrieves operational data for Manulife insurance workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "manulife-data.get-data-14"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: manulife-data
      baseUri: "https://api.manulife.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: data-14
          path: "/data-14/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-14
              method: GET

Retrieves operational data for Manulife insurance workflows.

naftiko: "0.5"
info:
  label: "Manulife Data Lookup 15"
  description: "Retrieves operational data for Manulife insurance workflows."
  tags:
    - insurance
    - operations
capability:
  exposes:
    - type: mcp
      namespace: manulife-data
      port: 8080
      tools:
        - name: get-data-15
          description: "Retrieves operational data for Manulife insurance workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "manulife-data.get-data-15"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: manulife-data
      baseUri: "https://api.manulife.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: data-15
          path: "/data-15/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-15
              method: GET

Retrieves operational data for Manulife insurance workflows.

naftiko: "0.5"
info:
  label: "Manulife Data Lookup 2"
  description: "Retrieves operational data for Manulife insurance workflows."
  tags:
    - insurance
    - operations
capability:
  exposes:
    - type: mcp
      namespace: manulife-data
      port: 8080
      tools:
        - name: get-data-2
          description: "Retrieves operational data for Manulife insurance workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "manulife-data.get-data-2"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: manulife-data
      baseUri: "https://api.manulife.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: data-2
          path: "/data-2/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-2
              method: GET

Retrieves operational data for Manulife insurance workflows.

naftiko: "0.5"
info:
  label: "Manulife Data Lookup 3"
  description: "Retrieves operational data for Manulife insurance workflows."
  tags:
    - insurance
    - operations
capability:
  exposes:
    - type: mcp
      namespace: manulife-data
      port: 8080
      tools:
        - name: get-data-3
          description: "Retrieves operational data for Manulife insurance workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "manulife-data.get-data-3"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: manulife-data
      baseUri: "https://api.manulife.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: data-3
          path: "/data-3/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-3
              method: GET

Retrieves operational data for Manulife insurance workflows.

naftiko: "0.5"
info:
  label: "Manulife Data Lookup 4"
  description: "Retrieves operational data for Manulife insurance workflows."
  tags:
    - insurance
    - operations
capability:
  exposes:
    - type: mcp
      namespace: manulife-data
      port: 8080
      tools:
        - name: get-data-4
          description: "Retrieves operational data for Manulife insurance workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "manulife-data.get-data-4"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: manulife-data
      baseUri: "https://api.manulife.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: data-4
          path: "/data-4/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-4
              method: GET

Retrieves operational data for Manulife insurance workflows.

naftiko: "0.5"
info:
  label: "Manulife Data Lookup 5"
  description: "Retrieves operational data for Manulife insurance workflows."
  tags:
    - insurance
    - operations
capability:
  exposes:
    - type: mcp
      namespace: manulife-data
      port: 8080
      tools:
        - name: get-data-5
          description: "Retrieves operational data for Manulife insurance workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "manulife-data.get-data-5"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: manulife-data
      baseUri: "https://api.manulife.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: data-5
          path: "/data-5/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-5
              method: GET

Retrieves operational data for Manulife insurance workflows.

naftiko: "0.5"
info:
  label: "Manulife Data Lookup 6"
  description: "Retrieves operational data for Manulife insurance workflows."
  tags:
    - insurance
    - operations
capability:
  exposes:
    - type: mcp
      namespace: manulife-data
      port: 8080
      tools:
        - name: get-data-6
          description: "Retrieves operational data for Manulife insurance workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "manulife-data.get-data-6"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: manulife-data
      baseUri: "https://api.manulife.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: data-6
          path: "/data-6/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-6
              method: GET

Retrieves operational data for Manulife insurance workflows.

naftiko: "0.5"
info:
  label: "Manulife Data Lookup 7"
  description: "Retrieves operational data for Manulife insurance workflows."
  tags:
    - insurance
    - operations
capability:
  exposes:
    - type: mcp
      namespace: manulife-data
      port: 8080
      tools:
        - name: get-data-7
          description: "Retrieves operational data for Manulife insurance workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "manulife-data.get-data-7"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: manulife-data
      baseUri: "https://api.manulife.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: data-7
          path: "/data-7/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-7
              method: GET

Retrieves operational data for Manulife insurance workflows.

naftiko: "0.5"
info:
  label: "Manulife Data Lookup 8"
  description: "Retrieves operational data for Manulife insurance workflows."
  tags:
    - insurance
    - operations
capability:
  exposes:
    - type: mcp
      namespace: manulife-data
      port: 8080
      tools:
        - name: get-data-8
          description: "Retrieves operational data for Manulife insurance workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "manulife-data.get-data-8"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: manulife-data
      baseUri: "https://api.manulife.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: data-8
          path: "/data-8/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-8
              method: GET

Retrieves operational data for Manulife insurance workflows.

naftiko: "0.5"
info:
  label: "Manulife Data Lookup 9"
  description: "Retrieves operational data for Manulife insurance workflows."
  tags:
    - insurance
    - operations
capability:
  exposes:
    - type: mcp
      namespace: manulife-data
      port: 8080
      tools:
        - name: get-data-9
          description: "Retrieves operational data for Manulife insurance workflows."
          inputParameters:
            - name: identifier
              in: body
              type: string
              description: "Resource identifier"
          call: "manulife-data.get-data-9"
          with:
            identifier: "{{identifier}}"
  consumes:
    - type: http
      namespace: manulife-data
      baseUri: "https://api.manulife.com/data/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: data-9
          path: "/data-9/{{identifier}}"
          inputParameters:
            - name: identifier
              in: path
          operations:
            - name: get-data-9
              method: GET

Pulls fund performance data from Bloomberg, aggregates returns, and publishes a performance report to SharePoint for wealth advisors.

naftiko: "0.5"
info:
  label: "Investment Fund Performance Reporter"
  description: "Pulls fund performance data from Bloomberg, aggregates returns, and publishes a performance report to SharePoint for wealth advisors."
  tags:
    - wealth-management
    - bloomberg-enterprise-data
    - sharepoint
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: fund-performance
      port: 8080
      tools:
        - name: generate-fund-report
          description: "Generate a fund performance report from Bloomberg data and publish to SharePoint."
          inputParameters:
            - name: fund_id
              in: body
              type: string
              description: "The fund Bloomberg identifier."
            - name: period
              in: body
              type: string
              description: "Reporting period (e.g., 2026-Q1)."
          steps:
            - name: get-performance
              type: call
              call: "bloomberg.get-fund-data"
              with:
                fund_id: "{{fund_id}}"
                period: "{{period}}"
            - name: publish-report
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "wealth_reports"
                folder_path: "FundPerformance/{{fund_id}}/{{period}}"
                content: "Return: {{get-performance.total_return}}. Benchmark: {{get-performance.benchmark_return}}. Alpha: {{get-performance.alpha}}."
  consumes:
    - type: http
      namespace: bloomberg
      baseUri: "https://api.bloomberg.com/eap/v1"
      authentication:
        type: bearer
        token: "$secrets.bloomberg_token"
      resources:
        - name: fund-data
          path: "/catalogs/funds/{{fund_id}}/performance"
          inputParameters:
            - name: fund_id
              in: path
            - name: period
              in: query
          operations:
            - name: get-fund-data
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: upload-file
              method: PUT

Monitors Jira project boards for regulatory compliance initiatives, tracking audit findings, remediation tasks, and deadlines.

naftiko: "0.5"
info:
  label: "Jira Compliance Project Tracker"
  description: "Monitors Jira project boards for regulatory compliance initiatives, tracking audit findings, remediation tasks, and deadlines."
  tags:
    - compliance
    - jira
    - project-management
capability:
  exposes:
    - type: mcp
      namespace: compliance-projects
      port: 8080
      tools:
        - name: get-compliance-issues
          description: "Retrieve open compliance issues from Jira."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "Jira project key."
          call: "jira.search-issues"
          with:
            project: "{{project_key}}"
            status: "open"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://manulife.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: search
          path: "/search"
          operations:
            - name: search-issues
              method: POST

Processes Know Your Customer documents by validating identity through the Manulife verification service, storing documents in SharePoint, and updating the Salesforce client record.

naftiko: "0.5"
info:
  label: "KYC Document Verification Pipeline"
  description: "Processes Know Your Customer documents by validating identity through the Manulife verification service, storing documents in SharePoint, and updating the Salesforce client record."
  tags:
    - kyc
    - compliance
    - sharepoint
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: kyc-verification
      port: 8080
      tools:
        - name: verify-kyc
          description: "Process KYC document verification for a client."
          inputParameters:
            - name: client_id
              in: body
              type: string
              description: "The client identifier."
            - name: document_type
              in: body
              type: string
              description: "Document type (passport, drivers-license, utility-bill)."
            - name: document_url
              in: body
              type: string
              description: "URL to the uploaded document."
          steps:
            - name: verify-identity
              type: call
              call: "verification-service.verify"
              with:
                client_id: "{{client_id}}"
                doc_type: "{{document_type}}"
                doc_url: "{{document_url}}"
            - name: store-document
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "kyc_documents"
                folder_path: "Clients/{{client_id}}/{{document_type}}"
                content: "{{document_url}}"
            - name: update-client
              type: call
              call: "salesforce.update-account"
              with:
                account_id: "{{client_id}}"
                kyc_status: "{{verify-identity.status}}"
                kyc_date: "{{verify-identity.verification_date}}"
  consumes:
    - type: http
      namespace: verification-service
      baseUri: "https://api.manulife.com/kyc/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: verifications
          path: "/verify"
          operations:
            - name: verify
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: upload-file
              method: PUT
    - type: http
      namespace: salesforce
      baseUri: "https://manulife.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

Posts financial advisor positions to LinkedIn, sourcing candidates from Workday requisitions for the wealth management division.

naftiko: "0.5"
info:
  label: "LinkedIn Financial Advisor Recruiting"
  description: "Posts financial advisor positions to LinkedIn, sourcing candidates from Workday requisitions for the wealth management division."
  tags:
    - recruiting
    - linkedin
    - workday
capability:
  exposes:
    - type: mcp
      namespace: advisor-recruiting
      port: 8080
      tools:
        - name: publish-advisor-job
          description: "Pull a Workday requisition and publish to LinkedIn."
          inputParameters:
            - name: requisition_id
              in: body
              type: string
              description: "Workday job requisition ID."
          steps:
            - name: get-req
              type: call
              call: "workday.get-requisition"
              with:
                req_id: "{{requisition_id}}"
            - name: post-job
              type: call
              call: "linkedin.create-job-post"
              with:
                title: "{{get-req.title}}"
                description: "{{get-req.description}}"
                location: "{{get-req.location}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: requisitions
          path: "/recruiting/requisitions/{{req_id}}"
          inputParameters:
            - name: req_id
              in: path
          operations:
            - name: get-requisition
              method: GET
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: job-posts
          path: "/jobPosts"
          operations:
            - name: create-job-post
              method: POST

Sends targeted client newsletters via MailChimp for wealth management updates, market insights, and product announcements.

naftiko: "0.5"
info:
  label: "MailChimp Client Newsletter Manager"
  description: "Sends targeted client newsletters via MailChimp for wealth management updates, market insights, and product announcements."
  tags:
    - marketing
    - mailchimp
    - client-communications
capability:
  exposes:
    - type: mcp
      namespace: client-newsletters
      port: 8080
      tools:
        - name: send-client-newsletter
          description: "Send a MailChimp newsletter to client segments."
          inputParameters:
            - name: segment_name
              in: body
              type: string
              description: "Client segment name."
            - name: subject_line
              in: body
              type: string
              description: "Email subject."
          steps:
            - name: get-segment
              type: call
              call: "salesforce.get-segment"
              with:
                segment: "{{segment_name}}"
            - name: send-campaign
              type: call
              call: "mailchimp.send-campaign"
              with:
                subject: "{{subject_line}}"
                recipients: "{{get-segment.emails}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://manulife.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/sobjects/Contact"
          operations:
            - name: get-segment
              method: GET
    - type: http
      namespace: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: basic
        username: "anystring"
        password: "$secrets.mailchimp_api_key"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: send-campaign
              method: POST

Generates Microsoft Excel actuarial reports with loss ratio, reserving, and experience data from SAP HANA for quarterly board presentations.

naftiko: "0.5"
info:
  label: "Microsoft Excel Actuarial Report Builder"
  description: "Generates Microsoft Excel actuarial reports with loss ratio, reserving, and experience data from SAP HANA for quarterly board presentations."
  tags:
    - actuarial
    - microsoft-excel
    - sap-hana
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: actuarial-reports
      port: 8080
      tools:
        - name: build-actuarial-report
          description: "Generate an actuarial Excel report from SAP HANA data and email to stakeholders."
          inputParameters:
            - name: report_type
              in: body
              type: string
              description: "Report type (loss-ratio, ibnr, experience-study)."
            - name: period
              in: body
              type: string
              description: "Reporting period."
            - name: recipient_email
              in: body
              type: string
              description: "Recipient email."
          steps:
            - name: get-data
              type: call
              call: "sap-hana.run-query"
              with:
                report_type: "{{report_type}}"
                period: "{{period}}"
            - name: send-report
              type: call
              call: "outlook.send-email"
              with:
                to: "{{recipient_email}}"
                subject: "Actuarial Report: {{report_type}} - {{period}}"
                body: "Attached actuarial {{report_type}} report for {{period}}. Summary: {{get-data.summary}}."
  consumes:
    - type: http
      namespace: sap-hana
      baseUri: "https://manulife-hana.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_hana_user"
        password: "$secrets.sap_hana_password"
      resources:
        - name: reports
          path: "/ACTUARIAL_SRV/{{report_type}}"
          inputParameters:
            - name: report_type
              in: path
          operations:
            - name: run-query
              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

Creates and tracks regulatory compliance tasks in Microsoft Planner for audit preparation, regulatory filings, and policy reviews.

naftiko: "0.5"
info:
  label: "Microsoft Planner Compliance Task Tracker"
  description: "Creates and tracks regulatory compliance tasks in Microsoft Planner for audit preparation, regulatory filings, and policy reviews."
  tags:
    - compliance
    - microsoft-planner
    - task-management
capability:
  exposes:
    - type: mcp
      namespace: compliance-tasks
      port: 8080
      tools:
        - name: create-compliance-task
          description: "Create a compliance tracking task in Microsoft Planner."
          inputParameters:
            - name: task_title
              in: body
              type: string
              description: "Task title."
            - name: due_date
              in: body
              type: string
              description: "Due date in YYYY-MM-DD format."
            - name: plan_id
              in: body
              type: string
              description: "Planner plan ID."
            - name: priority
              in: body
              type: string
              description: "Priority (urgent, important, medium, low)."
          call: "planner.create-task"
          with:
            plan_id: "{{plan_id}}"
            title: "{{task_title}}"
            due_date: "{{due_date}}"
            priority: "{{priority}}"
  consumes:
    - type: http
      namespace: planner
      baseUri: "https://graph.microsoft.com/v1.0/planner"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: tasks
          path: "/tasks"
          operations:
            - name: create-task
              method: POST

Triggers Microsoft Power Automate flows for automated claims processing, routing claims through approval chains based on value thresholds.

naftiko: "0.5"
info:
  label: "Microsoft Power Automate Claims Workflow"
  description: "Triggers Microsoft Power Automate flows for automated claims processing, routing claims through approval chains based on value thresholds."
  tags:
    - claims
    - microsoft-power-automate
    - automation
capability:
  exposes:
    - type: mcp
      namespace: claims-automation
      port: 8080
      tools:
        - name: trigger-claims-flow
          description: "Trigger a Power Automate flow for claims processing."
          inputParameters:
            - name: claim_number
              in: body
              type: string
              description: "The claim number."
            - name: claim_value
              in: body
              type: number
              description: "Claim value amount."
          call: "powerautomate.trigger-flow"
          with:
            claim_number: "{{claim_number}}"
            value: "{{claim_value}}"
  consumes:
    - type: http
      namespace: powerautomate
      baseUri: "https://prod-123.westus.logic.azure.com/workflows"
      authentication:
        type: apiKey
        key: "$secrets.power_automate_key"
      resources:
        - name: flows
          path: "/claims-approval/triggers/manual/paths/invoke"
          operations:
            - name: trigger-flow
              method: POST

Posts a daily claims summary to Microsoft Teams with open claims count, average processing time, and pending approvals.

naftiko: "0.5"
info:
  label: "Microsoft Teams Daily Claims Summary"
  description: "Posts a daily claims summary to Microsoft Teams with open claims count, average processing time, and pending approvals."
  tags:
    - claims
    - microsoft-teams
    - daily-reporting
capability:
  exposes:
    - type: mcp
      namespace: claims-summary
      port: 8080
      tools:
        - name: post-daily-summary
          description: "Generate and post daily claims summary to Microsoft Teams."
          inputParameters:
            - name: team_channel_id
              in: body
              type: string
              description: "Microsoft Teams channel ID."
          steps:
            - name: get-claims-stats
              type: call
              call: "claims-system.get-daily-stats"
              with:
                date: "today"
            - name: post-summary
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "{{team_channel_id}}"
                text: "Daily Claims Summary: {{get-claims-stats.open_claims}} open | {{get-claims-stats.avg_processing_days}} avg days | {{get-claims-stats.pending_approvals}} pending approvals | {{get-claims-stats.total_paid}} paid today"
  consumes:
    - type: http
      namespace: claims-system
      baseUri: "https://api.manulife.com/claims/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: stats
          path: "/stats/daily"
          operations:
            - name: get-daily-stats
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/General/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

When a new claim is submitted, creates the claim record, opens a ServiceNow tracking ticket, assigns an adjuster via Workday lookup, and notifies the claimant via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "New Claims Intake Orchestrator"
  description: "When a new claim is submitted, creates the claim record, opens a ServiceNow tracking ticket, assigns an adjuster via Workday lookup, and notifies the claimant via Microsoft Outlook."
  tags:
    - claims
    - intake
    - servicenow
    - workday
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: claims-intake
      port: 8080
      tools:
        - name: process-new-claim
          description: "Process a new insurance claim through intake, assignment, and notification."
          inputParameters:
            - name: policy_number
              in: body
              type: string
              description: "The policy number associated with the claim."
            - name: claim_type
              in: body
              type: string
              description: "Type of claim (life, health, disability, dental)."
            - name: description
              in: body
              type: string
              description: "Description of the claim."
            - name: claimant_email
              in: body
              type: string
              description: "Claimant email address."
          steps:
            - name: create-claim
              type: call
              call: "claims-system.create-claim"
              with:
                policy_number: "{{policy_number}}"
                claim_type: "{{claim_type}}"
                description: "{{description}}"
            - name: create-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New claim: {{create-claim.claim_number}} - {{claim_type}}"
                category: "claims"
                description: "Policy: {{policy_number}}. Claim: {{create-claim.claim_number}}. Type: {{claim_type}}."
            - name: get-adjuster
              type: call
              call: "workday.get-available-adjuster"
              with:
                claim_type: "{{claim_type}}"
            - name: notify-claimant
              type: call
              call: "outlook.send-email"
              with:
                to: "{{claimant_email}}"
                subject: "Claim received: {{create-claim.claim_number}}"
                body: "Your {{claim_type}} claim has been received and assigned to {{get-adjuster.full_name}}. Reference: {{create-claim.claim_number}}."
  consumes:
    - type: http
      namespace: claims-system
      baseUri: "https://api.manulife.com/claims/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: claims
          path: "/claims"
          operations:
            - name: create-claim
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://manulife.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: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: adjusters
          path: "/workers"
          operations:
            - name: get-available-adjuster
              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

Monitors Manulife infrastructure health via New Relic, tracking server CPU, memory, and disk utilization.

naftiko: "0.5"
info:
  label: "New Relic Infrastructure Monitor"
  description: "Monitors Manulife infrastructure health via New Relic, tracking server CPU, memory, and disk utilization."
  tags:
    - monitoring
    - new-relic
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: infra-monitor
      port: 8080
      tools:
        - name: get-infra-health
          description: "Retrieve infrastructure health metrics from New Relic."
          inputParameters:
            - name: host_name
              in: body
              type: string
              description: "The host name to monitor."
          call: "newrelic.get-host-metrics"
          with:
            host: "{{host_name}}"
  consumes:
    - type: http
      namespace: newrelic
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: apiKey
        key: "$secrets.newrelic_api_key"
      resources:
        - name: hosts
          path: "/servers.json"
          inputParameters:
            - name: host
              in: query
          operations:
            - name: get-host-metrics
              method: GET

Queries Oracle E-Business Suite for general ledger balances and journal entries for financial reconciliation and reporting.

naftiko: "0.5"
info:
  label: "Oracle E-Business Suite General Ledger Query"
  description: "Queries Oracle E-Business Suite for general ledger balances and journal entries for financial reconciliation and reporting."
  tags:
    - finance
    - oracle-e-business-suite
    - general-ledger
capability:
  exposes:
    - type: mcp
      namespace: gl-query
      port: 8080
      tools:
        - name: get-gl-balance
          description: "Query Oracle EBS for general ledger balance by account and period."
          inputParameters:
            - name: account_code
              in: body
              type: string
              description: "GL account code."
            - name: period
              in: body
              type: string
              description: "Accounting period."
          call: "oracle-ebs.get-balance"
          with:
            account: "{{account_code}}"
            period: "{{period}}"
  consumes:
    - type: http
      namespace: oracle-ebs
      baseUri: "https://manulife-ebs.oraclecloud.com/webservices/rest"
      authentication:
        type: basic
        username: "$secrets.oracle_ebs_user"
        password: "$secrets.oracle_ebs_password"
      resources:
        - name: gl-balances
          path: "/gl/balances"
          inputParameters:
            - name: account
              in: query
            - name: period
              in: query
          operations:
            - name: get-balance
              method: GET

Audits Palo Alto Networks firewall rules for Manulife network security compliance, checking policy configurations against security standards.

naftiko: "0.5"
info:
  label: "Palo Alto Security Audit"
  description: "Audits Palo Alto Networks firewall rules for Manulife network security compliance, checking policy configurations against security standards."
  tags:
    - security
    - palo-alto-networks
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: security-audit
      port: 8080
      tools:
        - name: audit-firewall-rules
          description: "Retrieve and audit Palo Alto firewall rules for compliance."
          inputParameters:
            - name: device_group
              in: body
              type: string
              description: "Palo Alto device group name."
          call: "paloalto.get-security-rules"
          with:
            device_group: "{{device_group}}"
  consumes:
    - type: http
      namespace: paloalto
      baseUri: "https://manulife-panorama.paloaltonetworks.com/restapi/v10.2"
      authentication:
        type: apiKey
        key: "$secrets.paloalto_api_key"
      resources:
        - name: security-rules
          path: "/Policies/SecurityRules"
          inputParameters:
            - name: device_group
              in: query
          operations:
            - name: get-security-rules
              method: GET

Retrieves insurance policy details from the Manulife policy administration system by policy number, returning coverage type, premium, beneficiaries, and status.

naftiko: "0.5"
info:
  label: "Policy Lookup"
  description: "Retrieves insurance policy details from the Manulife policy administration system by policy number, returning coverage type, premium, beneficiaries, and status."
  tags:
    - insurance
    - policy-management
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: policy-lookup
      port: 8080
      tools:
        - name: get-policy
          description: "Look up an insurance policy by policy number."
          inputParameters:
            - name: policy_number
              in: body
              type: string
              description: "The Manulife policy number."
          call: "policy-admin.get-policy"
          with:
            policy_number: "{{policy_number}}"
  consumes:
    - type: http
      namespace: policy-admin
      baseUri: "https://api.manulife.com/policy/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: policies
          path: "/policies/{{policy_number}}"
          inputParameters:
            - name: policy_number
              in: path
          operations:
            - name: get-policy
              method: GET

Automates policy renewal by checking expiring policies, generating renewal quotes, updating Salesforce records, and sending renewal notices via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Policy Renewal Pipeline"
  description: "Automates policy renewal by checking expiring policies, generating renewal quotes, updating Salesforce records, and sending renewal notices via Microsoft Outlook."
  tags:
    - insurance
    - renewal
    - salesforce
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: policy-renewal
      port: 8080
      tools:
        - name: process-renewal
          description: "Process a policy renewal: generate quote, update CRM, and send notice."
          inputParameters:
            - name: policy_number
              in: body
              type: string
              description: "The expiring policy number."
            - name: renewal_date
              in: body
              type: string
              description: "Renewal effective date in YYYY-MM-DD format."
          steps:
            - name: get-policy
              type: call
              call: "policy-admin.get-policy"
              with:
                policy_number: "{{policy_number}}"
            - name: generate-renewal-quote
              type: call
              call: "rating-engine.get-renewal-quote"
              with:
                policy_number: "{{policy_number}}"
                renewal_date: "{{renewal_date}}"
            - name: update-salesforce
              type: call
              call: "salesforce.update-opportunity"
              with:
                policy_number: "{{policy_number}}"
                stage: "Renewal"
                amount: "{{generate-renewal-quote.premium}}"
            - name: send-notice
              type: call
              call: "outlook.send-email"
              with:
                to: "{{get-policy.policyholder_email}}"
                subject: "Policy Renewal Notice: {{policy_number}}"
                body: "Your policy {{policy_number}} is due for renewal on {{renewal_date}}. New premium: {{generate-renewal-quote.premium}}. Coverage: {{get-policy.coverage_amount}}."
  consumes:
    - type: http
      namespace: policy-admin
      baseUri: "https://api.manulife.com/policy/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: policies
          path: "/policies/{{policy_number}}"
          inputParameters:
            - name: policy_number
              in: path
          operations:
            - name: get-policy
              method: GET
    - type: http
      namespace: rating-engine
      baseUri: "https://api.manulife.com/rating/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: renewal-quotes
          path: "/renewal-quotes"
          operations:
            - name: get-renewal-quote
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://manulife.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity"
          operations:
            - name: update-opportunity
              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

Refreshes the Power BI claims analytics dashboard with latest claims data for management reporting.

naftiko: "0.5"
info:
  label: "Power BI Claims Analytics Dashboard"
  description: "Refreshes the Power BI claims analytics dashboard with latest claims data for management reporting."
  tags:
    - reporting
    - power-bi
    - claims
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: claims-bi
      port: 8080
      tools:
        - name: refresh-claims-dashboard
          description: "Trigger a Power BI dataset refresh for claims analytics."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID."
          call: "powerbi.refresh-dataset"
          with:
            dataset_id: "{{dataset_id}}"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST

Generates an insurance premium quote based on coverage type, amount, term, and applicant profile.

naftiko: "0.5"
info:
  label: "Premium Quote Generator"
  description: "Generates an insurance premium quote based on coverage type, amount, term, and applicant profile."
  tags:
    - insurance
    - pricing
    - quotes
capability:
  exposes:
    - type: mcp
      namespace: premium-quotes
      port: 8080
      tools:
        - name: generate-quote
          description: "Generate a premium quote for an insurance product."
          inputParameters:
            - name: product_type
              in: body
              type: string
              description: "Insurance product type."
            - name: coverage_amount
              in: body
              type: number
              description: "Desired coverage amount."
            - name: term_years
              in: body
              type: integer
              description: "Policy term in years."
            - name: applicant_age
              in: body
              type: integer
              description: "Applicant age."
          call: "rating-engine.get-quote"
          with:
            product: "{{product_type}}"
            coverage: "{{coverage_amount}}"
            term: "{{term_years}}"
            age: "{{applicant_age}}"
  consumes:
    - type: http
      namespace: rating-engine
      baseUri: "https://api.manulife.com/rating/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: quotes
          path: "/quotes"
          operations:
            - name: get-quote
              method: POST

Generates regulatory compliance documents, validates against compliance rules in Oracle E-Business Suite, and archives to Box with retention policies.

naftiko: "0.5"
info:
  label: "Regulatory Compliance Document Filer"
  description: "Generates regulatory compliance documents, validates against compliance rules in Oracle E-Business Suite, and archives to Box with retention policies."
  tags:
    - compliance
    - regulatory
    - oracle-e-business-suite
    - box
capability:
  exposes:
    - type: mcp
      namespace: compliance-filing
      port: 8080
      tools:
        - name: file-compliance-document
          description: "Validate and file a regulatory compliance document."
          inputParameters:
            - name: document_type
              in: body
              type: string
              description: "Document type (annual-statement, risk-report, capital-adequacy)."
            - name: jurisdiction
              in: body
              type: string
              description: "Regulatory jurisdiction (OSFI, SEC, MAS)."
            - name: filing_period
              in: body
              type: string
              description: "Filing period."
          steps:
            - name: validate-document
              type: call
              call: "oracle-ebs.validate-compliance"
              with:
                doc_type: "{{document_type}}"
                jurisdiction: "{{jurisdiction}}"
            - name: archive-document
              type: call
              call: "box.upload-file"
              with:
                folder_id: "regulatory_filings"
                file_name: "{{document_type}}_{{jurisdiction}}_{{filing_period}}"
                metadata: "jurisdiction:{{jurisdiction}},type:{{document_type}},period:{{filing_period}},retention:10years"
  consumes:
    - type: http
      namespace: oracle-ebs
      baseUri: "https://manulife-ebs.oraclecloud.com/webservices/rest"
      authentication:
        type: basic
        username: "$secrets.oracle_ebs_user"
        password: "$secrets.oracle_ebs_password"
      resources:
        - name: compliance
          path: "/compliance/validate"
          operations:
            - name: validate-compliance
              method: POST
    - type: http
      namespace: box
      baseUri: "https://upload.box.com/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files/content"
          operations:
            - name: upload-file
              method: POST

Generates retirement plan statements by pulling portfolio data, calculating projected income, and emailing the statement via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Retirement Plan Statement Generator"
  description: "Generates retirement plan statements by pulling portfolio data, calculating projected income, and emailing the statement via Microsoft Outlook."
  tags:
    - retirement
    - wealth-management
    - microsoft-outlook
    - financial-planning
capability:
  exposes:
    - type: mcp
      namespace: retirement-statements
      port: 8080
      tools:
        - name: generate-statement
          description: "Generate and email a retirement plan statement."
          inputParameters:
            - name: client_id
              in: body
              type: string
              description: "Client ID."
            - name: plan_id
              in: body
              type: string
              description: "Retirement plan ID."
            - name: client_email
              in: body
              type: string
              description: "Client email address."
          steps:
            - name: get-portfolio
              type: call
              call: "wealth-platform.get-retirement-plan"
              with:
                client_id: "{{client_id}}"
                plan_id: "{{plan_id}}"
            - name: send-statement
              type: call
              call: "outlook.send-email"
              with:
                to: "{{client_email}}"
                subject: "Your Retirement Plan Statement"
                body: "Plan ID: {{plan_id}}. Current balance: {{get-portfolio.balance}}. Projected retirement income: {{get-portfolio.projected_income}}/month. Contribution rate: {{get-portfolio.contribution_rate}}%."
  consumes:
    - type: http
      namespace: wealth-platform
      baseUri: "https://api.manulife.com/wealth/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: retirement
          path: "/clients/{{client_id}}/retirement-plans/{{plan_id}}"
          inputParameters:
            - name: client_id
              in: path
            - name: plan_id
              in: path
          operations:
            - name: get-retirement-plan
              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

Retrieves client details from Salesforce including contact information, policy history, and relationship status for advisor use.

naftiko: "0.5"
info:
  label: "Salesforce Client Record Lookup"
  description: "Retrieves client details from Salesforce including contact information, policy history, and relationship status for advisor use."
  tags:
    - crm
    - salesforce
    - client-management
capability:
  exposes:
    - type: mcp
      namespace: client-crm
      port: 8080
      tools:
        - name: get-client-record
          description: "Look up a client record in Salesforce by account ID."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce account ID."
          call: "salesforce.get-account"
          with:
            account_id: "{{account_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://manulife.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

Queries SAP HANA for financial reporting data including general ledger balances, investment income, and reserve calculations.

naftiko: "0.5"
info:
  label: "SAP HANA Financial Data Query"
  description: "Queries SAP HANA for financial reporting data including general ledger balances, investment income, and reserve calculations."
  tags:
    - finance
    - sap-hana
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: financial-data
      port: 8080
      tools:
        - name: query-financial-data
          description: "Query SAP HANA for financial reporting data."
          inputParameters:
            - name: report_type
              in: body
              type: string
              description: "Report type (gl-balances, investment-income, reserves)."
            - name: period
              in: body
              type: string
              description: "Reporting period (e.g., 2026-03)."
          call: "sap-hana.run-query"
          with:
            report_type: "{{report_type}}"
            period: "{{period}}"
  consumes:
    - type: http
      namespace: sap-hana
      baseUri: "https://manulife-hana.sap.com/sap/opu/odata/sap"
      authentication:
        type: basic
        username: "$secrets.sap_hana_user"
        password: "$secrets.sap_hana_password"
      resources:
        - name: reports
          path: "/FIN_REPORTING_SRV/{{report_type}}"
          inputParameters:
            - name: report_type
              in: path
            - name: period
              in: query
          operations:
            - name: run-query
              method: GET

Creates ServiceNow incidents for IT issues at Manulife offices, including system outages, application errors, and access requests.

naftiko: "0.5"
info:
  label: "ServiceNow IT Incident Creator"
  description: "Creates ServiceNow incidents for IT issues at Manulife offices, including system outages, application errors, and access requests."
  tags:
    - it-support
    - servicenow
    - incident-management
capability:
  exposes:
    - type: mcp
      namespace: it-incidents
      port: 8080
      tools:
        - name: create-incident
          description: "Create a new ServiceNow incident for IT support."
          inputParameters:
            - name: short_description
              in: body
              type: string
              description: "Brief summary of the incident."
            - name: category
              in: body
              type: string
              description: "Incident category."
            - name: priority
              in: body
              type: string
              description: "Priority level."
          call: "servicenow.create-incident"
          with:
            short_description: "{{short_description}}"
            category: "{{category}}"
            priority: "{{priority}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://manulife.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

Routes compliance alerts to the appropriate Slack channel based on alert type and jurisdiction for rapid response.

naftiko: "0.5"
info:
  label: "Slack Compliance Alert Router"
  description: "Routes compliance alerts to the appropriate Slack channel based on alert type and jurisdiction for rapid response."
  tags:
    - compliance
    - slack
    - alerting
capability:
  exposes:
    - type: mcp
      namespace: compliance-alerts
      port: 8080
      tools:
        - name: route-compliance-alert
          description: "Route a compliance alert to the correct Slack channel."
          inputParameters:
            - name: alert_type
              in: body
              type: string
              description: "Alert type (aml, privacy, suitability, regulatory-change)."
            - name: jurisdiction
              in: body
              type: string
              description: "Jurisdiction (canada, us, asia)."
            - name: message
              in: body
              type: string
              description: "Alert message."
          call: "slack.post-message"
          with:
            channel: "compliance-{{alert_type}}-{{jurisdiction}}"
            text: "[{{alert_type}}] {{message}}"
  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

Monitors Manulife network infrastructure health via SolarWinds, tracking device uptime, bandwidth, and latency.

naftiko: "0.5"
info:
  label: "SolarWinds Network Health Monitor"
  description: "Monitors Manulife network infrastructure health via SolarWinds, tracking device uptime, bandwidth, and latency."
  tags:
    - network
    - solarwinds
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: network-health
      port: 8080
      tools:
        - name: get-network-status
          description: "Check SolarWinds for network health at a Manulife location."
          inputParameters:
            - name: location
              in: body
              type: string
              description: "Office or data center location."
          call: "solarwinds.get-nodes"
          with:
            location: "{{location}}"
  consumes:
    - type: http
      namespace: solarwinds
      baseUri: "https://manulife-solarwinds.com/SolarWinds/InformationService/v3/Json"
      authentication:
        type: basic
        username: "$secrets.solarwinds_user"
        password: "$secrets.solarwinds_password"
      resources:
        - name: nodes
          path: "/Query"
          operations:
            - name: get-nodes
              method: POST

Triggers a Tableau dashboard refresh for actuarial loss ratio and reserving analytics, pulling data from the data warehouse.

naftiko: "0.5"
info:
  label: "Tableau Actuarial Dashboard Refresh"
  description: "Triggers a Tableau dashboard refresh for actuarial loss ratio and reserving analytics, pulling data from the data warehouse."
  tags:
    - actuarial
    - tableau
    - reporting
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: actuarial-dashboard
      port: 8080
      tools:
        - name: refresh-actuarial-dashboard
          description: "Trigger a Tableau dataset refresh for actuarial analytics."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The Tableau dataset ID."
          call: "tableau.refresh-datasource"
          with:
            dataset_id: "{{dataset_id}}"
  consumes:
    - type: http
      namespace: tableau
      baseUri: "https://manulife-tableau.online.tableau.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: datasources
          path: "/sites/{{site_id}}/datasources/{{dataset_id}}/refresh"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-datasource
              method: POST

Calculates an underwriting risk score for a new insurance application using the Manulife underwriting engine based on applicant demographics and health data.

naftiko: "0.5"
info:
  label: "Underwriting Risk Score Calculator"
  description: "Calculates an underwriting risk score for a new insurance application using the Manulife underwriting engine based on applicant demographics and health data."
  tags:
    - underwriting
    - risk-assessment
    - insurance
capability:
  exposes:
    - type: mcp
      namespace: underwriting
      port: 8080
      tools:
        - name: calculate-risk-score
          description: "Calculate an underwriting risk score for an insurance application."
          inputParameters:
            - name: applicant_id
              in: body
              type: string
              description: "The applicant identifier."
            - name: product_type
              in: body
              type: string
              description: "Insurance product type (life, health, disability)."
            - name: age
              in: body
              type: integer
              description: "Applicant age."
            - name: health_class
              in: body
              type: string
              description: "Health classification (preferred, standard, substandard)."
          call: "underwriting-engine.calculate-score"
          with:
            applicant_id: "{{applicant_id}}"
            product: "{{product_type}}"
            age: "{{age}}"
            health_class: "{{health_class}}"
  consumes:
    - type: http
      namespace: underwriting-engine
      baseUri: "https://api.manulife.com/underwriting/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: risk-scores
          path: "/risk-scores"
          operations:
            - name: calculate-score
              method: POST

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

naftiko: "0.5"
info:
  label: "Wealth Portfolio Summary"
  description: "Retrieves a client's wealth management portfolio summary including asset allocation, performance, and market value from the Manulife investment platform."
  tags:
    - wealth-management
    - portfolio
    - investments
capability:
  exposes:
    - type: mcp
      namespace: wealth-portfolio
      port: 8080
      tools:
        - name: get-portfolio-summary
          description: "Retrieve a client's investment portfolio summary."
          inputParameters:
            - name: client_id
              in: body
              type: string
              description: "The wealth management client ID."
          call: "wealth-platform.get-portfolio"
          with:
            client_id: "{{client_id}}"
  consumes:
    - type: http
      namespace: wealth-platform
      baseUri: "https://api.manulife.com/wealth/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: portfolios
          path: "/clients/{{client_id}}/portfolio"
          inputParameters:
            - name: client_id
              in: path
          operations:
            - name: get-portfolio
              method: GET

Retrieves Manulife employee details from Workday including department, role, manager, and office location.

naftiko: "0.5"
info:
  label: "Workday Employee Directory"
  description: "Retrieves Manulife employee details from Workday including department, role, manager, and office location."
  tags:
    - hr
    - workday
    - employee-directory
capability:
  exposes:
    - type: mcp
      namespace: hr-directory
      port: 8080
      tools:
        - name: get-employee
          description: "Look up an employee in Workday by worker ID."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_id}}"
  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

Creates Zendesk support tickets for policyholder inquiries, enriching with policy data from the admin system for faster resolution.

naftiko: "0.5"
info:
  label: "Zendesk Customer Support Pipeline"
  description: "Creates Zendesk support tickets for policyholder inquiries, enriching with policy data from the admin system for faster resolution."
  tags:
    - customer-support
    - zendesk
    - policy-management
capability:
  exposes:
    - type: mcp
      namespace: customer-support
      port: 8080
      tools:
        - name: create-support-ticket
          description: "Create a Zendesk ticket enriched with policy details."
          inputParameters:
            - name: customer_email
              in: body
              type: string
              description: "Customer email."
            - name: policy_number
              in: body
              type: string
              description: "Policy number for context."
            - name: subject
              in: body
              type: string
              description: "Support request subject."
          steps:
            - name: get-policy
              type: call
              call: "policy-admin.get-policy"
              with:
                policy_number: "{{policy_number}}"
            - name: create-ticket
              type: call
              call: "zendesk.create-ticket"
              with:
                requester_email: "{{customer_email}}"
                subject: "{{subject}}"
                description: "Policy: {{policy_number}} | Product: {{get-policy.product_type}} | Status: {{get-policy.status}} | Premium: {{get-policy.premium}}"
  consumes:
    - type: http
      namespace: policy-admin
      baseUri: "https://api.manulife.com/policy/v1"
      authentication:
        type: bearer
        token: "$secrets.manulife_api_token"
      resources:
        - name: policies
          path: "/policies/{{policy_number}}"
          inputParameters:
            - name: policy_number
              in: path
          operations:
            - name: get-policy
              method: GET
    - type: http
      namespace: zendesk
      baseUri: "https://manulife.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: tickets
          path: "/tickets"
          operations:
            - name: create-ticket
              method: POST