Accenture Capabilities

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

Sort
Expand

Runs automated accessibility scans, collects WCAG violations, creates remediation tasks in Jira, generates audit report in Confluence, and notifies the UX team.

naftiko: "0.5"
info:
  label: "Accessibility Audit Pipeline"
  description: "Runs automated accessibility scans, collects WCAG violations, creates remediation tasks in Jira, generates audit report in Confluence, and notifies the UX team."
  tags:
    - accessibility
    - jira
    - confluence
    - slack
capability:
  exposes:
    - type: mcp
      namespace: accessibility
      port: 8080
      tools:
        - name: accessibility_audit_pipeline
          description: "Orchestrate accessibility audit pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: run-scan
              type: call
              call: "axe.scan-urls"
              with:
                url_list: "{{resource_id}}"
            - name: analyze-violations
              type: call
              call: "snowflake.run-query"
              with:
                sql_query: "CALL analyze_a11y('{{resource_id}}')"
                warehouse: "QA_WH"
            - name: create-tasks
              type: call
              call: "jira.create-issue"
              with:
                project: "A11Y"
                summary: "WCAG violations: {{resource_id}}"
            - name: notify
              type: call
              call: "slack.send-message"
              with:
                channel: "ux-team"
                text: "Accessibility audit for {{resource_id}}: {{analyze-violations.violation_count}} issues"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://accenture.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: jira-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Fetches an Adobe Analytics campaign performance report, uploads the summary to Google Sheets, and notifies the marketing team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Adobe Analytics Campaign Report and Distribution"
  description: "Fetches an Adobe Analytics campaign performance report, uploads the summary to Google Sheets, and notifies the marketing team in Microsoft Teams."
  tags:
    - marketing
    - analytics
    - adobe-analytics
    - google-sheets
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: marketing-adobe
      port: 8080
      tools:
        - name: get-campaign-report-and-distribute
          description: "Fetch an Adobe Analytics report, push to Google Sheets, and notify the team."
          inputParameters:
            - name: report_suite_id
              in: body
              type: string
              description: "The Adobe Analytics report suite ID."
            - name: start_date
              in: body
              type: string
              description: "Report start date (YYYY-MM-DD)."
            - name: end_date
              in: body
              type: string
              description: "Report end date (YYYY-MM-DD)."
            - name: spreadsheet_id
              in: body
              type: string
              description: "The Google Sheets spreadsheet ID."
            - name: teams_channel
              in: body
              type: string
              description: "The Teams channel for campaign updates."
          steps:
            - name: get-report
              type: call
              call: "adobe.get-report"
              with:
                rsid: "{{report_suite_id}}"
                start_date: "{{start_date}}"
                end_date: "{{end_date}}"
            - name: update-sheet
              type: call
              call: "googlesheets.update-values"
              with:
                spreadsheet_id: "{{spreadsheet_id}}"
                range: "CampaignData!A1"
                values: "{{get-report.rows}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "{{teams_channel}}"
                text: "Adobe Analytics Report ({{start_date}} - {{end_date}}): {{get-report.total_visits}} visits, {{get-report.total_conversions}} conversions. Spreadsheet updated: https://docs.google.com/spreadsheets/d/{{spreadsheet_id}}"
  consumes:
    - type: http
      namespace: adobe
      baseUri: "https://analytics.adobe.io/api"
      authentication:
        type: bearer
        token: "$secrets.adobe_analytics_token"
      inputParameters:
        - name: x-api-key
          in: header
          value: "$secrets.adobe_api_key"
      resources:
        - name: reports
          path: "/{{rsid}}/reports"
          inputParameters:
            - name: rsid
              in: path
          operations:
            - name: get-report
              method: POST
    - type: http
      namespace: googlesheets
      baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/{{spreadsheet_id}}/values/{{range}}"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: update-values
              method: PUT
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/General/messages"
          inputParameters:
            - name: channel
              in: path
          operations:
            - name: send-message
              method: POST

Collects agile maturity metrics from Jira, calculates team health in Snowflake, generates transformation reports, and notifies coaches.

naftiko: "0.5"
info:
  label: "Agile Transformation Metrics Pipeline"
  description: "Collects agile maturity metrics from Jira, calculates team health in Snowflake, generates transformation reports, and notifies coaches."
  tags:
    - agile
    - transformation
    - jira
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: agile
      port: 8080
      tools:
        - name: agile_transformation_metrics_pipeline
          description: "Orchestrate agile transformation metrics pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: fetch-data
              type: call
              call: "primary.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-data
              type: call
              call: "processor.transform"
              with:
                input: "{{fetch-data.result}}"
            - name: create-record
              type: call
              call: "servicenow.create-record"
              with:
                table: "records"
                data: "{{process-data.output}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "operations"
                text: "Workflow {{resource_id}} complete. Record: {{create-record.number}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://co.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: records
          path: "/table/records"
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/general/messages"
          operations:
            - name: send-message
              method: POST

Runs API load tests, collects latency metrics from Datadog, compares against SLOs in Grafana, creates tickets for regressions, and publishes report.

naftiko: "0.5"
info:
  label: "API Performance Benchmark Pipeline"
  description: "Runs API load tests, collects latency metrics from Datadog, compares against SLOs in Grafana, creates tickets for regressions, and publishes report."
  tags:
    - performance
    - datadog
    - grafana
    - jira
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: performance
      port: 8080
      tools:
        - name: api_performance_benchmark_pipeline
          description: "Orchestrate api performance benchmark pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: run-load-test
              type: call
              call: "k6.run-test"
              with:
                test_id: "{{resource_id}}"
            - name: get-metrics
              type: call
              call: "datadog.get-latency-metrics"
              with:
                service: "{{resource_id}}"
            - name: check-slos
              type: call
              call: "grafana.get-slo-status"
              with:
                service: "{{resource_id}}"
            - name: create-report
              type: call
              call: "confluence.create-page"
              with:
                space: "PERF"
                title: "Benchmark: {{resource_id}}"

  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
        header: "DD-API-KEY" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: datadog-op
              method: POST
    - type: http
      namespace: grafana
      baseUri: "https://accenture-grafana.com/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_api_key" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: grafana-op
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: jira-op
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://accenture.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: confluence-op
              method: POST

Retrieves the status of an Appian process instance by ID. Used by low-code consultants to monitor automated workflows built for clients.

naftiko: "0.5"
info:
  label: "Appian Process Automation Status"
  description: "Retrieves the status of an Appian process instance by ID. Used by low-code consultants to monitor automated workflows built for clients."
  tags:
    - automation
    - low-code
    - appian
capability:
  exposes:
    - type: mcp
      namespace: automation-bpm
      port: 8080
      tools:
        - name: get-process-status
          description: "Look up an Appian process instance by ID and return its status."
          inputParameters:
            - name: process_id
              in: body
              type: string
              description: "The Appian process instance ID."
          call: "appian.get-process"
          with:
            process_id: "{{process_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: started_by
              type: string
              mapping: "$.startedBy"
            - name: start_time
              type: string
              mapping: "$.startTime"
  consumes:
    - type: http
      namespace: appian
      baseUri: "https://accenture.appiancloud.com/suite/webapi"
      authentication:
        type: bearer
        token: "$secrets.appian_token"
      resources:
        - name: processes
          path: "/process-instances/{{process_id}}"
          inputParameters:
            - name: process_id
              in: path
          operations:
            - name: get-process
              method: GET

Invokes an AWS Lambda function with a JSON payload. Used by cloud consultants to trigger serverless workloads for client applications.

naftiko: "0.5"
info:
  label: "AWS Lambda Function Invocation"
  description: "Invokes an AWS Lambda function with a JSON payload. Used by cloud consultants to trigger serverless workloads for client applications."
  tags:
    - cloud
    - serverless
    - aws-lambda
capability:
  exposes:
    - type: mcp
      namespace: cloud-serverless
      port: 8080
      tools:
        - name: invoke-lambda
          description: "Invoke an AWS Lambda function by name with a JSON payload."
          inputParameters:
            - name: function_name
              in: body
              type: string
              description: "The Lambda function name or ARN."
            - name: payload
              in: body
              type: string
              description: "The JSON payload to send to the function."
          call: "lambda.invoke"
          with:
            function_name: "{{function_name}}"
            payload: "{{payload}}"
  consumes:
    - type: http
      namespace: lambda
      baseUri: "https://lambda.us-east-1.amazonaws.com/2015-03-31"
      authentication:
        type: aws-sigv4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
      resources:
        - name: functions
          path: "/functions/{{function_name}}/invocations"
          inputParameters:
            - name: function_name
              in: path
          operations:
            - name: invoke
              method: POST

Creates a new user in Azure Active Directory, assigns licenses, and adds to the appropriate security group. Used for client identity management engagements.

naftiko: "0.5"
info:
  label: "Azure Active Directory User Provisioning"
  description: "Creates a new user in Azure Active Directory, assigns licenses, and adds to the appropriate security group. Used for client identity management engagements."
  tags:
    - identity
    - provisioning
    - azure-active-directory
capability:
  exposes:
    - type: mcp
      namespace: identity-provisioning
      port: 8080
      tools:
        - name: provision-aad-user
          description: "Create an Azure AD user, assign a license, and add to a security group."
          inputParameters:
            - name: display_name
              in: body
              type: string
              description: "The user display name."
            - name: user_principal_name
              in: body
              type: string
              description: "The user principal name (UPN)."
            - name: department
              in: body
              type: string
              description: "The user's department."
            - name: license_sku
              in: body
              type: string
              description: "The license SKU to assign."
            - name: group_id
              in: body
              type: string
              description: "The security group ID to add the user to."
          steps:
            - name: create-user
              type: call
              call: "aad.create-user"
              with:
                displayName: "{{display_name}}"
                userPrincipalName: "{{user_principal_name}}"
                department: "{{department}}"
                accountEnabled: true
            - name: assign-license
              type: call
              call: "aad.assign-license"
              with:
                user_id: "{{create-user.id}}"
                sku_id: "{{license_sku}}"
            - name: add-to-group
              type: call
              call: "aad.add-group-member"
              with:
                group_id: "{{group_id}}"
                member_id: "{{create-user.id}}"
  consumes:
    - type: http
      namespace: aad
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: users
          path: "/users"
          operations:
            - name: create-user
              method: POST
        - name: license-assignment
          path: "/users/{{user_id}}/assignLicense"
          inputParameters:
            - name: user_id
              in: path
          operations:
            - name: assign-license
              method: POST
        - name: group-members
          path: "/groups/{{group_id}}/members/$ref"
          inputParameters:
            - name: group_id
              in: path
          operations:
            - name: add-group-member
              method: POST

Triggers an Azure Data Factory pipeline run, logs the run in ServiceNow, and notifies the data engineering team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Azure Data Factory Pipeline Trigger and Monitor"
  description: "Triggers an Azure Data Factory pipeline run, logs the run in ServiceNow, and notifies the data engineering team in Microsoft Teams."
  tags:
    - data
    - etl
    - azure-data-factory
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: data-adf
      port: 8080
      tools:
        - name: trigger-adf-pipeline-and-monitor
          description: "Trigger an ADF pipeline, log in ServiceNow, and notify the data team."
          inputParameters:
            - name: subscription_id
              in: body
              type: string
              description: "The Azure subscription ID."
            - name: resource_group
              in: body
              type: string
              description: "The Azure resource group."
            - name: factory_name
              in: body
              type: string
              description: "The ADF factory name."
            - name: pipeline_name
              in: body
              type: string
              description: "The pipeline name to trigger."
            - name: teams_channel
              in: body
              type: string
              description: "The Teams channel for data engineering."
          steps:
            - name: trigger-pipeline
              type: call
              call: "adf.create-pipeline-run"
              with:
                subscription_id: "{{subscription_id}}"
                resource_group: "{{resource_group}}"
                factory_name: "{{factory_name}}"
                pipeline_name: "{{pipeline_name}}"
            - name: log-run
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "ADF pipeline run: {{pipeline_name}}"
                description: "Factory: {{factory_name}}. Pipeline: {{pipeline_name}}. Run ID: {{trigger-pipeline.run_id}}."
                assigned_group: "Data_Engineering"
                category: "etl_monitoring"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "{{teams_channel}}"
                text: "ADF Pipeline Triggered: {{pipeline_name}} in {{factory_name}}. Run ID: {{trigger-pipeline.run_id}}. ServiceNow: {{log-run.number}}."
  consumes:
    - type: http
      namespace: adf
      baseUri: "https://management.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azure_mgmt_token"
      resources:
        - name: pipeline-runs
          path: "/subscriptions/{{subscription_id}}/resourceGroups/{{resource_group}}/providers/Microsoft.DataFactory/factories/{{factory_name}}/pipelines/{{pipeline_name}}/createRun?api-version=2018-06-01"
          inputParameters:
            - name: subscription_id
              in: path
            - name: resource_group
              in: path
            - name: factory_name
              in: path
            - name: pipeline_name
              in: path
          operations:
            - name: create-pipeline-run
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://accenture.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/General/messages"
          inputParameters:
            - name: channel
              in: path
          operations:
            - name: send-message
              method: POST

Fetches the latest build run status from an Azure DevOps pipeline. Used by DevOps consultants to monitor client CI/CD pipelines.

naftiko: "0.5"
info:
  label: "Azure DevOps Pipeline Status"
  description: "Fetches the latest build run status from an Azure DevOps pipeline. Used by DevOps consultants to monitor client CI/CD pipelines."
  tags:
    - devops
    - cicd
    - azure-devops
capability:
  exposes:
    - type: mcp
      namespace: devops-cicd
      port: 8080
      tools:
        - name: get-pipeline-status
          description: "Look up the latest run of an Azure DevOps pipeline by project and pipeline ID."
          inputParameters:
            - name: project
              in: body
              type: string
              description: "The Azure DevOps project name."
            - name: pipeline_id
              in: body
              type: string
              description: "The pipeline definition ID."
          call: "azuredevops.get-pipeline-run"
          with:
            project: "{{project}}"
            pipeline_id: "{{pipeline_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.state"
            - name: result
              type: string
              mapping: "$.result"
            - name: started
              type: string
              mapping: "$.createdDate"
  consumes:
    - type: http
      namespace: azuredevops
      baseUri: "https://dev.azure.com/accenture"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azuredevops_pat"
      resources:
        - name: pipeline-runs
          path: "/{{project}}/_apis/pipelines/{{pipeline_id}}/runs?$top=1&api-version=7.0"
          inputParameters:
            - name: project
              in: path
            - name: pipeline_id
              in: path
          operations:
            - name: get-pipeline-run
              method: GET

Retrieves work item details from Azure DevOps for Accenture project management.

naftiko: "0.5"
info:
  label: "Azure DevOps Work Item Lookup"
  description: "Retrieves work item details from Azure DevOps for Accenture project management."
  tags:
    - project-management
    - azure-devops
    - work-items
capability:
  exposes:
    - type: mcp
      namespace: project-mgmt
      port: 8080
      tools:
        - name: get-work-item
          description: "Look up work item by ID."
          inputParameters:
            - name: work_item_id
              in: body
              type: string
              description: "The work_item_id to look up." 
          call: "azure-devops.get-work_item_id"
          with:
            work_item_id: "{{work_item_id}}"
  consumes:
    - type: http
      namespace: azuredevops
      baseUri: "https://dev.azure.com/accenture/_apis"
      authentication:
        type: bearer
        token: "$secrets.azuredevops_pat" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: azure_devops_work_item_lookup
              method: GET

Fetches metadata and download URL for a Box file by ID. Used by consultants to access shared client deliverables.

naftiko: "0.5"
info:
  label: "Box Document Retrieval"
  description: "Fetches metadata and download URL for a Box file by ID. Used by consultants to access shared client deliverables."
  tags:
    - content-management
    - collaboration
    - box
capability:
  exposes:
    - type: mcp
      namespace: content-docs
      port: 8080
      tools:
        - name: get-box-file
          description: "Retrieve a Box file's metadata and download link by file ID."
          inputParameters:
            - name: file_id
              in: body
              type: string
              description: "The Box file ID."
          call: "box.get-file"
          with:
            file_id: "{{file_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.name"
            - name: size
              type: string
              mapping: "$.size"
            - name: download_url
              type: string
              mapping: "$.shared_link.download_url"
  consumes:
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files/{{file_id}}"
          inputParameters:
            - name: file_id
              in: path
          operations:
            - name: get-file
              method: GET

On a protected-branch pipeline failure in Azure DevOps, creates a Datadog event, opens a Jira bug, and alerts the engineering channel in Microsoft Teams.

naftiko: "0.5"
info:
  label: "CI/CD Failure Observability Chain"
  description: "On a protected-branch pipeline failure in Azure DevOps, creates a Datadog event, opens a Jira bug, and alerts the engineering channel in Microsoft Teams."
  tags:
    - devops
    - observability
    - azure-devops
    - datadog
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: devops-observability
      port: 8080
      tools:
        - name: handle-pipeline-failure
          description: "Given a pipeline failure event, create a Datadog event, open a Jira bug, and alert Slack with full context."
          inputParameters:
            - name: pipeline_id
              in: body
              type: string
            - name: project
              in: body
              type: string
            - name: ref
              in: body
              type: string
            - name: failed_job_name
              in: body
              type: string
            - name: log_url
              in: body
              type: string
            - name: commit_sha
              in: body
              type: string
          steps:
            - name: create-event
              type: call
              call: "datadog.create-event"
              with:
                title: "Pipeline failure: {{project}} / {{ref}}"
                text: "Job {{failed_job_name}} failed on commit {{commit_sha}}. Log: {{log_url}}"
                alert_type: "error"
                tags: "project:{{project}},ref:{{ref}}"
            - name: create-bug
              type: call
              call: "jira.create-issue"
              with:
                project_key: "ENG"
                issuetype: "Bug"
                summary: "[CI Failure] {{project}} / {{ref}} — {{failed_job_name}}"
                description: "Pipeline: {{pipeline_id}}\nBranch: {{ref}}\nCommit: {{commit_sha}}\nLog: {{log_url}}\nDatadog event: {{create-event.id}}"
            - name: post-alert
              type: call
              call: "msteams.send-message"
              with:
                channel: "engineering-alerts"
                text: "Pipeline Failure: {{project}} | Branch: {{ref}} | Job: {{failed_job_name}} | Jira: {{create-bug.key}} | Log: {{log_url}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        header: "DD-API-KEY"
        key: "$secrets.datadog_api_key"
      resources:
        - name: events
          path: "/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/General/messages"
          inputParameters:
            - name: channel
              in: path
          operations:
            - name: send-message
              method: POST

