Atlassian Capabilities

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

Sort
Expand

Collects access entitlements, routes for review, revokes expired access, and creates audit records.

naftiko: "0.5"
info:
  label: "Access Review Certification Pipeline"
  description: "Collects access entitlements, routes for review, revokes expired access, and creates audit records."
  tags:
    - security
    - okta
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: security
      port: 8080
      tools:
        - name: access_review_certification_pipeline
          description: "Orchestrate access review certification pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-jira
              type: call
              call: "jira.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                data: "{{get-jira.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Access Review Certification Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian.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://atlassian.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

Identifies deprecated API consumers, sends migration notices, tracks adoption, and reports progress.

naftiko: "0.5"
info:
  label: "API Deprecation Notice Pipeline"
  description: "Identifies deprecated API consumers, sends migration notices, tracks adoption, and reports progress."
  tags:
    - engineering
    - datadog
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: api_deprecation_notice_pipeline
          description: "Orchestrate api deprecation notice pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-datadog
              type: call
              call: "datadog.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-jira
              type: call
              call: "jira.process-resource"
              with:
                data: "{{get-datadog.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "API Deprecation Notice Pipeline step 3 complete."

  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://atlassian.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

Creates a numbered ADR page in Confluence, links it to a Jira architecture decision ticket, and posts the ADR summary to a Slack architecture channel.

naftiko: "0.5"
info:
  label: "Architecture Decision Record Publisher"
  description: "Creates a numbered ADR page in Confluence, links it to a Jira architecture decision ticket, and posts the ADR summary to a Slack architecture channel."
  tags:
    - architecture
    - documentation
    - confluence
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: adr-publishing
      port: 8080
      tools:
        - name: publish-adr
          description: "Publish an Architecture Decision Record to Confluence, link to Jira, and notify Slack."
          inputParameters:
            - name: adr_number
              in: body
              type: string
              description: "ADR sequential number."
            - name: title
              in: body
              type: string
              description: "ADR title."
            - name: context
              in: body
              type: string
              description: "Context and problem statement."
            - name: decision
              in: body
              type: string
              description: "The decision made."
            - name: space_key
              in: body
              type: string
              description: "Confluence space key."
            - name: issue_key
              in: body
              type: string
              description: "Related Jira issue key."
            - name: slack_channel
              in: body
              type: string
              description: "Architecture Slack channel."
          steps:
            - name: create-adr-page
              type: call
              call: "confluence.create-page"
              with:
                spaceId: "{{space_key}}"
                title: "ADR-{{adr_number}}: {{title}}"
                body:
                  representation: "storage"
                  value: "<h2>Context</h2><p>{{context}}</p><h2>Decision</h2><p>{{decision}}</p>"
            - name: link-to-jira
              type: call
              call: "jira.add-comment"
              with:
                issue_key: "{{issue_key}}"
                body: "ADR-{{adr_number}} published: {{title}}"
            - name: notify-architects
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "New ADR published: ADR-{{adr_number}} - {{title}}. Decision: {{decision}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://atlassian-corp.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: comments
          path: "/issue/{{issue_key}}/comment"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: add-comment
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves current monitoring alert status. Used by Atlassian teams.

naftiko: "0.5"
info:
  label: "Atlassian Alert Status Check"
  description: "Retrieves current monitoring alert status. Used by Atlassian teams."
  tags:
    - software
    - pagerduty
capability:
  exposes:
    - type: mcp
      namespace: pagerduty
      port: 8080
      tools:
        - name: get-alert_status_check
          description: "Retrieves current monitoring alert status. Used by Atlassian teams."
          inputParameters:
            - name: alert_id
              in: body
              type: string
              description: "The alert_id to look up." 
          call: "pagerduty.get-alert_id"
          with:
            alert_id: "{{alert_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: atlassian_alert_status_check
              method: GET

Checks availability of an API endpoint. Used by Atlassian teams.

naftiko: "0.5"
info:
  label: "Atlassian API Endpoint Status"
  description: "Checks availability of an API endpoint. Used by Atlassian teams."
  tags:
    - software
    - splunk
capability:
  exposes:
    - type: mcp
      namespace: splunk
      port: 8080
      tools:
        - name: get-api_endpoint_status
          description: "Checks availability of an API endpoint. Used by Atlassian teams."
          inputParameters:
            - name: endpoint_url
              in: body
              type: string
              description: "The endpoint_url to look up." 
          call: "splunk.get-endpoint_url"
          with:
            endpoint_url: "{{endpoint_url}}"
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://atlassian-splunk.com/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: atlassian_api_endpoint_status
              method: GET

Retrieves compliance check status. Used by Atlassian teams.

naftiko: "0.5"
info:
  label: "Atlassian Compliance Check Status"
  description: "Retrieves compliance check status. Used by Atlassian teams."
  tags:
    - software
    - docker
capability:
  exposes:
    - type: mcp
      namespace: docker
      port: 8080
      tools:
        - name: get-compliance_check_status
          description: "Retrieves compliance check status. Used by Atlassian teams."
          inputParameters:
            - name: check_id
              in: body
              type: string
              description: "The check_id to look up." 
          call: "docker.get-check_id"
          with:
            check_id: "{{check_id}}"
  consumes:
    - type: http
      namespace: docker
      baseUri: "https://hub.docker.com/v2"
      authentication:
        type: bearer
        token: "$secrets.docker_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: atlassian_compliance_check_sta
              method: GET

Searches application logs for matching patterns. Used by Atlassian teams.

naftiko: "0.5"
info:
  label: "Atlassian Log Search Query"
  description: "Searches application logs for matching patterns. Used by Atlassian teams."
  tags:
    - software
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: confluence
      port: 8080
      tools:
        - name: get-log_search_query
          description: "Searches application logs for matching patterns. Used by Atlassian teams."
          inputParameters:
            - name: search_query
              in: body
              type: string
              description: "The search_query to look up." 
          call: "confluence.get-search_query"
          with:
            search_query: "{{search_query}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://atlassian.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: atlassian_confluence_log_searc
              method: GET

Queries cost and spending data. Used by Atlassian teams.

naftiko: "0.5"
info:
  label: "Atlassian Cost Report Query"
  description: "Queries cost and spending data. Used by Atlassian teams."
  tags:
    - software
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: powerbi
      port: 8080
      tools:
        - name: get-cost_report_query
          description: "Queries cost and spending data. Used by Atlassian teams."
          inputParameters:
            - name: cost_center
              in: body
              type: string
              description: "The cost_center to look up." 
          call: "powerbi.get-cost_center"
          with:
            cost_center: "{{cost_center}}"
  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: atlassian_cost_report_query
              method: GET

Detects SLA breaches, escalates to engineering, creates priority tickets, and notifies account managers.

naftiko: "0.5"
info:
  label: "Customer Issue Escalation Pipeline"
  description: "Detects SLA breaches, escalates to engineering, creates priority tickets, and notifies account managers."
  tags:
    - support
    - jira
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: support
      port: 8080
      tools:
        - name: atlassian_customer_issue_escalation_pipe
          description: "Orchestrate customer issue escalation pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-jira
              type: call
              call: "jira.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-confluence
              type: call
              call: "confluence.process-resource"
              with:
                data: "{{get-jira.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Customer Issue Escalation Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian.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://atlassian.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

Executes a read-only analytics query. Used by Atlassian teams.

naftiko: "0.5"
info:
  label: "Atlassian Database Query Runner"
  description: "Executes a read-only analytics query. Used by Atlassian teams."
  tags:
    - software
    - slack
capability:
  exposes:
    - type: mcp
      namespace: slack
      port: 8080
      tools:
        - name: get-database_query_runner
          description: "Executes a read-only analytics query. Used by Atlassian teams."
          inputParameters:
            - name: sql_query
              in: body
              type: string
              description: "The sql_query to look up." 
          call: "slack.get-sql_query"
          with:
            sql_query: "{{sql_query}}"
  consumes:
    - 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: atlassian_database_query_runne
              method: GET

Checks status of a recent deployment. Used by Atlassian teams.

naftiko: "0.5"
info:
  label: "Atlassian Deployment Status Check"
  description: "Checks status of a recent deployment. Used by Atlassian teams."
  tags:
    - software
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: snowflake
      port: 8080
      tools:
        - name: get-deployment_status_check
          description: "Checks status of a recent deployment. Used by Atlassian teams."
          inputParameters:
            - name: deployment_id
              in: body
              type: string
              description: "The deployment_id to look up." 
          call: "snowflake.get-deployment_id"
          with:
            deployment_id: "{{deployment_id}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://atlassian.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: atlassian_deployment_status_ch
              method: GET

Collects development metrics, analyzes trends, generates reports, and distributes to engineering leads.

naftiko: "0.5"
info:
  label: "Developer Productivity Metrics Pipeline"
  description: "Collects development metrics, analyzes trends, generates reports, and distributes to engineering leads."
  tags:
    - engineering
    - github
    - snowflake
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: atlassian_developer_productivity_metrics
          description: "Orchestrate developer productivity metrics pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-github
              type: call
              call: "github.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-snowflake
              type: call
              call: "snowflake.process-resource"
              with:
                data: "{{get-github.result}}"
            - name: create-powerbi
              type: call
              call: "powerbi.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Developer Productivity Metrics Pipeline step 3 complete."

  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: snowflake
      baseUri: "https://atlassian.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

Retrieves a document from knowledge management. Used by Atlassian teams.

naftiko: "0.5"
info:
  label: "Atlassian Document Retrieval"
  description: "Retrieves a document from knowledge management. Used by Atlassian teams."
  tags:
    - software
    - elasticsearch
capability:
  exposes:
    - type: mcp
      namespace: elasticsearc
      port: 8080
      tools:
        - name: get-document_retrieval
          description: "Retrieves a document from knowledge management. Used by Atlassian teams."
          inputParameters:
            - name: document_id
              in: body
              type: string
              description: "The document_id to look up." 
          call: "elasticsearch.get-document_id"
          with:
            document_id: "{{document_id}}"
  consumes:
    - type: http
      namespace: elasticsearch
      baseUri: "https://atlassian-es.com:9200"
      authentication:
        type: bearer
        token: "$secrets.elasticsearch_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: atlassian_document_retrieval
              method: GET

Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers.

naftiko: "0.5"
info:
  label: "Employee Onboarding Automation Pipeline"
  description: "Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers."
  tags:
    - hr
    - workday
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: atlassian_employee_onboarding_automation
          description: "Orchestrate employee onboarding automation pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-jira
              type: call
              call: "jira.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                data: "{{get-jira.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Employee Onboarding Automation Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian.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://atlassian.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

Queries metric values from a monitoring dashboard. Used by Atlassian teams.

naftiko: "0.5"
info:
  label: "Atlassian Metric Dashboard Query"
  description: "Queries metric values from a monitoring dashboard. Used by Atlassian teams."
  tags:
    - software
    - github
capability:
  exposes:
    - type: mcp
      namespace: github
      port: 8080
      tools:
        - name: get-metric_dashboard_query
          description: "Queries metric values from a monitoring dashboard. Used by Atlassian teams."
          inputParameters:
            - name: metric_name
              in: body
              type: string
              description: "The metric_name to look up." 
          call: "github.get-metric_name"
          with:
            metric_name: "{{metric_name}}"
  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: atlassian_github_metric_dashbo
              method: GET

Collects incident data, generates timeline, creates postmortem document, and schedules review meeting.

naftiko: "0.5"
info:
  label: "Incident Postmortem Pipeline"
  description: "Collects incident data, generates timeline, creates postmortem document, and schedules review meeting."
  tags:
    - sre
    - jira
    - confluence
    - slack
capability:
  exposes:
    - type: mcp
      namespace: sre
      port: 8080
      tools:
        - name: atlassian_incident_postmortem_pipeline
          description: "Orchestrate incident postmortem pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-jira
              type: call
              call: "jira.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-confluence
              type: call
              call: "confluence.process-resource"
              with:
                data: "{{get-jira.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Incident Postmortem Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian.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://atlassian.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

Attributes cloud costs to teams, generates chargeback reports, and distributes to engineering managers.

naftiko: "0.5"
info:
  label: "Infrastructure Cost Allocation Pipeline"
  description: "Attributes cloud costs to teams, generates chargeback reports, and distributes to engineering managers."
  tags:
    - finops
    - snowflake
    - powerbi
    - slack
capability:
  exposes:
    - type: mcp
      namespace: finops
      port: 8080
      tools:
        - name: atlassian_infrastructure_cost_allocation
          description: "Orchestrate infrastructure cost allocation pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-powerbi
              type: call
              call: "powerbi.process-resource"
              with:
                data: "{{get-snowflake.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Infrastructure Cost Allocation Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://atlassian.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 the health status of a monitored service. Used by Atlassian teams.

naftiko: "0.5"
info:
  label: "Atlassian Service Health Check"
  description: "Checks the health status of a monitored service. Used by Atlassian teams."
  tags:
    - software
    - jira
capability:
  exposes:
    - type: mcp
      namespace: jira
      port: 8080
      tools:
        - name: get-service_health_check
          description: "Checks the health status of a monitored service. Used by Atlassian teams."
          inputParameters:
            - name: health_target
              in: body
              type: string
              description: "The health_target to look up." 
          call: "jira.get-health_target"
          with:
            health_target: "{{health_target}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian.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: atlassian_jira_service_health_
              method: GET

Searches application logs for matching patterns. Used by Atlassian teams.

naftiko: "0.5"
info:
  label: "Atlassian Log Search Query"
  description: "Searches application logs for matching patterns. Used by Atlassian teams."
  tags:
    - software
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: confluence
      port: 8080
      tools:
        - name: get-log_search_query
          description: "Searches application logs for matching patterns. Used by Atlassian teams."
          inputParameters:
            - name: search_query
              in: body
              type: string
              description: "The search_query to look up." 
          call: "confluence.get-search_query"
          with:
            search_query: "{{search_query}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://atlassian.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: atlassian_log_search_query
              method: GET

Queries metric values from a monitoring dashboard. Used by Atlassian teams.

naftiko: "0.5"
info:
  label: "Atlassian Metric Dashboard Query"
  description: "Queries metric values from a monitoring dashboard. Used by Atlassian teams."
  tags:
    - software
    - github
capability:
  exposes:
    - type: mcp
      namespace: github
      port: 8080
      tools:
        - name: get-metric_dashboard_query
          description: "Queries metric values from a monitoring dashboard. Used by Atlassian teams."
          inputParameters:
            - name: metric_name
              in: body
              type: string
              description: "The metric_name to look up." 
          call: "github.get-metric_name"
          with:
            metric_name: "{{metric_name}}"
  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: atlassian_metric_dashboard_que
              method: GET

Checks the current status of a project. Used by Atlassian teams.

naftiko: "0.5"
info:
  label: "Atlassian Project Status Check"
  description: "Checks the current status of a project. Used by Atlassian teams."
  tags:
    - software
    - grafana
capability:
  exposes:
    - type: mcp
      namespace: grafana
      port: 8080
      tools:
        - name: get-project_status_check
          description: "Checks the current status of a project. Used by Atlassian teams."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "The project_key to look up." 
          call: "grafana.get-project_key"
          with:
            project_key: "{{project_key}}"
  consumes:
    - type: http
      namespace: grafana
      baseUri: "https://atlassian-grafana.com/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_api_key" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: atlassian_project_status_check
              method: GET

Validates release criteria, checks test coverage, verifies documentation, and approves deployment.

naftiko: "0.5"
info:
  label: "Release Readiness Checklist Pipeline"
  description: "Validates release criteria, checks test coverage, verifies documentation, and approves deployment."
  tags:
    - devops
    - jira
    - github
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: devops
      port: 8080
      tools:
        - name: atlassian_release_readiness_checklist_pi
          description: "Orchestrate release readiness checklist pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-jira
              type: call
              call: "jira.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-github
              type: call
              call: "github.process-resource"
              with:
                data: "{{get-jira.result}}"
            - name: create-confluence
              type: call
              call: "confluence.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Release Readiness Checklist Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian.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: 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: confluence
      baseUri: "https://atlassian.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 code repository information. Used by Atlassian teams.

naftiko: "0.5"
info:
  label: "Atlassian Repository Info Lookup"
  description: "Retrieves code repository information. Used by Atlassian teams."
  tags:
    - software
    - prometheus
capability:
  exposes:
    - type: mcp
      namespace: prometheus
      port: 8080
      tools:
        - name: get-repository_info_lookup
          description: "Retrieves code repository information. Used by Atlassian teams."
          inputParameters:
            - name: repo_name
              in: body
              type: string
              description: "The repo_name to look up." 
          call: "prometheus.get-repo_name"
          with:
            repo_name: "{{repo_name}}"
  consumes:
    - type: http
      namespace: prometheus
      baseUri: "https://atlassian-prometheus.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.prometheus_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: atlassian_repository_info_look
              method: GET

Detects security incidents, enriches with context, creates response tickets, and notifies the SOC.

naftiko: "0.5"
info:
  label: "Security Incident Response Pipeline"
  description: "Detects security incidents, enriches with context, creates response tickets, and notifies the SOC."
  tags:
    - security
    - splunk
    - servicenow
    - pagerduty
capability:
  exposes:
    - type: mcp
      namespace: security
      port: 8080
      tools:
        - name: atlassian_security_incident_response_pip
          description: "Orchestrate security incident response pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-splunk
              type: call
              call: "splunk.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                data: "{{get-splunk.result}}"
            - name: create-pagerduty
              type: call
              call: "pagerduty.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Security Incident Response Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://atlassian-splunk.com/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: splunk-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://atlassian.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: 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

Retrieves vulnerability scan results. Used by Atlassian teams.

naftiko: "0.5"
info:
  label: "Atlassian Security Scan Results"
  description: "Retrieves vulnerability scan results. Used by Atlassian teams."
  tags:
    - software
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: servicenow
      port: 8080
      tools:
        - name: get-security_scan_results
          description: "Retrieves vulnerability scan results. Used by Atlassian teams."
          inputParameters:
            - name: scan_id
              in: body
              type: string
              description: "The scan_id to look up." 
          call: "servicenow.get-scan_id"
          with:
            scan_id: "{{scan_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://atlassian.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: atlassian_security_scan_result
              method: GET

Checks the health status of a monitored service. Used by Atlassian teams.

naftiko: "0.5"
info:
  label: "Atlassian Service Health Check"
  description: "Checks the health status of a monitored service. Used by Atlassian teams."
  tags:
    - software
    - jira
capability:
  exposes:
    - type: mcp
      namespace: jira
      port: 8080
      tools:
        - name: get-service_health_check
          description: "Checks the health status of a monitored service. Used by Atlassian teams."
          inputParameters:
            - name: health_target
              in: body
              type: string
              description: "The health_target to look up." 
          call: "jira.get-health_target"
          with:
            health_target: "{{health_target}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian.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: atlassian_service_health_check
              method: GET

Retrieves the details of a support ticket. Used by Atlassian teams.

naftiko: "0.5"
info:
  label: "Atlassian Ticket Details Lookup"
  description: "Retrieves the details of a support ticket. Used by Atlassian teams."
  tags:
    - software
    - kubernetes
capability:
  exposes:
    - type: mcp
      namespace: kubernetes
      port: 8080
      tools:
        - name: get-ticket_details_lookup
          description: "Retrieves the details of a support ticket. Used by Atlassian teams."
          inputParameters:
            - name: ticket_id
              in: body
              type: string
              description: "The ticket_id to look up." 
          call: "kubernetes.get-ticket_id"
          with:
            ticket_id: "{{ticket_id}}"
  consumes:
    - type: http
      namespace: k8s
      baseUri: "https://atlassian-k8s.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.k8s_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: atlassian_ticket_details_looku
              method: GET

Retrieves user account details from the directory. Used by Atlassian teams.

naftiko: "0.5"
info:
  label: "Atlassian User Account Lookup"
  description: "Retrieves user account details from the directory. Used by Atlassian teams."
  tags:
    - software
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: datadog
      port: 8080
      tools:
        - name: get-user_account_lookup
          description: "Retrieves user account details from the directory. Used by Atlassian teams."
          inputParameters:
            - name: user_id
              in: body
              type: string
              description: "The user_id to look up." 
          call: "datadog.get-user_id"
          with:
            user_id: "{{user_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: atlassian_user_account_lookup
              method: GET

Searches code across Bitbucket repositories in a workspace using a query string. Returns matching file paths and snippets.

naftiko: "0.5"
info:
  label: "Bitbucket Code Search"
  description: "Searches code across Bitbucket repositories in a workspace using a query string. Returns matching file paths and snippets."
  tags:
    - source-code-management
    - search
    - bitbucket
capability:
  exposes:
    - type: mcp
      namespace: bitbucket-search
      port: 8080
      tools:
        - name: search-code
          description: "Search code across Bitbucket repositories by query string."
          inputParameters:
            - name: workspace
              in: body
              type: string
              description: "Bitbucket workspace slug."
            - name: search_query
              in: body
              type: string
              description: "Code search query."
          call: "bitbucket.search-code"
          with:
            workspace: "{{workspace}}"
            search_query: "{{search_query}}"
          outputParameters:
            - name: results
              type: string
              mapping: "$.values"
  consumes:
    - type: http
      namespace: bitbucket
      baseUri: "https://api.bitbucket.org/2.0"
      authentication:
        type: bearer
        token: "$secrets.bitbucket_token"
      resources:
        - name: code-search
          path: "/workspaces/{{workspace}}/search/code"
          inputParameters:
            - name: workspace
              in: path
            - name: search_query
              in: query
          operations:
            - name: search-code
              method: GET

Checks the latest pipeline run status for a Bitbucket repository. Returns build state, result, duration, and trigger type.

naftiko: "0.5"
info:
  label: "Bitbucket Pipeline Status"
  description: "Checks the latest pipeline run status for a Bitbucket repository. Returns build state, result, duration, and trigger type."
  tags:
    - ci-cd
    - pipelines
    - bitbucket
capability:
  exposes:
    - type: mcp
      namespace: bitbucket-pipelines
      port: 8080
      tools:
        - name: get-latest-pipeline
          description: "Get the latest Bitbucket Pipeline run for a repository."
          inputParameters:
            - name: workspace
              in: body
              type: string
              description: "The Bitbucket workspace slug."
            - name: repo_slug
              in: body
              type: string
              description: "The repository slug."
          call: "bitbucket.get-pipelines"
          with:
            workspace: "{{workspace}}"
            repo_slug: "{{repo_slug}}"
          outputParameters:
            - name: state
              type: string
              mapping: "$.values[0].state.name"
            - name: result
              type: string
              mapping: "$.values[0].state.result.name"
            - name: duration
              type: string
              mapping: "$.values[0].duration_in_seconds"
  consumes:
    - type: http
      namespace: bitbucket
      baseUri: "https://api.bitbucket.org/2.0"
      authentication:
        type: bearer
        token: "$secrets.bitbucket_token"
      resources:
        - name: pipelines
          path: "/repositories/{{workspace}}/{{repo_slug}}/pipelines/"
          inputParameters:
            - name: workspace
              in: path
            - name: repo_slug
              in: path
          operations:
            - name: get-pipelines
              method: GET

Retrieves details for a specific Bitbucket pull request including title, state, reviewers, and merge status.

naftiko: "0.5"
info:
  label: "Bitbucket Pull Request Details"
  description: "Retrieves details for a specific Bitbucket pull request including title, state, reviewers, and merge status."
  tags:
    - code-review
    - version-control
    - bitbucket
capability:
  exposes:
    - type: mcp
      namespace: bitbucket-prs
      port: 8080
      tools:
        - name: get-pull-request
          description: "Fetch a Bitbucket pull request by workspace, repo slug, and PR ID."
          inputParameters:
            - name: workspace
              in: body
              type: string
              description: "The Bitbucket workspace slug."
            - name: repo_slug
              in: body
              type: string
              description: "The repository slug."
            - name: pr_id
              in: body
              type: string
              description: "The pull request ID."
          call: "bitbucket.get-pr"
          with:
            workspace: "{{workspace}}"
            repo_slug: "{{repo_slug}}"
            pr_id: "{{pr_id}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.title"
            - name: state
              type: string
              mapping: "$.state"
            - name: author
              type: string
              mapping: "$.author.display_name"
            - name: reviewers
              type: string
              mapping: "$.reviewers"
  consumes:
    - type: http
      namespace: bitbucket
      baseUri: "https://api.bitbucket.org/2.0"
      authentication:
        type: bearer
        token: "$secrets.bitbucket_token"
      resources:
        - name: pull-requests
          path: "/repositories/{{workspace}}/{{repo_slug}}/pullrequests/{{pr_id}}"
          inputParameters:
            - name: workspace
              in: path
            - name: repo_slug
              in: path
            - name: pr_id
              in: path
          operations:
            - name: get-pr
              method: GET

Retrieves metadata for a Bitbucket Cloud repository including default branch, language, and last updated timestamp.

naftiko: "0.5"
info:
  label: "Bitbucket Repository Info"
  description: "Retrieves metadata for a Bitbucket Cloud repository including default branch, language, and last updated timestamp."
  tags:
    - source-code-management
    - version-control
    - bitbucket
capability:
  exposes:
    - type: mcp
      namespace: bitbucket-repos
      port: 8080
      tools:
        - name: get-repository
          description: "Get Bitbucket repository metadata by workspace and repo slug."
          inputParameters:
            - name: workspace
              in: body
              type: string
              description: "The Bitbucket workspace slug."
            - name: repo_slug
              in: body
              type: string
              description: "The repository slug."
          call: "bitbucket.get-repo"
          with:
            workspace: "{{workspace}}"
            repo_slug: "{{repo_slug}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.full_name"
            - name: default_branch
              type: string
              mapping: "$.mainbranch.name"
            - name: language
              type: string
              mapping: "$.language"
            - name: updated_on
              type: string
              mapping: "$.updated_on"
  consumes:
    - type: http
      namespace: bitbucket
      baseUri: "https://api.bitbucket.org/2.0"
      authentication:
        type: bearer
        token: "$secrets.bitbucket_token"
      resources:
        - name: repositories
          path: "/repositories/{{workspace}}/{{repo_slug}}"
          inputParameters:
            - name: workspace
              in: path
            - name: repo_slug
              in: path
          operations:
            - name: get-repo
              method: GET

Creates a Jira bug issue from a structured report and posts a notification to a designated Slack channel with the new issue link.

naftiko: "0.5"
info:
  label: "Bug Report to Jira with Slack Notification"
  description: "Creates a Jira bug issue from a structured report and posts a notification to a designated Slack channel with the new issue link."
  tags:
    - bug-tracking
    - project-management
    - jira
    - slack
    - notifications
capability:
  exposes:
    - type: mcp
      namespace: bug-reporting
      port: 8080
      tools:
        - name: file-bug-report
          description: "Create a Jira bug from a report summary and severity, then notify a Slack channel."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "The Jira project key."
            - name: summary
              in: body
              type: string
              description: "Bug summary."
            - name: description
              in: body
              type: string
              description: "Detailed bug description."
            - name: priority
              in: body
              type: string
              description: "Priority name (e.g. High, Medium, Low)."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel ID for notification."
          steps:
            - name: create-bug
              type: call
              call: "jira.create-issue"
              with:
                fields:
                  project:
                    key: "{{project_key}}"
                  summary: "{{summary}}"
                  description: "{{description}}"
                  issuetype:
                    name: "Bug"
                  priority:
                    name: "{{priority}}"
            - name: notify-channel
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "New bug filed: [{{create-bug.key}}] {{summary}} - Priority: {{priority}}. View: https://atlassian-corp.atlassian.net/browse/{{create-bug.key}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.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: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Collects Prometheus resource metrics and Jira workload data, then publishes an updated capacity planning page in Confluence for engineering leadership.

naftiko: "0.5"
info:
  label: "Capacity Planning Dashboard Updater"
  description: "Collects Prometheus resource metrics and Jira workload data, then publishes an updated capacity planning page in Confluence for engineering leadership."
  tags:
    - capacity-planning
    - monitoring
    - prometheus
    - jira
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: capacity-planning
      port: 8080
      tools:
        - name: update-capacity-dashboard
          description: "Gather resource metrics from Prometheus and workload from Jira, then update Confluence capacity page."
          inputParameters:
            - name: promql_cpu
              in: body
              type: string
              description: "PromQL query for CPU utilization."
            - name: promql_memory
              in: body
              type: string
              description: "PromQL query for memory utilization."
            - name: project_key
              in: body
              type: string
              description: "Jira project key for workload."
            - name: page_id
              in: body
              type: string
              description: "Confluence capacity page ID."
          steps:
            - name: query-cpu
              type: call
              call: "prometheus.instant-query"
              with:
                query: "{{promql_cpu}}"
            - name: query-memory
              type: call
              call: "prometheus.instant-query"
              with:
                query: "{{promql_memory}}"
            - name: query-workload
              type: call
              call: "jira.search-issues"
              with:
                jql: "project = {{project_key}} AND status != Done"
                maxResults: "1"
            - name: update-page
              type: call
              call: "confluence.update-page"
              with:
                page_id: "{{page_id}}"
                title: "Capacity Planning Dashboard"
                body:
                  representation: "storage"
                  value: "<h2>Resource Utilization</h2><p>CPU: {{query-cpu.data.result}}</p><p>Memory: {{query-memory.data.result}}</p><h2>Workload</h2><p>Open issues: {{query-workload.total}}</p>"
  consumes:
    - type: http
      namespace: prometheus
      baseUri: "https://prometheus.atlassian-corp.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.prometheus_token"
      resources:
        - name: query
          path: "/query"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: instant-query
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: search
          path: "/search"
          operations:
            - name: search-issues
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://atlassian-corp.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/pages/{{page_id}}"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: update-page
              method: PUT

Analyzes resource utilization trends, forecasts capacity needs, creates procurement requests, and reports.

naftiko: "0.5"
info:
  label: "Capacity Planning Forecast Pipeline"
  description: "Analyzes resource utilization trends, forecasts capacity needs, creates procurement requests, and reports."
  tags:
    - infrastructure
    - grafana
    - snowflake
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: infrastructure
      port: 8080
      tools:
        - name: capacity_planning_forecast_pipeline
          description: "Orchestrate capacity planning forecast pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-grafana
              type: call
              call: "grafana.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-snowflake
              type: call
              call: "snowflake.process-resource"
              with:
                data: "{{get-grafana.result}}"
            - name: create-powerbi
              type: call
              call: "powerbi.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Capacity Planning Forecast Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: grafana
      baseUri: "https://atlassian-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: snowflake
      baseUri: "https://atlassian.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

Validates change requests, routes for approval, schedules implementation, and notifies stakeholders.

naftiko: "0.5"
info:
  label: "Change Management Approval Pipeline"
  description: "Validates change requests, routes for approval, schedules implementation, and notifies stakeholders."
  tags:
    - itsm
    - servicenow
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: itsm
      port: 8080
      tools:
        - name: change_management_approval_pipeline
          description: "Orchestrate change management approval pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-servicenow
              type: call
              call: "servicenow.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-jira
              type: call
              call: "jira.process-resource"
              with:
                data: "{{get-servicenow.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Change Management Approval Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://atlassian.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: jira
      baseUri: "https://atlassian.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

Creates a Jira change request issue, attaches a Confluence impact assessment page, obtains approval comments, and notifies the release channel on Slack.

naftiko: "0.5"
info:
  label: "Change Request Workflow"
  description: "Creates a Jira change request issue, attaches a Confluence impact assessment page, obtains approval comments, and notifies the release channel on Slack."
  tags:
    - change-management
    - devops
    - jira
    - confluence
    - slack
capability:
  exposes:
    - type: mcp
      namespace: change-management
      port: 8080
      tools:
        - name: submit-change-request
          description: "Submit a change request through Jira, document impact in Confluence, and notify on Slack."
          inputParameters:
            - name: summary
              in: body
              type: string
              description: "Change request summary."
            - name: impact_description
              in: body
              type: string
              description: "Detailed impact assessment."
            - name: project_key
              in: body
              type: string
              description: "Jira project key."
            - name: space_key
              in: body
              type: string
              description: "Confluence space key for impact docs."
            - name: slack_channel
              in: body
              type: string
              description: "Slack release channel ID."
          steps:
            - name: create-change-request
              type: call
              call: "jira.create-issue"
              with:
                fields:
                  project:
                    key: "{{project_key}}"
                  summary: "CR: {{summary}}"
                  issuetype:
                    name: "Change Request"
                  description: "{{impact_description}}"
            - name: create-impact-page
              type: call
              call: "confluence.create-page"
              with:
                spaceId: "{{space_key}}"
                title: "Impact Assessment: {{summary}}"
                body:
                  representation: "storage"
                  value: "<h2>Change Request: {{create-change-request.key}}</h2><p>{{impact_description}}</p>"
            - name: notify-release-channel
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Change Request submitted: {{create-change-request.key}} - {{summary}}. Impact doc: https://atlassian-corp.atlassian.net/wiki/spaces/{{space_key}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.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: confluence
      baseUri: "https://atlassian-corp.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Triggers a Bitbucket Pipeline build, waits for SonarQube quality gate results, and posts the combined status to Jira and Slack.

naftiko: "0.5"
info:
  label: "CI/CD Pipeline with Quality Gate"
  description: "Triggers a Bitbucket Pipeline build, waits for SonarQube quality gate results, and posts the combined status to Jira and Slack."
  tags:
    - ci-cd
    - code-quality
    - bitbucket
    - sonarqube
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: cicd-quality
      port: 8080
      tools:
        - name: run-pipeline-with-gate
          description: "Trigger a Bitbucket Pipeline, check SonarQube quality gate, and report status to Jira and Slack."
          inputParameters:
            - name: workspace
              in: body
              type: string
              description: "Bitbucket workspace slug."
            - name: repo_slug
              in: body
              type: string
              description: "Repository slug."
            - name: branch
              in: body
              type: string
              description: "Branch to build."
            - name: sonar_project_key
              in: body
              type: string
              description: "SonarQube project key."
            - name: issue_key
              in: body
              type: string
              description: "Associated Jira issue key."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel for build notifications."
          steps:
            - name: trigger-pipeline
              type: call
              call: "bitbucket.trigger-pipeline"
              with:
                workspace: "{{workspace}}"
                repo_slug: "{{repo_slug}}"
                target:
                  ref_type: "branch"
                  ref_name: "{{branch}}"
            - name: check-quality-gate
              type: call
              call: "sonarqube.get-quality-gate"
              with:
                project_key: "{{sonar_project_key}}"
            - name: comment-on-jira
              type: call
              call: "jira.add-comment"
              with:
                issue_key: "{{issue_key}}"
                body: "Build triggered for {{branch}}. Pipeline: {{trigger-pipeline.uuid}}. SonarQube gate: {{check-quality-gate.projectStatus.status}}."
            - name: notify-slack
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Build for {{repo_slug}}/{{branch}}: Pipeline {{trigger-pipeline.uuid}}. Quality gate: {{check-quality-gate.projectStatus.status}}. Jira: {{issue_key}}."
  consumes:
    - type: http
      namespace: bitbucket
      baseUri: "https://api.bitbucket.org/2.0"
      authentication:
        type: bearer
        token: "$secrets.bitbucket_token"
      resources:
        - name: pipelines
          path: "/repositories/{{workspace}}/{{repo_slug}}/pipelines/"
          inputParameters:
            - name: workspace
              in: path
            - name: repo_slug
              in: path
          operations:
            - name: trigger-pipeline
              method: POST
    - type: http
      namespace: sonarqube
      baseUri: "https://sonarqube.atlassian-corp.com/api"
      authentication:
        type: bearer
        token: "$secrets.sonarqube_token"
      resources:
        - name: quality-gate
          path: "/qualitygates/project_status"
          inputParameters:
            - name: project_key
              in: query
          operations:
            - name: get-quality-gate
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: comments
          path: "/issue/{{issue_key}}/comment"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: add-comment
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Collects audit events, validates against policies, generates compliance reports, and notifies auditors.

naftiko: "0.5"
info:
  label: "Compliance Audit Trail Pipeline"
  description: "Collects audit events, validates against policies, generates compliance reports, and notifies auditors."
  tags:
    - compliance
    - elasticsearch
    - confluence
    - slack
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: compliance_audit_trail_pipeline
          description: "Orchestrate compliance audit trail pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-elasticsearch
              type: call
              call: "elasticsearch.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-confluence
              type: call
              call: "confluence.process-resource"
              with:
                data: "{{get-elasticsearch.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Compliance Audit Trail Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: elasticsearch
      baseUri: "https://atlassian-es.com:9200"
      authentication:
        type: bearer
        token: "$secrets.elasticsearch_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: elasticsearch-op
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://atlassian.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

Retrieves all inline and footer comments on a Confluence page. Used by content reviewers to audit feedback.

naftiko: "0.5"
info:
  label: "Confluence Page Comment Thread"
  description: "Retrieves all inline and footer comments on a Confluence page. Used by content reviewers to audit feedback."
  tags:
    - knowledge-base
    - collaboration
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: confluence-comments
      port: 8080
      tools:
        - name: get-page-comments
          description: "List all comments on a Confluence page by page ID."
          inputParameters:
            - name: page_id
              in: body
              type: string
              description: "The Confluence page ID."
          call: "confluence.get-comments"
          with:
            page_id: "{{page_id}}"
          outputParameters:
            - name: comments
              type: string
              mapping: "$.results"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://atlassian-corp.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: comments
          path: "/pages/{{page_id}}/footer-comments"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: get-comments
              method: GET

Fetches a Confluence page by ID and returns the title, body content, version, and last modifier. Used by knowledge management teams to surface documentation.

naftiko: "0.5"
info:
  label: "Confluence Page Retrieval"
  description: "Fetches a Confluence page by ID and returns the title, body content, version, and last modifier. Used by knowledge management teams to surface documentation."
  tags:
    - knowledge-base
    - documentation
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: confluence-pages
      port: 8080
      tools:
        - name: get-page
          description: "Retrieve a Confluence page by ID. Returns title, body HTML, version number, and last editor."
          inputParameters:
            - name: page_id
              in: body
              type: string
              description: "The Confluence page ID."
          call: "confluence.get-page"
          with:
            page_id: "{{page_id}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.title"
            - name: body
              type: string
              mapping: "$.body.storage.value"
            - name: version
              type: string
              mapping: "$.version.number"
            - name: last_modified_by
              type: string
              mapping: "$.version.by.displayName"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://atlassian-corp.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/pages/{{page_id}}"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: get-page
              method: GET

Searches Confluence content using CQL and returns page titles, space keys, and URLs. Used for knowledge discovery across documentation.

naftiko: "0.5"
info:
  label: "Confluence Search"
  description: "Searches Confluence content using CQL and returns page titles, space keys, and URLs. Used for knowledge discovery across documentation."
  tags:
    - knowledge-base
    - search
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: confluence-search
      port: 8080
      tools:
        - name: search-content
          description: "Search Confluence content using CQL (Confluence Query Language)."
          inputParameters:
            - name: cql
              in: body
              type: string
              description: "The CQL query string."
          call: "confluence.search"
          with:
            cql: "{{cql}}"
          outputParameters:
            - name: results
              type: string
              mapping: "$.results"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://atlassian-corp.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: search
          path: "/search"
          inputParameters:
            - name: cql
              in: query
          operations:
            - name: search
              method: GET

Lists all Confluence spaces accessible to the authenticated user. Returns space keys, names, and types for navigation and discovery.

naftiko: "0.5"
info:
  label: "Confluence Space List"
  description: "Lists all Confluence spaces accessible to the authenticated user. Returns space keys, names, and types for navigation and discovery."
  tags:
    - knowledge-base
    - collaboration
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: confluence-spaces
      port: 8080
      tools:
        - name: list-spaces
          description: "List all Confluence spaces. Returns space key, name, and type."
          inputParameters: []
          call: "confluence.list-spaces"
          with: {}
          outputParameters:
            - name: spaces
              type: string
              mapping: "$.results"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://atlassian-corp.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: spaces
          path: "/spaces"
          operations:
            - name: list-spaces
              method: GET

Tracks spending against budgets, forecasts overruns, creates alerts, and notifies finance leaders.

naftiko: "0.5"
info:
  label: "Cost Center Budget Tracking Pipeline"
  description: "Tracks spending against budgets, forecasts overruns, creates alerts, and notifies finance leaders."
  tags:
    - finance
    - snowflake
    - powerbi
    - slack
capability:
  exposes:
    - type: mcp
      namespace: finance
      port: 8080
      tools:
        - name: cost_center_budget_tracking
          description: "Orchestrate cost center budget tracking pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-powerbi
              type: call
              call: "powerbi.process-resource"
              with:
                data: "{{get-snowflake.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Cost Center Budget Tracking Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://atlassian.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

Pings Jira, Confluence, Bitbucket, and Slack API health endpoints and compiles a unified status report for platform reliability monitoring.

naftiko: "0.5"
info:
  label: "Cross-Service Health Check"
  description: "Pings Jira, Confluence, Bitbucket, and Slack API health endpoints and compiles a unified status report for platform reliability monitoring."
  tags:
    - monitoring
    - platform-health
    - jira
    - confluence
    - bitbucket
    - slack
capability:
  exposes:
    - type: mcp
      namespace: platform-health
      port: 8080
      tools:
        - name: check-platform-health
          description: "Check health status of Jira, Confluence, Bitbucket, and Slack APIs."
          inputParameters: []
          steps:
            - name: check-jira
              type: call
              call: "jira.server-info"
              with: {}
            - name: check-confluence
              type: call
              call: "confluence.health"
              with: {}
            - name: check-bitbucket
              type: call
              call: "bitbucket.user"
              with: {}
            - name: check-slack
              type: call
              call: "slack.auth-test"
              with: {}
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: server-info
          path: "/serverInfo"
          operations:
            - name: server-info
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://atlassian-corp.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: health
          path: "/spaces?limit=1"
          operations:
            - name: health
              method: GET
    - type: http
      namespace: bitbucket
      baseUri: "https://api.bitbucket.org/2.0"
      authentication:
        type: bearer
        token: "$secrets.bitbucket_token"
      resources:
        - name: user
          path: "/user"
          operations:
            - name: user
              method: GET
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: auth
          path: "/auth.test"
          operations:
            - name: auth-test
              method: POST

Aggregates customer data from multiple sources, deduplicates, enriches profiles, and syncs to CRM.

naftiko: "0.5"
info:
  label: "Customer 360 Data Sync Pipeline"
  description: "Aggregates customer data from multiple sources, deduplicates, enriches profiles, and syncs to CRM."
  tags:
    - data
    - snowflake
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: data
      port: 8080
      tools:
        - name: customer_360_data_sync_pipeline
          description: "Orchestrate customer 360 data sync pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-confluence
              type: call
              call: "confluence.process-resource"
              with:
                data: "{{get-snowflake.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Customer 360 Data Sync Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://atlassian.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://atlassian.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

Detects SLA breaches, escalates to engineering, creates priority tickets, and notifies account managers.

naftiko: "0.5"
info:
  label: "Customer Issue Escalation Pipeline"
  description: "Detects SLA breaches, escalates to engineering, creates priority tickets, and notifies account managers."
  tags:
    - support
    - jira
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: support
      port: 8080
      tools:
        - name: customer_issue_escalation_pipeline
          description: "Orchestrate customer issue escalation pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-jira
              type: call
              call: "jira.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-confluence
              type: call
              call: "confluence.process-resource"
              with:
                data: "{{get-jira.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Customer Issue Escalation Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian.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://atlassian.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

Runs data quality checks, scores datasets, creates remediation tickets, and publishes scorecards.

naftiko: "0.5"
info:
  label: "Data Quality Monitoring Pipeline"
  description: "Runs data quality checks, scores datasets, creates remediation tickets, and publishes scorecards."
  tags:
    - data-quality
    - snowflake
    - jira
    - grafana
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: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-jira
              type: call
              call: "jira.process-resource"
              with:
                data: "{{get-snowflake.result}}"
            - name: create-grafana
              type: call
              call: "grafana.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Data Quality Monitoring Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://atlassian.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://atlassian.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://atlassian-grafana.com/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_api_key" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: grafana-op
              method: POST

Scans Bitbucket repository dependencies via SonarQube, creates Jira security issues for critical findings, and alerts the security team on Slack.

naftiko: "0.5"
info:
  label: "Dependency Vulnerability Alert Pipeline"
  description: "Scans Bitbucket repository dependencies via SonarQube, creates Jira security issues for critical findings, and alerts the security team on Slack."
  tags:
    - security
    - dependencies
    - sonarqube
    - jira
    - slack
    - bitbucket
capability:
  exposes:
    - type: mcp
      namespace: dependency-security
      port: 8080
      tools:
        - name: scan-dependencies
          description: "Scan repo dependencies, create Jira tickets for vulnerabilities, and alert Slack."
          inputParameters:
            - name: sonar_project_key
              in: body
              type: string
              description: "SonarQube project key."
            - name: project_key
              in: body
              type: string
              description: "Jira project key for security issues."
            - name: slack_channel
              in: body
              type: string
              description: "Security team Slack channel."
          steps:
            - name: get-vulnerabilities
              type: call
              call: "sonarqube.get-issues"
              with:
                componentKeys: "{{sonar_project_key}}"
                types: "VULNERABILITY"
                severities: "CRITICAL,BLOCKER"
            - name: create-security-issue
              type: call
              call: "jira.create-issue"
              with:
                fields:
                  project:
                    key: "{{project_key}}"
                  summary: "Critical vulnerabilities in {{sonar_project_key}}: {{get-vulnerabilities.total}} found"
                  issuetype:
                    name: "Bug"
                  priority:
                    name: "Highest"
                  labels:
                    - "security"
                    - "vulnerability"
            - name: alert-team
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Security alert: {{get-vulnerabilities.total}} critical vulnerabilities found in {{sonar_project_key}}. Jira: {{create-security-issue.key}}"
  consumes:
    - type: http
      namespace: sonarqube
      baseUri: "https://sonarqube.atlassian-corp.com/api"
      authentication:
        type: bearer
        token: "$secrets.sonarqube_token"
      resources:
        - name: issues
          path: "/issues/search"
          inputParameters:
            - name: componentKeys
              in: query
            - name: types
              in: query
            - name: severities
              in: query
          operations:
            - name: get-issues
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.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: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

After a Bitbucket Pipeline completes, updates the Jira issue with deployment info, tags the Confluence release page, and notifies the team on Slack.

naftiko: "0.5"
info:
  label: "Deployment Tracker"
  description: "After a Bitbucket Pipeline completes, updates the Jira issue with deployment info, tags the Confluence release page, and notifies the team on Slack."
  tags:
    - ci-cd
    - deployments
    - bitbucket
    - jira
    - confluence
    - slack
capability:
  exposes:
    - type: mcp
      namespace: deployment-tracking
      port: 8080
      tools:
        - name: track-deployment
          description: "Record a deployment by updating Jira, appending to Confluence release notes, and notifying Slack."
          inputParameters:
            - name: issue_key
              in: body
              type: string
              description: "The Jira issue key tied to this deployment."
            - name: environment
              in: body
              type: string
              description: "Target environment (staging, production)."
            - name: version
              in: body
              type: string
              description: "The release version string."
            - name: release_page_id
              in: body
              type: string
              description: "Confluence release notes page ID."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel for deployment alerts."
          steps:
            - name: transition-issue
              type: call
              call: "jira.transition-issue"
              with:
                issue_key: "{{issue_key}}"
                transition:
                  id: "31"
            - name: add-comment
              type: call
              call: "jira.add-comment"
              with:
                issue_key: "{{issue_key}}"
                body: "Deployed version {{version}} to {{environment}}."
            - name: update-release-page
              type: call
              call: "confluence.update-page"
              with:
                page_id: "{{release_page_id}}"
                title: "Release {{version}}"
                body:
                  representation: "storage"
                  value: "<p>Version {{version}} deployed to {{environment}} on {{issue_key}}.</p>"
            - name: notify-team
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Deployed {{version}} to {{environment}}. Jira: {{issue_key}}. Release notes: https://atlassian-corp.atlassian.net/wiki/pages/viewpage.action?pageId={{release_page_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: transitions
          path: "/issue/{{issue_key}}/transitions"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: transition-issue
              method: POST
        - name: comments
          path: "/issue/{{issue_key}}/comment"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: add-comment
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://atlassian-corp.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/pages/{{page_id}}"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: update-page
              method: PUT
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Collects development metrics, analyzes trends, generates reports, and distributes to engineering leads.

naftiko: "0.5"
info:
  label: "Developer Productivity Metrics Pipeline"
  description: "Collects development metrics, analyzes trends, generates reports, and distributes to engineering leads."
  tags:
    - engineering
    - github
    - snowflake
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: developer_productivity_metrics_pipeline
          description: "Orchestrate developer productivity metrics pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-github
              type: call
              call: "github.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-snowflake
              type: call
              call: "snowflake.process-resource"
              with:
                data: "{{get-github.result}}"
            - name: create-powerbi
              type: call
              call: "powerbi.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Developer Productivity Metrics Pipeline step 3 complete."

  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: snowflake
      baseUri: "https://atlassian.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

Tests DR procedures, validates backup integrity, generates readiness reports, and notifies leadership.

naftiko: "0.5"
info:
  label: "Disaster Recovery Readiness Pipeline"
  description: "Tests DR procedures, validates backup integrity, generates readiness reports, and notifies leadership."
  tags:
    - disaster-recovery
    - servicenow
    - confluence
    - pagerduty
capability:
  exposes:
    - type: mcp
      namespace: disaster-recovery
      port: 8080
      tools:
        - name: disaster_recovery_readiness_pipeline
          description: "Orchestrate disaster recovery readiness pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-servicenow
              type: call
              call: "servicenow.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-confluence
              type: call
              call: "confluence.process-resource"
              with:
                data: "{{get-servicenow.result}}"
            - name: create-pagerduty
              type: call
              call: "pagerduty.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Disaster Recovery Readiness Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://atlassian.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: confluence
      baseUri: "https://atlassian.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: 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

Scans a Docker image for vulnerabilities, creates a Jira security ticket if critical findings exist, and alerts the security Slack channel.

naftiko: "0.5"
info:
  label: "Docker Image Vulnerability Scanner"
  description: "Scans a Docker image for vulnerabilities, creates a Jira security ticket if critical findings exist, and alerts the security Slack channel."
  tags:
    - security
    - container-security
    - docker
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: container-security
      port: 8080
      tools:
        - name: scan-docker-image
          description: "Scan a Docker image for vulnerabilities and report findings to Jira and Slack."
          inputParameters:
            - name: image_name
              in: body
              type: string
              description: "Full Docker image name with tag."
            - name: project_key
              in: body
              type: string
              description: "Jira project key for security issues."
            - name: slack_channel
              in: body
              type: string
              description: "Security Slack channel ID."
          steps:
            - name: scan-image
              type: call
              call: "docker-registry.scan-image"
              with:
                image: "{{image_name}}"
            - name: create-security-ticket
              type: call
              call: "jira.create-issue"
              with:
                fields:
                  project:
                    key: "{{project_key}}"
                  summary: "Vulnerability scan: {{image_name}}"
                  issuetype:
                    name: "Bug"
                  priority:
                    name: "High"
                  description: "Scan results for {{image_name}}: {{scan-image.vulnerabilities}}"
                  labels:
                    - "security"
                    - "container"
            - name: alert-security
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Container scan complete for {{image_name}}. Findings logged in {{create-security-ticket.key}}."
  consumes:
    - type: http
      namespace: docker-registry
      baseUri: "https://registry.atlassian-corp.com/v2"
      authentication:
        type: bearer
        token: "$secrets.docker_registry_token"
      resources:
        - name: scan
          path: "/{{image}}/scan"
          inputParameters:
            - name: image
              in: path
          operations:
            - name: scan-image
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.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: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Queries Elasticsearch for log entries matching a pattern within a time range. Returns matching documents for incident investigation.

naftiko: "0.5"
info:
  label: "Elasticsearch Log Search"
  description: "Queries Elasticsearch for log entries matching a pattern within a time range. Returns matching documents for incident investigation."
  tags:
    - observability
    - logging
    - elasticsearch
capability:
  exposes:
    - type: mcp
      namespace: log-search
      port: 8080
      tools:
        - name: search-logs
          description: "Search Elasticsearch logs by query string and time range."
          inputParameters:
            - name: index_pattern
              in: body
              type: string
              description: "Elasticsearch index pattern (e.g. logs-*)."
            - name: query_string
              in: body
              type: string
              description: "The search query."
            - name: time_from
              in: body
              type: string
              description: "Start time in ISO 8601."
            - name: time_to
              in: body
              type: string
              description: "End time in ISO 8601."
          call: "elasticsearch.search"
          with:
            index: "{{index_pattern}}"
            query: "{{query_string}}"
            from: "{{time_from}}"
            to: "{{time_to}}"
          outputParameters:
            - name: total_hits
              type: string
              mapping: "$.hits.total.value"
            - name: hits
              type: string
              mapping: "$.hits.hits"
  consumes:
    - type: http
      namespace: elasticsearch
      baseUri: "https://elasticsearch.atlassian-corp.com"
      authentication:
        type: basic
        username: "$secrets.elasticsearch_user"
        password: "$secrets.elasticsearch_password"
      resources:
        - name: search
          path: "/{{index}}/_search"
          inputParameters:
            - name: index
              in: path
          operations:
            - name: search
              method: POST

Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers.

naftiko: "0.5"
info:
  label: "Employee Onboarding Automation Pipeline"
  description: "Provisions new employee accounts, assigns training, creates IT tickets, and notifies managers."
  tags:
    - hr
    - workday
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: employee_onboarding_automation
          description: "Orchestrate employee onboarding automation pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-jira
              type: call
              call: "jira.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                data: "{{get-jira.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Employee Onboarding Automation Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian.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://atlassian.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

Calculates Jira epic progress by counting completed vs total child issues, updates the epic description with progress, and posts a weekly summary to Slack.

naftiko: "0.5"
info:
  label: "Epic Progress Tracker"
  description: "Calculates Jira epic progress by counting completed vs total child issues, updates the epic description with progress, and posts a weekly summary to Slack."
  tags:
    - project-management
    - agile
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: epic-tracking
      port: 8080
      tools:
        - name: track-epic-progress
          description: "Calculate epic progress from Jira, update the epic, and post summary to Slack."
          inputParameters:
            - name: epic_key
              in: body
              type: string
              description: "The Jira epic issue key."
            - name: slack_channel
              in: body
              type: string
              description: "Team Slack channel."
          steps:
            - name: get-epic-issues
              type: call
              call: "jira.search-issues"
              with:
                jql: "'Epic Link' = {{epic_key}}"
                maxResults: "200"
            - name: get-done-issues
              type: call
              call: "jira.search-issues"
              with:
                jql: "'Epic Link' = {{epic_key}} AND status = Done"
                maxResults: "200"
            - name: update-epic
              type: call
              call: "jira.add-comment"
              with:
                issue_key: "{{epic_key}}"
                body: "Progress update: {{get-done-issues.total}} / {{get-epic-issues.total}} issues completed."
            - name: post-summary
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Epic {{epic_key}} progress: {{get-done-issues.total}}/{{get-epic-issues.total}} issues done."
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: search
          path: "/search"
          operations:
            - name: search-issues
              method: POST
        - name: comments
          path: "/issue/{{issue_key}}/comment"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: add-comment
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Creates a Jira feature flag ticket, documents the rollout plan in Confluence, and announces the flag activation in Slack for team awareness.

naftiko: "0.5"
info:
  label: "Feature Flag Rollout Pipeline"
  description: "Creates a Jira feature flag ticket, documents the rollout plan in Confluence, and announces the flag activation in Slack for team awareness."
  tags:
    - feature-management
    - devops
    - jira
    - confluence
    - slack
capability:
  exposes:
    - type: mcp
      namespace: feature-flags
      port: 8080
      tools:
        - name: rollout-feature-flag
          description: "Create a Jira tracking ticket, document the rollout plan in Confluence, and notify Slack."
          inputParameters:
            - name: flag_name
              in: body
              type: string
              description: "Feature flag identifier."
            - name: rollout_percentage
              in: body
              type: string
              description: "Initial rollout percentage."
            - name: project_key
              in: body
              type: string
              description: "Jira project key."
            - name: space_key
              in: body
              type: string
              description: "Confluence space key."
            - name: slack_channel
              in: body
              type: string
              description: "Team Slack channel."
          steps:
            - name: create-tracking-ticket
              type: call
              call: "jira.create-issue"
              with:
                fields:
                  project:
                    key: "{{project_key}}"
                  summary: "Feature flag rollout: {{flag_name}} at {{rollout_percentage}}%"
                  issuetype:
                    name: "Task"
                  description: "Rolling out feature flag {{flag_name}} to {{rollout_percentage}}% of users."
            - name: document-plan
              type: call
              call: "confluence.create-page"
              with:
                spaceId: "{{space_key}}"
                title: "Feature Flag Rollout: {{flag_name}}"
                body:
                  representation: "storage"
                  value: "<h2>{{flag_name}}</h2><p>Rollout: {{rollout_percentage}}%</p><p>Tracking: {{create-tracking-ticket.key}}</p>"
            - name: announce
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Feature flag {{flag_name}} rolling out to {{rollout_percentage}}%. Tracking: {{create-tracking-ticket.key}}."
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.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: confluence
      baseUri: "https://atlassian-corp.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Lists merged Bitbucket branches, deletes stale ones, updates the Jira issues associated with those branches, and posts a cleanup summary to Slack.

naftiko: "0.5"
info:
  label: "Git Branch Cleanup Orchestrator"
  description: "Lists merged Bitbucket branches, deletes stale ones, updates the Jira issues associated with those branches, and posts a cleanup summary to Slack."
  tags:
    - version-control
    - devops
    - bitbucket
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: branch-cleanup
      port: 8080
      tools:
        - name: cleanup-merged-branches
          description: "Delete merged branches in Bitbucket, update associated Jira issues, and notify Slack."
          inputParameters:
            - name: workspace
              in: body
              type: string
              description: "Bitbucket workspace slug."
            - name: repo_slug
              in: body
              type: string
              description: "Repository slug."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel for cleanup reports."
          steps:
            - name: list-branches
              type: call
              call: "bitbucket.list-branches"
              with:
                workspace: "{{workspace}}"
                repo_slug: "{{repo_slug}}"
            - name: delete-merged
              type: call
              call: "bitbucket.delete-branch"
              with:
                workspace: "{{workspace}}"
                repo_slug: "{{repo_slug}}"
                branch_name: "{{list-branches.values[0].name}}"
            - name: notify-cleanup
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Branch cleanup complete for {{workspace}}/{{repo_slug}}. Merged branches removed."
  consumes:
    - type: http
      namespace: bitbucket
      baseUri: "https://api.bitbucket.org/2.0"
      authentication:
        type: bearer
        token: "$secrets.bitbucket_token"
      resources:
        - name: branches
          path: "/repositories/{{workspace}}/{{repo_slug}}/refs/branches"
          inputParameters:
            - name: workspace
              in: path
            - name: repo_slug
              in: path
          operations:
            - name: list-branches
              method: GET
        - name: branch
          path: "/repositories/{{workspace}}/{{repo_slug}}/refs/branches/{{branch_name}}"
          inputParameters:
            - name: workspace
              in: path
            - name: repo_slug
              in: path
            - name: branch_name
              in: path
          operations:
            - name: delete-branch
              method: DELETE
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Collects incident data, generates timeline, creates postmortem document, and schedules review meeting.

naftiko: "0.5"
info:
  label: "Incident Postmortem Pipeline"
  description: "Collects incident data, generates timeline, creates postmortem document, and schedules review meeting."
  tags:
    - sre
    - jira
    - confluence
    - slack
capability:
  exposes:
    - type: mcp
      namespace: sre
      port: 8080
      tools:
        - name: incident_postmortem_pipeline
          description: "Orchestrate incident postmortem pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-jira
              type: call
              call: "jira.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-confluence
              type: call
              call: "confluence.process-resource"
              with:
                data: "{{get-jira.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Incident Postmortem Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian.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://atlassian.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

On alert trigger, creates a Jira incident ticket, posts to a Slack incident channel, and pages the on-call engineer via Opsgenie.

naftiko: "0.5"
info:
  label: "Incident Response Orchestrator"
  description: "On alert trigger, creates a Jira incident ticket, posts to a Slack incident channel, and pages the on-call engineer via Opsgenie."
  tags:
    - incident-management
    - devops
    - jira
    - slack
    - opsgenie
capability:
  exposes:
    - type: mcp
      namespace: incident-response
      port: 8080
      tools:
        - name: trigger-incident-response
          description: "Given an alert description and severity, create a Jira incident, notify Slack, and page on-call via Opsgenie."
          inputParameters:
            - name: alert_name
              in: body
              type: string
              description: "Name of the triggered alert."
            - name: severity
              in: body
              type: string
              description: "Incident severity (P1, P2, P3, P4)."
            - name: description
              in: body
              type: string
              description: "Alert description with context."
            - name: slack_channel
              in: body
              type: string
              description: "Slack incident channel ID."
          steps:
            - name: create-incident
              type: call
              call: "jira.create-issue"
              with:
                fields:
                  project:
                    key: "INC"
                  summary: "[{{severity}}] {{alert_name}}"
                  description: "{{description}}"
                  issuetype:
                    name: "Incident"
                  priority:
                    name: "{{severity}}"
            - name: notify-slack
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Incident created: {{create-incident.key}} - [{{severity}}] {{alert_name}}. Paging on-call."
            - name: page-oncall
              type: call
              call: "opsgenie.create-alert"
              with:
                message: "[{{severity}}] {{alert_name}} - Jira: {{create-incident.key}}"
                priority: "{{severity}}"
                description: "{{description}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.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: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: opsgenie
      baseUri: "https://api.opsgenie.com/v2"
      authentication:
        type: bearer
        token: "$secrets.opsgenie_api_key"
      resources:
        - name: alerts
          path: "/alerts"
          operations:
            - name: create-alert
              method: POST

Attributes cloud costs to teams, generates chargeback reports, and distributes to engineering managers.

naftiko: "0.5"
info:
  label: "Infrastructure Cost Allocation Pipeline"
  description: "Attributes cloud costs to teams, generates chargeback reports, and distributes to engineering managers."
  tags:
    - finops
    - snowflake
    - powerbi
    - slack
capability:
  exposes:
    - type: mcp
      namespace: finops
      port: 8080
      tools:
        - name: infrastructure_cost_allocation_pipeline
          description: "Orchestrate infrastructure cost allocation pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-snowflake
              type: call
              call: "snowflake.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-powerbi
              type: call
              call: "powerbi.process-resource"
              with:
                data: "{{get-snowflake.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Infrastructure Cost Allocation Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://atlassian.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

Compares deployed state against desired config, identifies drift, creates remediation tickets, and alerts ops.

naftiko: "0.5"
info:
  label: "Infrastructure Drift Detection Pipeline"
  description: "Compares deployed state against desired config, identifies drift, creates remediation tickets, and alerts ops."
  tags:
    - devops
    - github
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: devops
      port: 8080
      tools:
        - name: infrastructure_drift_detection
          description: "Orchestrate infrastructure drift detection pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-github
              type: call
              call: "github.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-jira
              type: call
              call: "jira.process-resource"
              with:
                data: "{{get-github.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Infrastructure Drift Detection Pipeline step 3 complete."

  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://atlassian.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

Tracks asset lifecycle stages, schedules replacements, manages disposal, and updates CMDB.

naftiko: "0.5"
info:
  label: "IT Asset Lifecycle Pipeline"
  description: "Tracks asset lifecycle stages, schedules replacements, manages disposal, and updates CMDB."
  tags:
    - operations
    - servicenow
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: operations
      port: 8080
      tools:
        - name: it_asset_lifecycle_pipeline
          description: "Orchestrate it asset lifecycle pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-servicenow
              type: call
              call: "servicenow.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-snowflake
              type: call
              call: "snowflake.process-resource"
              with:
                data: "{{get-servicenow.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "IT Asset Lifecycle Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://atlassian.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://atlassian.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 a Jenkins job for the latest build result, duration, and timestamp. Used by DevOps teams to monitor CI pipeline health.

naftiko: "0.5"
info:
  label: "Jenkins Build Status Check"
  description: "Queries a Jenkins job for the latest build result, duration, and timestamp. Used by DevOps teams to monitor CI pipeline health."
  tags:
    - ci-cd
    - continuous-integration
    - jenkins
capability:
  exposes:
    - type: mcp
      namespace: jenkins-builds
      port: 8080
      tools:
        - name: get-last-build
          description: "Get the last build status for a Jenkins job."
          inputParameters:
            - name: job_name
              in: body
              type: string
              description: "The Jenkins job name."
          call: "jenkins.get-last-build"
          with:
            job_name: "{{job_name}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.result"
            - name: duration
              type: string
              mapping: "$.duration"
            - name: timestamp
              type: string
              mapping: "$.timestamp"
  consumes:
    - type: http
      namespace: jenkins
      baseUri: "https://jenkins.atlassian-corp.com"
      authentication:
        type: basic
        username: "$secrets.jenkins_user"
        password: "$secrets.jenkins_api_token"
      resources:
        - name: builds
          path: "/job/{{job_name}}/lastBuild/api/json"
          inputParameters:
            - name: job_name
              in: path
          operations:
            - name: get-last-build
              method: GET

Triggers a Jenkins pipeline build for a branch, updates the associated Jira issue with build status, and posts results to Slack.

naftiko: "0.5"
info:
  label: "Jenkins Pipeline Trigger with Jira Update"
  description: "Triggers a Jenkins pipeline build for a branch, updates the associated Jira issue with build status, and posts results to Slack."
  tags:
    - ci-cd
    - continuous-integration
    - jenkins
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: jenkins-ci
      port: 8080
      tools:
        - name: trigger-build-and-report
          description: "Trigger a Jenkins build, update Jira with results, and notify Slack."
          inputParameters:
            - name: job_name
              in: body
              type: string
              description: "Jenkins job name."
            - name: branch
              in: body
              type: string
              description: "Branch to build."
            - name: issue_key
              in: body
              type: string
              description: "Associated Jira issue key."
            - name: slack_channel
              in: body
              type: string
              description: "Build notification Slack channel."
          steps:
            - name: trigger-build
              type: call
              call: "jenkins.trigger-build"
              with:
                job_name: "{{job_name}}"
                branch: "{{branch}}"
            - name: comment-jira
              type: call
              call: "jira.add-comment"
              with:
                issue_key: "{{issue_key}}"
                body: "Jenkins build triggered for {{job_name}}/{{branch}}. Build #{{trigger-build.nextBuildNumber}}."
            - name: notify-slack
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Build triggered: {{job_name}}/{{branch}} (#{{trigger-build.nextBuildNumber}}) for {{issue_key}}."
  consumes:
    - type: http
      namespace: jenkins
      baseUri: "https://jenkins.atlassian-corp.com"
      authentication:
        type: basic
        username: "$secrets.jenkins_user"
        password: "$secrets.jenkins_api_token"
      resources:
        - name: builds
          path: "/job/{{job_name}}/buildWithParameters"
          inputParameters:
            - name: job_name
              in: path
            - name: branch
              in: query
          operations:
            - name: trigger-build
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: comments
          path: "/issue/{{issue_key}}/comment"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: add-comment
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves a Jira issue by key and returns summary, status, assignee, and priority. Used by support and engineering teams to quickly check ticket state.

naftiko: "0.5"
info:
  label: "Jira Issue Lookup"
  description: "Retrieves a Jira issue by key and returns summary, status, assignee, and priority. Used by support and engineering teams to quickly check ticket state."
  tags:
    - project-management
    - issue-tracking
    - jira
capability:
  exposes:
    - type: mcp
      namespace: jira-issues
      port: 8080
      tools:
        - name: get-issue
          description: "Look up a Jira issue by key and return its summary, status, assignee, and priority."
          inputParameters:
            - name: issue_key
              in: body
              type: string
              description: "The Jira issue key (e.g. PROJ-123)."
          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://atlassian-corp.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

Transitions a Jira issue to a new status, adds a comment, and posts the status change to a Slack channel for team visibility.

naftiko: "0.5"
info:
  label: "Jira Issue Transition with Slack Update"
  description: "Transitions a Jira issue to a new status, adds a comment, and posts the status change to a Slack channel for team visibility."
  tags:
    - project-management
    - workflow
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: issue-workflow
      port: 8080
      tools:
        - name: transition-and-notify
          description: "Transition a Jira issue and notify a Slack channel of the change."
          inputParameters:
            - name: issue_key
              in: body
              type: string
              description: "The Jira issue key."
            - name: transition_id
              in: body
              type: string
              description: "The target transition ID."
            - name: comment
              in: body
              type: string
              description: "Comment to add to the issue."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel ID."
          steps:
            - name: transition
              type: call
              call: "jira.transition-issue"
              with:
                issue_key: "{{issue_key}}"
                transition:
                  id: "{{transition_id}}"
            - name: add-comment
              type: call
              call: "jira.add-comment"
              with:
                issue_key: "{{issue_key}}"
                body: "{{comment}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Issue {{issue_key}} transitioned. Comment: {{comment}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: transitions
          path: "/issue/{{issue_key}}/transitions"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: transition-issue
              method: POST
        - name: comments
          path: "/issue/{{issue_key}}/comment"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: add-comment
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Executes a JQL query against Jira and returns matching issues. Used by teams to build custom dashboards and reporting workflows.

naftiko: "0.5"
info:
  label: "Jira JQL Search"
  description: "Executes a JQL query against Jira and returns matching issues. Used by teams to build custom dashboards and reporting workflows."
  tags:
    - project-management
    - search
    - jira
capability:
  exposes:
    - type: mcp
      namespace: jira-search
      port: 8080
      tools:
        - name: search-issues
          description: "Run a JQL query and return matching Jira issues."
          inputParameters:
            - name: jql
              in: body
              type: string
              description: "The JQL query string."
            - name: max_results
              in: body
              type: string
              description: "Maximum number of results to return (default 50)."
          call: "jira.search-issues"
          with:
            jql: "{{jql}}"
            maxResults: "{{max_results}}"
          outputParameters:
            - name: total
              type: string
              mapping: "$.total"
            - name: issues
              type: string
              mapping: "$.issues"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: search
          path: "/search"
          operations:
            - name: search-issues
              method: POST

Retrieves all components defined in a Jira project. Used by engineering leads to audit component ownership and assignment coverage.

naftiko: "0.5"
info:
  label: "Jira Project Component List"
  description: "Retrieves all components defined in a Jira project. Used by engineering leads to audit component ownership and assignment coverage."
  tags:
    - project-management
    - issue-tracking
    - jira
capability:
  exposes:
    - type: mcp
      namespace: jira-components
      port: 8080
      tools:
        - name: list-components
          description: "List all components for a Jira project by project key."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "The Jira project key."
          call: "jira.get-components"
          with:
            project_key: "{{project_key}}"
          outputParameters:
            - name: components
              type: string
              mapping: "$"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: components
          path: "/project/{{project_key}}/components"
          inputParameters:
            - name: project_key
              in: path
          operations:
            - name: get-components
              method: GET

Lists all active sprints for a given Jira board and returns sprint names, start dates, and end dates. Used by scrum masters to monitor iteration progress.

naftiko: "0.5"
info:
  label: "Jira Sprint Board Status"
  description: "Lists all active sprints for a given Jira board and returns sprint names, start dates, and end dates. Used by scrum masters to monitor iteration progress."
  tags:
    - project-management
    - agile
    - jira
capability:
  exposes:
    - type: mcp
      namespace: jira-agile
      port: 8080
      tools:
        - name: list-active-sprints
          description: "List all active sprints for a Jira Agile board by board ID."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "The Jira Agile board ID."
          call: "jira-agile.get-sprints"
          with:
            board_id: "{{board_id}}"
          outputParameters:
            - name: sprints
              type: string
              mapping: "$.values"
  consumes:
    - type: http
      namespace: jira-agile
      baseUri: "https://atlassian-corp.atlassian.net/rest/agile/1.0"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: board-sprints
          path: "/board/{{board_id}}/sprint"
          inputParameters:
            - name: board_id
              in: path
          operations:
            - name: get-sprints
              method: GET

Searches for Jira users by display name or email. Returns account IDs, display names, and email addresses for assignment workflows.

naftiko: "0.5"
info:
  label: "Jira User Search"
  description: "Searches for Jira users by display name or email. Returns account IDs, display names, and email addresses for assignment workflows."
  tags:
    - project-management
    - user-management
    - jira
capability:
  exposes:
    - type: mcp
      namespace: jira-users
      port: 8080
      tools:
        - name: search-users
          description: "Search for Jira users by query string (name or email)."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The search query (display name or email)."
          call: "jira.search-users"
          with:
            query: "{{query}}"
          outputParameters:
            - name: users
              type: string
              mapping: "$"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: user-search
          path: "/user/search"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: search-users
              method: GET

Creates a Confluence knowledge base article from structured content, links it to a Jira service desk ticket, and announces it on Slack.

naftiko: "0.5"
info:
  label: "Knowledge Base Article Publisher"
  description: "Creates a Confluence knowledge base article from structured content, links it to a Jira service desk ticket, and announces it on Slack."
  tags:
    - knowledge-base
    - documentation
    - confluence
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: kb-publishing
      port: 8080
      tools:
        - name: publish-kb-article
          description: "Create a Confluence KB article, link to Jira ticket, and notify Slack."
          inputParameters:
            - name: space_key
              in: body
              type: string
              description: "Confluence space key."
            - name: title
              in: body
              type: string
              description: "Article title."
            - name: content_html
              in: body
              type: string
              description: "Article body in HTML."
            - name: issue_key
              in: body
              type: string
              description: "Related Jira Service Desk ticket key."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel for KB announcements."
          steps:
            - name: create-article
              type: call
              call: "confluence.create-page"
              with:
                spaceId: "{{space_key}}"
                title: "{{title}}"
                body:
                  representation: "storage"
                  value: "{{content_html}}"
            - name: link-to-jira
              type: call
              call: "jira.add-comment"
              with:
                issue_key: "{{issue_key}}"
                body: "KB article published: {{title}} - https://atlassian-corp.atlassian.net/wiki/pages/viewpage.action?pageId={{create-article.id}}"
            - name: announce
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "New KB article: {{title}}. Related to {{issue_key}}."
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://atlassian-corp.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: comments
          path: "/issue/{{issue_key}}/comment"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: add-comment
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Identifies stale articles, assigns review tasks, tracks updates, and publishes freshness reports.

naftiko: "0.5"
info:
  label: "Knowledge Base Freshness Pipeline"
  description: "Identifies stale articles, assigns review tasks, tracks updates, and publishes freshness reports."
  tags:
    - knowledge
    - confluence
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: knowledge
      port: 8080
      tools:
        - name: knowledge_base_freshness_pipeline
          description: "Orchestrate knowledge base freshness pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-confluence
              type: call
              call: "confluence.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-jira
              type: call
              call: "jira.process-resource"
              with:
                data: "{{get-confluence.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Knowledge Base Freshness Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://atlassian.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://atlassian.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

Retrieves collection statistics from MongoDB including document count, storage size, and index sizes for capacity monitoring.

naftiko: "0.5"
info:
  label: "MongoDB Collection Stats"
  description: "Retrieves collection statistics from MongoDB including document count, storage size, and index sizes for capacity monitoring."
  tags:
    - databases
    - monitoring
    - mongodb
capability:
  exposes:
    - type: mcp
      namespace: mongodb-stats
      port: 8080
      tools:
        - name: get-collection-stats
          description: "Get MongoDB collection statistics by database and collection name."
          inputParameters:
            - name: database
              in: body
              type: string
              description: "MongoDB database name."
            - name: collection
              in: body
              type: string
              description: "Collection name."
          call: "mongodb.collection-stats"
          with:
            database: "{{database}}"
            collection: "{{collection}}"
          outputParameters:
            - name: count
              type: string
              mapping: "$.count"
            - name: size
              type: string
              mapping: "$.size"
            - name: storageSize
              type: string
              mapping: "$.storageSize"
  consumes:
    - type: http
      namespace: mongodb
      baseUri: "https://mongodb-atlas.atlassian-corp.com/api/atlas/v1.0"
      authentication:
        type: basic
        username: "$secrets.mongodb_public_key"
        password: "$secrets.mongodb_private_key"
      resources:
        - name: collection-stats
          path: "/groups/{{database}}/collStats/{{collection}}"
          inputParameters:
            - name: database
              in: path
            - name: collection
              in: path
          operations:
            - name: collection-stats
              method: GET

On new developer onboarding, provisions Bitbucket repo access, creates a Jira onboarding epic, adds Confluence getting-started page, and sends Slack welcome.

naftiko: "0.5"
info:
  label: "New Hire Developer Onboarding"
  description: "On new developer onboarding, provisions Bitbucket repo access, creates a Jira onboarding epic, adds Confluence getting-started page, and sends Slack welcome."
  tags:
    - onboarding
    - devops
    - bitbucket
    - jira
    - confluence
    - slack
capability:
  exposes:
    - type: mcp
      namespace: dev-onboarding
      port: 8080
      tools:
        - name: onboard-developer
          description: "Orchestrate new developer onboarding across Bitbucket, Jira, Confluence, and Slack."
          inputParameters:
            - name: developer_name
              in: body
              type: string
              description: "Full name of the new developer."
            - name: developer_email
              in: body
              type: string
              description: "Email address."
            - name: team_workspace
              in: body
              type: string
              description: "Bitbucket workspace to grant access."
            - name: project_key
              in: body
              type: string
              description: "Jira project key for onboarding epic."
            - name: space_key
              in: body
              type: string
              description: "Confluence space key."
            - name: slack_channel
              in: body
              type: string
              description: "Slack welcome channel ID."
          steps:
            - name: invite-to-workspace
              type: call
              call: "bitbucket.invite-user"
              with:
                workspace: "{{team_workspace}}"
                email: "{{developer_email}}"
            - name: create-onboarding-epic
              type: call
              call: "jira.create-issue"
              with:
                fields:
                  project:
                    key: "{{project_key}}"
                  summary: "Onboarding: {{developer_name}}"
                  issuetype:
                    name: "Epic"
                  description: "Onboarding tasks for {{developer_name}} ({{developer_email}})."
            - name: create-starter-page
              type: call
              call: "confluence.create-page"
              with:
                spaceId: "{{space_key}}"
                title: "Getting Started - {{developer_name}}"
                body:
                  representation: "storage"
                  value: "<h2>Welcome {{developer_name}}</h2><p>Your onboarding epic: {{create-onboarding-epic.key}}</p>"
            - name: send-welcome
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Welcome {{developer_name}}! Your onboarding epic is {{create-onboarding-epic.key}}. Check out your getting started page in Confluence."
  consumes:
    - type: http
      namespace: bitbucket
      baseUri: "https://api.bitbucket.org/2.0"
      authentication:
        type: bearer
        token: "$secrets.bitbucket_token"
      resources:
        - name: workspace-members
          path: "/workspaces/{{workspace}}/members"
          inputParameters:
            - name: workspace
              in: path
          operations:
            - name: invite-user
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.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: confluence
      baseUri: "https://atlassian-corp.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves distributed trace data by trace ID from an OpenTelemetry-compatible backend. Used for debugging latency and error propagation.

naftiko: "0.5"
info:
  label: "OpenTelemetry Trace Lookup"
  description: "Retrieves distributed trace data by trace ID from an OpenTelemetry-compatible backend. Used for debugging latency and error propagation."
  tags:
    - observability
    - tracing
    - opentelemetry
capability:
  exposes:
    - type: mcp
      namespace: otel-traces
      port: 8080
      tools:
        - name: get-trace
          description: "Retrieve a distributed trace by trace ID."
          inputParameters:
            - name: trace_id
              in: body
              type: string
              description: "The 32-character hex trace ID."
          call: "otel.get-trace"
          with:
            trace_id: "{{trace_id}}"
          outputParameters:
            - name: spans
              type: string
              mapping: "$.batches"
  consumes:
    - type: http
      namespace: otel
      baseUri: "https://tempo.atlassian-corp.com/api"
      authentication:
        type: bearer
        token: "$secrets.tempo_token"
      resources:
        - name: traces
          path: "/traces/{{trace_id}}"
          inputParameters:
            - name: trace_id
              in: path
          operations:
            - name: get-trace
              method: GET

Retrieves the current on-call engineer for an Opsgenie schedule. Used by incident coordinators to identify the responsible responder.

naftiko: "0.5"
info:
  label: "Opsgenie On-Call Schedule Lookup"
  description: "Retrieves the current on-call engineer for an Opsgenie schedule. Used by incident coordinators to identify the responsible responder."
  tags:
    - incident-management
    - on-call
    - opsgenie
capability:
  exposes:
    - type: mcp
      namespace: opsgenie-oncall
      port: 8080
      tools:
        - name: get-on-call
          description: "Get the current on-call participant for an Opsgenie schedule."
          inputParameters:
            - name: schedule_id
              in: body
              type: string
              description: "The Opsgenie schedule ID or name."
          call: "opsgenie.get-on-call"
          with:
            schedule_id: "{{schedule_id}}"
          outputParameters:
            - name: on_call_participants
              type: string
              mapping: "$.data.onCallParticipants"
  consumes:
    - type: http
      namespace: opsgenie
      baseUri: "https://api.opsgenie.com/v2"
      authentication:
        type: bearer
        token: "$secrets.opsgenie_api_key"
      resources:
        - name: schedules
          path: "/schedules/{{schedule_id}}/on-calls"
          inputParameters:
            - name: schedule_id
              in: path
          operations:
            - name: get-on-call
              method: GET

Initiates review cycles, collects feedback, aggregates scores, and distributes to managers.

naftiko: "0.5"
info:
  label: "Performance Review Cycle Pipeline"
  description: "Initiates review cycles, collects feedback, aggregates scores, and distributes to managers."
  tags:
    - hr
    - workday
    - confluence
    - slack
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: performance_review_cycle_pipeline
          description: "Orchestrate performance review cycle pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-jira
              type: call
              call: "jira.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-confluence
              type: call
              call: "confluence.process-resource"
              with:
                data: "{{get-jira.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Performance Review Cycle Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian.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://atlassian.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

Queries PostgreSQL performance statistics for slow queries and returns execution times and query plans for database optimization.

naftiko: "0.5"
info:
  label: "PostgreSQL Slow Query Report"
  description: "Queries PostgreSQL performance statistics for slow queries and returns execution times and query plans for database optimization."
  tags:
    - databases
    - performance
    - postgresql
capability:
  exposes:
    - type: mcp
      namespace: pg-performance
      port: 8080
      tools:
        - name: get-slow-queries
          description: "Retrieve PostgreSQL slow queries exceeding a duration threshold."
          inputParameters:
            - name: database_id
              in: body
              type: string
              description: "The database cluster identifier."
            - name: min_duration_ms
              in: body
              type: string
              description: "Minimum query duration in milliseconds."
          call: "postgresql.get-slow-queries"
          with:
            database_id: "{{database_id}}"
            min_duration_ms: "{{min_duration_ms}}"
          outputParameters:
            - name: queries
              type: string
              mapping: "$.slow_queries"
  consumes:
    - type: http
      namespace: postgresql
      baseUri: "https://pgadmin.atlassian-corp.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.pgadmin_token"
      resources:
        - name: slow-queries
          path: "/clusters/{{database_id}}/slow-queries"
          inputParameters:
            - name: database_id
              in: path
            - name: min_duration_ms
              in: query
          operations:
            - name: get-slow-queries
              method: GET

After an incident is resolved, gathers Jira incident details, collects Opsgenie alert timeline, and publishes a postmortem page in Confluence.

naftiko: "0.5"
info:
  label: "Postmortem Report Generator"
  description: "After an incident is resolved, gathers Jira incident details, collects Opsgenie alert timeline, and publishes a postmortem page in Confluence."
  tags:
    - incident-management
    - postmortem
    - jira
    - opsgenie
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: postmortem
      port: 8080
      tools:
        - name: generate-postmortem
          description: "Compile incident data from Jira and Opsgenie, then publish a postmortem Confluence page."
          inputParameters:
            - name: incident_key
              in: body
              type: string
              description: "The Jira incident issue key."
            - name: alert_id
              in: body
              type: string
              description: "The Opsgenie alert ID."
            - name: space_key
              in: body
              type: string
              description: "Confluence space key for postmortems."
          steps:
            - name: get-incident
              type: call
              call: "jira.get-issue"
              with:
                issue_key: "{{incident_key}}"
            - name: get-alert
              type: call
              call: "opsgenie.get-alert"
              with:
                alert_id: "{{alert_id}}"
            - name: publish-postmortem
              type: call
              call: "confluence.create-page"
              with:
                spaceId: "{{space_key}}"
                title: "Postmortem: {{get-incident.fields.summary}}"
                body:
                  representation: "storage"
                  value: "<h2>Incident: {{incident_key}}</h2><p>Summary: {{get-incident.fields.summary}}</p><p>Alert: {{get-alert.data.message}}</p><p>Created: {{get-alert.data.createdAt}}</p><p>Acknowledged: {{get-alert.data.acknowledged}}</p>"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.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
    - type: http
      namespace: opsgenie
      baseUri: "https://api.opsgenie.com/v2"
      authentication:
        type: bearer
        token: "$secrets.opsgenie_api_key"
      resources:
        - name: alerts
          path: "/alerts/{{alert_id}}"
          inputParameters:
            - name: alert_id
              in: path
          operations:
            - name: get-alert
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://atlassian-corp.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST

Queries Prometheus for active alerts and returns alert names, severity labels, and descriptions. Used by SRE teams to check current system health.

naftiko: "0.5"
info:
  label: "Prometheus Alert Query"
  description: "Queries Prometheus for active alerts and returns alert names, severity labels, and descriptions. Used by SRE teams to check current system health."
  tags:
    - monitoring
    - observability
    - prometheus
capability:
  exposes:
    - type: mcp
      namespace: prometheus-alerts
      port: 8080
      tools:
        - name: get-active-alerts
          description: "Retrieve all currently firing alerts from Prometheus."
          inputParameters: []
          call: "prometheus.get-alerts"
          with: {}
          outputParameters:
            - name: alerts
              type: string
              mapping: "$.data.alerts"
  consumes:
    - type: http
      namespace: prometheus
      baseUri: "https://prometheus.atlassian-corp.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.prometheus_token"
      resources:
        - name: alerts
          path: "/alerts"
          operations:
            - name: get-alerts
              method: GET

Executes a PromQL instant query against Prometheus and returns the result vector. Used for ad-hoc metric lookups during troubleshooting.

naftiko: "0.5"
info:
  label: "Prometheus Metric Query"
  description: "Executes a PromQL instant query against Prometheus and returns the result vector. Used for ad-hoc metric lookups during troubleshooting."
  tags:
    - monitoring
    - observability
    - prometheus
capability:
  exposes:
    - type: mcp
      namespace: prometheus-query
      port: 8080
      tools:
        - name: query-metric
          description: "Execute a PromQL instant query."
          inputParameters:
            - name: promql
              in: body
              type: string
              description: "The PromQL query expression."
          call: "prometheus.instant-query"
          with:
            query: "{{promql}}"
          outputParameters:
            - name: result
              type: string
              mapping: "$.data.result"
  consumes:
    - type: http
      namespace: prometheus
      baseUri: "https://prometheus.atlassian-corp.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.prometheus_token"
      resources:
        - name: query
          path: "/query"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: instant-query
              method: GET

When a Bitbucket PR is opened, runs SonarQube analysis, creates a Jira code review subtask, and posts the review link to Slack.

naftiko: "0.5"
info:
  label: "Pull Request Review Pipeline"
  description: "When a Bitbucket PR is opened, runs SonarQube analysis, creates a Jira code review subtask, and posts the review link to Slack."
  tags:
    - code-review
    - ci-cd
    - bitbucket
    - sonarqube
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: pr-review
      port: 8080
      tools:
        - name: initiate-pr-review
          description: "On PR open, trigger SonarQube scan, create a Jira review task, and notify Slack."
          inputParameters:
            - name: workspace
              in: body
              type: string
              description: "Bitbucket workspace slug."
            - name: repo_slug
              in: body
              type: string
              description: "Bitbucket repository slug."
            - name: pr_id
              in: body
              type: string
              description: "Pull request ID."
            - name: parent_issue_key
              in: body
              type: string
              description: "The parent Jira issue key for the subtask."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel for code review notifications."
          steps:
            - name: get-pr
              type: call
              call: "bitbucket.get-pr"
              with:
                workspace: "{{workspace}}"
                repo_slug: "{{repo_slug}}"
                pr_id: "{{pr_id}}"
            - name: trigger-scan
              type: call
              call: "sonarqube.trigger-analysis"
              with:
                project_key: "{{workspace}}_{{repo_slug}}"
            - name: create-review-task
              type: call
              call: "jira.create-issue"
              with:
                fields:
                  project:
                    key: "{{parent_issue_key}}"
                  summary: "Code Review: PR #{{pr_id}} - {{get-pr.title}}"
                  issuetype:
                    name: "Sub-task"
                  parent:
                    key: "{{parent_issue_key}}"
            - name: notify-reviewers
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Code review needed: PR #{{pr_id}} in {{workspace}}/{{repo_slug}} - {{get-pr.title}}. Jira: {{create-review-task.key}}. SonarQube scan initiated."
  consumes:
    - type: http
      namespace: bitbucket
      baseUri: "https://api.bitbucket.org/2.0"
      authentication:
        type: bearer
        token: "$secrets.bitbucket_token"
      resources:
        - name: pull-requests
          path: "/repositories/{{workspace}}/{{repo_slug}}/pullrequests/{{pr_id}}"
          inputParameters:
            - name: workspace
              in: path
            - name: repo_slug
              in: path
            - name: pr_id
              in: path
          operations:
            - name: get-pr
              method: GET
    - type: http
      namespace: sonarqube
      baseUri: "https://sonarqube.atlassian-corp.com/api"
      authentication:
        type: bearer
        token: "$secrets.sonarqube_token"
      resources:
        - name: analysis
          path: "/ce/submit"
          inputParameters:
            - name: project_key
              in: query
          operations:
            - name: trigger-analysis
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.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: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves Redis server info including memory usage, connected clients, and keyspace stats for capacity planning.

naftiko: "0.5"
info:
  label: "Redis Cache Metrics Query"
  description: "Retrieves Redis server info including memory usage, connected clients, and keyspace stats for capacity planning."
  tags:
    - monitoring
    - caching
    - redis
capability:
  exposes:
    - type: mcp
      namespace: redis-monitoring
      port: 8080
      tools:
        - name: get-redis-info
          description: "Query Redis server info for memory, clients, and keyspace statistics."
          inputParameters:
            - name: section
              in: body
              type: string
              description: "Redis INFO section (memory, clients, keyspace, all)."
          call: "redis.get-info"
          with:
            section: "{{section}}"
          outputParameters:
            - name: info
              type: string
              mapping: "$"
  consumes:
    - type: http
      namespace: redis
      baseUri: "https://redis-admin.atlassian-corp.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.redis_admin_token"
      resources:
        - name: info
          path: "/info/{{section}}"
          inputParameters:
            - name: section
              in: path
          operations:
            - name: get-info
              method: GET

Gathers all resolved Jira issues for a release version, compiles release notes in Confluence, and announces the release in Slack.

naftiko: "0.5"
info:
  label: "Release Notes Compiler"
  description: "Gathers all resolved Jira issues for a release version, compiles release notes in Confluence, and announces the release in Slack."
  tags:
    - release-management
    - documentation
    - jira
    - confluence
    - slack
capability:
  exposes:
    - type: mcp
      namespace: release-notes
      port: 8080
      tools:
        - name: compile-release-notes
          description: "Query Jira for resolved issues in a version, create Confluence release notes, and post to Slack."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "Jira project key."
            - name: fix_version
              in: body
              type: string
              description: "The fix version string."
            - name: space_key
              in: body
              type: string
              description: "Confluence space key."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel for release announcements."
          steps:
            - name: query-resolved
              type: call
              call: "jira.search-issues"
              with:
                jql: "project = {{project_key}} AND fixVersion = '{{fix_version}}' AND status = Done"
                maxResults: "200"
            - name: create-release-page
              type: call
              call: "confluence.create-page"
              with:
                spaceId: "{{space_key}}"
                title: "Release Notes: {{fix_version}}"
                body:
                  representation: "storage"
                  value: "<h2>Release {{fix_version}}</h2><p>Total resolved issues: {{query-resolved.total}}</p>"
            - name: announce-release
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Release {{fix_version}} notes published. {{query-resolved.total}} issues resolved. View: https://atlassian-corp.atlassian.net/wiki/pages/viewpage.action?pageId={{create-release-page.id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: search
          path: "/search"
          operations:
            - name: search-issues
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://atlassian-corp.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Validates release criteria, checks test coverage, verifies documentation, and approves deployment.

naftiko: "0.5"
info:
  label: "Release Readiness Checklist Pipeline"
  description: "Validates release criteria, checks test coverage, verifies documentation, and approves deployment."
  tags:
    - devops
    - jira
    - github
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: devops
      port: 8080
      tools:
        - name: release_readiness_checklist_pipeline
          description: "Orchestrate release readiness checklist pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-jira
              type: call
              call: "jira.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-github
              type: call
              call: "github.process-resource"
              with:
                data: "{{get-jira.result}}"
            - name: create-confluence
              type: call
              call: "confluence.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Release Readiness Checklist Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian.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: 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: confluence
      baseUri: "https://atlassian.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

Links a Confluence runbook page to a Jira incident, logs execution steps as Jira comments, and broadcasts progress on Slack during incident remediation.

naftiko: "0.5"
info:
  label: "Runbook Execution Tracker"
  description: "Links a Confluence runbook page to a Jira incident, logs execution steps as Jira comments, and broadcasts progress on Slack during incident remediation."
  tags:
    - incident-management
    - runbooks
    - confluence
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: runbook-tracker
      port: 8080
      tools:
        - name: track-runbook-execution
          description: "Track runbook execution by linking Confluence runbook to Jira incident and posting progress to Slack."
          inputParameters:
            - name: runbook_page_id
              in: body
              type: string
              description: "Confluence runbook page ID."
            - name: incident_key
              in: body
              type: string
              description: "Jira incident issue key."
            - name: step_description
              in: body
              type: string
              description: "Current step being executed."
            - name: slack_channel
              in: body
              type: string
              description: "Incident Slack channel."
          steps:
            - name: get-runbook
              type: call
              call: "confluence.get-page"
              with:
                page_id: "{{runbook_page_id}}"
            - name: log-step
              type: call
              call: "jira.add-comment"
              with:
                issue_key: "{{incident_key}}"
                body: "Runbook step: {{step_description}} (Runbook: {{get-runbook.title}})"
            - name: broadcast-progress
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Runbook '{{get-runbook.title}}' - Executing: {{step_description}} for incident {{incident_key}}"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://atlassian-corp.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/pages/{{page_id}}"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: get-page
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: comments
          path: "/issue/{{issue_key}}/comment"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: add-comment
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Detects security incidents, enriches with context, creates response tickets, and notifies the SOC.

naftiko: "0.5"
info:
  label: "Security Incident Response Pipeline"
  description: "Detects security incidents, enriches with context, creates response tickets, and notifies the SOC."
  tags:
    - security
    - splunk
    - servicenow
    - pagerduty
capability:
  exposes:
    - type: mcp
      namespace: security
      port: 8080
      tools:
        - name: security_incident_response_pipeline
          description: "Orchestrate security incident response pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-splunk
              type: call
              call: "splunk.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                data: "{{get-splunk.result}}"
            - name: create-pagerduty
              type: call
              call: "pagerduty.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Security Incident Response Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://atlassian-splunk.com/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: splunk-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://atlassian.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: 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

Escalates a Jira Service Management ticket by raising priority, assigning to an escalation group, notifying on Slack, and paging via Opsgenie.

naftiko: "0.5"
info:
  label: "Service Desk Ticket Escalation"
  description: "Escalates a Jira Service Management ticket by raising priority, assigning to an escalation group, notifying on Slack, and paging via Opsgenie."
  tags:
    - incident-management
    - service-desk
    - jira
    - slack
    - opsgenie
capability:
  exposes:
    - type: mcp
      namespace: service-desk-escalation
      port: 8080
      tools:
        - name: escalate-ticket
          description: "Escalate a service desk ticket: raise priority, reassign, notify Slack, and page on-call."
          inputParameters:
            - name: issue_key
              in: body
              type: string
              description: "The Jira Service Management ticket key."
            - name: escalation_reason
              in: body
              type: string
              description: "Reason for escalation."
            - name: slack_channel
              in: body
              type: string
              description: "Escalation Slack channel."
          steps:
            - name: get-issue
              type: call
              call: "jira.get-issue"
              with:
                issue_key: "{{issue_key}}"
            - name: raise-priority
              type: call
              call: "jira.update-issue"
              with:
                issue_key: "{{issue_key}}"
                fields:
                  priority:
                    name: "High"
            - name: notify-slack
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "ESCALATION: {{issue_key}} - {{get-issue.fields.summary}}. Reason: {{escalation_reason}}"
            - name: page-oncall
              type: call
              call: "opsgenie.create-alert"
              with:
                message: "Escalated: {{issue_key}} - {{get-issue.fields.summary}}"
                priority: "P2"
                description: "{{escalation_reason}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.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
            - name: update-issue
              method: PUT
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: opsgenie
      baseUri: "https://api.opsgenie.com/v2"
      authentication:
        type: bearer
        token: "$secrets.opsgenie_api_key"
      resources:
        - name: alerts
          path: "/alerts"
          operations:
            - name: create-alert
              method: POST

Monitors Jira Service Management for tickets approaching SLA breach, escalates in Jira, pages via Opsgenie, and alerts the support Slack channel.

naftiko: "0.5"
info:
  label: "SLA Breach Alert Pipeline"
  description: "Monitors Jira Service Management for tickets approaching SLA breach, escalates in Jira, pages via Opsgenie, and alerts the support Slack channel."
  tags:
    - service-desk
    - sla-management
    - jira
    - opsgenie
    - slack
capability:
  exposes:
    - type: mcp
      namespace: sla-monitoring
      port: 8080
      tools:
        - name: check-sla-breaches
          description: "Query Jira for near-breach tickets, escalate, page on-call, and alert Slack."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "Jira Service Management project key."
            - name: slack_channel
              in: body
              type: string
              description: "Support Slack channel."
          steps:
            - name: find-at-risk
              type: call
              call: "jira.search-issues"
              with:
                jql: "project = {{project_key}} AND status != Done AND 'Time to resolution' < '30m'"
                maxResults: "20"
            - name: page-support
              type: call
              call: "opsgenie.create-alert"
              with:
                message: "SLA breach imminent: {{find-at-risk.total}} tickets at risk in {{project_key}}"
                priority: "P2"
            - name: notify-slack
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "SLA Alert: {{find-at-risk.total}} tickets approaching breach in {{project_key}}. On-call paged."
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: search
          path: "/search"
          operations:
            - name: search-issues
              method: POST
    - type: http
      namespace: opsgenie
      baseUri: "https://api.opsgenie.com/v2"
      authentication:
        type: bearer
        token: "$secrets.opsgenie_api_key"
      resources:
        - name: alerts
          path: "/alerts"
          operations:
            - name: create-alert
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Monitors service levels, detects SLA breaches, creates escalation tickets, and reports to management.

naftiko: "0.5"
info:
  label: "SLA Compliance Monitoring Pipeline"
  description: "Monitors service levels, detects SLA breaches, creates escalation tickets, and reports to management."
  tags:
    - operations
    - datadog
    - servicenow
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: operations
      port: 8080
      tools:
        - name: sla_compliance_monitoring_pipeline
          description: "Orchestrate sla compliance monitoring pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-datadog
              type: call
              call: "datadog.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                data: "{{get-datadog.result}}"
            - name: create-powerbi
              type: call
              call: "powerbi.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "SLA Compliance Monitoring Pipeline step 3 complete."

  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: servicenow
      baseUri: "https://atlassian.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: 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

Posts a message to a specified Slack channel. Used by automation workflows to broadcast notifications, alerts, and status updates.

naftiko: "0.5"
info:
  label: "Slack Channel Message Sender"
  description: "Posts a message to a specified Slack channel. Used by automation workflows to broadcast notifications, alerts, and status updates."
  tags:
    - communications
    - notifications
    - slack
capability:
  exposes:
    - type: mcp
      namespace: slack-messaging
      port: 8080
      tools:
        - name: send-channel-message
          description: "Post a text message to a Slack channel by channel ID."
          inputParameters:
            - name: channel_id
              in: body
              type: string
              description: "The Slack channel ID."
            - name: message_text
              in: body
              type: string
              description: "The message text to post."
          call: "slack.post-message"
          with:
            channel: "{{channel_id}}"
            text: "{{message_text}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves a Slack user profile by user ID. Returns display name, email, title, and status text.

naftiko: "0.5"
info:
  label: "Slack User Profile Lookup"
  description: "Retrieves a Slack user profile by user ID. Returns display name, email, title, and status text."
  tags:
    - communications
    - user-management
    - slack
capability:
  exposes:
    - type: mcp
      namespace: slack-users
      port: 8080
      tools:
        - name: get-user-profile
          description: "Look up a Slack user profile by user ID."
          inputParameters:
            - name: user_id
              in: body
              type: string
              description: "The Slack user ID."
          call: "slack.get-profile"
          with:
            user: "{{user_id}}"
          outputParameters:
            - name: display_name
              type: string
              mapping: "$.profile.display_name"
            - name: email
              type: string
              mapping: "$.profile.email"
            - name: title
              type: string
              mapping: "$.profile.title"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: users
          path: "/users.profile.get"
          inputParameters:
            - name: user
              in: query
          operations:
            - name: get-profile
              method: GET

Audits license usage, identifies underutilized licenses, recommends optimization, and notifies IT.

naftiko: "0.5"
info:
  label: "Software License Optimization Pipeline"
  description: "Audits license usage, identifies underutilized licenses, recommends optimization, and notifies IT."
  tags:
    - operations
    - servicenow
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: operations
      port: 8080
      tools:
        - name: software_license_optimization
          description: "Orchestrate software license optimization pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-servicenow
              type: call
              call: "servicenow.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-snowflake
              type: call
              call: "snowflake.process-resource"
              with:
                data: "{{get-servicenow.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Software License Optimization Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://atlassian.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://atlassian.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

Collects completed sprint issues from Jira, summarizes velocity metrics, and publishes a retrospective page in Confluence for team review.

naftiko: "0.5"
info:
  label: "Sprint Retrospective Report Generator"
  description: "Collects completed sprint issues from Jira, summarizes velocity metrics, and publishes a retrospective page in Confluence for team review."
  tags:
    - agile
    - project-management
    - jira
    - confluence
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: sprint-retro
      port: 8080
      tools:
        - name: generate-retro-report
          description: "Given a sprint ID and Confluence space, gather sprint issues from Jira and publish a retro summary page."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "The Jira board ID."
            - name: sprint_id
              in: body
              type: string
              description: "The Jira sprint ID."
            - name: space_key
              in: body
              type: string
              description: "The Confluence space key for the retro page."
          steps:
            - name: get-sprint
              type: call
              call: "jira-agile.get-sprint"
              with:
                sprint_id: "{{sprint_id}}"
            - name: get-sprint-issues
              type: call
              call: "jira-agile.get-sprint-issues"
              with:
                sprint_id: "{{sprint_id}}"
            - name: publish-retro
              type: call
              call: "confluence.create-page"
              with:
                spaceId: "{{space_key}}"
                title: "Sprint Retrospective: {{get-sprint.name}}"
                body:
                  representation: "storage"
                  value: "<h2>Sprint: {{get-sprint.name}}</h2><p>Goal: {{get-sprint.goal}}</p><p>Total issues: {{get-sprint-issues.total}}</p><p>Completed: {{get-sprint-issues.total}}</p>"
  consumes:
    - type: http
      namespace: jira-agile
      baseUri: "https://atlassian-corp.atlassian.net/rest/agile/1.0"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprints
          path: "/sprint/{{sprint_id}}"
          inputParameters:
            - name: sprint_id
              in: path
          operations:
            - name: get-sprint
              method: GET
        - name: sprint-issues
          path: "/sprint/{{sprint_id}}/issue"
          inputParameters:
            - name: sprint_id
              in: path
          operations:
            - name: get-sprint-issues
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://atlassian-corp.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST

Collects in-progress Jira issues for a team, fetches recent Bitbucket commits, and posts a formatted standup summary to the team Slack channel.

naftiko: "0.5"
info:
  label: "Standup Summary Bot"
  description: "Collects in-progress Jira issues for a team, fetches recent Bitbucket commits, and posts a formatted standup summary to the team Slack channel."
  tags:
    - agile
    - standups
    - jira
    - bitbucket
    - slack
capability:
  exposes:
    - type: mcp
      namespace: standup-bot
      port: 8080
      tools:
        - name: generate-standup
          description: "Generate a team standup summary from Jira in-progress issues and recent Bitbucket commits, and post to Slack."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "Jira project key."
            - name: workspace
              in: body
              type: string
              description: "Bitbucket workspace."
            - name: repo_slug
              in: body
              type: string
              description: "Bitbucket repository slug."
            - name: slack_channel
              in: body
              type: string
              description: "Team Slack channel."
          steps:
            - name: get-in-progress
              type: call
              call: "jira.search-issues"
              with:
                jql: "project = {{project_key}} AND status = 'In Progress'"
                maxResults: "50"
            - name: get-recent-commits
              type: call
              call: "bitbucket.list-commits"
              with:
                workspace: "{{workspace}}"
                repo_slug: "{{repo_slug}}"
            - name: post-standup
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Daily Standup Summary:\n- In Progress Issues: {{get-in-progress.total}}\n- Recent commits in {{repo_slug}}: {{get-recent-commits.values[0].message}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: search
          path: "/search"
          operations:
            - name: search-issues
              method: POST
    - type: http
      namespace: bitbucket
      baseUri: "https://api.bitbucket.org/2.0"
      authentication:
        type: bearer
        token: "$secrets.bitbucket_token"
      resources:
        - name: commits
          path: "/repositories/{{workspace}}/{{repo_slug}}/commits"
          inputParameters:
            - name: workspace
              in: path
            - name: repo_slug
              in: path
          operations:
            - name: list-commits
              method: GET
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Runs a Terraform plan, posts the diff summary to a Confluence review page, creates a Jira approval task, and notifies the infrastructure Slack channel.

naftiko: "0.5"
info:
  label: "Terraform Plan Review Pipeline"
  description: "Runs a Terraform plan, posts the diff summary to a Confluence review page, creates a Jira approval task, and notifies the infrastructure Slack channel."
  tags:
    - infrastructure
    - devops
    - terraform
    - confluence
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: infra-review
      port: 8080
      tools:
        - name: review-terraform-plan
          description: "Submit a Terraform plan for review across Confluence, Jira, and Slack."
          inputParameters:
            - name: workspace_name
              in: body
              type: string
              description: "Terraform Cloud workspace name."
            - name: run_id
              in: body
              type: string
              description: "Terraform Cloud run ID."
            - name: space_key
              in: body
              type: string
              description: "Confluence space key for infra docs."
            - name: project_key
              in: body
              type: string
              description: "Jira project key."
            - name: slack_channel
              in: body
              type: string
              description: "Infrastructure Slack channel."
          steps:
            - name: get-plan
              type: call
              call: "terraform.get-run"
              with:
                run_id: "{{run_id}}"
            - name: create-review-page
              type: call
              call: "confluence.create-page"
              with:
                spaceId: "{{space_key}}"
                title: "Terraform Plan Review: {{workspace_name}} - {{run_id}}"
                body:
                  representation: "storage"
                  value: "<h2>Plan Summary</h2><p>Workspace: {{workspace_name}}</p><p>Status: {{get-plan.data.attributes.status}}</p>"
            - name: create-approval-task
              type: call
              call: "jira.create-issue"
              with:
                fields:
                  project:
                    key: "{{project_key}}"
                  summary: "Approve Terraform plan: {{workspace_name}}"
                  issuetype:
                    name: "Task"
                  description: "Review and approve Terraform plan run {{run_id}} for workspace {{workspace_name}}."
            - name: notify-infra
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Terraform plan ready for review: {{workspace_name}}. Approval task: {{create-approval-task.key}}."
  consumes:
    - type: http
      namespace: terraform
      baseUri: "https://app.terraform.io/api/v2"
      authentication:
        type: bearer
        token: "$secrets.terraform_cloud_token"
      resources:
        - name: runs
          path: "/runs/{{run_id}}"
          inputParameters:
            - name: run_id
              in: path
          operations:
            - name: get-run
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://atlassian-corp.atlassian.net/wiki/api/v2"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/pages"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://atlassian-corp.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: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: chat
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Monitors integration endpoints, detects failures, creates support tickets, and notifies integration team.

naftiko: "0.5"
info:
  label: "Third-Party Integration Health Pipeline"
  description: "Monitors integration endpoints, detects failures, creates support tickets, and notifies integration team."
  tags:
    - integrations
    - datadog
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: integrations
      port: 8080
      tools:
        - name: third_party_integration_health_pipeline
          description: "Orchestrate third-party integration health pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-datadog
              type: call
              call: "datadog.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                data: "{{get-datadog.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Third-Party Integration Health Pipeline step 3 complete."

  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: servicenow
      baseUri: "https://atlassian.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

Tracks mandatory training completion, sends reminders, escalates non-compliance, and reports status.

naftiko: "0.5"
info:
  label: "Training Compliance Tracker Pipeline"
  description: "Tracks mandatory training completion, sends reminders, escalates non-compliance, and reports status."
  tags:
    - compliance
    - workday
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: training_compliance_tracker_pipeline
          description: "Orchestrate training compliance tracker pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-jira
              type: call
              call: "jira.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                data: "{{get-jira.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Training Compliance Tracker Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: jira
      baseUri: "https://atlassian.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://atlassian.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

Evaluates vendor security posture, scores risk, creates assessment records, and notifies procurement.

naftiko: "0.5"
info:
  label: "Vendor Risk Assessment Pipeline"
  description: "Evaluates vendor security posture, scores risk, creates assessment records, and notifies procurement."
  tags:
    - procurement
    - servicenow
    - confluence
    - slack
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: vendor_risk_assessment_pipeline
          description: "Orchestrate vendor risk assessment pipeline workflow."
          inputParameters:
            - name: resource_id
              in: body
              type: string
              description: "Primary resource identifier." 
          steps:
            - name: get-servicenow
              type: call
              call: "servicenow.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-confluence
              type: call
              call: "confluence.process-resource"
              with:
                data: "{{get-servicenow.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Vendor Risk Assessment Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://atlassian.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: confluence
      baseUri: "https://atlassian.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