Plans data migration, executes extraction, validates in Snowflake, loads to target system, and notifies migration team.

naftiko: "0.5"
info:
  label: "Client Data Migration Orchestrator"
  description: "Plans data migration, executes extraction, validates in Snowflake, loads to target system, and notifies migration team."
  tags:
    - migration
    - data
    - snowflake
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: migration
      port: 8080
      tools:
        - name: client_data_migration_orchestrator
          description: "Orchestrate client data migration orchestrator workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: fetch-data
              type: call
              call: "primary.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-data
              type: call
              call: "processor.transform"
              with:
                input: "{{fetch-data.result}}"
            - name: create-record
              type: call
              call: "servicenow.create-record"
              with:
                table: "records"
                data: "{{process-data.output}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "operations"
                text: "Workflow {{resource_id}} complete. Record: {{create-record.number}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://co.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: records
          path: "/table/records"
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/general/messages"
          operations:
            - name: send-message
              method: POST

Collects project metrics from Jira, client satisfaction from Salesforce, cost actuals from SAP, generates health scorecard in Power BI, and escalates risks.

naftiko: "0.5"
info:
  label: "Client Delivery Health Check"
  description: "Collects project metrics from Jira, client satisfaction from Salesforce, cost actuals from SAP, generates health scorecard in Power BI, and escalates risks."
  tags:
    - delivery
    - jira
    - salesforce
    - power-bi
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: delivery
      port: 8080
      tools:
        - name: client_delivery_health_check
          description: "Orchestrate client delivery health check workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-metrics
              type: call
              call: "jira.get-project-metrics"
              with:
                project_key: "{{resource_id}}"
            - name: get-satisfaction
              type: call
              call: "salesforce.get-csat"
              with:
                project_id: "{{resource_id}}"
            - name: refresh-scorecard
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "delivery_health"
            - name: notify
              type: call
              call: "msteams.send-message"
              with:
                channel: "delivery-mgmt"
                text: "Health check for {{resource_id}}: Velocity {{get-metrics.velocity}}, CSAT {{get-satisfaction.score}}"

  consumes:
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: jira-op
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://accenture.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: powerbi-op
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: msteams-op
              method: POST

Pulls Jira sprint metrics, Confluence status page data, and Datadog SLO compliance for a client engagement, then posts a consolidated health summary to Microsoft Teams.

naftiko: "0.5"
info:
  label: "Client Delivery Health Dashboard Sync"
  description: "Pulls Jira sprint metrics, Confluence status page data, and Datadog SLO compliance for a client engagement, then posts a consolidated health summary to Microsoft Teams."
  tags:
    - delivery
    - reporting
    - jira
    - confluence
    - datadog
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: delivery-health
      port: 8080
      tools:
        - name: generate-delivery-health-report
          description: "Given a Jira board ID, Confluence page ID, and Datadog SLO ID, compile a delivery health report and post it to Teams."
          inputParameters:
            - name: jira_board_id
              in: body
              type: string
              description: "The Jira board ID for the engagement."
            - name: confluence_page_id
              in: body
              type: string
              description: "The Confluence status page ID."
            - name: datadog_slo_id
              in: body
              type: string
              description: "The Datadog SLO ID for the engagement."
            - name: teams_channel
              in: body
              type: string
              description: "The Microsoft Teams channel for delivery updates."
          steps:
            - name: get-sprint
              type: call
              call: "jira.get-board-sprint"
              with:
                board_id: "{{jira_board_id}}"
            - name: get-status-page
              type: call
              call: "confluence.get-page"
              with:
                page_id: "{{confluence_page_id}}"
            - name: get-slo
              type: call
              call: "datadog.get-slo"
              with:
                slo_id: "{{datadog_slo_id}}"
            - name: post-summary
              type: call
              call: "msteams.send-message"
              with:
                channel: "{{teams_channel}}"
                text: "Delivery Health Report:\n- Sprint: {{get-sprint.name}} | Velocity: {{get-sprint.completed_points}}/{{get-sprint.total_points}}\n- Status: {{get-status-page.status}}\n- SLO Compliance: {{get-slo.overall_status}} ({{get-slo.sli_value}}%)"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/agile/1.0"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprints
          path: "/board/{{board_id}}/sprint?state=active"
          inputParameters:
            - name: board_id
              in: path
          operations:
            - name: get-board-sprint
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://accenture.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content/{{page_id}}"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: get-page
              method: GET
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        header: "DD-API-KEY"
        key: "$secrets.datadog_api_key"
      resources:
        - name: slos
          path: "/slo/{{slo_id}}"
          inputParameters:
            - name: slo_id
              in: path
          operations:
            - name: get-slo
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/General/messages"
          inputParameters:
            - name: channel
              in: path
          operations:
            - name: send-message
              method: POST

When a new Salesforce opportunity reaches Closed Won, creates a Jira project board, provisions a Confluence space, opens a Microsoft Planner plan, and notifies the delivery lead in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Client Engagement Kickoff Pipeline"
  description: "When a new Salesforce opportunity reaches Closed Won, creates a Jira project board, provisions a Confluence space, opens a Microsoft Planner plan, and notifies the delivery lead in Microsoft Teams."
  tags:
    - delivery
    - project-management
    - salesforce
    - jira
    - confluence
    - microsoft-planner
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: delivery-kickoff
      port: 8080
      tools:
        - name: initiate-engagement-kickoff
          description: "Given a Salesforce opportunity ID and delivery lead email, set up Jira, Confluence, and Planner for the new engagement."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "The Salesforce opportunity record ID."
            - name: delivery_lead_upn
              in: body
              type: string
              description: "The Microsoft UPN of the delivery lead."
            - name: engagement_name
              in: body
              type: string
              description: "The name of the client engagement."
          steps:
            - name: get-opportunity
              type: call
              call: "salesforce.get-opportunity"
              with:
                opportunity_id: "{{opportunity_id}}"
            - name: create-jira-project
              type: call
              call: "jira.create-project"
              with:
                key: "{{engagement_name}}"
                name: "{{get-opportunity.account_name}} — {{engagement_name}}"
                project_type: "software"
            - name: create-confluence-space
              type: call
              call: "confluence.create-space"
              with:
                key: "{{engagement_name}}"
                name: "{{get-opportunity.account_name}} — {{engagement_name}}"
            - name: create-planner
              type: call
              call: "planner.create-plan"
              with:
                title: "{{engagement_name}} Delivery Plan"
                owner: "{{delivery_lead_upn}}"
            - name: notify-lead
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{delivery_lead_upn}}"
                text: "Engagement Kickoff: {{engagement_name}} for {{get-opportunity.account_name}}. Jira: {{create-jira-project.url}} | Confluence: {{create-confluence-space.url}} | Planner: {{create-planner.url}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://accenture.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: get-opportunity
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: projects
          path: "/project"
          operations:
            - name: create-project
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://accenture.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: spaces
          path: "/space"
          operations:
            - name: create-space
              method: POST
    - type: http
      namespace: planner
      baseUri: "https://graph.microsoft.com/v1.0/planner"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: plans
          path: "/plans"
          operations:
            - name: create-plan
              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

Receives escalations from Salesforce, creates response teams, tracks resolution in ServiceNow, and notifies account leadership.

naftiko: "0.5"
info:
  label: "Client Escalation Management Pipeline"
  description: "Receives escalations from Salesforce, creates response teams, tracks resolution in ServiceNow, and notifies account leadership."
  tags:
    - client-management
    - escalation
    - salesforce
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: client-management
      port: 8080
      tools:
        - name: client_escalation_management_pipeline
          description: "Orchestrate client escalation management pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: fetch-data
              type: call
              call: "primary.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-data
              type: call
              call: "processor.transform"
              with:
                input: "{{fetch-data.result}}"
            - name: create-record
              type: call
              call: "servicenow.create-record"
              with:
                table: "records"
                data: "{{process-data.output}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "operations"
                text: "Workflow {{resource_id}} complete. Record: {{create-record.number}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://co.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: records
          path: "/table/records"
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/general/messages"
          operations:
            - name: send-message
              method: POST

Pulls project hours from Microsoft Project, retrieves billing rates from SAP S/4HANA, generates an invoice line in Oracle Financials, and emails the client via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Client Invoice Generation Pipeline"
  description: "Pulls project hours from Microsoft Project, retrieves billing rates from SAP S/4HANA, generates an invoice line in Oracle Financials, and emails the client via Microsoft Outlook."
  tags:
    - finance
    - billing
    - microsoft-project
    - sap-s4hana
    - oracle
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: finance-billing
      port: 8080
      tools:
        - name: generate-client-invoice
          description: "Given a project code and billing period, pull hours, compute charges, create an Oracle invoice, and email the client."
          inputParameters:
            - name: project_code
              in: body
              type: string
              description: "The project or engagement code."
            - name: billing_period
              in: body
              type: string
              description: "The billing period (e.g., 2026-03)."
            - name: client_email
              in: body
              type: string
              description: "The client finance contact email."
          steps:
            - name: get-project-hours
              type: call
              call: "msproject.get-timesheet"
              with:
                project_code: "{{project_code}}"
                period: "{{billing_period}}"
            - name: get-rates
              type: call
              call: "sap.get-billing-rates"
              with:
                project_code: "{{project_code}}"
            - name: create-invoice
              type: call
              call: "oracle.create-invoice"
              with:
                project_code: "{{project_code}}"
                period: "{{billing_period}}"
                total_hours: "{{get-project-hours.total_hours}}"
                rate: "{{get-rates.blended_rate}}"
                amount: "{{get-project-hours.total_hours * get-rates.blended_rate}}"
            - name: email-client
              type: call
              call: "outlook.send-mail"
              with:
                to: "{{client_email}}"
                subject: "Invoice for {{project_code}} — {{billing_period}}"
                body: "Please find attached invoice {{create-invoice.invoice_number}} for ${{create-invoice.total_amount}}. Payment due: {{create-invoice.due_date}}."
  consumes:
    - type: http
      namespace: msproject
      baseUri: "https://graph.microsoft.com/v1.0/sites/accenture.sharepoint.com/lists"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: timesheets
          path: "/ProjectTimesheets/items?$filter=ProjectCode eq '{{project_code}}' and Period eq '{{period}}'"
          inputParameters:
            - name: project_code
              in: query
            - name: period
              in: query
          operations:
            - name: get-timesheet
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://accenture-s4.sap.com/sap/opu/odata/sap/API_BILLING_DOCUMENT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: billing-rates
          path: "/A_BillingRate?$filter=ProjectCode eq '{{project_code}}'"
          inputParameters:
            - name: project_code
              in: query
          operations:
            - name: get-billing-rates
              method: GET
    - type: http
      namespace: oracle
      baseUri: "https://accenture.oraclecloud.com/fscmRestApi/resources/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: invoices
          path: "/receivablesInvoices"
          operations:
            - name: create-invoice
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-mail
              method: POST

Triggers NPS survey via Qualtrics, collects responses, analyzes in Snowflake, updates Salesforce account health, and notifies account leads.

naftiko: "0.5"
info:
  label: "Client NPS Survey Pipeline"
  description: "Triggers NPS survey via Qualtrics, collects responses, analyzes in Snowflake, updates Salesforce account health, and notifies account leads."
  tags:
    - client-experience
    - salesforce
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: client-experience
      port: 8080
      tools:
        - name: client_nps_survey_pipeline
          description: "Orchestrate client nps survey pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: trigger-survey
              type: call
              call: "qualtrics.distribute-survey"
              with:
                survey_id: "nps_{{resource_id}}"
            - name: analyze-responses
              type: call
              call: "snowflake.run-query"
              with:
                sql_query: "CALL analyze_nps('{{resource_id}}')"
                warehouse: "CX_WH"
            - name: update-salesforce
              type: call
              call: "salesforce.update-account-health"
              with:
                account_id: "{{resource_id}}"
                nps: "{{analyze-responses.nps_score}}"
            - name: notify
              type: call
              call: "slack.send-message"
              with:
                channel: "account-leads"
                text: "NPS for {{resource_id}}: {{analyze-responses.nps_score}}"

  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://accenture.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://accenture.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

On new project in Salesforce, creates Jira project, provisions SharePoint site, sets up Teams channel, creates ServiceNow cost center, and notifies the delivery team.

naftiko: "0.5"
info:
  label: "Client Project Kickoff Automation"
  description: "On new project in Salesforce, creates Jira project, provisions SharePoint site, sets up Teams channel, creates ServiceNow cost center, and notifies the delivery team."
  tags:
    - delivery
    - salesforce
    - jira
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: delivery
      port: 8080
      tools:
        - name: client_project_kickoff_automation
          description: "Orchestrate client project kickoff automation workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-project
              type: call
              call: "salesforce.get-opportunity"
              with:
                opp_id: "{{resource_id}}"
            - name: create-jira
              type: call
              call: "jira.create-project"
              with:
                name: "{{get-project.name}}"
                key: "{{get-project.code}}"
            - name: create-cost-center
              type: call
              call: "servicenow.create-record"
              with:
                table: "cost_centers"
                project: "{{resource_id}}"
            - name: notify
              type: call
              call: "msteams.send-message"
              with:
                channel: "delivery-ops"
                text: "Project {{get-project.name}} kicked off. Jira: {{create-jira.key}}"

  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://accenture.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: jira-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://accenture.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: msteams-op
              method: POST

Creates a Google Forms survey for client feedback, distributes via MailChimp email campaign, and logs the campaign in Salesforce for account tracking.

naftiko: "0.5"
info:
  label: "Client Satisfaction Survey Pipeline"
  description: "Creates a Google Forms survey for client feedback, distributes via MailChimp email campaign, and logs the campaign in Salesforce for account tracking."
  tags:
    - client-experience
    - survey
    - google-forms
    - mailchimp
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: cx-survey
      port: 8080
      tools:
        - name: launch-satisfaction-survey
          description: "Given a Salesforce opportunity ID and survey template, create a Google Form, send via MailChimp, and log in Salesforce."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "The Salesforce opportunity ID."
            - name: survey_title
              in: body
              type: string
              description: "The survey title."
            - name: recipient_list_id
              in: body
              type: string
              description: "The MailChimp audience list ID."
          steps:
            - name: get-opportunity
              type: call
              call: "salesforce.get-opportunity"
              with:
                opportunity_id: "{{opportunity_id}}"
            - name: create-survey
              type: call
              call: "googleforms.create-form"
              with:
                title: "{{survey_title}} — {{get-opportunity.account_name}}"
            - name: send-campaign
              type: call
              call: "mailchimp.create-campaign"
              with:
                list_id: "{{recipient_list_id}}"
                subject: "We value your feedback: {{survey_title}}"
                body: "Please take a moment to share your feedback: {{create-survey.responder_url}}"
            - name: log-activity
              type: call
              call: "salesforce.create-task"
              with:
                opportunity_id: "{{opportunity_id}}"
                subject: "Client satisfaction survey sent: {{survey_title}}"
                description: "Survey URL: {{create-survey.responder_url}}. MailChimp campaign: {{send-campaign.campaign_id}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://accenture.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: get-opportunity
              method: GET
        - name: tasks
          path: "/sobjects/Task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: googleforms
      baseUri: "https://forms.googleapis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.google_forms_token"
      resources:
        - name: forms
          path: "/forms"
          operations:
            - name: create-form
              method: POST
    - 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: create-campaign
              method: POST

Scans cloud architecture against best practices, identifies anti-patterns in Snowflake, creates recommendations in Confluence, and notifies architects.

naftiko: "0.5"
info:
  label: "Cloud Architecture Review Pipeline"
  description: "Scans cloud architecture against best practices, identifies anti-patterns in Snowflake, creates recommendations in Confluence, and notifies architects."
  tags:
    - architecture
    - cloud
    - snowflake
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: architecture
      port: 8080
      tools:
        - name: cloud_architecture_review_pipeline
          description: "Orchestrate cloud architecture review pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: fetch-data
              type: call
              call: "primary.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-data
              type: call
              call: "processor.transform"
              with:
                input: "{{fetch-data.result}}"
            - name: create-record
              type: call
              call: "servicenow.create-record"
              with:
                table: "records"
                data: "{{process-data.output}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "operations"
                text: "Workflow {{resource_id}} complete. Record: {{create-record.number}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://co.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: records
          path: "/table/records"
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/general/messages"
          operations:
            - name: send-message
              method: POST

Queries AWS cost data, identifies top-spending services, cross-checks against Azure spend, and posts a cost optimization summary to Microsoft Teams for the FinOps team.

naftiko: "0.5"
info:
  label: "Cloud Cost Optimization Alert"
  description: "Queries AWS cost data, identifies top-spending services, cross-checks against Azure spend, and posts a cost optimization summary to Microsoft Teams for the FinOps team."
  tags:
    - finops
    - cloud
    - amazon-web-services
    - microsoft-azure
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: finops-cost
      port: 8080
      tools:
        - name: generate-cost-alert
          description: "Given an AWS account ID and Azure subscription, compare cloud spend and post a summary to Teams."
          inputParameters:
            - name: aws_account_id
              in: body
              type: string
              description: "The AWS account ID."
            - name: azure_subscription_id
              in: body
              type: string
              description: "The Azure subscription ID."
            - name: period
              in: body
              type: string
              description: "The cost reporting period (YYYY-MM)."
            - name: teams_channel
              in: body
              type: string
              description: "The Microsoft Teams channel for FinOps alerts."
          steps:
            - name: get-aws-costs
              type: call
              call: "aws.get-cost-and-usage"
              with:
                account_id: "{{aws_account_id}}"
                period: "{{period}}"
            - name: get-azure-costs
              type: call
              call: "azure.get-cost-management"
              with:
                subscription_id: "{{azure_subscription_id}}"
                period: "{{period}}"
            - name: post-summary
              type: call
              call: "msteams.send-message"
              with:
                channel: "{{teams_channel}}"
                text: "Cloud Cost Report ({{period}}):\n- AWS Total: ${{get-aws-costs.total_cost}} | Top Service: {{get-aws-costs.top_service}} (${{get-aws-costs.top_service_cost}})\n- Azure Total: ${{get-azure-costs.total_cost}} | Top Service: {{get-azure-costs.top_service}} (${{get-azure-costs.top_service_cost}})\n- Combined: ${{get-aws-costs.total_cost + get-azure-costs.total_cost}}"
  consumes:
    - type: http
      namespace: aws
      baseUri: "https://ce.us-east-1.amazonaws.com"
      authentication:
        type: aws-sigv4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
      resources:
        - name: cost-usage
          path: "/"
          operations:
            - name: get-cost-and-usage
              method: POST
    - type: http
      namespace: azure
      baseUri: "https://management.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azure_mgmt_token"
      resources:
        - name: cost-management
          path: "/subscriptions/{{subscription_id}}/providers/Microsoft.CostManagement/query?api-version=2023-03-01"
          inputParameters:
            - name: subscription_id
              in: path
          operations:
            - name: get-cost-management
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/General/messages"
          inputParameters:
            - name: channel
              in: path
          operations:
            - name: send-message
              method: POST

Scans on-prem infrastructure, assesses cloud readiness in Snowflake, generates migration plan in Confluence, creates tasks in Jira, and notifies the migration team.

naftiko: "0.5"
info:
  label: "Cloud Migration Assessment Pipeline"
  description: "Scans on-prem infrastructure, assesses cloud readiness in Snowflake, generates migration plan in Confluence, creates tasks in Jira, and notifies the migration team."
  tags:
    - cloud-migration
    - snowflake
    - confluence
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: cloud-migration
      port: 8080
      tools:
        - name: cloud_migration_assessment_pipeline
          description: "Orchestrate cloud migration assessment pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: scan-infra
              type: call
              call: "servicenow.get-cmdb-assets"
              with:
                filter: "{{resource_id}}"
            - name: assess-readiness
              type: call
              call: "snowflake.run-query"
              with:
                sql_query: "CALL assess_cloud_readiness('{{resource_id}}')"
                warehouse: "MIGRATION_WH"
            - name: create-plan
              type: call
              call: "confluence.create-page"
              with:
                space: "MIGRATION"
                title: "Migration plan: {{resource_id}}"
            - name: create-tasks
              type: call
              call: "jira.create-issue"
              with:
                project: "MIG"
                summary: "Migration: {{resource_id}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://accenture.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://accenture.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://accenture.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: confluence-op
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: jira-op
              method: POST

Collects SonarQube metrics, tracks quality trends in Snowflake, creates improvement tasks in Jira, and notifies engineering leads.

naftiko: "0.5"
info:
  label: "Code Quality Governance Pipeline"
  description: "Collects SonarQube metrics, tracks quality trends in Snowflake, creates improvement tasks in Jira, and notifies engineering leads."
  tags:
    - quality
    - sonarqube
    - snowflake
    - jira
capability:
  exposes:
    - type: mcp
      namespace: quality
      port: 8080
      tools:
        - name: code_quality_governance_pipeline
          description: "Orchestrate code quality governance pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: fetch-data
              type: call
              call: "primary.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-data
              type: call
              call: "processor.transform"
              with:
                input: "{{fetch-data.result}}"
            - name: create-record
              type: call
              call: "servicenow.create-record"
              with:
                table: "records"
                data: "{{process-data.output}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "operations"
                text: "Workflow {{resource_id}} complete. Record: {{create-record.number}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://co.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: records
          path: "/table/records"
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/general/messages"
          operations:
            - name: send-message
              method: POST

Retrieves a specific Confluence page by ID from Accenture knowledge base.

naftiko: "0.5"
info:
  label: "Confluence Document Retrieval"
  description: "Retrieves a specific Confluence page by ID from Accenture knowledge base."
  tags:
    - collaboration
    - confluence
    - documentation
capability:
  exposes:
    - type: mcp
      namespace: knowledge
      port: 8080
      tools:
        - name: get-page
          description: "Retrieve Confluence page by ID."
          inputParameters:
            - name: page_id
              in: body
              type: string
              description: "The page_id to look up." 
          call: "confluence.get-page_id"
          with:
            page_id: "{{page_id}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://accenture.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: confluence_document_retrieval
              method: GET

Searches Confluence for knowledge base articles, extracts the top result, and shares it with the requester via Microsoft Teams message.

naftiko: "0.5"
info:
  label: "Confluence Knowledge Base Search and Share"
  description: "Searches Confluence for knowledge base articles, extracts the top result, and shares it with the requester via Microsoft Teams message."
  tags:
    - knowledge-management
    - documentation
    - confluence
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: km-search
      port: 8080
      tools:
        - name: search-and-share-knowledge
          description: "Search Confluence for articles matching a query and share the top result via Teams."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The search query string."
            - name: space_key
              in: body
              type: string
              description: "Optional Confluence space key to narrow the search."
            - name: requester_upn
              in: body
              type: string
              description: "The Microsoft UPN of the person requesting information."
          steps:
            - name: search-articles
              type: call
              call: "confluence.search"
              with:
                cql: "text ~ '{{query}}' and space = '{{space_key}}'"
            - name: share-result
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{requester_upn}}"
                text: "Knowledge Base Result for '{{query}}': {{search-articles.results[0].title}} — {{search-articles.results[0].url}} ({{search-articles.total_size}} total results found)"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://accenture.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: search
          path: "/search?cql={{cql}}"
          inputParameters:
            - name: cql
              in: query
          operations:
            - name: search
              method: GET
    - 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

On new consultant creation in Workday, provisions a SharePoint project folder, creates a ServiceNow onboarding request, and sends a Microsoft Teams welcome message with first-day logistics.

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

Aggregates timesheet data from Workday, calculates utilization in Snowflake, updates Power BI dashboards, and alerts managers about under-utilization.

naftiko: "0.5"
info:
  label: "Consultant Utilization Tracker"
  description: "Aggregates timesheet data from Workday, calculates utilization in Snowflake, updates Power BI dashboards, and alerts managers about under-utilization."
  tags:
    - workforce
    - workday
    - snowflake
    - power-bi
    - slack
capability:
  exposes:
    - type: mcp
      namespace: workforce
      port: 8080
      tools:
        - name: consultant_utilization_tracker
          description: "Orchestrate consultant utilization tracker workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-timesheets
              type: call
              call: "workday.get-timesheets"
              with:
                period: "{{resource_id}}"
            - name: calculate-util
              type: call
              call: "snowflake.run-query"
              with:
                sql_query: "CALL calc_utilization('{{resource_id}}')"
                warehouse: "HR_WH"
            - name: refresh-bi
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "consultant_utilization"
            - name: notify
              type: call
              call: "slack.send-message"
              with:
                channel: "workforce-mgmt"
                text: "Utilization report for {{resource_id}}: avg {{calculate-util.avg_util}}%"

  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/accenture"
      authentication:
        type: bearer
        token: "$secrets.workday_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: workday-op
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://accenture.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: powerbi-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Checks contract deliverables against milestones in Jira, validates SLAs from ServiceNow, calculates penalties in Snowflake, and reports to account management.

naftiko: "0.5"
info:
  label: "Contract Compliance Monitor"
  description: "Checks contract deliverables against milestones in Jira, validates SLAs from ServiceNow, calculates penalties in Snowflake, and reports to account management."
  tags:
    - compliance
    - jira
    - servicenow
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: contract_compliance_monitor
          description: "Orchestrate contract compliance monitor workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-milestones
              type: call
              call: "jira.get-project-milestones"
              with:
                project_key: "{{resource_id}}"
            - name: check-slas
              type: call
              call: "servicenow.get-sla-status"
              with:
                contract_id: "{{resource_id}}"
            - name: calculate-penalties
              type: call
              call: "snowflake.run-query"
              with:
                sql_query: "CALL calc_sla_penalties('{{resource_id}}')"
                warehouse: "COMPLIANCE_WH"
            - name: notify
              type: call
              call: "msteams.send-message"
              with:
                channel: "account-mgmt"
                text: "SLA report for {{resource_id}}: {{check-slas.met_count}}/{{check-slas.total}} met"

  consumes:
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: jira-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://accenture.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://accenture.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: msteams-op
              method: POST

Identifies cross-practice opportunities from Salesforce, matches expertise in Workday, creates collaboration proposals, and notifies practice leads.

naftiko: "0.5"
info:
  label: "Cross-Practice Collaboration Pipeline"
  description: "Identifies cross-practice opportunities from Salesforce, matches expertise in Workday, creates collaboration proposals, and notifies practice leads."
  tags:
    - collaboration
    - cross-practice
    - salesforce
    - workday
capability:
  exposes:
    - type: mcp
      namespace: collaboration
      port: 8080
      tools:
        - name: cross_practice_collaboration_pipeline
          description: "Orchestrate cross-practice collaboration pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: fetch-data
              type: call
              call: "primary.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-data
              type: call
              call: "processor.transform"
              with:
                input: "{{fetch-data.result}}"
            - name: create-record
              type: call
              call: "servicenow.create-record"
              with:
                table: "records"
                data: "{{process-data.output}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "operations"
                text: "Workflow {{resource_id}} complete. Record: {{create-record.number}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://co.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: records
          path: "/table/records"
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/general/messages"
          operations:
            - name: send-message
              method: POST

Runs data quality rules in Snowflake, logs results in Grafana, creates alerts for violations in PagerDuty, and publishes scorecard to Confluence.

naftiko: "0.5"
info:
  label: "Data Quality Monitoring Pipeline"
  description: "Runs data quality rules in Snowflake, logs results in Grafana, creates alerts for violations in PagerDuty, and publishes scorecard to Confluence."
  tags:
    - data-quality
    - snowflake
    - grafana
    - pagerduty
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: data-quality
      port: 8080
      tools:
        - name: data_quality_monitoring_pipeline
          description: "Orchestrate data quality monitoring pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: run-dq-rules
              type: call
              call: "snowflake.run-query"
              with:
                sql_query: "CALL run_dq_checks('{{resource_id}}')"
                warehouse: "DQ_WH"
            - name: log-metrics
              type: call
              call: "grafana.push-metrics"
              with:
                dashboard_uid: "data-quality"
                scores: "{{run-dq-rules.scores}}"
            - name: create-alerts
              type: call
              call: "pagerduty.create-incident"
              with:
                title: "DQ violation: {{resource_id}}"
                severity: "{{run-dq-rules.severity}}"
            - name: update-scorecard
              type: call
              call: "confluence.update-page"
              with:
                page_id: "dq_scorecard"
                content: "{{run-dq-rules.summary}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://accenture.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: grafana
      baseUri: "https://accenture-grafana.com/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_api_key" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: grafana-op
              method: POST
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: pagerduty-op
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://accenture.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: confluence-op
              method: POST

Fetches a Databricks job run status, and if the run failed, creates a Jira bug and notifies the data engineering team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Databricks Job Failure Handler"
  description: "Fetches a Databricks job run status, and if the run failed, creates a Jira bug and notifies the data engineering team in Microsoft Teams."
  tags:
    - data
    - etl
    - databricks
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: data-etl
      port: 8080
      tools:
        - name: handle-databricks-job-result
          description: "Check a Databricks job run status and create a Jira bug and Teams alert if it failed."
          inputParameters:
            - name: run_id
              in: body
              type: string
              description: "The Databricks job run ID."
            - name: jira_project_key
              in: body
              type: string
              description: "The Jira project key for data issues."
            - name: teams_channel
              in: body
              type: string
              description: "The Teams channel for data engineering alerts."
          steps:
            - name: get-run
              type: call
              call: "databricks.get-run"
              with:
                run_id: "{{run_id}}"
            - name: create-bug
              type: call
              call: "jira.create-issue"
              with:
                project_key: "{{jira_project_key}}"
                issuetype: "Bug"
                summary: "[Databricks] Job run {{run_id}} — {{get-run.state.result_state}}"
                description: "Run ID: {{run_id}}\nState: {{get-run.state.life_cycle_state}}\nResult: {{get-run.state.result_state}}\nStart: {{get-run.start_time}}\nCluster: {{get-run.cluster_instance.cluster_id}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "{{teams_channel}}"
                text: "Databricks Job Alert: Run {{run_id}} — {{get-run.state.result_state}}. Jira: {{create-bug.key}}."
  consumes:
    - type: http
      namespace: databricks
      baseUri: "https://accenture.cloud.databricks.com/api/2.1"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: runs
          path: "/jobs/runs/get?run_id={{run_id}}"
          inputParameters:
            - name: run_id
              in: query
          operations:
            - name: get-run
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/General/messages"
          inputParameters:
            - name: channel
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves APM service health from Datadog for Accenture managed applications.

naftiko: "0.5"
info:
  label: "Datadog APM Service Status"
  description: "Retrieves APM service health from Datadog for Accenture managed applications."
  tags:
    - observability
    - datadog
    - apm
capability:
  exposes:
    - type: mcp
      namespace: observability
      port: 8080
      tools:
        - name: get-service-health
          description: "Get service APM status."
          inputParameters:
            - name: service_name
              in: body
              type: string
              description: "The service_name to look up." 
          call: "datadog.get-service_name"
          with:
            service_name: "{{service_name}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
        header: "DD-API-KEY" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: datadog_apm_service_status
              method: GET

Fetches a Datadog monitor by ID and returns current status, last triggered time, and alert message. Used by operations consultants monitoring client infrastructure.

naftiko: "0.5"
info:
  label: "Datadog Monitor Alert Lookup"
  description: "Fetches a Datadog monitor by ID and returns current status, last triggered time, and alert message. Used by operations consultants monitoring client infrastructure."
  tags:
    - observability
    - monitoring
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: observability-alerts
      port: 8080
      tools:
        - name: get-monitor-status
          description: "Look up a Datadog monitor by ID and return its current state."
          inputParameters:
            - name: monitor_id
              in: body
              type: string
              description: "The Datadog monitor ID."
          call: "datadog.get-monitor"
          with:
            monitor_id: "{{monitor_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.name"
            - name: overall_state
              type: string
              mapping: "$.overall_state"
            - name: message
              type: string
              mapping: "$.message"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        header: "DD-API-KEY"
        key: "$secrets.datadog_api_key"
      resources:
        - name: monitors
          path: "/monitor/{{monitor_id}}"
          inputParameters:
            - name: monitor_id
              in: path
          operations:
            - name: get-monitor
              method: GET

Collects CI/CD metrics from GitHub, incident data from PagerDuty, deployment frequency from Datadog, scores maturity, and generates report in Confluence.

naftiko: "0.5"
info:
  label: "DevOps Maturity Assessment"
  description: "Collects CI/CD metrics from GitHub, incident data from PagerDuty, deployment frequency from Datadog, scores maturity, and generates report in Confluence."
  tags:
    - devops
    - github
    - pagerduty
    - datadog
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: devops
      port: 8080
      tools:
        - name: devops_maturity_assessment
          description: "Orchestrate devops maturity assessment workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-cicd-metrics
              type: call
              call: "github.get-workflow-metrics"
              with:
                org: "{{resource_id}}"
            - name: get-incidents
              type: call
              call: "pagerduty.get-analytics"
              with:
                service: "{{resource_id}}"
            - name: get-deployments
              type: call
              call: "datadog.get-deployment-frequency"
              with:
                service: "{{resource_id}}"
            - name: create-report
              type: call
              call: "confluence.create-page"
              with:
                space: "DEVOPS"
                title: "Maturity: {{resource_id}}"

  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: github-op
              method: POST
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: pagerduty-op
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
        header: "DD-API-KEY" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: datadog-op
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://accenture.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: confluence-op
              method: POST

Searches audit logs in Elasticsearch for Accenture compliance reviews.

naftiko: "0.5"
info:
  label: "Elasticsearch Audit Log Search"
  description: "Searches audit logs in Elasticsearch for Accenture compliance reviews."
  tags:
    - compliance
    - elasticsearch
    - audit
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: search-audit-logs
          description: "Search audit logs."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The query to look up." 
          call: "elasticsearch.get-query"
          with:
            query: "{{query}}"
  consumes:
    - type: http
      namespace: elasticsearch
      baseUri: "https://accenture-es.com:9200"
      authentication:
        type: bearer
        token: "$secrets.elasticsearch_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: elasticsearch_audit_log_search
              method: GET

Monitors consultant certifications from Workday, identifies expirations, creates renewal tasks, and notifies learning team.

naftiko: "0.5"
info:
  label: "Employee Certification Tracker"
  description: "Monitors consultant certifications from Workday, identifies expirations, creates renewal tasks, and notifies learning team."
  tags:
    - learning
    - certifications
    - workday
    - slack
capability:
  exposes:
    - type: mcp
      namespace: learning
      port: 8080
      tools:
        - name: employee_certification_tracker
          description: "Orchestrate employee certification tracker workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: fetch-data
              type: call
              call: "primary.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-data
              type: call
              call: "processor.transform"
              with:
                input: "{{fetch-data.result}}"
            - name: create-record
              type: call
              call: "servicenow.create-record"
              with:
                table: "records"
                data: "{{process-data.output}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "operations"
                text: "Workflow {{resource_id}} complete. Record: {{create-record.number}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://co.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: records
          path: "/table/records"
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/general/messages"
          operations:
            - name: send-message
              method: POST

Retrieves submitted expense reports from SAP Concur, validates against Workday cost center data, and opens a ServiceNow task for finance review when policy exceptions are detected.

naftiko: "0.5"
info:
  label: "Expense Report Compliance Pipeline"
  description: "Retrieves submitted expense reports from SAP Concur, validates against Workday cost center data, and opens a ServiceNow task for finance review when policy exceptions are detected."
  tags:
    - finance
    - expense
    - sap-concur
    - workday
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: finance-expense
      port: 8080
      tools:
        - name: review-expense-report
          description: "Given a Concur expense report ID and employee ID, fetch the report, validate cost center against Workday, and flag policy violations to ServiceNow."
          inputParameters:
            - name: expense_report_id
              in: body
              type: string
              description: "The SAP Concur expense report ID."
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID of the expense submitter."
          steps:
            - name: get-expense-report
              type: call
              call: "concur.get-expense-report"
              with:
                report_id: "{{expense_report_id}}"
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: open-review-task
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Expense policy review: {{get-expense-report.report_name}} — {{get-employee.full_name}}"
                description: "Report {{expense_report_id}} total: {{get-expense-report.total_amount}} {{get-expense-report.currency}}. Cost center: {{get-employee.cost_center}}. Submitted: {{get-expense-report.submit_date}}."
                assigned_group: "Finance_Audit"
                category: "expense_review"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://www.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: expense-reports
          path: "/expense/reports/{{report_id}}"
          inputParameters:
            - name: report_id
              in: path
          operations:
            - name: get-expense-report
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://accenture.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/task"
          operations:
            - name: create-task
              method: POST

Exports a Figma design file, uploads assets to SharePoint, creates a Jira development task with design links, and notifies the dev team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Figma Design Handoff Orchestrator"
  description: "Exports a Figma design file, uploads assets to SharePoint, creates a Jira development task with design links, and notifies the dev team in Microsoft Teams."
  tags:
    - design
    - handoff
    - figma
    - sharepoint
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: design-handoff
      port: 8080
      tools:
        - name: handoff-design-to-dev
          description: "Given a Figma file key and Jira project, export designs, upload to SharePoint, create a dev task, and notify the team."
          inputParameters:
            - name: figma_file_key
              in: body
              type: string
              description: "The Figma file key."
            - name: jira_project_key
              in: body
              type: string
              description: "The Jira project key for development tasks."
            - name: sharepoint_site_id
              in: body
              type: string
              description: "The SharePoint site ID for design assets."
            - name: teams_channel
              in: body
              type: string
              description: "The Microsoft Teams channel for design notifications."
          steps:
            - name: get-figma-file
              type: call
              call: "figma.get-file"
              with:
                file_key: "{{figma_file_key}}"
            - name: upload-assets
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "{{sharepoint_site_id}}"
                folder_path: "DesignAssets/{{get-figma-file.name}}"
            - name: create-dev-task
              type: call
              call: "jira.create-issue"
              with:
                project_key: "{{jira_project_key}}"
                issuetype: "Story"
                summary: "Implement design: {{get-figma-file.name}}"
                description: "Figma file: https://www.figma.com/file/{{figma_file_key}}\nAssets: {{upload-assets.url}}\nLast modified: {{get-figma-file.last_modified}}"
            - name: notify-dev-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "{{teams_channel}}"
                text: "Design Handoff: {{get-figma-file.name}} | Jira: {{create-dev-task.key}} | Figma: https://www.figma.com/file/{{figma_file_key}} | Assets: {{upload-assets.url}}"
  consumes:
    - type: http
      namespace: figma
      baseUri: "https://api.figma.com/v1"
      authentication:
        type: bearer
        token: "$secrets.figma_token"
      resources:
        - name: files
          path: "/files/{{file_key}}"
          inputParameters:
            - name: file_key
              in: path
          operations:
            - name: get-file
              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: create-folder
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/General/messages"
          inputParameters:
            - name: channel
              in: path
          operations:
            - name: send-message
              method: POST

Checks the status of a GitHub Actions workflow run for Accenture development projects.

naftiko: "0.5"
info:
  label: "GitHub Actions Run Status"
  description: "Checks the status of a GitHub Actions workflow run for Accenture development projects."
  tags:
    - devops
    - github
    - ci-cd
capability:
  exposes:
    - type: mcp
      namespace: ci-cd
      port: 8080
      tools:
        - name: get-run-status
          description: "Get workflow run status."
          inputParameters:
            - name: run_id
              in: body
              type: string
              description: "The run_id to look up." 
          call: "github.get-run_id"
          with:
            run_id: "{{run_id}}"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: github_actions_run_status
              method: GET

When a GitHub pull request is approved, merges it, triggers an Azure DevOps release pipeline, and posts the deployment status to Microsoft Teams.

naftiko: "0.5"
info:
  label: "GitHub Pull Request Merge and Deploy"
  description: "When a GitHub pull request is approved, merges it, triggers an Azure DevOps release pipeline, and posts the deployment status to Microsoft Teams."
  tags:
    - devops
    - cicd
    - github
    - azure-devops
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: devops-deploy
      port: 8080
      tools:
        - name: merge-and-deploy
          description: "Given a GitHub repo and PR number, merge the PR, trigger an Azure DevOps release, and notify the team in Microsoft Teams."
          inputParameters:
            - name: repo_owner
              in: body
              type: string
              description: "The GitHub repository owner."
            - name: repo_name
              in: body
              type: string
              description: "The GitHub repository name."
            - name: pr_number
              in: body
              type: string
              description: "The pull request number."
            - name: azdo_project
              in: body
              type: string
              description: "The Azure DevOps project name."
            - name: release_definition_id
              in: body
              type: string
              description: "The Azure DevOps release definition ID."
          steps:
            - name: merge-pr
              type: call
              call: "github.merge-pr"
              with:
                owner: "{{repo_owner}}"
                repo: "{{repo_name}}"
                pull_number: "{{pr_number}}"
                merge_method: "squash"
            - name: trigger-release
              type: call
              call: "azuredevops.create-release"
              with:
                project: "{{azdo_project}}"
                definition_id: "{{release_definition_id}}"
                description: "Automated release from PR #{{pr_number}} merge"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "deployments"
                text: "Deployment triggered: {{repo_owner}}/{{repo_name}} PR #{{pr_number}} merged. Release: {{trigger-release.id}} | Status: {{trigger-release.status}}"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: pull-requests
          path: "/repos/{{owner}}/{{repo}}/pulls/{{pull_number}}/merge"
          inputParameters:
            - name: owner
              in: path
            - name: repo
              in: path
            - name: pull_number
              in: path
          operations:
            - name: merge-pr
              method: PUT
    - type: http
      namespace: azuredevops
      baseUri: "https://vsrm.dev.azure.com/accenture"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azuredevops_pat"
      resources:
        - name: releases
          path: "/{{project}}/_apis/release/releases?api-version=7.0"
          inputParameters:
            - name: project
              in: path
          operations:
            - name: create-release
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/General/messages"
          inputParameters:
            - name: channel
              in: path
          operations:
            - name: send-message
              method: POST

Fetches a Google Analytics traffic summary for a given property and date range, logs the report in Salesforce as an activity, and notifies the marketing team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Google Analytics Traffic Report and Log"
  description: "Fetches a Google Analytics traffic summary for a given property and date range, logs the report in Salesforce as an activity, and notifies the marketing team in Microsoft Teams."
  tags:
    - marketing
    - analytics
    - google-analytics
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: marketing-analytics
      port: 8080
      tools:
        - name: get-traffic-summary-and-log
          description: "Fetch a Google Analytics traffic summary, log in Salesforce, and notify Teams."
          inputParameters:
            - name: property_id
              in: body
              type: string
              description: "The Google Analytics property ID."
            - name: start_date
              in: body
              type: string
              description: "Report start date (YYYY-MM-DD)."
            - name: end_date
              in: body
              type: string
              description: "Report end date (YYYY-MM-DD)."
            - name: salesforce_account_id
              in: body
              type: string
              description: "The Salesforce account ID for the client."
            - name: teams_channel
              in: body
              type: string
              description: "The Teams channel for marketing reports."
          steps:
            - name: run-report
              type: call
              call: "googleanalytics.run-report"
              with:
                property_id: "{{property_id}}"
                start_date: "{{start_date}}"
                end_date: "{{end_date}}"
            - name: log-in-salesforce
              type: call
              call: "salesforce.create-task"
              with:
                account_id: "{{salesforce_account_id}}"
                subject: "GA Traffic Report: {{start_date}} to {{end_date}}"
                description: "Sessions: {{run-report.total_sessions}}. Users: {{run-report.total_users}}. Bounce Rate: {{run-report.bounce_rate}}%."
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "{{teams_channel}}"
                text: "GA Report ({{start_date}} - {{end_date}}): Sessions: {{run-report.total_sessions}} | Users: {{run-report.total_users}} | Bounce Rate: {{run-report.bounce_rate}}%"
  consumes:
    - type: http
      namespace: googleanalytics
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: run-report
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://accenture.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: tasks
          path: "/sobjects/Task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/General/messages"
          inputParameters:
            - name: channel
              in: path
          operations:
            - name: send-message
              method: POST

Shares a Google Drive document with specified recipients. Used by consultants to share deliverables with client stakeholders in Google Workspace environments.

naftiko: "0.5"
info:
  label: "Google Drive Document Sharing"
  description: "Shares a Google Drive document with specified recipients. Used by consultants to share deliverables with client stakeholders in Google Workspace environments."
  tags:
    - collaboration
    - content-management
    - google-drive
capability:
  exposes:
    - type: mcp
      namespace: collab-sharing
      port: 8080
      tools:
        - name: share-document
          description: "Share a Google Drive file with a list of email recipients."
          inputParameters:
            - name: file_id
              in: body
              type: string
              description: "The Google Drive file ID."
            - name: email
              in: body
              type: string
              description: "The recipient email address."
            - name: role
              in: body
              type: string
              description: "The permission role (reader, writer, commenter)."
          call: "googledrive.create-permission"
          with:
            file_id: "{{file_id}}"
            email: "{{email}}"
            role: "{{role}}"
  consumes:
    - type: http
      namespace: googledrive
      baseUri: "https://www.googleapis.com/drive/v3"
      authentication:
        type: bearer
        token: "$secrets.google_drive_token"
      resources:
        - name: permissions
          path: "/files/{{file_id}}/permissions"
          inputParameters:
            - name: file_id
              in: path
          operations:
            - name: create-permission
              method: POST

Creates a Grafana dashboard snapshot for sharing with client stakeholders. Used by SRE consultants to produce point-in-time observability views.

naftiko: "0.5"
info:
  label: "Grafana Dashboard Snapshot"
  description: "Creates a Grafana dashboard snapshot for sharing with client stakeholders. Used by SRE consultants to produce point-in-time observability views."
  tags:
    - observability
    - monitoring
    - grafana
capability:
  exposes:
    - type: mcp
      namespace: observability-dashboards
      port: 8080
      tools:
        - name: create-dashboard-snapshot
          description: "Create a Grafana dashboard snapshot by dashboard UID."
          inputParameters:
            - name: dashboard_uid
              in: body
              type: string
              description: "The Grafana dashboard UID."
            - name: expires_seconds
              in: body
              type: number
              description: "Snapshot expiry in seconds."
          call: "grafana.create-snapshot"
          with:
            dashboard_uid: "{{dashboard_uid}}"
            expires: "{{expires_seconds}}"
  consumes:
    - type: http
      namespace: grafana
      baseUri: "https://accenture.grafana.net/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_token"
      resources:
        - name: snapshots
          path: "/snapshots"
          operations:
            - name: create-snapshot
              method: POST

Queries specific panel data from Grafana dashboards at Accenture.

naftiko: "0.5"
info:
  label: "Grafana Panel Data Query"
  description: "Queries specific panel data from Grafana dashboards at Accenture."
  tags:
    - monitoring
    - grafana
    - metrics
capability:
  exposes:
    - type: mcp
      namespace: monitoring
      port: 8080
      tools:
        - name: query-panel
          description: "Query Grafana panel data."
          inputParameters:
            - name: panel_id
              in: body
              type: string
              description: "The panel_id to look up." 
          call: "grafana.get-panel_id"
          with:
            panel_id: "{{panel_id}}"
  consumes:
    - type: http
      namespace: grafana
      baseUri: "https://accenture-grafana.com/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_api_key" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: grafana_panel_data_query
              method: GET

Analyzes incident patterns from ServiceNow, identifies root causes in Snowflake, creates problem tickets, and notifies service delivery.

naftiko: "0.5"
info:
  label: "Incident Trend Analysis Pipeline"
  description: "Analyzes incident patterns from ServiceNow, identifies root causes in Snowflake, creates problem tickets, and notifies service delivery."
  tags:
    - incident-analysis
    - servicenow
    - snowflake
    - jira
capability:
  exposes:
    - type: mcp
      namespace: incident-analysis
      port: 8080
      tools:
        - name: incident_trend_analysis_pipeline
          description: "Orchestrate incident trend analysis pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: fetch-data
              type: call
              call: "primary.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-data
              type: call
              call: "processor.transform"
              with:
                input: "{{fetch-data.result}}"
            - name: create-record
              type: call
              call: "servicenow.create-record"
              with:
                table: "records"
                data: "{{process-data.output}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "operations"
                text: "Workflow {{resource_id}} complete. Record: {{create-record.number}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://co.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: records
          path: "/table/records"
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/general/messages"
          operations:
            - name: send-message
              method: POST

Triggers an Informatica data quality job, fetches results, and creates a Jira task for any data quality exceptions that need manual remediation.

naftiko: "0.5"
info:
  label: "Informatica Data Quality Pipeline"
  description: "Triggers an Informatica data quality job, fetches results, and creates a Jira task for any data quality exceptions that need manual remediation."
  tags:
    - data
    - data-quality
    - informatica
    - jira
capability:
  exposes:
    - type: mcp
      namespace: data-quality
      port: 8080
      tools:
        - name: run-data-quality-check
          description: "Trigger an Informatica DQ job and create Jira tasks for quality exceptions."
          inputParameters:
            - name: job_name
              in: body
              type: string
              description: "The Informatica job name."
            - name: connection_name
              in: body
              type: string
              description: "The Informatica connection to use."
            - name: jira_project_key
              in: body
              type: string
              description: "The Jira project key for data quality issues."
          steps:
            - name: trigger-job
              type: call
              call: "informatica.start-job"
              with:
                job_name: "{{job_name}}"
                connection: "{{connection_name}}"
            - name: create-dq-ticket
              type: call
              call: "jira.create-issue"
              with:
                project_key: "{{jira_project_key}}"
                issuetype: "Task"
                summary: "[Data Quality] Exceptions in {{job_name}}"
                description: "Informatica job {{trigger-job.job_id}} completed. Status: {{trigger-job.status}}. Exception count: {{trigger-job.exception_count}}. Review results at {{trigger-job.results_url}}."
  consumes:
    - type: http
      namespace: informatica
      baseUri: "https://dm-us.informaticacloud.com/saas/api/v2"
      authentication:
        type: bearer
        token: "$secrets.informatica_token"
      resources:
        - name: jobs
          path: "/job"
          operations:
            - name: start-job
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Collects cloud costs from AWS and Azure, allocates to projects in Snowflake, generates chargeback reports in Power BI, and notifies project leads.

naftiko: "0.5"
info:
  label: "Infrastructure Cost Chargeback Pipeline"
  description: "Collects cloud costs from AWS and Azure, allocates to projects in Snowflake, generates chargeback reports in Power BI, and notifies project leads."
  tags:
    - finops
    - snowflake
    - power-bi
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: finops
      port: 8080
      tools:
        - name: infrastructure_cost_chargeback_pipeline
          description: "Orchestrate infrastructure cost chargeback pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-cloud-costs
              type: call
              call: "snowflake.run-query"
              with:
                sql_query: "SELECT * FROM cloud_costs WHERE period = '{{resource_id}}'"
                warehouse: "FINOPS_WH"
            - name: allocate-costs
              type: call
              call: "snowflake.run-query"
              with:
                sql_query: "CALL allocate_chargeback('{{resource_id}}')"
                warehouse: "FINOPS_WH"
            - name: refresh-reports
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "cost_chargeback"
            - name: notify
              type: call
              call: "msteams.send-message"
              with:
                channel: "finops"
                text: "Chargeback report for {{resource_id}} published. Total: {{allocate-costs.total}}"

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://accenture.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: powerbi-op
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: msteams-op
              method: POST

Receives invoice dispute from client portal, validates against SAP records, creates resolution workflow in ServiceNow, notifies finance, and updates Salesforce.

naftiko: "0.5"
info:
  label: "Invoice Dispute Resolution Pipeline"
  description: "Receives invoice dispute from client portal, validates against SAP records, creates resolution workflow in ServiceNow, notifies finance, and updates Salesforce."
  tags:
    - finance
    - sap
    - servicenow
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: finance
      port: 8080
      tools:
        - name: invoice_dispute_resolution_pipeline
          description: "Orchestrate invoice dispute resolution pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-dispute
              type: call
              call: "salesforce.get-case"
              with:
                case_id: "{{resource_id}}"
            - name: validate-invoice
              type: call
              call: "sap.get-invoice"
              with:
                invoice_id: "{{get-dispute.invoice_id}}"
            - name: create-resolution
              type: call
              call: "servicenow.create-request"
              with:
                short_description: "Invoice dispute: {{resource_id}}"
            - name: notify
              type: call
              call: "msteams.send-message"
              with:
                channel: "finance-ops"
                text: "Dispute {{resource_id}} for invoice {{get-dispute.invoice_id}}. Resolution: {{create-resolution.number}}"

  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://accenture.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://accenture-sap.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: sap-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://accenture.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: msteams-op
              method: POST

Queries the Jira backlog for unresolved items in an Accenture delivery project.

naftiko: "0.5"
info:
  label: "Jira Backlog Query"
  description: "Queries the Jira backlog for unresolved items in an Accenture delivery project."
  tags:
    - agile
    - jira
    - backlog
capability:
  exposes:
    - type: mcp
      namespace: delivery
      port: 8080
      tools:
        - name: query-backlog
          description: "Get backlog items by project."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "The project_key to look up." 
          call: "jira.get-project_key"
          with:
            project_key: "{{project_key}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: jira_backlog_query
              method: GET

Retrieves a Jira issue by key and returns summary, status, assignee, and priority. Used by project managers to quickly check issue status.

naftiko: "0.5"
info:
  label: "Jira Issue Lookup"
  description: "Retrieves a Jira issue by key and returns summary, status, assignee, and priority. Used by project managers to quickly check issue status."
  tags:
    - project-management
    - agile
    - jira
capability:
  exposes:
    - type: mcp
      namespace: pm-agile
      port: 8080
      tools:
        - name: get-jira-issue
          description: "Look up a Jira issue by key. Returns summary, status, assignee, and priority."
          inputParameters:
            - name: issue_key
              in: body
              type: string
              description: "The Jira issue key (e.g., ENG-1234)."
          call: "jira.get-issue"
          with:
            issue_key: "{{issue_key}}"
          outputParameters:
            - name: summary
              type: string
              mapping: "$.fields.summary"
            - name: status
              type: string
              mapping: "$.fields.status.name"
            - name: assignee
              type: string
              mapping: "$.fields.assignee.displayName"
            - name: priority
              type: string
              mapping: "$.fields.priority.name"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue/{{issue_key}}"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: get-issue
              method: GET

Extracts project learnings from Confluence, classifies using AI, tags in the knowledge base, creates reusable assets, and notifies the CoE team in Slack.

naftiko: "0.5"
info:
  label: "Knowledge Harvesting Pipeline"
  description: "Extracts project learnings from Confluence, classifies using AI, tags in the knowledge base, creates reusable assets, and notifies the CoE team in Slack."
  tags:
    - knowledge-mgmt
    - confluence
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: knowledge-mgmt
      port: 8080
      tools:
        - name: knowledge_harvesting_pipeline
          description: "Orchestrate knowledge harvesting pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: extract-learnings
              type: call
              call: "confluence.search-pages"
              with:
                query: "lessons learned {{resource_id}}"
            - name: classify
              type: call
              call: "snowflake.run-query"
              with:
                sql_query: "CALL classify_knowledge('{{resource_id}}')"
                warehouse: "KM_WH"
            - name: tag-assets
              type: call
              call: "confluence.update-labels"
              with:
                page_ids: "{{extract-learnings.page_ids}}"
                labels: "{{classify.tags}}"
            - name: notify
              type: call
              call: "slack.send-message"
              with:
                channel: "knowledge-coe"
                text: "Knowledge harvested for {{resource_id}}: {{extract-learnings.count}} items classified"

  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://accenture.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: confluence-op
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://accenture.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Queries Azure Kubernetes Service for node and pod health status. Used by cloud engineers to monitor managed Kubernetes clusters for client workloads.

naftiko: "0.5"
info:
  label: "Kubernetes Cluster Health Check"
  description: "Queries Azure Kubernetes Service for node and pod health status. Used by cloud engineers to monitor managed Kubernetes clusters for client workloads."
  tags:
    - cloud
    - infrastructure
    - azure-kubernetes-service
capability:
  exposes:
    - type: mcp
      namespace: cloud-k8s
      port: 8080
      tools:
        - name: get-cluster-health
          description: "Fetch AKS cluster health by subscription, resource group, and cluster name."
          inputParameters:
            - name: subscription_id
              in: body
              type: string
              description: "The Azure subscription ID."
            - name: resource_group
              in: body
              type: string
              description: "The Azure resource group name."
            - name: cluster_name
              in: body
              type: string
              description: "The AKS cluster name."
          call: "aks.get-cluster"
          with:
            subscription_id: "{{subscription_id}}"
            resource_group: "{{resource_group}}"
            cluster_name: "{{cluster_name}}"
          outputParameters:
            - name: provisioning_state
              type: string
              mapping: "$.properties.provisioningState"
            - name: kubernetes_version
              type: string
              mapping: "$.properties.kubernetesVersion"
            - name: node_count
              type: string
              mapping: "$.properties.agentPoolProfiles[0].count"
  consumes:
    - type: http
      namespace: aks
      baseUri: "https://management.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azure_mgmt_token"
      resources:
        - name: clusters
          path: "/subscriptions/{{subscription_id}}/resourceGroups/{{resource_group}}/providers/Microsoft.ContainerService/managedClusters/{{cluster_name}}?api-version=2023-10-01"
          inputParameters:
            - name: subscription_id
              in: path
            - name: resource_group
              in: path
            - name: cluster_name
              in: path
          operations:
            - name: get-cluster
              method: GET

Aggregates service health from Datadog, SLA metrics from ServiceNow, generates reports in Power BI, and notifies delivery leads.

naftiko: "0.5"
info:
  label: "Managed Services Health Dashboard"
  description: "Aggregates service health from Datadog, SLA metrics from ServiceNow, generates reports in Power BI, and notifies delivery leads."
  tags:
    - managed-services
    - datadog
    - servicenow
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: managed-services
      port: 8080
      tools:
        - name: managed_services_health_dashboard
          description: "Orchestrate managed services health dashboard workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: fetch-data
              type: call
              call: "primary.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-data
              type: call
              call: "processor.transform"
              with:
                input: "{{fetch-data.result}}"
            - name: create-record
              type: call
              call: "servicenow.create-record"
              with:
                table: "records"
                data: "{{process-data.output}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "operations"
                text: "Workflow {{resource_id}} complete. Record: {{create-record.number}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://co.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: records
          path: "/table/records"
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/general/messages"
          operations:
            - name: send-message
              method: POST

Creates an Adobe Campaign workflow, sets up Google Tag Manager tracking, configures Salesforce Marketing Cloud email send, and posts the launch status to Microsoft Teams.

naftiko: "0.5"
info:
  label: "Marketing Campaign Launch Orchestrator"
  description: "Creates an Adobe Campaign workflow, sets up Google Tag Manager tracking, configures Salesforce Marketing Cloud email send, and posts the launch status to Microsoft Teams."
  tags:
    - marketing
    - campaign
    - adobe-campaign
    - google-tag-manager
    - salesforce-marketing-cloud
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: marketing-launch
      port: 8080
      tools:
        - name: launch-marketing-campaign
          description: "Given campaign details, orchestrate the launch across Adobe Campaign, Google Tag Manager, Salesforce Marketing Cloud, and notify via Teams."
          inputParameters:
            - name: campaign_name
              in: body
              type: string
              description: "The marketing campaign name."
            - name: target_audience
              in: body
              type: string
              description: "The target audience segment identifier."
            - name: gtm_container_id
              in: body
              type: string
              description: "The Google Tag Manager container ID."
            - name: teams_channel
              in: body
              type: string
              description: "The Microsoft Teams channel for marketing updates."
          steps:
            - name: create-adobe-workflow
              type: call
              call: "adobecampaign.create-workflow"
              with:
                name: "{{campaign_name}}"
                audience_segment: "{{target_audience}}"
            - name: create-gtm-tag
              type: call
              call: "gtm.create-tag"
              with:
                container_id: "{{gtm_container_id}}"
                tag_name: "{{campaign_name}}_tracking"
                event_name: "campaign_{{campaign_name}}"
            - name: create-sfmc-send
              type: call
              call: "sfmc.create-email-send"
              with:
                campaign_name: "{{campaign_name}}"
                audience: "{{target_audience}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "{{teams_channel}}"
                text: "Campaign Launched: {{campaign_name}}\n- Adobe workflow: {{create-adobe-workflow.workflow_id}}\n- GTM tag: {{create-gtm-tag.tag_id}}\n- SFMC send: {{create-sfmc-send.send_id}}"
  consumes:
    - type: http
      namespace: adobecampaign
      baseUri: "https://mc.adobe.io/accenture/campaign"
      authentication:
        type: bearer
        token: "$secrets.adobe_campaign_token"
      inputParameters:
        - name: x-api-key
          in: header
          value: "$secrets.adobe_api_key"
      resources:
        - name: workflows
          path: "/workflow/create"
          operations:
            - name: create-workflow
              method: POST
    - type: http
      namespace: gtm
      baseUri: "https://www.googleapis.com/tagmanager/v2"
      authentication:
        type: bearer
        token: "$secrets.google_tagmanager_token"
      resources:
        - name: tags
          path: "/accounts/accenture/containers/{{container_id}}/workspaces/default/tags"
          inputParameters:
            - name: container_id
              in: path
          operations:
            - name: create-tag
              method: POST
    - type: http
      namespace: sfmc
      baseUri: "https://accenture.rest.marketingcloudapis.com/messaging/v1"
      authentication:
        type: bearer
        token: "$secrets.sfmc_token"
      resources:
        - name: email-sends
          path: "/messageDefinitionSends"
          operations:
            - name: create-email-send
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/General/messages"
          inputParameters:
            - name: channel
              in: path
          operations:
            - name: send-message
              method: POST

Creates a Microsoft Teams meeting, adds participants from Workday org data, and sends a calendar invite via Microsoft Outlook. Used for automated client meeting scheduling.

naftiko: "0.5"
info:
  label: "Microsoft Teams Meeting Scheduler"
  description: "Creates a Microsoft Teams meeting, adds participants from Workday org data, and sends a calendar invite via Microsoft Outlook. Used for automated client meeting scheduling."
  tags:
    - collaboration
    - scheduling
    - microsoft-teams
    - workday
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: collab-scheduling
      port: 8080
      tools:
        - name: schedule-client-meeting
          description: "Given a list of participant worker IDs, create a Teams meeting and send Outlook invites."
          inputParameters:
            - name: meeting_subject
              in: body
              type: string
              description: "The meeting subject line."
            - name: start_time
              in: body
              type: string
              description: "Meeting start time (ISO 8601)."
            - name: end_time
              in: body
              type: string
              description: "Meeting end time (ISO 8601)."
            - name: organizer_worker_id
              in: body
              type: string
              description: "The Workday worker ID of the organizer."
            - name: participant_emails
              in: body
              type: string
              description: "Comma-separated participant email addresses."
          steps:
            - name: get-organizer
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{organizer_worker_id}}"
            - name: create-meeting
              type: call
              call: "msteams.create-online-meeting"
              with:
                subject: "{{meeting_subject}}"
                startDateTime: "{{start_time}}"
                endDateTime: "{{end_time}}"
                organizer: "{{get-organizer.work_email}}"
            - name: send-invite
              type: call
              call: "outlook.send-mail"
              with:
                to: "{{participant_emails}}"
                subject: "Meeting Invite: {{meeting_subject}}"
                body: "You are invited to: {{meeting_subject}}\nTime: {{start_time}} - {{end_time}}\nJoin link: {{create-meeting.join_url}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: online-meetings
          path: "/users/{{organizer}}/onlineMeetings"
          inputParameters:
            - name: organizer
              in: path
          operations:
            - name: create-online-meeting
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-mail
              method: POST

Deploys a MuleSoft API to CloudHub, registers it in the API Manager, and posts the deployment status to Microsoft Teams.

naftiko: "0.5"
info:
  label: "MuleSoft API Deployment Pipeline"
  description: "Deploys a MuleSoft API to CloudHub, registers it in the API Manager, and posts the deployment status to Microsoft Teams."
  tags:
    - integration
    - api-management
    - mulesoft
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: integration-deploy
      port: 8080
      tools:
        - name: deploy-mulesoft-api
          description: "Given an application name and environment, deploy to CloudHub and register in API Manager."
          inputParameters:
            - name: app_name
              in: body
              type: string
              description: "The MuleSoft application name."
            - name: environment
              in: body
              type: string
              description: "The target environment (e.g., sandbox, production)."
            - name: api_version
              in: body
              type: string
              description: "The API version to register."
            - name: teams_channel
              in: body
              type: string
              description: "The Microsoft Teams channel for deployment notifications."
          steps:
            - name: deploy-app
              type: call
              call: "mulesoft.deploy-application"
              with:
                app_name: "{{app_name}}"
                environment: "{{environment}}"
            - name: register-api
              type: call
              call: "mulesoft.register-api"
              with:
                api_name: "{{app_name}}"
                version: "{{api_version}}"
                environment: "{{environment}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "{{teams_channel}}"
                text: "MuleSoft Deployment: {{app_name}} v{{api_version}} deployed to {{environment}}. App status: {{deploy-app.status}}. API ID: {{register-api.api_id}}"
  consumes:
    - type: http
      namespace: mulesoft
      baseUri: "https://anypoint.mulesoft.com/accounts/api"
      authentication:
        type: bearer
        token: "$secrets.mulesoft_token"
      resources:
        - name: applications
          path: "/v2/applications"
          operations:
            - name: deploy-application
              method: POST
        - name: apis
          path: "/v1/organizations/accenture/environments/{{environment}}/apis"
          inputParameters:
            - name: environment
              in: path
          operations:
            - name: register-api
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/General/messages"
          inputParameters:
            - name: channel
              in: path
          operations:
            - name: send-message
              method: POST

Initiates DR failover test, validates services in target region, runs health checks via Datadog, generates report in Confluence, and notifies SRE team.

naftiko: "0.5"
info:
  label: "Multi-Cloud Disaster Recovery Test"
  description: "Initiates DR failover test, validates services in target region, runs health checks via Datadog, generates report in Confluence, and notifies SRE team."
  tags:
    - disaster-recovery
    - datadog
    - confluence
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: disaster-recovery
      port: 8080
      tools:
        - name: multi_cloud_disaster_recovery_test
          description: "Orchestrate multi-cloud disaster recovery test workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: initiate-failover
              type: call
              call: "terraform.apply-plan"
              with:
                workspace: "dr_{{resource_id}}"
            - name: validate-services
              type: call
              call: "datadog.get-service-checks"
              with:
                tag: "dr:{{resource_id}}"
            - name: generate-report
              type: call
              call: "confluence.create-page"
              with:
                space: "SRE"
                title: "DR test: {{resource_id}}"
            - name: notify
              type: call
              call: "msteams.send-message"
              with:
                channel: "sre-team"
                text: "DR test {{resource_id}}: {{validate-services.healthy_count}}/{{validate-services.total}} services healthy"

  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
        header: "DD-API-KEY" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: datadog-op
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://accenture.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: confluence-op
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: msteams-op
              method: POST

Checks Okta group membership for access verification at Accenture.

naftiko: "0.5"
info:
  label: "Okta Group Membership Check"
  description: "Checks Okta group membership for access verification at Accenture."
  tags:
    - security
    - okta
    - access-control
capability:
  exposes:
    - type: mcp
      namespace: identity
      port: 8080
      tools:
        - name: check-group
          description: "Check user group membership."
          inputParameters:
            - name: user_email
              in: body
              type: string
              description: "The user_email to look up." 
          call: "okta.get-user_email"
          with:
            user_email: "{{user_email}}"
  consumes:
    - type: http
      namespace: okta
      baseUri: "https://accenture.okta.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.okta_api_token"
        header: "Authorization" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: okta_group_membership_check
              method: GET

Retrieves an Oracle Financials journal entry by batch name. Used by finance transformation consultants to audit GL postings.

naftiko: "0.5"
info:
  label: "Oracle Cloud ERP Journal Entry Lookup"
  description: "Retrieves an Oracle Financials journal entry by batch name. Used by finance transformation consultants to audit GL postings."
  tags:
    - finance
    - erp
    - oracle
capability:
  exposes:
    - type: mcp
      namespace: finance-erp
      port: 8080
      tools:
        - name: get-journal-entry
          description: "Look up an Oracle Financials journal entry by batch name."
          inputParameters:
            - name: journal_batch_name
              in: body
              type: string
              description: "The GL journal batch name."
          call: "oracle.get-journal"
          with:
            batch_name: "{{journal_batch_name}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.Status"
            - name: total_debit
              type: string
              mapping: "$.TotalDebit"
            - name: total_credit
              type: string
              mapping: "$.TotalCredit"
            - name: period
              type: string
              mapping: "$.AccountingPeriod"
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://accenture.oraclecloud.com/fscmRestApi/resources/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: journals
          path: "/generalLedgerJournals?q=JournalBatchName={{batch_name}}"
          inputParameters:
            - name: batch_name
              in: query
          operations:
            - name: get-journal
              method: GET

Retrieves the operational status of a PagerDuty service at Accenture.

naftiko: "0.5"
info:
  label: "PagerDuty Service Status"
  description: "Retrieves the operational status of a PagerDuty service at Accenture."
  tags:
    - devops
    - pagerduty
    - operational-status
capability:
  exposes:
    - type: mcp
      namespace: operations
      port: 8080
      tools:
        - name: get-service-status
          description: "Get service operational status."
          inputParameters:
            - name: service_id
              in: body
              type: string
              description: "The service_id to look up." 
          call: "pagerduty.get-service_id"
          with:
            service_id: "{{service_id}}"
  consumes:
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: pagerduty_service_status
              method: GET

Identifies repetitive ops tasks from ServiceNow, measures toil in Snowflake, creates automation tasks in Jira, and tracks reduction.

naftiko: "0.5"
info:
  label: "Platform SRE Toil Reducer"
  description: "Identifies repetitive ops tasks from ServiceNow, measures toil in Snowflake, creates automation tasks in Jira, and tracks reduction."
  tags:
    - sre
    - automation
    - servicenow
    - jira
capability:
  exposes:
    - type: mcp
      namespace: sre
      port: 8080
      tools:
        - name: platform_sre_toil_reducer
          description: "Orchestrate platform sre toil reducer workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: fetch-data
              type: call
              call: "primary.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-data
              type: call
              call: "processor.transform"
              with:
                input: "{{fetch-data.result}}"
            - name: create-record
              type: call
              call: "servicenow.create-record"
              with:
                table: "records"
                data: "{{process-data.output}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "operations"
                text: "Workflow {{resource_id}} complete. Record: {{create-record.number}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://co.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: records
          path: "/table/records"
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/general/messages"
          operations:
            - name: send-message
              method: POST

Triggers a dataset refresh in Power BI and notifies the analytics team in Microsoft Teams when the refresh completes. Used by analytics consultants to ensure dashboards have current data before client presentations.

naftiko: "0.5"
info:
  label: "Power BI Report Refresh and Notify"
  description: "Triggers a dataset refresh in Power BI and notifies the analytics team in Microsoft Teams when the refresh completes. Used by analytics consultants to ensure dashboards have current data before client presentations."
  tags:
    - analytics
    - bi
    - power-bi
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: analytics-bi
      port: 8080
      tools:
        - name: refresh-dataset-and-notify
          description: "Trigger a Power BI dataset refresh and notify the analytics team in Microsoft Teams."
          inputParameters:
            - name: group_id
              in: body
              type: string
              description: "The Power BI workspace (group) ID."
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID."
            - name: teams_channel
              in: body
              type: string
              description: "The Microsoft Teams channel for analytics updates."
          steps:
            - name: trigger-refresh
              type: call
              call: "powerbi.trigger-refresh"
              with:
                group_id: "{{group_id}}"
                dataset_id: "{{dataset_id}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "{{teams_channel}}"
                text: "Power BI dataset {{dataset_id}} refresh triggered. Request ID: {{trigger-refresh.request_id}}. Status: {{trigger-refresh.status}}."
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/groups/{{group_id}}/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: group_id
              in: path
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/General/messages"
          inputParameters:
            - name: channel
              in: path
          operations:
            - name: send-message
              method: POST

Triggers a refresh of a Power BI dataset for Accenture client reporting.

naftiko: "0.5"
info:
  label: "Power BI Report Refresh Trigger"
  description: "Triggers a refresh of a Power BI dataset for Accenture client reporting."
  tags:
    - analytics
    - power-bi
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: trigger-refresh
          description: "Trigger dataset refresh."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "The dataset_id to look up." 
          call: "powerbi.get-dataset_id"
          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: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: power_bi_report_refresh
              method: GET

When a SAP Ariba requisition exceeds a spend threshold, routes for manager approval via Workday and notifies the requestor in Microsoft Teams with approval status.

naftiko: "0.5"
info:
  label: "Procurement Requisition Approval Router"
  description: "When a SAP Ariba requisition exceeds a spend threshold, routes for manager approval via Workday and notifies the requestor in Microsoft Teams with approval status."
  tags:
    - procurement
    - sap-ariba
    - workday
    - microsoft-teams
    - approval
capability:
  exposes:
    - type: mcp
      namespace: procurement-approval
      port: 8080
      tools:
        - name: route-requisition-approval
          description: "Given an Ariba requisition ID, resolve the approver from Workday, and notify both parties in Microsoft Teams."
          inputParameters:
            - name: requisition_id
              in: body
              type: string
              description: "The SAP Ariba requisition identifier."
            - name: requestor_employee_id
              in: body
              type: string
              description: "The Workday employee ID of the requestor."
            - name: spend_amount
              in: body
              type: number
              description: "The total spend amount on the requisition."
          steps:
            - name: get-requisition
              type: call
              call: "ariba.get-requisition"
              with:
                requisition_id: "{{requisition_id}}"
            - name: get-requestor
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{requestor_employee_id}}"
            - name: get-manager
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{get-requestor.manager_id}}"
            - name: notify-approver
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-manager.work_email}}"
                text: "Approval Required: Ariba requisition {{requisition_id}} from {{get-requestor.full_name}} for ${{spend_amount}}. Vendor: {{get-requisition.vendor_name}}. Please review: {{get-requisition.approval_url}}"
            - name: notify-requestor
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-requestor.work_email}}"
                text: "Your requisition {{requisition_id}} (${{spend_amount}}) has been routed to {{get-manager.full_name}} for approval."
  consumes:
    - type: http
      namespace: ariba
      baseUri: "https://openapi.ariba.com/api/purchase-req/v1"
      authentication:
        type: bearer
        token: "$secrets.ariba_token"
      resources:
        - name: requisitions
          path: "/requisitions/{{requisition_id}}"
          inputParameters:
            - name: requisition_id
              in: path
          operations:
            - name: get-requisition
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: 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

Analyzes project portfolio metrics from Salesforce, calculates ROI in Snowflake, identifies optimization opportunities, and notifies PMO.

naftiko: "0.5"
info:
  label: "Project Portfolio Optimization Pipeline"
  description: "Analyzes project portfolio metrics from Salesforce, calculates ROI in Snowflake, identifies optimization opportunities, and notifies PMO."
  tags:
    - portfolio
    - optimization
    - salesforce
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: portfolio
      port: 8080
      tools:
        - name: project_portfolio_optimization_pipeline
          description: "Orchestrate project portfolio optimization pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: fetch-data
              type: call
              call: "primary.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-data
              type: call
              call: "processor.transform"
              with:
                input: "{{fetch-data.result}}"
            - name: create-record
              type: call
              call: "servicenow.create-record"
              with:
                table: "records"
                data: "{{process-data.output}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "operations"
                text: "Workflow {{resource_id}} complete. Record: {{create-record.number}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://co.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: records
          path: "/table/records"
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/general/messages"
          operations:
            - name: send-message
              method: POST

Retrieves client account data from Salesforce, pulls a proposal template from SharePoint, generates a draft in Microsoft Word via Graph API, and uploads to Box for client review.

naftiko: "0.5"
info:
  label: "Proposal Document Assembly Pipeline"
  description: "Retrieves client account data from Salesforce, pulls a proposal template from SharePoint, generates a draft in Microsoft Word via Graph API, and uploads to Box for client review."
  tags:
    - sales
    - proposals
    - salesforce
    - sharepoint
    - microsoft-word
    - box
capability:
  exposes:
    - type: mcp
      namespace: sales-proposals
      port: 8080
      tools:
        - name: assemble-proposal
          description: "Given a Salesforce account ID and template path, assemble a proposal document and upload to Box."
          inputParameters:
            - name: salesforce_account_id
              in: body
              type: string
              description: "The Salesforce account record ID."
            - name: template_path
              in: body
              type: string
              description: "The SharePoint path to the proposal template."
            - name: box_folder_id
              in: body
              type: string
              description: "The Box folder ID for the completed proposal."
          steps:
            - name: get-account
              type: call
              call: "salesforce.get-account"
              with:
                account_id: "{{salesforce_account_id}}"
            - name: get-template
              type: call
              call: "sharepoint.get-file"
              with:
                file_path: "{{template_path}}"
            - name: upload-proposal
              type: call
              call: "box.upload-file"
              with:
                folder_id: "{{box_folder_id}}"
                file_name: "Proposal_{{get-account.Name}}_{{get-account.Industry}}.docx"
                content: "{{get-template.content}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://accenture.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-account
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites/accenture.sharepoint.com"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: files
          path: "/drive/root:/{{file_path}}:/content"
          inputParameters:
            - name: file_path
              in: path
          operations:
            - name: get-file
              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

Pulls client requirements from Salesforce, retrieves templates from SharePoint, generates cost estimates from SAP, assembles in Confluence, and notifies the bid team.

naftiko: "0.5"
info:
  label: "Proposal Generation Orchestrator"
  description: "Pulls client requirements from Salesforce, retrieves templates from SharePoint, generates cost estimates from SAP, assembles in Confluence, and notifies the bid team."
  tags:
    - sales
    - salesforce
    - confluence
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: sales
      port: 8080
      tools:
        - name: proposal_generation_orchestrator
          description: "Orchestrate proposal generation orchestrator workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-requirements
              type: call
              call: "salesforce.get-opportunity"
              with:
                opp_id: "{{resource_id}}"
            - name: get-template
              type: call
              call: "sharepoint.get-template"
              with:
                template_type: "proposal"
            - name: create-proposal
              type: call
              call: "confluence.create-page"
              with:
                space: "PROPOSALS"
                title: "Proposal: {{get-requirements.name}}"
            - name: notify
              type: call
              call: "msteams.send-message"
              with:
                channel: "bid-team"
                text: "Proposal draft created for {{resource_id}}: {{create-proposal.url}}"

  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://accenture.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://accenture.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: confluence-op
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: msteams-op
              method: POST

Collects merged PRs from GitHub, maps to Jira stories, generates formatted release notes in Confluence, notifies stakeholders, and updates Salesforce project status.

naftiko: "0.5"
info:
  label: "Release Notes Generator"
  description: "Collects merged PRs from GitHub, maps to Jira stories, generates formatted release notes in Confluence, notifies stakeholders, and updates Salesforce project status."
  tags:
    - devops
    - github
    - jira
    - confluence
    - slack
capability:
  exposes:
    - type: mcp
      namespace: devops
      port: 8080
      tools:
        - name: release_notes_generator
          description: "Orchestrate release notes generator workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-prs
              type: call
              call: "github.get-merged-prs"
              with:
                repo: "{{resource_id}}"
                since: "last_release"
            - name: get-stories
              type: call
              call: "jira.get-linked-issues"
              with:
                pr_ids: "{{get-prs.ids}}"
            - name: create-notes
              type: call
              call: "confluence.create-page"
              with:
                space: "RELEASES"
                title: "Release notes: {{resource_id}}"
            - name: notify
              type: call
              call: "slack.send-message"
              with:
                channel: "releases"
                text: "Release notes published for {{resource_id}}: {{get-prs.count}} changes"

  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: github-op
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: jira-op
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://accenture.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: confluence-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

When a project staffing request arrives, queries Workday for consultant availability, checks Microsoft Project schedule conflicts, and notifies the resource manager in Microsoft Teams with a staffing recommendation.

naftiko: "0.5"
info:
  label: "Resource Allocation Tracker"
  description: "When a project staffing request arrives, queries Workday for consultant availability, checks Microsoft Project schedule conflicts, and notifies the resource manager in Microsoft Teams with a staffing recommendation."
  tags:
    - resource-management
    - staffing
    - workday
    - microsoft-project
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: resource-mgmt
      port: 8080
      tools:
        - name: check-resource-availability
          description: "Given a consultant worker ID and requested engagement dates, check Workday assignment status and Microsoft Project conflicts, then notify the resource manager."
          inputParameters:
            - name: consultant_worker_id
              in: body
              type: string
              description: "The Workday worker ID for the consultant."
            - name: engagement_start
              in: body
              type: string
              description: "Requested engagement start date (YYYY-MM-DD)."
            - name: engagement_end
              in: body
              type: string
              description: "Requested engagement end date (YYYY-MM-DD)."
            - name: resource_manager_upn
              in: body
              type: string
              description: "The Microsoft UPN of the resource manager."
          steps:
            - name: get-consultant
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{consultant_worker_id}}"
            - name: check-schedule
              type: call
              call: "msproject.get-assignments"
              with:
                resource_id: "{{consultant_worker_id}}"
                start_date: "{{engagement_start}}"
                end_date: "{{engagement_end}}"
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{resource_manager_upn}}"
                text: "Staffing Check: {{get-consultant.full_name}} ({{get-consultant.business_title}}) requested for {{engagement_start}} to {{engagement_end}}. Current assignments: {{check-schedule.assignment_count}}. Availability: {{check-schedule.available_pct}}%."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: msproject
      baseUri: "https://graph.microsoft.com/v1.0/sites/accenture.sharepoint.com/lists"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: assignments
          path: "/ProjectAssignments/items?$filter=ResourceId eq '{{resource_id}}' and Start ge '{{start_date}}' and Finish le '{{end_date}}'"
          inputParameters:
            - name: resource_id
              in: query
            - name: start_date
              in: query
            - name: end_date
              in: query
          operations:
            - name: get-assignments
              method: GET
    - 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

Tracks bench consultants in Workday, matches to open requirements from Salesforce, creates proposals, and notifies resource managers.

naftiko: "0.5"
info:
  label: "Resource Bench Management Pipeline"
  description: "Tracks bench consultants in Workday, matches to open requirements from Salesforce, creates proposals, and notifies resource managers."
  tags:
    - workforce
    - bench
    - workday
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: workforce
      port: 8080
      tools:
        - name: resource_bench_management_pipeline
          description: "Orchestrate resource bench management pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: fetch-data
              type: call
              call: "primary.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-data
              type: call
              call: "processor.transform"
              with:
                input: "{{fetch-data.result}}"
            - name: create-record
              type: call
              call: "servicenow.create-record"
              with:
                table: "records"
                data: "{{process-data.output}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "operations"
                text: "Workflow {{resource_id}} complete. Record: {{create-record.number}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://co.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: records
          path: "/table/records"
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/general/messages"
          operations:
            - name: send-message
              method: POST

Triggers a SailPoint identity access review, fetches results, and creates a ServiceNow change request for any access that needs remediation.

naftiko: "0.5"
info:
  label: "SailPoint Access Certification Pipeline"
  description: "Triggers a SailPoint identity access review, fetches results, and creates a ServiceNow change request for any access that needs remediation."
  tags:
    - security
    - identity
    - sailpoint
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: identity-governance
      port: 8080
      tools:
        - name: run-access-certification
          description: "Trigger a SailPoint access certification campaign and create ServiceNow change requests for flagged access."
          inputParameters:
            - name: campaign_name
              in: body
              type: string
              description: "The SailPoint certification campaign name."
            - name: identity_id
              in: body
              type: string
              description: "The SailPoint identity ID to certify."
          steps:
            - name: trigger-certification
              type: call
              call: "sailpoint.create-campaign"
              with:
                name: "{{campaign_name}}"
                identity_id: "{{identity_id}}"
            - name: create-change-request
              type: call
              call: "servicenow.create-change"
              with:
                short_description: "Access certification remediation: {{campaign_name}}"
                description: "SailPoint campaign {{trigger-certification.campaign_id}} flagged access for identity {{identity_id}}. Review and remediate."
                assigned_group: "Identity_Governance"
                category: "access_review"
  consumes:
    - type: http
      namespace: sailpoint
      baseUri: "https://accenture.api.identitynow.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sailpoint_token"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: create-campaign
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://accenture.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST

When a qualifying LinkedIn signal occurs, enriches the Salesforce contact record with current profile data, syncs to HubSpot, and alerts the owning business development rep in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Sales Lead Enrichment Pipeline"
  description: "When a qualifying LinkedIn signal occurs, enriches the Salesforce contact record with current profile data, syncs to HubSpot, and alerts the owning business development rep in Microsoft Teams."
  tags:
    - sales
    - crm
    - salesforce
    - hubspot
    - linkedin
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: sales-intelligence
      port: 8080
      tools:
        - name: enrich-lead-from-linkedin
          description: "Given a LinkedIn member URN and Salesforce contact ID, enrich the Salesforce record, sync to HubSpot, and notify the owning rep."
          inputParameters:
            - name: linkedin_member_urn
              in: body
              type: string
              description: "The LinkedIn member URN for the contact."
            - name: salesforce_contact_id
              in: body
              type: string
              description: "The Salesforce contact record ID to enrich."
            - name: signal_type
              in: body
              type: string
              description: "The LinkedIn signal type (e.g., job_change, content_share)."
            - name: rep_upn
              in: body
              type: string
              description: "The Microsoft UPN of the owning sales rep."
          steps:
            - name: get-linkedin-profile
              type: call
              call: "linkedin.get-profile"
              with:
                member_urn: "{{linkedin_member_urn}}"
            - name: update-salesforce
              type: call
              call: "salesforce.update-contact"
              with:
                contact_id: "{{salesforce_contact_id}}"
                title: "{{get-linkedin-profile.headline}}"
                company: "{{get-linkedin-profile.current_company}}"
                linkedin_url: "{{get-linkedin-profile.profile_url}}"
            - name: sync-hubspot
              type: call
              call: "hubspot.update-contact"
              with:
                email: "{{update-salesforce.email}}"
                jobtitle: "{{get-linkedin-profile.headline}}"
                company: "{{get-linkedin-profile.current_company}}"
                hs_lead_status: "OPEN_DEAL"
            - name: alert-rep
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{rep_upn}}"
                text: "Warm Lead Signal: {{get-linkedin-profile.first_name}} {{get-linkedin-profile.last_name}} | Signal: {{signal_type}} | Title: {{get-linkedin-profile.headline}} | Company: {{get-linkedin-profile.current_company}} | Salesforce updated."
  consumes:
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: profiles
          path: "/people/{{member_urn}}"
          inputParameters:
            - name: member_urn
              in: path
          operations:
            - name: get-profile
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://accenture.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/sobjects/Contact/{{contact_id}}"
          inputParameters:
            - name: contact_id
              in: path
          operations:
            - name: update-contact
              method: PATCH
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/objects/contacts/{{email}}"
          inputParameters:
            - name: email
              in: path
          operations:
            - name: update-contact
              method: PATCH
    - 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

Retrieves client account details from Accenture Salesforce instance.

naftiko: "0.5"
info:
  label: "Salesforce Account Lookup"
  description: "Retrieves client account details from Accenture Salesforce instance."
  tags:
    - crm
    - salesforce
    - accounts
capability:
  exposes:
    - type: mcp
      namespace: crm
      port: 8080
      tools:
        - name: get-account
          description: "Look up Salesforce account by ID."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The account_id to look up." 
          call: "salesforce.get-account_id"
          with:
            account_id: "{{account_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://accenture.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce_account_lookup
              method: GET

Retrieves a Salesforce opportunity by ID and returns stage, amount, close date, and account name. Used by engagement leads to check deal health without logging into Salesforce.

naftiko: "0.5"
info:
  label: "Salesforce Opportunity Lookup"
  description: "Retrieves a Salesforce opportunity by ID and returns stage, amount, close date, and account name. Used by engagement leads to check deal health without logging into Salesforce."
  tags:
    - sales
    - crm
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: sales-crm
      port: 8080
      tools:
        - name: get-opportunity
          description: "Look up a Salesforce opportunity by record ID. Returns stage, amount, close date, and account name."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "The Salesforce opportunity record ID."
          call: "salesforce.get-opportunity"
          with:
            opportunity_id: "{{opportunity_id}}"
          outputParameters:
            - name: stage
              type: string
              mapping: "$.StageName"
            - name: amount
              type: string
              mapping: "$.Amount"
            - name: close_date
              type: string
              mapping: "$.CloseDate"
            - name: account_name
              type: string
              mapping: "$.Account.Name"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://accenture.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: get-opportunity
              method: GET

Executes a query against SAP HANA, stages the result in Amazon S3, and triggers a Databricks notebook for downstream processing.

naftiko: "0.5"
info:
  label: "SAP HANA Data Extraction Pipeline"
  description: "Executes a query against SAP HANA, stages the result in Amazon S3, and triggers a Databricks notebook for downstream processing."
  tags:
    - data
    - etl
    - sap-hana
    - amazon-s3
    - databricks
capability:
  exposes:
    - type: mcp
      namespace: data-extraction
      port: 8080
      tools:
        - name: extract-hana-to-databricks
          description: "Given a HANA SQL query, extract data to S3 and trigger a Databricks processing notebook."
          inputParameters:
            - name: hana_query
              in: body
              type: string
              description: "The SAP HANA SQL query to execute."
            - name: s3_bucket
              in: body
              type: string
              description: "The target S3 bucket name."
            - name: s3_key
              in: body
              type: string
              description: "The S3 object key for the extract."
            - name: databricks_notebook_path
              in: body
              type: string
              description: "The Databricks notebook path to trigger."
          steps:
            - name: extract-data
              type: call
              call: "hana.execute-query"
              with:
                query: "{{hana_query}}"
            - name: upload-to-s3
              type: call
              call: "s3.put-object"
              with:
                bucket: "{{s3_bucket}}"
                key: "{{s3_key}}"
                body: "{{extract-data.result_csv}}"
            - name: trigger-notebook
              type: call
              call: "databricks.run-notebook"
              with:
                notebook_path: "{{databricks_notebook_path}}"
                base_parameters: "{\"s3_path\": \"s3://{{s3_bucket}}/{{s3_key}}\"}"
  consumes:
    - type: http
      namespace: hana
      baseUri: "https://accenture-hana.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.hana_user"
        password: "$secrets.hana_password"
      resources:
        - name: sql
          path: "/sql"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: s3
      baseUri: "https://s3.amazonaws.com"
      authentication:
        type: aws-sigv4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
      resources:
        - name: objects
          path: "/{{bucket}}/{{key}}"
          inputParameters:
            - name: bucket
              in: path
            - name: key
              in: path
          operations:
            - name: put-object
              method: PUT
    - type: http
      namespace: databricks
      baseUri: "https://accenture.cloud.databricks.com/api/2.1"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: jobs
          path: "/jobs/runs/submit"
          operations:
            - name: run-notebook
              method: POST

Retrieves a SAP S/4HANA purchase order by number and returns header status, vendor, total value, and currency. Used by procurement consultants to audit client PO data.

naftiko: "0.5"
info:
  label: "SAP S/4HANA Purchase Order Lookup"
  description: "Retrieves a SAP S/4HANA purchase order by number and returns header status, vendor, total value, and currency. Used by procurement consultants to audit client PO data."
  tags:
    - procurement
    - erp
    - sap
    - sap-s4hana
capability:
  exposes:
    - type: mcp
      namespace: erp-procurement
      port: 8080
      tools:
        - name: get-purchase-order
          description: "Look up a SAP S/4HANA purchase order by PO number. Returns header status, vendor, total value, and currency."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number (10-digit)."
          call: "sap.get-po"
          with:
            po_number: "{{po_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.d.OverallStatus"
            - name: vendor
              type: string
              mapping: "$.d.Supplier.CompanyName"
            - name: total_value
              type: string
              mapping: "$.d.TotalAmount"
            - name: currency
              type: string
              mapping: "$.d.TransactionCurrency"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://accenture-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
        - name: sap-client
          in: header
          value: "100"
      resources:
        - name: purchase-orders
          path: "/A_PurchaseOrder('{{po_number}}')"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET
              outputRawFormat: xml

Runs vulnerability scans, checks compliance posture in Datadog, creates remediation tickets in Jira, updates compliance dashboard, and notifies security team.

naftiko: "0.5"
info:
  label: "Security Compliance Scan Pipeline"
  description: "Runs vulnerability scans, checks compliance posture in Datadog, creates remediation tickets in Jira, updates compliance dashboard, and notifies security team."
  tags:
    - security
    - compliance
    - datadog
    - jira
    - grafana
capability:
  exposes:
    - type: mcp
      namespace: security
      port: 8080
      tools:
        - name: security_compliance_scan_pipeline
          description: "Orchestrate security compliance scan pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: run-scan
              type: call
              call: "qualys.launch-scan"
              with:
                target: "{{resource_id}}"
            - name: check-compliance
              type: call
              call: "datadog.get-compliance-status"
              with:
                service: "{{resource_id}}"
            - name: create-tickets
              type: call
              call: "jira.create-issue"
              with:
                project: "SEC"
                summary: "Compliance: {{resource_id}}"
            - name: update-dashboard
              type: call
              call: "grafana.annotate"
              with:
                dashboard_uid: "compliance"
                text: "Scan: {{resource_id}}"

  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
        header: "DD-API-KEY" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: datadog-op
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: jira-op
              method: POST
    - type: http
      namespace: grafana
      baseUri: "https://accenture-grafana.com/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_api_key" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: grafana-op
              method: POST

Triggers a Checkmarx scan on a GitHub repository, waits for results, and creates a Jira security issue with findings summary. Used by AppSec consultants.

naftiko: "0.5"
info:
  label: "Security Vulnerability Scan Pipeline"
  description: "Triggers a Checkmarx scan on a GitHub repository, waits for results, and creates a Jira security issue with findings summary. Used by AppSec consultants."
  tags:
    - security
    - appsec
    - checkmarx
    - github
    - jira
capability:
  exposes:
    - type: mcp
      namespace: security-scan
      port: 8080
      tools:
        - name: trigger-security-scan
          description: "Given a GitHub repo and Checkmarx project ID, trigger a scan and create a Jira issue with findings."
          inputParameters:
            - name: checkmarx_project_id
              in: body
              type: string
              description: "The Checkmarx project ID."
            - name: repo_url
              in: body
              type: string
              description: "The GitHub repository URL to scan."
            - name: jira_project_key
              in: body
              type: string
              description: "The Jira project key for security issues."
          steps:
            - name: trigger-scan
              type: call
              call: "checkmarx.create-scan"
              with:
                project_id: "{{checkmarx_project_id}}"
                source_url: "{{repo_url}}"
            - name: create-security-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "{{jira_project_key}}"
                issuetype: "Bug"
                summary: "[Security Scan] Checkmarx results for {{repo_url}}"
                description: "Scan ID: {{trigger-scan.scan_id}}. Status: {{trigger-scan.status}}. Review findings at {{trigger-scan.results_url}}."
                priority: "High"
  consumes:
    - type: http
      namespace: checkmarx
      baseUri: "https://accenture.checkmarx.net/cxrestapi"
      authentication:
        type: bearer
        token: "$secrets.checkmarx_token"
      resources:
        - name: scans
          path: "/sast/scans"
          operations:
            - name: create-scan
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Retrieves IT asset details from Accenture ServiceNow CMDB.

naftiko: "0.5"
info:
  label: "ServiceNow Asset Lookup"
  description: "Retrieves IT asset details from Accenture ServiceNow CMDB."
  tags:
    - itsm
    - servicenow
    - asset-management
capability:
  exposes:
    - type: mcp
      namespace: itsm
      port: 8080
      tools:
        - name: get-asset
          description: "Look up IT asset by tag."
          inputParameters:
            - name: asset_tag
              in: body
              type: string
              description: "The asset_tag to look up." 
          call: "servicenow.get-asset_tag"
          with:
            asset_tag: "{{asset_tag}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://accenture.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow_asset_lookup
              method: GET

Fetches a ServiceNow incident by number and returns state, priority, assigned group, and short description. Used by project managers to check incident progress.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Status"
  description: "Fetches a ServiceNow incident by number and returns state, priority, assigned group, and short description. Used by project managers to check incident progress."
  tags:
    - operations
    - itsm
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: itsm-ops
      port: 8080
      tools:
        - name: get-incident-status
          description: "Look up a ServiceNow incident by number. Returns state, priority, assigned group, and short description."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number (e.g., INC0012345)."
          call: "servicenow.get-incident"
          with:
            incident_number: "{{incident_number}}"
          outputParameters:
            - name: state
              type: string
              mapping: "$.result.state"
            - name: priority
              type: string
              mapping: "$.result.priority"
            - name: assigned_group
              type: string
              mapping: "$.result.assignment_group.display_value"
            - name: short_description
              type: string
              mapping: "$.result.short_description"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://accenture.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident?sysparm_query=number={{incident_number}}"
          inputParameters:
            - name: incident_number
              in: query
          operations:
            - name: get-incident
              method: GET

Looks up table metadata from Accenture Snowflake data catalog.

naftiko: "0.5"
info:
  label: "Snowflake Data Catalog Lookup"
  description: "Looks up table metadata from Accenture Snowflake data catalog."
  tags:
    - data
    - snowflake
    - data-catalog
capability:
  exposes:
    - type: mcp
      namespace: data-mgmt
      port: 8080
      tools:
        - name: get-table-info
          description: "Look up table metadata."
          inputParameters:
            - name: table_name
              in: body
              type: string
              description: "The table_name to look up." 
          call: "snowflake.get-table_name"
          with:
            table_name: "{{table_name}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://accenture.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: snowflake_data_catalog_lookup
              method: GET

Executes a SQL query against Snowflake, exports results to Amazon S3, and notifies the data team in Microsoft Teams with the export location.

naftiko: "0.5"
info:
  label: "Snowflake Query and Export Pipeline"
  description: "Executes a SQL query against Snowflake, exports results to Amazon S3, and notifies the data team in Microsoft Teams with the export location."
  tags:
    - data
    - analytics
    - snowflake
    - amazon-s3
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: data-warehouse
      port: 8080
      tools:
        - name: run-snowflake-query-and-export
          description: "Execute a SQL query against Snowflake, export results to S3, and notify the team."
          inputParameters:
            - name: warehouse
              in: body
              type: string
              description: "The Snowflake warehouse name."
            - name: database
              in: body
              type: string
              description: "The target database."
            - name: sql_statement
              in: body
              type: string
              description: "The SQL statement to execute."
            - name: s3_bucket
              in: body
              type: string
              description: "The S3 bucket for the export."
            - name: teams_channel
              in: body
              type: string
              description: "The Teams channel for data notifications."
          steps:
            - name: execute-query
              type: call
              call: "snowflake.execute-statement"
              with:
                warehouse: "{{warehouse}}"
                database: "{{database}}"
                statement: "{{sql_statement}}"
            - name: export-to-s3
              type: call
              call: "s3.put-object"
              with:
                bucket: "{{s3_bucket}}"
                key: "exports/{{database}}/{{execute-query.statement_handle}}.csv"
                body: "{{execute-query.result_csv}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "{{teams_channel}}"
                text: "Snowflake export complete. Query handle: {{execute-query.statement_handle}}. Rows: {{execute-query.row_count}}. S3: s3://{{s3_bucket}}/exports/{{database}}/{{execute-query.statement_handle}}.csv"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://accenture.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-statement
              method: POST
    - type: http
      namespace: s3
      baseUri: "https://s3.amazonaws.com"
      authentication:
        type: aws-sigv4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
      resources:
        - name: objects
          path: "/{{bucket}}/{{key}}"
          inputParameters:
            - name: bucket
              in: path
            - name: key
              in: path
          operations:
            - name: put-object
              method: PUT
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/General/messages"
          inputParameters:
            - name: channel
              in: path
          operations:
            - name: send-message
              method: POST

Tracks SOW expiration in Salesforce, collects delivery metrics from Jira, generates renewal proposal in Confluence, routes for approval in ServiceNow, and notifies the account team.

naftiko: "0.5"
info:
  label: "SOW Renewal Orchestrator"
  description: "Tracks SOW expiration in Salesforce, collects delivery metrics from Jira, generates renewal proposal in Confluence, routes for approval in ServiceNow, and notifies the account team."
  tags:
    - commercial
    - salesforce
    - jira
    - confluence
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: commercial
      port: 8080
      tools:
        - name: sow_renewal_orchestrator
          description: "Orchestrate sow renewal orchestrator workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-sow
              type: call
              call: "salesforce.get-contract"
              with:
                contract_id: "{{resource_id}}"
            - name: get-delivery-metrics
              type: call
              call: "jira.get-project-metrics"
              with:
                project_key: "{{get-sow.project_code}}"
            - name: create-proposal
              type: call
              call: "confluence.create-page"
              with:
                space: "COMMERCIAL"
                title: "SOW renewal: {{resource_id}}"
            - name: create-approval
              type: call
              call: "servicenow.create-request"
              with:
                short_description: "SOW renewal: {{resource_id}}"

  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://accenture.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: jira-op
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://accenture.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: confluence-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://accenture.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST

Searches Splunk for application logs at Accenture managed services environments.

naftiko: "0.5"
info:
  label: "Splunk Application Log Search"
  description: "Searches Splunk for application logs at Accenture managed services environments."
  tags:
    - devops
    - splunk
    - logging
capability:
  exposes:
    - type: mcp
      namespace: logging
      port: 8080
      tools:
        - name: search-app-logs
          description: "Search application logs."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The query to look up." 
          call: "splunk.get-query"
          with:
            query: "{{query}}"
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://accenture-splunk.com/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: splunk_application_log_search
              method: GET

Executes a Splunk search query, creates a Jira issue if critical events are found, and notifies the security team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Splunk Log Search and Alert Pipeline"
  description: "Executes a Splunk search query, creates a Jira issue if critical events are found, and notifies the security team in Microsoft Teams."
  tags:
    - security
    - observability
    - splunk
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: security-logs
      port: 8080
      tools:
        - name: search-and-alert-logs
          description: "Execute a Splunk search, create a Jira issue for findings, and alert the security team."
          inputParameters:
            - name: search_query
              in: body
              type: string
              description: "The Splunk SPL search query."
            - name: earliest_time
              in: body
              type: string
              description: "Search window start (e.g., -24h)."
            - name: latest_time
              in: body
              type: string
              description: "Search window end (e.g., now)."
            - name: jira_project_key
              in: body
              type: string
              description: "The Jira project key for security issues."
            - name: teams_channel
              in: body
              type: string
              description: "The Teams channel for security alerts."
          steps:
            - name: run-search
              type: call
              call: "splunk.create-search"
              with:
                search: "{{search_query}}"
                earliest_time: "{{earliest_time}}"
                latest_time: "{{latest_time}}"
            - name: create-issue
              type: call
              call: "jira.create-issue"
              with:
                project_key: "{{jira_project_key}}"
                issuetype: "Bug"
                summary: "[Security] Splunk alert: {{run-search.event_count}} events found"
                description: "Search: {{search_query}}\nTime range: {{earliest_time}} to {{latest_time}}\nEvents found: {{run-search.event_count}}\nSearch ID: {{run-search.sid}}"
            - name: notify-security
              type: call
              call: "msteams.send-message"
              with:
                channel: "{{teams_channel}}"
                text: "Security Alert: Splunk found {{run-search.event_count}} events. Jira: {{create-issue.key}}. Search ID: {{run-search.sid}}."
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://accenture-splunk.splunkcloud.com:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: searches
          path: "/search/jobs"
          operations:
            - name: create-search
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/General/messages"
          inputParameters:
            - name: channel
              in: path
          operations:
            - name: send-message
              method: POST

Collects ESG metrics from client systems, aggregates in Snowflake, generates sustainability reports, and publishes to stakeholders.

naftiko: "0.5"
info:
  label: "Sustainability Reporting Pipeline"
  description: "Collects ESG metrics from client systems, aggregates in Snowflake, generates sustainability reports, and publishes to stakeholders."
  tags:
    - sustainability
    - esg
    - snowflake
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: sustainability
      port: 8080
      tools:
        - name: sustainability_reporting_pipeline
          description: "Orchestrate sustainability reporting pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: fetch-data
              type: call
              call: "primary.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-data
              type: call
              call: "processor.transform"
              with:
                input: "{{fetch-data.result}}"
            - name: create-record
              type: call
              call: "servicenow.create-record"
              with:
                table: "records"
                data: "{{process-data.output}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "operations"
                text: "Workflow {{resource_id}} complete. Record: {{create-record.number}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://co.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: records
          path: "/table/records"
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/general/messages"
          operations:
            - name: send-message
              method: POST

Triggers a Tableau workbook extract refresh and notifies the analytics team in Microsoft Teams when complete. Used by analytics consultants to ensure client dashboards display the latest data.

naftiko: "0.5"
info:
  label: "Tableau Dashboard Refresh and Notify"
  description: "Triggers a Tableau workbook extract refresh and notifies the analytics team in Microsoft Teams when complete. Used by analytics consultants to ensure client dashboards display the latest data."
  tags:
    - analytics
    - bi
    - tableau
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: analytics-tableau
      port: 8080
      tools:
        - name: refresh-workbook-and-notify
          description: "Trigger a Tableau workbook extract refresh and notify the analytics team."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The Tableau site ID."
            - name: workbook_id
              in: body
              type: string
              description: "The Tableau workbook ID."
            - name: teams_channel
              in: body
              type: string
              description: "The Teams channel for analytics alerts."
          steps:
            - name: trigger-refresh
              type: call
              call: "tableau.refresh-workbook"
              with:
                site_id: "{{site_id}}"
                workbook_id: "{{workbook_id}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "{{teams_channel}}"
                text: "Tableau refresh triggered for workbook {{workbook_id}}. Job ID: {{trigger-refresh.job_id}}. Status: {{trigger-refresh.status}}."
  consumes:
    - type: http
      namespace: tableau
      baseUri: "https://accenture.online.tableau.com/api/3.22"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: workbooks
          path: "/sites/{{site_id}}/workbooks/{{workbook_id}}/refresh"
          inputParameters:
            - name: site_id
              in: path
            - name: workbook_id
              in: path
          operations:
            - name: refresh-workbook
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/General/messages"
          inputParameters:
            - name: channel
              in: path
          operations:
            - name: send-message
              method: POST

Searches consultant skills in Workday, matches against project requirements from Salesforce, creates staffing proposals, notifies resource managers.

naftiko: "0.5"
info:
  label: "Talent Matching Orchestrator"
  description: "Searches consultant skills in Workday, matches against project requirements from Salesforce, creates staffing proposals, notifies resource managers."
  tags:
    - workforce
    - workday
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: workforce
      port: 8080
      tools:
        - name: talent_matching_orchestrator
          description: "Orchestrate talent matching orchestrator workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-requirements
              type: call
              call: "salesforce.get-staffing-needs"
              with:
                project_id: "{{resource_id}}"
            - name: search-talent
              type: call
              call: "workday.search-by-skills"
              with:
                skills: "{{get-requirements.required_skills}}"
            - name: create-proposal
              type: call
              call: "servicenow.create-record"
              with:
                table: "staffing_proposals"
                project: "{{resource_id}}"
            - name: notify
              type: call
              call: "slack.send-message"
              with:
                channel: "resource-mgmt"
                text: "Staffing proposal for {{resource_id}}: {{search-talent.match_count}} candidates"

  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://accenture.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/accenture"
      authentication:
        type: bearer
        token: "$secrets.workday_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: workday-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://accenture.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

Fetches employee skill profiles from Workday, cross-references with Pluralsight learning progress, and creates a Jira improvement task when certification gaps are found.

naftiko: "0.5"
info:
  label: "Talent Skills Gap Analysis Pipeline"
  description: "Fetches employee skill profiles from Workday, cross-references with Pluralsight learning progress, and creates a Jira improvement task when certification gaps are found."
  tags:
    - talent
    - learning
    - workday
    - pluralsight
    - jira
capability:
  exposes:
    - type: mcp
      namespace: talent-development
      port: 8080
      tools:
        - name: analyze-skills-gap
          description: "Given an employee ID and required skill list, check Workday skills and Pluralsight progress, then create a Jira task for any gaps."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID."
            - name: required_skills
              in: body
              type: string
              description: "Comma-separated list of required skill tags."
            - name: project_key
              in: body
              type: string
              description: "The Jira project key for talent tasks."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: get-learning-progress
              type: call
              call: "pluralsight.get-user-progress"
              with:
                email: "{{get-employee.work_email}}"
            - name: create-gap-task
              type: call
              call: "jira.create-issue"
              with:
                project_key: "{{project_key}}"
                issuetype: "Task"
                summary: "Skills gap: {{get-employee.full_name}} — missing certifications"
                description: "Employee: {{get-employee.full_name}}\nRequired: {{required_skills}}\nCompleted courses: {{get-learning-progress.completed_count}}\nIn progress: {{get-learning-progress.in_progress_count}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: pluralsight
      baseUri: "https://api.pluralsight.com/api-v0.9"
      authentication:
        type: bearer
        token: "$secrets.pluralsight_token"
      resources:
        - name: user-progress
          path: "/users/{{email}}/course-progress"
          inputParameters:
            - name: email
              in: path
          operations:
            - name: get-user-progress
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Runs a Terraform plan via GitHub Actions, parses drift output, and creates a Jira ticket with remediation details if drift is detected.

naftiko: "0.5"
info:
  label: "Terraform Infrastructure Drift Detection"
  description: "Runs a Terraform plan via GitHub Actions, parses drift output, and creates a Jira ticket with remediation details if drift is detected."
  tags:
    - devops
    - infrastructure
    - github
    - github-actions
    - jira
capability:
  exposes:
    - type: mcp
      namespace: infra-drift
      port: 8080
      tools:
        - name: detect-infrastructure-drift
          description: "Trigger a Terraform plan workflow in GitHub Actions and create a Jira ticket if drift is found."
          inputParameters:
            - name: repo_owner
              in: body
              type: string
              description: "The GitHub repository owner."
            - name: repo_name
              in: body
              type: string
              description: "The GitHub repository name."
            - name: workflow_id
              in: body
              type: string
              description: "The GitHub Actions workflow file name."
            - name: jira_project_key
              in: body
              type: string
              description: "The Jira project key for infrastructure tasks."
          steps:
            - name: trigger-plan
              type: call
              call: "github.dispatch-workflow"
              with:
                owner: "{{repo_owner}}"
                repo: "{{repo_name}}"
                workflow_id: "{{workflow_id}}"
                ref: "main"
            - name: create-drift-ticket
              type: call
              call: "jira.create-issue"
              with:
                project_key: "{{jira_project_key}}"
                issuetype: "Task"
                summary: "[Drift] Infrastructure drift detected in {{repo_owner}}/{{repo_name}}"
                description: "Terraform plan workflow {{workflow_id}} triggered. Run ID: {{trigger-plan.run_id}}. Review the plan output and remediate."
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: workflows
          path: "/repos/{{owner}}/{{repo}}/actions/workflows/{{workflow_id}}/dispatches"
          inputParameters:
            - name: owner
              in: path
            - name: repo
              in: path
            - name: workflow_id
              in: path
          operations:
            - name: dispatch-workflow
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://accenture.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Monitors timesheet submission from Workday, identifies late entries, sends reminders, escalates to managers, and reports compliance.

naftiko: "0.5"
info:
  label: "Timesheet Compliance Enforcer"
  description: "Monitors timesheet submission from Workday, identifies late entries, sends reminders, escalates to managers, and reports compliance."
  tags:
    - compliance
    - timesheet
    - workday
    - slack
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: timesheet_compliance_enforcer
          description: "Orchestrate timesheet compliance enforcer workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: fetch-data
              type: call
              call: "primary.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-data
              type: call
              call: "processor.transform"
              with:
                input: "{{fetch-data.result}}"
            - name: create-record
              type: call
              call: "servicenow.create-record"
              with:
                table: "records"
                data: "{{process-data.output}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "operations"
                text: "Workflow {{resource_id}} complete. Record: {{create-record.number}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://co.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: records
          path: "/table/records"
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/general/messages"
          operations:
            - name: send-message
              method: POST

Analyzes skill gaps from Workday, maps to available Pluralsight courses, creates learning plans, assigns in LMS, and notifies managers.

naftiko: "0.5"
info:
  label: "Training Needs Analysis Pipeline"
  description: "Analyzes skill gaps from Workday, maps to available Pluralsight courses, creates learning plans, assigns in LMS, and notifies managers."
  tags:
    - learning
    - workday
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: learning
      port: 8080
      tools:
        - name: training_needs_analysis_pipeline
          description: "Orchestrate training needs analysis pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-skill-gaps
              type: call
              call: "workday.get-skill-assessment"
              with:
                team_id: "{{resource_id}}"
            - name: find-courses
              type: call
              call: "pluralsight.search-courses"
              with:
                skills: "{{get-skill-gaps.missing_skills}}"
            - name: create-plan
              type: call
              call: "servicenow.create-record"
              with:
                table: "learning_plans"
                team: "{{resource_id}}"
            - name: notify
              type: call
              call: "msteams.send-message"
              with:
                channel: "learning-dev"
                text: "Training plan for {{resource_id}}: {{get-skill-gaps.gap_count}} gaps, {{find-courses.count}} courses"

  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/accenture"
      authentication:
        type: bearer
        token: "$secrets.workday_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: workday-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://accenture.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: servicenow-op
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: msteams-op
              method: POST

Tracks vendor performance in ServiceNow, calculates scores in Snowflake, creates reviews in Jira, and notifies procurement.

naftiko: "0.5"
info:
  label: "Vendor Management Pipeline"
  description: "Tracks vendor performance in ServiceNow, calculates scores in Snowflake, creates reviews in Jira, and notifies procurement."
  tags:
    - procurement
    - vendor
    - servicenow
    - jira
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: vendor_management_pipeline
          description: "Orchestrate vendor management pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: fetch-data
              type: call
              call: "primary.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-data
              type: call
              call: "processor.transform"
              with:
                input: "{{fetch-data.result}}"
            - name: create-record
              type: call
              call: "servicenow.create-record"
              with:
                table: "records"
                data: "{{process-data.output}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel: "operations"
                text: "Workflow {{resource_id}} complete. Record: {{create-record.number}}"

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://co.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password" 
      resources:
        - name: records
          path: "/table/records"
          operations:
            - name: create-record
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token" 
      resources:
        - name: messages
          path: "/teams/{{channel}}/channels/general/messages"
          operations:
            - name: send-message
              method: POST

When a compensation change is approved in Workday, retrieves the updated salary data, logs it in Oracle Financials for budget tracking, and notifies HR Business Partner in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Workday Compensation Change Notification"
  description: "When a compensation change is approved in Workday, retrieves the updated salary data, logs it in Oracle Financials for budget tracking, and notifies HR Business Partner in Microsoft Teams."
  tags:
    - hr
    - compensation
    - workday
    - oracle
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-compensation
      port: 8080
      tools:
        - name: process-compensation-change
          description: "Given an employee ID and compensation change ID, fetch the new salary, log in Oracle, and notify HR."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday employee ID."
            - name: compensation_change_id
              in: body
              type: string
              description: "The Workday compensation change event ID."
            - name: hrbp_upn
              in: body
              type: string
              description: "The Microsoft UPN of the HR Business Partner."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: get-compensation
              type: call
              call: "workday.get-compensation"
              with:
                worker_id: "{{employee_id}}"
                change_id: "{{compensation_change_id}}"
            - name: log-budget-entry
              type: call
              call: "oracle.create-journal"
              with:
                description: "Compensation change: {{get-employee.full_name}} — {{get-compensation.new_salary}} {{get-compensation.currency}}"
                amount: "{{get-compensation.new_salary}}"
                cost_center: "{{get-employee.cost_center}}"
            - name: notify-hrbp
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{hrbp_upn}}"
                text: "Compensation Change Processed: {{get-employee.full_name}} | New salary: {{get-compensation.new_salary}} {{get-compensation.currency}} | Effective: {{get-compensation.effective_date}} | Oracle journal: {{log-budget-entry.journal_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
        - name: compensation
          path: "/workers/{{worker_id}}/compensationPlans/{{change_id}}"
          inputParameters:
            - name: worker_id
              in: path
            - name: change_id
              in: path
          operations:
            - name: get-compensation
              method: GET
    - type: http
      namespace: oracle
      baseUri: "https://accenture.oraclecloud.com/fscmRestApi/resources/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: journals
          path: "/generalLedgerJournals"
          operations:
            - name: create-journal
              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

Retrieves a Workday employee record by worker ID. Returns name, title, department, manager, and location for talent management queries.

naftiko: "0.5"
info:
  label: "Workday Employee Directory Lookup"
  description: "Retrieves a Workday employee record by worker ID. Returns name, title, department, manager, and location for talent management queries."
  tags:
    - hr
    - talent
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr-directory
      port: 8080
      tools:
        - name: get-employee
          description: "Look up a Workday employee by worker ID. Returns name, title, department, manager, and office location."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_id}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.full_name"
            - name: title
              type: string
              mapping: "$.business_title"
            - name: department
              type: string
              mapping: "$.supervisory_organization"
            - name: manager
              type: string
              mapping: "$.manager.full_name"
            - name: location
              type: string
              mapping: "$.primary_work_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: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET

Retrieves timesheet entries from Workday by employee ID for Accenture consultants.

naftiko: "0.5"
info:
  label: "Workday Timesheet Lookup"
  description: "Retrieves timesheet entries from Workday by employee ID for Accenture consultants."
  tags:
    - hr
    - workday
    - time-tracking
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: get-timesheet
          description: "Look up timesheet by employee ID."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The employee_id to look up." 
          call: "workday.get-employee_id"
          with:
            employee_id: "{{employee_id}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/accenture"
      authentication:
        type: bearer
        token: "$secrets.workday_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: workday_timesheet_lookup
              method: GET

When a Zendesk ticket priority is set to urgent, creates a ServiceNow incident, assigns it based on Workday org data, and notifies the on-call manager in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Zendesk Ticket Escalation Pipeline"
  description: "When a Zendesk ticket priority is set to urgent, creates a ServiceNow incident, assigns it based on Workday org data, and notifies the on-call manager in Microsoft Teams."
  tags:
    - support
    - escalation
    - zendesk
    - servicenow
    - workday
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: support-escalation
      port: 8080
      tools:
        - name: escalate-urgent-ticket
          description: "Given a Zendesk ticket ID and assigned team, escalate to ServiceNow and notify the on-call manager."
          inputParameters:
            - name: zendesk_ticket_id
              in: body
              type: string
              description: "The Zendesk ticket ID."
            - name: assigned_team
              in: body
              type: string
              description: "The team slug responsible for the ticket."
            - name: oncall_manager_id
              in: body
              type: string
              description: "The Workday worker ID of the on-call manager."
          steps:
            - name: get-ticket
              type: call
              call: "zendesk.get-ticket"
              with:
                ticket_id: "{{zendesk_ticket_id}}"
            - name: get-manager
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{oncall_manager_id}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Escalation: {{get-ticket.subject}}"
                priority: "1"
                assigned_group: "{{assigned_team}}"
                description: "Zendesk #{{zendesk_ticket_id}}: {{get-ticket.description}}. Requestor: {{get-ticket.requester_name}}."
            - name: notify-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-manager.work_email}}"
                text: "URGENT Escalation: Zendesk #{{zendesk_ticket_id}} — {{get-ticket.subject}}. ServiceNow: {{create-incident.number}}. Please review immediately."
  consumes:
    - type: http
      namespace: zendesk
      baseUri: "https://accenture.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: tickets
          path: "/tickets/{{ticket_id}}"
          inputParameters:
            - name: ticket_id
              in: path
          operations:
            - name: get-ticket
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://accenture.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

Fetches the recording URL for a completed Zoom meeting. Used by consultants to retrieve client workshop recordings for documentation.

naftiko: "0.5"
info:
  label: "Zoom Meeting Recording Retrieval"
  description: "Fetches the recording URL for a completed Zoom meeting. Used by consultants to retrieve client workshop recordings for documentation."
  tags:
    - collaboration
    - meetings
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: collab-recordings
      port: 8080
      tools:
        - name: get-meeting-recording
          description: "Retrieve Zoom meeting recording URLs by meeting ID."
          inputParameters:
            - name: meeting_id
              in: body
              type: string
              description: "The Zoom meeting ID."
          call: "zoom.get-recordings"
          with:
            meeting_id: "{{meeting_id}}"
          outputParameters:
            - name: recording_count
              type: string
              mapping: "$.recording_count"
            - name: download_url
              type: string
              mapping: "$.recording_files[0].download_url"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_token"
      resources:
        - name: recordings
          path: "/meetings/{{meeting_id}}/recordings"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: get-recordings
              method: GET