AMD Capabilities

Naftiko 0.5 capability definitions for AMD - 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://amd.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://amd.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

Invokes an Amazon SageMaker inference endpoint for chip yield prediction, logs the prediction in Snowflake for trend tracking, and alerts if yield drops below threshold.

naftiko: "0.5"
info:
  label: "Amazon SageMaker Chip Yield Prediction"
  description: "Invokes an Amazon SageMaker inference endpoint for chip yield prediction, logs the prediction in Snowflake for trend tracking, and alerts if yield drops below threshold."
  tags:
    - machine-learning
    - yield-prediction
    - amazon-sagemaker
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: yield-prediction
      port: 8080
      tools:
        - name: predict-and-track-yield
          description: "Invoke a SageMaker yield prediction model, store the result, and alert on low predictions."
          inputParameters:
            - name: endpoint_name
              in: body
              type: string
              description: "SageMaker endpoint name."
            - name: process_params
              in: body
              type: object
              description: "Wafer-level process parameters for prediction."
            - name: yield_threshold
              in: body
              type: number
              description: "Minimum acceptable yield percentage."
          steps:
            - name: invoke-model
              type: call
              call: "sagemaker.invoke-endpoint"
              with:
                endpoint_name: "{{endpoint_name}}"
                body: "{{process_params}}"
                content_type: "application/json"
            - name: store-prediction
              type: call
              call: "snowflake.execute-statement"
              with:
                statement: "INSERT INTO YIELD_PREDICTIONS (endpoint, params_hash, predicted_yield, timestamp) VALUES ('{{endpoint_name}}', HASH('{{process_params}}'), {{invoke-model.predicted_yield}}, CURRENT_TIMESTAMP())"
                warehouse: "ANALYTICS_WH"
                database: "SILICON_TELEMETRY"
            - name: alert-low-yield
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "yield-alerts"
                text: "Yield prediction: {{invoke-model.predicted_yield}}% (threshold: {{yield_threshold}}%). Endpoint: {{endpoint_name}}."
  consumes:
    - type: http
      namespace: sagemaker
      baseUri: "https://runtime.sagemaker.us-west-2.amazonaws.com"
      authentication:
        type: aws-sigv4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
        region: "us-west-2"
      resources:
        - name: endpoints
          path: "/endpoints/{{endpoint_name}}/invocations"
          inputParameters:
            - name: endpoint_name
              in: path
          operations:
            - name: invoke-endpoint
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://amd.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-statement
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves current monitoring alert status. Used by AMD teams.

naftiko: "0.5"
info:
  label: "AMD Alert Status Check"
  description: "Retrieves current monitoring alert status. Used by AMD teams."
  tags:
    - semiconductor
    - kubernetes
capability:
  exposes:
    - type: mcp
      namespace: kubernetes
      port: 8080
      tools:
        - name: get-alert_status_check
          description: "Retrieves current monitoring alert status. Used by AMD teams."
          inputParameters:
            - name: alert_id
              in: body
              type: string
              description: "The alert_id to look up." 
          call: "kubernetes.get-alert_id"
          with:
            alert_id: "{{alert_id}}"
  consumes:
    - type: http
      namespace: k8s
      baseUri: "https://amd-k8s.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.k8s_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: amd_alert_status_check
              method: GET

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

naftiko: "0.5"
info:
  label: "AMD API Endpoint Status"
  description: "Checks availability of an API endpoint. Used by AMD teams."
  tags:
    - semiconductor
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: datadog
      port: 8080
      tools:
        - name: get-api_endpoint_status
          description: "Checks availability of an API endpoint. Used by AMD teams."
          inputParameters:
            - name: endpoint_url
              in: body
              type: string
              description: "The endpoint_url to look up." 
          call: "datadog.get-endpoint_url"
          with:
            endpoint_url: "{{endpoint_url}}"
  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: amd_api_endpoint_status
              method: GET

Orchestrates design review milestones, collects approvals, updates tracking, and notifies teams.

naftiko: "0.5"
info:
  label: "Chip Design Review Signoff Pipeline"
  description: "Orchestrates design review milestones, collects approvals, updates tracking, and notifies teams."
  tags:
    - engineering
    - jira
    - confluence
    - slack
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: amd_chip_design_review_signoff_pipeline
          description: "Orchestrate chip design review signoff 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: "Chip Design Review Signoff Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: jira
      baseUri: "https://amd.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://amd.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 compliance check status. Used by AMD teams.

naftiko: "0.5"
info:
  label: "AMD Compliance Check Status"
  description: "Retrieves compliance check status. Used by AMD teams."
  tags:
    - semiconductor
    - pagerduty
capability:
  exposes:
    - type: mcp
      namespace: pagerduty
      port: 8080
      tools:
        - name: get-compliance_check_status
          description: "Retrieves compliance check status. Used by AMD teams."
          inputParameters:
            - name: check_id
              in: body
              type: string
              description: "The check_id to look up." 
          call: "pagerduty.get-check_id"
          with:
            check_id: "{{check_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: amd_compliance_check_status
              method: GET

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

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

Queries cost and spending data. Used by AMD teams.

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

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

naftiko: "0.5"
info:
  label: "AMD Database Query Runner"
  description: "Executes a read-only analytics query. Used by AMD teams."
  tags:
    - semiconductor
    - splunk
capability:
  exposes:
    - type: mcp
      namespace: splunk
      port: 8080
      tools:
        - name: get-database_query_runner
          description: "Executes a read-only analytics query. Used by AMD teams."
          inputParameters:
            - name: sql_query
              in: body
              type: string
              description: "The sql_query to look up." 
          call: "splunk.get-sql_query"
          with:
            sql_query: "{{sql_query}}"
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://amd-splunk.com/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: amd_database_query_runner
              method: GET

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

naftiko: "0.5"
info:
  label: "AMD Deployment Status Check"
  description: "Checks status of a recent deployment. Used by AMD teams."
  tags:
    - semiconductor
    - elasticsearch
capability:
  exposes:
    - type: mcp
      namespace: elasticsearc
      port: 8080
      tools:
        - name: get-deployment_status_check
          description: "Checks status of a recent deployment. Used by AMD teams."
          inputParameters:
            - name: deployment_id
              in: body
              type: string
              description: "The deployment_id to look up." 
          call: "elasticsearch.get-deployment_id"
          with:
            deployment_id: "{{deployment_id}}"
  consumes:
    - type: http
      namespace: elasticsearch
      baseUri: "https://amd-es.com:9200"
      authentication:
        type: bearer
        token: "$secrets.elasticsearch_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: amd_deployment_status_check
              method: GET

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

naftiko: "0.5"
info:
  label: "AMD Document Retrieval"
  description: "Retrieves a document from knowledge management. Used by AMD teams."
  tags:
    - semiconductor
    - grafana
capability:
  exposes:
    - type: mcp
      namespace: grafana
      port: 8080
      tools:
        - name: get-document_retrieval
          description: "Retrieves a document from knowledge management. Used by AMD teams."
          inputParameters:
            - name: document_id
              in: body
              type: string
              description: "The document_id to look up." 
          call: "grafana.get-document_id"
          with:
            document_id: "{{document_id}}"
  consumes:
    - type: http
      namespace: grafana
      baseUri: "https://amd-grafana.com/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_api_key" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: amd_document_retrieval
              method: GET

Monitors EDA tool license usage, optimizes allocation, forecasts needs, and reports to management.

naftiko: "0.5"
info:
  label: "EDA License Utilization Pipeline"
  description: "Monitors EDA tool license usage, optimizes allocation, forecasts needs, and reports to management."
  tags:
    - operations
    - grafana
    - servicenow
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: operations
      port: 8080
      tools:
        - name: amd_eda_license_utilization_pipeline
          description: "Orchestrate eda license utilization 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-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                data: "{{get-grafana.result}}"
            - name: create-powerbi
              type: call
              call: "powerbi.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "EDA License Utilization Pipeline step 3 complete."

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

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: amd_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-workday
              type: call
              call: "workday.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                data: "{{get-workday.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: workday
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/amd"
      authentication:
        type: bearer
        token: "$secrets.workday_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: workday-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://amd.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

Analyzes wafer yield trends, detects regressions, creates investigation tickets, and alerts engineering.

naftiko: "0.5"
info:
  label: "Fab Yield Trend Analysis Pipeline"
  description: "Analyzes wafer yield trends, detects regressions, creates investigation tickets, and alerts engineering."
  tags:
    - manufacturing
    - snowflake
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: manufacturing
      port: 8080
      tools:
        - name: amd_fab_yield_trend_analysis_pipeline
          description: "Orchestrate fab yield trend analysis 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-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Fab Yield Trend Analysis Pipeline step 3 complete."

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

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

naftiko: "0.5"
info:
  label: "AMD Log Search Query"
  description: "Searches application logs for matching patterns. Used by AMD teams."
  tags:
    - semiconductor
    - github
capability:
  exposes:
    - type: mcp
      namespace: github
      port: 8080
      tools:
        - name: get-log_search_query
          description: "Searches application logs for matching patterns. Used by AMD teams."
          inputParameters:
            - name: search_query
              in: body
              type: string
              description: "The search_query to look up." 
          call: "github.get-search_query"
          with:
            search_query: "{{search_query}}"
  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: amd_github_log_search_query
              method: GET

Runs benchmark suites, compares against baselines, flags regressions, and reports to development.

naftiko: "0.5"
info:
  label: "GPU Benchmark Regression Pipeline"
  description: "Runs benchmark suites, compares against baselines, flags regressions, and reports to development."
  tags:
    - performance
    - grafana
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: performance
      port: 8080
      tools:
        - name: amd_gpu_benchmark_regression_pipeline
          description: "Orchestrate gpu benchmark regression 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-jira
              type: call
              call: "jira.process-resource"
              with:
                data: "{{get-grafana.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "GPU Benchmark Regression Pipeline step 3 complete."

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

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

naftiko: "0.5"
info:
  label: "AMD Service Health Check"
  description: "Checks the health status of a monitored service. Used by AMD teams."
  tags:
    - semiconductor
    - 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 AMD 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://amd.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: amd_jira_service_health_check
              method: GET

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

naftiko: "0.5"
info:
  label: "AMD Log Search Query"
  description: "Searches application logs for matching patterns. Used by AMD teams."
  tags:
    - semiconductor
    - github
capability:
  exposes:
    - type: mcp
      namespace: github
      port: 8080
      tools:
        - name: get-log_search_query
          description: "Searches application logs for matching patterns. Used by AMD teams."
          inputParameters:
            - name: search_query
              in: body
              type: string
              description: "The search_query to look up." 
          call: "github.get-search_query"
          with:
            search_query: "{{search_query}}"
  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: amd_log_search_query
              method: GET

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

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

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

naftiko: "0.5"
info:
  label: "AMD Project Status Check"
  description: "Checks the current status of a project. Used by AMD teams."
  tags:
    - semiconductor
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: salesforce
      port: 8080
      tools:
        - name: get-project_status_check
          description: "Checks the current status of a project. Used by AMD teams."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "The project_key to look up." 
          call: "salesforce.get-project_key"
          with:
            project_key: "{{project_key}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://amd.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: amd_project_status_check
              method: GET

Retrieves code repository information. Used by AMD teams.

naftiko: "0.5"
info:
  label: "AMD Repository Info Lookup"
  description: "Retrieves code repository information. Used by AMD teams."
  tags:
    - semiconductor
    - workday
capability:
  exposes:
    - type: mcp
      namespace: workday
      port: 8080
      tools:
        - name: get-repository_info_lookup
          description: "Retrieves code repository information. Used by AMD teams."
          inputParameters:
            - name: repo_name
              in: body
              type: string
              description: "The repo_name to look up." 
          call: "workday.get-repo_name"
          with:
            repo_name: "{{repo_name}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/amd"
      authentication:
        type: bearer
        token: "$secrets.workday_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: amd_repository_info_lookup
              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: amd_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://amd-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://amd.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 AMD teams.

naftiko: "0.5"
info:
  label: "AMD Security Scan Results"
  description: "Retrieves vulnerability scan results. Used by AMD teams."
  tags:
    - semiconductor
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: powerbi
      port: 8080
      tools:
        - name: get-security_scan_results
          description: "Retrieves vulnerability scan results. Used by AMD teams."
          inputParameters:
            - name: scan_id
              in: body
              type: string
              description: "The scan_id to look up." 
          call: "powerbi.get-scan_id"
          with:
            scan_id: "{{scan_id}}"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: amd_security_scan_results
              method: GET

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

naftiko: "0.5"
info:
  label: "AMD Service Health Check"
  description: "Checks the health status of a monitored service. Used by AMD teams."
  tags:
    - semiconductor
    - 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 AMD 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://amd.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: amd_service_health_check
              method: GET

Tracks component lead times, identifies delays, escalates critical shortages, and updates procurement.

naftiko: "0.5"
info:
  label: "Supply Chain Lead Time Monitor Pipeline"
  description: "Tracks component lead times, identifies delays, escalates critical shortages, and updates procurement."
  tags:
    - logistics
    - servicenow
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: logistics
      port: 8080
      tools:
        - name: amd_supply_chain_lead_time_monitor
          description: "Orchestrate supply chain lead time monitor 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-salesforce
              type: call
              call: "salesforce.process-resource"
              with:
                data: "{{get-servicenow.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Supply Chain Lead Time Monitor Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://amd.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: salesforce
      baseUri: "https://amd.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: 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 the details of a support ticket. Used by AMD teams.

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

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

naftiko: "0.5"
info:
  label: "AMD User Account Lookup"
  description: "Retrieves user account details from the directory. Used by AMD teams."
  tags:
    - semiconductor
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: servicenow
      port: 8080
      tools:
        - name: get-user_account_lookup
          description: "Retrieves user account details from the directory. Used by AMD teams."
          inputParameters:
            - name: user_id
              in: body
              type: string
              description: "The user_id to look up." 
          call: "servicenow.get-user_id"
          with:
            user_id: "{{user_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://amd.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: amd_user_account_lookup
              method: GET

Executes an Ansible Tower playbook to patch fab floor control servers, targeting a specific inventory group, and reports results to ServiceNow.

naftiko: "0.5"
info:
  label: "Ansible Playbook for Fab Server Patching"
  description: "Executes an Ansible Tower playbook to patch fab floor control servers, targeting a specific inventory group, and reports results to ServiceNow."
  tags:
    - infrastructure
    - patching
    - ansible
    - red-hat-ansible-automation-platform
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: server-patching
      port: 8080
      tools:
        - name: run-patch-playbook
          description: "Execute an Ansible patch playbook on fab servers and log results in ServiceNow."
          inputParameters:
            - name: playbook_id
              in: body
              type: string
              description: "Ansible Tower job template ID."
            - name: inventory_group
              in: body
              type: string
              description: "Target inventory group."
            - name: change_number
              in: body
              type: string
              description: "ServiceNow change request number."
          steps:
            - name: launch-job
              type: call
              call: "ansible.launch-job"
              with:
                job_template_id: "{{playbook_id}}"
                extra_vars:
                  target_group: "{{inventory_group}}"
            - name: update-change
              type: call
              call: "servicenow.update-change"
              with:
                change_number: "{{change_number}}"
                work_notes: "Ansible job {{launch-job.job_id}} completed. Status: {{launch-job.status}}. Hosts patched: {{launch-job.host_count}}."
  consumes:
    - type: http
      namespace: ansible
      baseUri: "https://ansible-tower.amd.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.ansible_tower_token"
      resources:
        - name: job-templates
          path: "/job_templates/{{job_template_id}}/launch/"
          inputParameters:
            - name: job_template_id
              in: path
          operations:
            - name: launch-job
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://amd.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: changes
          path: "/table/change_request/{{change_number}}"
          inputParameters:
            - name: change_number
              in: path
          operations:
            - name: update-change
              method: PATCH

Triggers an Apache Airflow DAG run for the fab yield ETL pipeline, passing configuration for source fab and target Snowflake schema, then logs the run in Datadog.

naftiko: "0.5"
info:
  label: "Apache Airflow Yield ETL Pipeline"
  description: "Triggers an Apache Airflow DAG run for the fab yield ETL pipeline, passing configuration for source fab and target Snowflake schema, then logs the run in Datadog."
  tags:
    - data-pipeline
    - etl
    - apache-airflow
    - snowflake
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: yield-etl
      port: 8080
      tools:
        - name: trigger-yield-etl
          description: "Trigger an Airflow yield ETL DAG run and log the event."
          inputParameters:
            - name: dag_id
              in: body
              type: string
              description: "Airflow DAG ID."
            - name: source_fab
              in: body
              type: string
              description: "Source fab site identifier."
            - name: target_schema
              in: body
              type: string
              description: "Snowflake target schema."
          steps:
            - name: trigger-dag
              type: call
              call: "airflow.trigger-dag"
              with:
                dag_id: "{{dag_id}}"
                conf:
                  source_fab: "{{source_fab}}"
                  target_schema: "{{target_schema}}"
            - name: log-etl-run
              type: call
              call: "datadog.send-event"
              with:
                title: "Yield ETL triggered: {{dag_id}}"
                text: "DAG run {{trigger-dag.dag_run_id}} started for fab {{source_fab}} targeting {{target_schema}}."
                tags: "etl:yield,fab:{{source_fab}}"
  consumes:
    - type: http
      namespace: airflow
      baseUri: "https://airflow.amd.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.airflow_user"
        password: "$secrets.airflow_password"
      resources:
        - name: dag-runs
          path: "/dags/{{dag_id}}/dagRuns"
          inputParameters:
            - name: dag_id
              in: path
          operations:
            - name: trigger-dag
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      resources:
        - name: events
          path: "/events"
          operations:
            - name: send-event
              method: POST

Retrieves the status of an Apache NiFi data flow process group used for fab sensor data routing, including queue sizes and throughput metrics.

naftiko: "0.5"
info:
  label: "Apache NiFi Fab Sensor Data Flow Status"
  description: "Retrieves the status of an Apache NiFi data flow process group used for fab sensor data routing, including queue sizes and throughput metrics."
  tags:
    - data-pipeline
    - manufacturing
    - apache-nifi
capability:
  exposes:
    - type: mcp
      namespace: nifi-monitoring
      port: 8080
      tools:
        - name: get-flow-status
          description: "Retrieve Apache NiFi process group status for fab data routing."
          inputParameters:
            - name: process_group_id
              in: body
              type: string
              description: "NiFi process group ID."
          call: "nifi.get-process-group"
          with:
            process_group_id: "{{process_group_id}}"
          outputParameters:
            - name: queued_count
              type: string
              mapping: "$.processGroupStatus.aggregateSnapshot.queued"
            - name: bytes_in
              type: number
              mapping: "$.processGroupStatus.aggregateSnapshot.bytesIn"
            - name: bytes_out
              type: number
              mapping: "$.processGroupStatus.aggregateSnapshot.bytesOut"
  consumes:
    - type: http
      namespace: nifi
      baseUri: "https://nifi.amd.com/nifi-api"
      authentication:
        type: bearer
        token: "$secrets.nifi_token"
      resources:
        - name: process-groups
          path: "/flow/process-groups/{{process_group_id}}/status"
          inputParameters:
            - name: process_group_id
              in: path
          operations:
            - name: get-process-group
              method: GET

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

Triggers an Azure Data Factory pipeline to ingest fab equipment telemetry data from on-premises sources into Azure Data Lake, then refreshes the Grafana dashboard.

naftiko: "0.5"
info:
  label: "Azure Data Factory Fab Telemetry Ingestion"
  description: "Triggers an Azure Data Factory pipeline to ingest fab equipment telemetry data from on-premises sources into Azure Data Lake, then refreshes the Grafana dashboard."
  tags:
    - data-pipeline
    - manufacturing
    - azure-data-factory
    - grafana
capability:
  exposes:
    - type: mcp
      namespace: fab-telemetry-ingest
      port: 8080
      tools:
        - name: trigger-telemetry-ingestion
          description: "Trigger an ADF pipeline for fab telemetry ingestion and refresh the monitoring dashboard."
          inputParameters:
            - name: pipeline_name
              in: body
              type: string
              description: "ADF pipeline name."
            - name: fab_site
              in: body
              type: string
              description: "Fab site identifier."
          steps:
            - name: trigger-pipeline
              type: call
              call: "adf.create-pipeline-run"
              with:
                pipeline_name: "{{pipeline_name}}"
                parameters:
                  fab_site: "{{fab_site}}"
            - name: refresh-dashboard
              type: call
              call: "grafana.refresh-dashboard"
              with:
                dashboard_uid: "fab-telemetry-{{fab_site}}"
  consumes:
    - type: http
      namespace: adf
      baseUri: "https://management.azure.com/subscriptions/$secrets.azure_subscription_id/resourceGroups/amd-data-rg/providers/Microsoft.DataFactory/factories/amd-fab-adf"
      authentication:
        type: bearer
        token: "$secrets.azure_token"
      resources:
        - name: pipeline-runs
          path: "/pipelines/{{pipeline_name}}/createRun"
          inputParameters:
            - name: pipeline_name
              in: path
          operations:
            - name: create-pipeline-run
              method: POST
    - type: http
      namespace: grafana
      baseUri: "https://grafana.amd.com/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_token"
      resources:
        - name: dashboards
          path: "/dashboards/uid/{{dashboard_uid}}"
          inputParameters:
            - name: dashboard_uid
              in: path
          operations:
            - name: refresh-dashboard
              method: POST

Rotates a TLS certificate in Azure Key Vault used by EDA service endpoints and triggers a Kubernetes deployment rollout to pick up the new certificate.

naftiko: "0.5"
info:
  label: "Azure Key Vault Certificate Rotation"
  description: "Rotates a TLS certificate in Azure Key Vault used by EDA service endpoints and triggers a Kubernetes deployment rollout to pick up the new certificate."
  tags:
    - security
    - certificates
    - azure-key-vault
    - kubernetes
capability:
  exposes:
    - type: mcp
      namespace: cert-rotation
      port: 8080
      tools:
        - name: rotate-tls-cert
          description: "Rotate a TLS certificate in Azure Key Vault and trigger a Kubernetes rollout restart."
          inputParameters:
            - name: vault_name
              in: body
              type: string
              description: "Azure Key Vault name."
            - name: cert_name
              in: body
              type: string
              description: "Certificate name in the vault."
            - name: k8s_namespace
              in: body
              type: string
              description: "Kubernetes namespace of the consuming service."
            - name: deployment_name
              in: body
              type: string
              description: "Kubernetes deployment to restart."
          steps:
            - name: create-cert-version
              type: call
              call: "keyvault.create-certificate"
              with:
                vault_name: "{{vault_name}}"
                cert_name: "{{cert_name}}"
            - name: restart-deployment
              type: call
              call: "kubernetes.rollout-restart"
              with:
                namespace: "{{k8s_namespace}}"
                deployment: "{{deployment_name}}"
  consumes:
    - type: http
      namespace: keyvault
      baseUri: "https://{{vault_name}}.vault.azure.net"
      authentication:
        type: bearer
        token: "$secrets.azure_token"
      resources:
        - name: certificates
          path: "/certificates/{{cert_name}}/create"
          inputParameters:
            - name: cert_name
              in: path
          operations:
            - name: create-certificate
              method: POST
    - type: http
      namespace: kubernetes
      baseUri: "https://k8s-api.amd.com/apis/apps/v1"
      authentication:
        type: bearer
        token: "$secrets.k8s_token"
      resources:
        - name: deployments
          path: "/namespaces/{{namespace}}/deployments/{{deployment}}"
          inputParameters:
            - name: namespace
              in: path
            - name: deployment
              in: path
          operations:
            - name: rollout-restart
              method: PATCH

Checks the health and traffic metrics of an Azure Machine Learning managed inference endpoint used for chip design optimization models.

naftiko: "0.5"
info:
  label: "Azure Machine Learning Inference Endpoint Status"
  description: "Checks the health and traffic metrics of an Azure Machine Learning managed inference endpoint used for chip design optimization models."
  tags:
    - machine-learning
    - inference
    - azure-machine-learning
capability:
  exposes:
    - type: mcp
      namespace: ml-inference
      port: 8080
      tools:
        - name: get-endpoint-status
          description: "Retrieve Azure ML inference endpoint health and traffic metrics."
          inputParameters:
            - name: endpoint_name
              in: body
              type: string
              description: "Azure ML endpoint name."
            - name: workspace_name
              in: body
              type: string
              description: "Azure ML workspace name."
          call: "azureml.get-endpoint"
          with:
            workspace_name: "{{workspace_name}}"
            endpoint_name: "{{endpoint_name}}"
          outputParameters:
            - name: provisioning_state
              type: string
              mapping: "$.properties.provisioningState"
            - name: traffic
              type: object
              mapping: "$.properties.traffic"
  consumes:
    - type: http
      namespace: azureml
      baseUri: "https://management.azure.com/subscriptions/$secrets.azure_subscription_id/resourceGroups/amd-ml-rg/providers/Microsoft.MachineLearningServices/workspaces"
      authentication:
        type: bearer
        token: "$secrets.azure_token"
      resources:
        - name: endpoints
          path: "/{{workspace_name}}/onlineEndpoints/{{endpoint_name}}"
          inputParameters:
            - name: workspace_name
              in: path
            - name: endpoint_name
              in: path
          operations:
            - name: get-endpoint
              method: GET

Creates a Bitbucket repository for a new IP verification environment, sets branch permissions, and adds the DV team as reviewers.

naftiko: "0.5"
info:
  label: "Bitbucket IP Verification Repository Manager"
  description: "Creates a Bitbucket repository for a new IP verification environment, sets branch permissions, and adds the DV team as reviewers."
  tags:
    - verification
    - source-control
    - bitbucket
capability:
  exposes:
    - type: mcp
      namespace: dv-repos
      port: 8080
      tools:
        - name: create-dv-repo
          description: "Create a Bitbucket repo for IP verification with branch protections and default reviewers."
          inputParameters:
            - name: ip_block
              in: body
              type: string
              description: "IP block name for the repo."
            - name: project_key
              in: body
              type: string
              description: "Bitbucket project key."
            - name: reviewer_group
              in: body
              type: string
              description: "Bitbucket group slug for default reviewers."
          steps:
            - name: create-repo
              type: call
              call: "bitbucket.create-repository"
              with:
                project_key: "{{project_key}}"
                name: "dv-{{ip_block}}"
                description: "Design verification environment for {{ip_block}}"
                is_private: true
            - name: set-branch-perms
              type: call
              call: "bitbucket.set-branch-restriction"
              with:
                project_key: "{{project_key}}"
                repo_slug: "dv-{{ip_block}}"
                branch: "main"
                restriction_type: "pull-request-only"
            - name: add-reviewers
              type: call
              call: "bitbucket.add-default-reviewers"
              with:
                project_key: "{{project_key}}"
                repo_slug: "dv-{{ip_block}}"
                group: "{{reviewer_group}}"
  consumes:
    - type: http
      namespace: bitbucket
      baseUri: "https://bitbucket.amd.com/rest/api/1.0"
      authentication:
        type: bearer
        token: "$secrets.bitbucket_token"
      resources:
        - name: repositories
          path: "/projects/{{project_key}}/repos"
          inputParameters:
            - name: project_key
              in: path
          operations:
            - name: create-repository
              method: POST
        - name: branch-restrictions
          path: "/projects/{{project_key}}/repos/{{repo_slug}}/restrictions"
          inputParameters:
            - name: project_key
              in: path
            - name: repo_slug
              in: path
          operations:
            - name: set-branch-restriction
              method: POST
        - name: default-reviewers
          path: "/projects/{{project_key}}/repos/{{repo_slug}}/conditions"
          inputParameters:
            - name: project_key
              in: path
            - name: repo_slug
              in: path
          operations:
            - name: add-default-reviewers
              method: POST

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

Orchestrates design review milestones, collects approvals, updates tracking, and notifies teams.

naftiko: "0.5"
info:
  label: "Chip Design Review Signoff Pipeline"
  description: "Orchestrates design review milestones, collects approvals, updates tracking, and notifies teams."
  tags:
    - engineering
    - jira
    - confluence
    - slack
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: chip_design_review_signoff_pipeline
          description: "Orchestrate chip design review signoff 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: "Chip Design Review Signoff Pipeline step 3 complete."

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

Purges the Cloudflare CDN cache for AMD developer documentation pages after a content update, ensuring freshness for external developers.

naftiko: "0.5"
info:
  label: "Cloudflare CDN Cache Purge for Developer Docs"
  description: "Purges the Cloudflare CDN cache for AMD developer documentation pages after a content update, ensuring freshness for external developers."
  tags:
    - cdn
    - developer-portal
    - cloudflare
capability:
  exposes:
    - type: mcp
      namespace: cdn-ops
      port: 8080
      tools:
        - name: purge-docs-cache
          description: "Purge Cloudflare CDN cache for developer documentation URLs."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "Cloudflare zone ID."
            - name: urls
              in: body
              type: array
              description: "List of URLs to purge."
          call: "cloudflare.purge-cache"
          with:
            zone_id: "{{zone_id}}"
            files: "{{urls}}"
  consumes:
    - type: http
      namespace: cloudflare
      baseUri: "https://api.cloudflare.com/client/v4"
      authentication:
        type: bearer
        token: "$secrets.cloudflare_token"
      resources:
        - name: cache
          path: "/zones/{{zone_id}}/purge_cache"
          inputParameters:
            - name: zone_id
              in: path
          operations:
            - name: purge-cache
              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://amd-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://amd.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

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

Creates a Coupa purchase requisition for EDA tool licenses or fab consumables, validates the cost center budget in Oracle, and notifies procurement on Microsoft Teams.

naftiko: "0.5"
info:
  label: "Coupa Procurement Requisition with Budget Validation"
  description: "Creates a Coupa purchase requisition for EDA tool licenses or fab consumables, validates the cost center budget in Oracle, and notifies procurement on Microsoft Teams."
  tags:
    - procurement
    - coupa
    - oracle
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: procurement-reqs
      port: 8080
      tools:
        - name: create-requisition
          description: "Create a Coupa purchase requisition with Oracle budget validation and Teams notification."
          inputParameters:
            - name: item_description
              in: body
              type: string
              description: "Description of the item being procured."
            - name: quantity
              in: body
              type: integer
              description: "Quantity requested."
            - name: unit_price
              in: body
              type: number
              description: "Unit price in USD."
            - name: cost_center
              in: body
              type: string
              description: "Oracle cost center code."
          steps:
            - name: validate-budget
              type: call
              call: "oracle.get-budget"
              with:
                cost_center: "{{cost_center}}"
            - name: create-req
              type: call
              call: "coupa.create-requisition"
              with:
                description: "{{item_description}}"
                quantity: "{{quantity}}"
                unit_price: "{{unit_price}}"
                account_code: "{{validate-budget.account_code}}"
            - name: notify-procurement
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "procurement-ops"
                text: "Requisition {{create-req.req_number}} created: {{item_description}} x{{quantity}} at ${{unit_price}}. Budget remaining: ${{validate-budget.remaining}}."
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://oracle-ebs.amd.com/webservices/rest/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: budgets
          path: "/gl/budgets/{{cost_center}}"
          inputParameters:
            - name: cost_center
              in: path
          operations:
            - name: get-budget
              method: GET
    - type: http
      namespace: coupa
      baseUri: "https://amd.coupahost.com/api"
      authentication:
        type: bearer
        token: "$secrets.coupa_token"
      resources:
        - name: requisitions
          path: "/requisitions"
          operations:
            - name: create-requisition
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

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-salesforce
              type: call
              call: "salesforce.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://amd.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: salesforce
      baseUri: "https://amd.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: 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://amd.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://amd.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://amd-grafana.com/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_api_key" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: grafana-op
              method: POST

Submits a Databricks job run for training a silicon defect classification ML model, then registers the resulting model in the MLflow registry and notifies the ML team.

naftiko: "0.5"
info:
  label: "Databricks Defect Classification Training"
  description: "Submits a Databricks job run for training a silicon defect classification ML model, then registers the resulting model in the MLflow registry and notifies the ML team."
  tags:
    - machine-learning
    - defect-classification
    - databricks
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: ml-training
      port: 8080
      tools:
        - name: train-defect-model
          description: "Launch a Databricks ML training job for silicon defect classification, register the model, and notify the team."
          inputParameters:
            - name: job_id
              in: body
              type: string
              description: "Databricks job ID for the training pipeline."
            - name: dataset_path
              in: body
              type: string
              description: "Path to training dataset in DBFS."
            - name: hyperparams
              in: body
              type: object
              description: "Model hyperparameters."
          steps:
            - name: run-training
              type: call
              call: "databricks.run-job"
              with:
                job_id: "{{job_id}}"
                notebook_params:
                  dataset_path: "{{dataset_path}}"
                  hyperparams: "{{hyperparams}}"
            - name: notify-ml-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "ml-ops"
                text: "Databricks training run {{run-training.run_id}} completed for job {{job_id}}. Check MLflow for model artifact."
  consumes:
    - type: http
      namespace: databricks
      baseUri: "https://amd.cloud.databricks.com/api/2.1"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: jobs
          path: "/jobs/run-now"
          operations:
            - name: run-job
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Creates a Demandbase account-based marketing campaign targeting OEM partners, syncs the account list from Salesforce, and launches the campaign.

naftiko: "0.5"
info:
  label: "Demandbase ABM Campaign for OEM Partners"
  description: "Creates a Demandbase account-based marketing campaign targeting OEM partners, syncs the account list from Salesforce, and launches the campaign."
  tags:
    - marketing
    - partner-ecosystem
    - demandbase
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: abm-campaigns
      port: 8080
      tools:
        - name: create-oem-campaign
          description: "Create a Demandbase ABM campaign with Salesforce account list sync."
          inputParameters:
            - name: campaign_name
              in: body
              type: string
              description: "Campaign name."
            - name: salesforce_report_id
              in: body
              type: string
              description: "Salesforce report ID for OEM account list."
            - name: product_focus
              in: body
              type: string
              description: "AMD product focus (e.g., EPYC Embedded, Ryzen Embedded)."
          steps:
            - name: get-accounts
              type: call
              call: "salesforce.run-report"
              with:
                report_id: "{{salesforce_report_id}}"
            - name: create-campaign
              type: call
              call: "demandbase.create-campaign"
              with:
                name: "{{campaign_name}}"
                accounts: "{{get-accounts.rows}}"
                tags:
                  - "oem"
                  - "{{product_focus}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://amd.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: reports
          path: "/analytics/reports/{{report_id}}"
          inputParameters:
            - name: report_id
              in: path
          operations:
            - name: run-report
              method: GET
    - type: http
      namespace: demandbase
      baseUri: "https://api.demandbase.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.demandbase_token"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: create-campaign
              method: POST

Triggers a Jenkins regression suite for a given IP block, collects coverage metrics, and uploads the summary report to SharePoint for design review.

naftiko: "0.5"
info:
  label: "Design Verification Regression Runner"
  description: "Triggers a Jenkins regression suite for a given IP block, collects coverage metrics, and uploads the summary report to SharePoint for design review."
  tags:
    - verification
    - regression
    - jenkins
    - sharepoint
    - chip-design
capability:
  exposes:
    - type: mcp
      namespace: dv-regression
      port: 8080
      tools:
        - name: run-regression
          description: "Launch a verification regression suite for an IP block and publish results to SharePoint."
          inputParameters:
            - name: ip_block
              in: body
              type: string
              description: "Name of the IP block under verification."
            - name: test_suite
              in: body
              type: string
              description: "Regression test suite identifier."
            - name: coverage_target
              in: body
              type: number
              description: "Minimum functional coverage percentage target."
          steps:
            - name: start-build
              type: call
              call: "jenkins.trigger-build"
              with:
                job_name: "dv-regression-{{ip_block}}"
                parameters:
                  SUITE: "{{test_suite}}"
                  COVERAGE_TARGET: "{{coverage_target}}"
            - name: upload-report
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "dv_reports_site"
                folder_path: "Regressions/{{ip_block}}/{{start-build.build_number}}"
                file_name: "coverage_report.html"
                content_url: "{{start-build.artifact_url}}/coverage_report.html"
  consumes:
    - type: http
      namespace: jenkins
      baseUri: "https://jenkins.amd.com"
      authentication:
        type: basic
        username: "$secrets.jenkins_user"
        password: "$secrets.jenkins_token"
      resources:
        - name: jobs
          path: "/job/{{job_name}}/buildWithParameters"
          inputParameters:
            - name: job_name
              in: path
          operations:
            - name: trigger-build
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
            - name: file_name
              in: path
          operations:
            - name: upload-file
              method: PUT

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

Builds and pushes a Docker container image for an EDA tool environment to JFrog Artifactory, tagging it with the tool version and PDK revision.

naftiko: "0.5"
info:
  label: "Docker EDA Container Builder"
  description: "Builds and pushes a Docker container image for an EDA tool environment to JFrog Artifactory, tagging it with the tool version and PDK revision."
  tags:
    - eda
    - containers
    - docker
    - jfrog-artifactory
    - github-actions
capability:
  exposes:
    - type: mcp
      namespace: eda-containers
      port: 8080
      tools:
        - name: build-eda-image
          description: "Build and push a Docker image for an EDA tool environment to Artifactory via GitHub Actions."
          inputParameters:
            - name: tool_name
              in: body
              type: string
              description: "EDA tool name (e.g., synopsys-dc, cadence-innovus)."
            - name: tool_version
              in: body
              type: string
              description: "EDA tool version string."
            - name: pdk_revision
              in: body
              type: string
              description: "PDK revision identifier."
          steps:
            - name: trigger-build
              type: call
              call: "github.dispatch-workflow"
              with:
                repo: "amd/eda-containers"
                workflow_id: "build-push.yml"
                ref: "main"
                inputs:
                  tool_name: "{{tool_name}}"
                  tool_version: "{{tool_version}}"
                  pdk_revision: "{{pdk_revision}}"
            - name: verify-image
              type: call
              call: "artifactory.get-artifact-info"
              with:
                repo: "eda-docker-local"
                path: "{{tool_name}}/{{tool_version}}-{{pdk_revision}}"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: workflow-dispatches
          path: "/repos/{{repo}}/actions/workflows/{{workflow_id}}/dispatches"
          inputParameters:
            - name: repo
              in: path
            - name: workflow_id
              in: path
          operations:
            - name: dispatch-workflow
              method: POST
    - type: http
      namespace: artifactory
      baseUri: "https://amd.jfrog.io/artifactory/api"
      authentication:
        type: bearer
        token: "$secrets.artifactory_token"
      resources:
        - name: storage
          path: "/storage/{{repo}}/{{path}}"
          inputParameters:
            - name: repo
              in: path
            - name: path
              in: path
          operations:
            - name: get-artifact-info
              method: GET

Creates a DocuSign envelope with a pre-configured NDA template for a new technology partner, sends it for signature, and logs the event in Salesforce.

naftiko: "0.5"
info:
  label: "DocuSign NDA for Partner Onboarding"
  description: "Creates a DocuSign envelope with a pre-configured NDA template for a new technology partner, sends it for signature, and logs the event in Salesforce."
  tags:
    - partner-ecosystem
    - legal
    - docusign
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: partner-nda
      port: 8080
      tools:
        - name: send-partner-nda
          description: "Send an NDA via DocuSign to a new technology partner and log in Salesforce."
          inputParameters:
            - name: partner_name
              in: body
              type: string
              description: "Partner company name."
            - name: signer_email
              in: body
              type: string
              description: "Email of the partner signer."
            - name: signer_name
              in: body
              type: string
              description: "Full name of the partner signer."
            - name: salesforce_account_id
              in: body
              type: string
              description: "Salesforce account ID for the partner."
          steps:
            - name: create-envelope
              type: call
              call: "docusign.create-envelope"
              with:
                template_id: "amd-partner-nda-template"
                signer_email: "{{signer_email}}"
                signer_name: "{{signer_name}}"
                email_subject: "AMD NDA for {{partner_name}}"
            - name: log-activity
              type: call
              call: "salesforce.create-task"
              with:
                WhatId: "{{salesforce_account_id}}"
                Subject: "NDA sent to {{partner_name}}"
                Description: "DocuSign envelope {{create-envelope.envelope_id}} sent to {{signer_email}}."
                Status: "Completed"
  consumes:
    - type: http
      namespace: docusign
      baseUri: "https://na4.docusign.net/restapi/v2.1/accounts/$secrets.docusign_account_id"
      authentication:
        type: bearer
        token: "$secrets.docusign_token"
      resources:
        - name: envelopes
          path: "/envelopes"
          operations:
            - name: create-envelope
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://amd.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: tasks
          path: "/sobjects/Task"
          operations:
            - name: create-task
              method: POST

Monitors EDA tool license usage, optimizes allocation, forecasts needs, and reports to management.

naftiko: "0.5"
info:
  label: "EDA License Utilization Pipeline"
  description: "Monitors EDA tool license usage, optimizes allocation, forecasts needs, and reports to management."
  tags:
    - operations
    - grafana
    - servicenow
    - powerbi
capability:
  exposes:
    - type: mcp
      namespace: operations
      port: 8080
      tools:
        - name: eda_license_utilization_pipeline
          description: "Orchestrate eda license utilization 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-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                data: "{{get-grafana.result}}"
            - name: create-powerbi
              type: call
              call: "powerbi.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "EDA License Utilization Pipeline step 3 complete."

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

Searches Elasticsearch for post-silicon debug logs by chip SKU and error pattern, enriches results with Jira defect links, and posts a summary to Microsoft Teams.

naftiko: "0.5"
info:
  label: "Elasticsearch Post-Silicon Log Search"
  description: "Searches Elasticsearch for post-silicon debug logs by chip SKU and error pattern, enriches results with Jira defect links, and posts a summary to Microsoft Teams."
  tags:
    - post-silicon
    - debug
    - elasticsearch
    - jira
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: post-silicon-logs
      port: 8080
      tools:
        - name: search-debug-logs
          description: "Search Elasticsearch for post-silicon debug logs, cross-reference with Jira defects, and notify the debug team."
          inputParameters:
            - name: chip_sku
              in: body
              type: string
              description: "Chip SKU identifier."
            - name: error_pattern
              in: body
              type: string
              description: "Regex or keyword pattern to match in log messages."
            - name: time_range
              in: body
              type: string
              description: "Time range (e.g., 24h, 7d)."
          steps:
            - name: search-logs
              type: call
              call: "elasticsearch.search"
              with:
                index: "post-silicon-logs-{{chip_sku}}"
                query:
                  bool:
                    must:
                      - match:
                          message: "{{error_pattern}}"
                    filter:
                      - range:
                          timestamp:
                            gte: "now-{{time_range}}"
            - name: search-defects
              type: call
              call: "jira.search-issues"
              with:
                jql: "project = POSTSI AND labels = {{chip_sku}} AND text ~ '{{error_pattern}}'"
            - name: notify-debug-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "post-silicon-debug"
                text: "Debug log search for {{chip_sku}} pattern '{{error_pattern}}': {{search-logs.hits.total.value}} log hits, {{search-defects.total}} related Jira defects."
  consumes:
    - type: http
      namespace: elasticsearch
      baseUri: "https://es.amd.com:9200"
      authentication:
        type: basic
        username: "$secrets.es_user"
        password: "$secrets.es_password"
      resources:
        - name: search
          path: "/{{index}}/_search"
          inputParameters:
            - name: index
              in: path
          operations:
            - name: search
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://amd.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: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

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-workday
              type: call
              call: "workday.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                data: "{{get-workday.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: workday
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/amd"
      authentication:
        type: bearer
        token: "$secrets.workday_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: workday-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://amd.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

Analyzes wafer yield trends, detects regressions, creates investigation tickets, and alerts engineering.

naftiko: "0.5"
info:
  label: "Fab Yield Trend Analysis Pipeline"
  description: "Analyzes wafer yield trends, detects regressions, creates investigation tickets, and alerts engineering."
  tags:
    - manufacturing
    - snowflake
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: manufacturing
      port: 8080
      tools:
        - name: fab_yield_trend_analysis_pipeline
          description: "Orchestrate fab yield trend analysis 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-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Fab Yield Trend Analysis Pipeline step 3 complete."

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

On a GitHub pull request for RTL code, runs a SonarQube static analysis scan and posts the lint summary as a PR comment.

naftiko: "0.5"
info:
  label: "GitHub Pull Request EDA Lint Check"
  description: "On a GitHub pull request for RTL code, runs a SonarQube static analysis scan and posts the lint summary as a PR comment."
  tags:
    - code-quality
    - eda
    - github
    - sonarqube
capability:
  exposes:
    - type: mcp
      namespace: eda-lint
      port: 8080
      tools:
        - name: lint-rtl-pr
          description: "Run SonarQube lint on an RTL pull request and post results as a GitHub PR comment."
          inputParameters:
            - name: repo
              in: body
              type: string
              description: "GitHub repository (org/repo)."
            - name: pr_number
              in: body
              type: integer
              description: "Pull request number."
            - name: branch
              in: body
              type: string
              description: "Source branch of the PR."
          steps:
            - name: run-scan
              type: call
              call: "sonarqube.trigger-analysis"
              with:
                project_key: "{{repo}}"
                branch: "{{branch}}"
            - name: get-results
              type: call
              call: "sonarqube.get-quality-gate"
              with:
                project_key: "{{repo}}"
                analysis_id: "{{run-scan.analysis_id}}"
            - name: post-comment
              type: call
              call: "github.create-pr-comment"
              with:
                repo: "{{repo}}"
                pr_number: "{{pr_number}}"
                body: "SonarQube lint: {{get-results.status}} — {{get-results.bugs}} bugs, {{get-results.code_smells}} code smells, coverage {{get-results.coverage}}%."
  consumes:
    - type: http
      namespace: sonarqube
      baseUri: "https://sonarqube.amd.com/api"
      authentication:
        type: bearer
        token: "$secrets.sonarqube_token"
      resources:
        - name: analysis
          path: "/ce/submit"
          operations:
            - name: trigger-analysis
              method: POST
        - name: quality-gate
          path: "/qualitygates/project_status"
          operations:
            - name: get-quality-gate
              method: GET
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: pr-comments
          path: "/repos/{{repo}}/issues/{{pr_number}}/comments"
          inputParameters:
            - name: repo
              in: path
            - name: pr_number
              in: path
          operations:
            - name: create-pr-comment
              method: POST

Triggers a GitLab CI pipeline for firmware builds, monitors the job, and uploads the binary artifact to Amazon S3 for distribution.

naftiko: "0.5"
info:
  label: "GitLab CI/CD Firmware Build Pipeline"
  description: "Triggers a GitLab CI pipeline for firmware builds, monitors the job, and uploads the binary artifact to Amazon S3 for distribution."
  tags:
    - firmware
    - ci-cd
    - gitlab
    - amazon-s3
capability:
  exposes:
    - type: mcp
      namespace: firmware-builds
      port: 8080
      tools:
        - name: build-firmware
          description: "Trigger a GitLab firmware build pipeline and upload the resulting binary to S3."
          inputParameters:
            - name: project_id
              in: body
              type: string
              description: "GitLab project ID."
            - name: ref
              in: body
              type: string
              description: "Git ref (branch or tag) to build."
            - name: firmware_target
              in: body
              type: string
              description: "Firmware target platform (e.g., epyc-bmc, instinct-smc)."
          steps:
            - name: trigger-pipeline
              type: call
              call: "gitlab.create-pipeline"
              with:
                project_id: "{{project_id}}"
                ref: "{{ref}}"
                variables:
                  FIRMWARE_TARGET: "{{firmware_target}}"
            - name: upload-binary
              type: call
              call: "s3.put-object"
              with:
                bucket: "amd-firmware-releases"
                key: "{{firmware_target}}/{{ref}}/{{trigger-pipeline.pipeline_id}}/firmware.bin"
                source_url: "{{trigger-pipeline.artifact_url}}"
  consumes:
    - type: http
      namespace: gitlab
      baseUri: "https://gitlab.amd.com/api/v4"
      authentication:
        type: bearer
        token: "$secrets.gitlab_token"
      resources:
        - name: pipelines
          path: "/projects/{{project_id}}/pipeline"
          inputParameters:
            - name: project_id
              in: path
          operations:
            - name: create-pipeline
              method: POST
    - type: http
      namespace: s3
      baseUri: "https://s3.amazonaws.com"
      authentication:
        type: aws-sigv4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
        region: "us-west-2"
      resources:
        - name: objects
          path: "/{{bucket}}/{{key}}"
          inputParameters:
            - name: bucket
              in: path
            - name: key
              in: path
          operations:
            - name: put-object
              method: PUT

Retrieves Gong call analytics for design win customer meetings, returning talk ratio, key topics discussed, and action items for the sales team.

naftiko: "0.5"
info:
  label: "Gong Sales Call Insights for Design Wins"
  description: "Retrieves Gong call analytics for design win customer meetings, returning talk ratio, key topics discussed, and action items for the sales team."
  tags:
    - sales
    - design-win
    - gong
capability:
  exposes:
    - type: mcp
      namespace: sales-insights
      port: 8080
      tools:
        - name: get-call-insights
          description: "Retrieve Gong call analytics for a customer meeting."
          inputParameters:
            - name: call_id
              in: body
              type: string
              description: "Gong call ID."
          call: "gong.get-call"
          with:
            call_id: "{{call_id}}"
          outputParameters:
            - name: talk_ratio
              type: number
              mapping: "$.call.talkRatio"
            - name: topics
              type: array
              mapping: "$.call.topics"
            - name: action_items
              type: array
              mapping: "$.call.actionItems"
  consumes:
    - type: http
      namespace: gong
      baseUri: "https://api.gong.io/v2"
      authentication:
        type: bearer
        token: "$secrets.gong_token"
      resources:
        - name: calls
          path: "/calls/{{call_id}}"
          inputParameters:
            - name: call_id
              in: path
          operations:
            - name: get-call
              method: GET

Retrieves Google Analytics page view and session metrics for the AMD developer portal to track documentation adoption and SDK download trends.

naftiko: "0.5"
info:
  label: "Google Analytics Developer Portal Metrics"
  description: "Retrieves Google Analytics page view and session metrics for the AMD developer portal to track documentation adoption and SDK download trends."
  tags:
    - analytics
    - developer-portal
    - google-analytics
capability:
  exposes:
    - type: mcp
      namespace: dev-portal-analytics
      port: 8080
      tools:
        - name: get-portal-metrics
          description: "Query Google Analytics for developer portal traffic metrics."
          inputParameters:
            - name: property_id
              in: body
              type: string
              description: "GA4 property ID."
            - name: start_date
              in: body
              type: string
              description: "Report start date (YYYY-MM-DD)."
            - name: end_date
              in: body
              type: string
              description: "Report end date (YYYY-MM-DD)."
          steps:
            - name: fetch-report
              type: call
              call: "ga.run-report"
              with:
                property_id: "{{property_id}}"
                dateRanges:
                  startDate: "{{start_date}}"
                  endDate: "{{end_date}}"
                metrics:
                  - "screenPageViews"
                  - "sessions"
                  - "averageSessionDuration"
            - name: post-metrics
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "developer-portal-metrics"
                text: "Developer portal GA4 report ({{start_date}} to {{end_date}}): {{fetch-report.rows[0].metricValues[0].value}} page views, {{fetch-report.rows[0].metricValues[1].value}} sessions."
  consumes:
    - type: http
      namespace: ga
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: run-report
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Runs benchmark suites, compares against baselines, flags regressions, and reports to development.

naftiko: "0.5"
info:
  label: "GPU Benchmark Regression Pipeline"
  description: "Runs benchmark suites, compares against baselines, flags regressions, and reports to development."
  tags:
    - performance
    - grafana
    - jira
    - slack
capability:
  exposes:
    - type: mcp
      namespace: performance
      port: 8080
      tools:
        - name: gpu_benchmark_regression_pipeline
          description: "Orchestrate gpu benchmark regression 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-jira
              type: call
              call: "jira.process-resource"
              with:
                data: "{{get-grafana.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "GPU Benchmark Regression Pipeline step 3 complete."

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

Queries a Grafana dashboard for fab yield metrics by product line and date range, returning pass rate, defect density, and wafer-level trends.

naftiko: "0.5"
info:
  label: "Grafana Fab Yield Dashboard Query"
  description: "Queries a Grafana dashboard for fab yield metrics by product line and date range, returning pass rate, defect density, and wafer-level trends."
  tags:
    - manufacturing
    - yield
    - grafana
capability:
  exposes:
    - type: mcp
      namespace: yield-analytics
      port: 8080
      tools:
        - name: query-yield-dashboard
          description: "Query Grafana fab yield dashboard for a product line and date range."
          inputParameters:
            - name: product_line
              in: body
              type: string
              description: "Product line identifier (e.g., EPYC, Ryzen, Instinct)."
            - name: from_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
            - name: to_date
              in: body
              type: string
              description: "End date in YYYY-MM-DD format."
          call: "grafana.query-dashboard"
          with:
            dashboard_uid: "fab-yield-{{product_line}}"
            from: "{{from_date}}"
            to: "{{to_date}}"
          outputParameters:
            - name: pass_rate
              type: number
              mapping: "$.results[0].series[0].values[-1]"
            - name: defect_density
              type: number
              mapping: "$.results[1].series[0].values[-1]"
  consumes:
    - type: http
      namespace: grafana
      baseUri: "https://grafana.amd.com/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_token"
      resources:
        - name: dashboards
          path: "/dashboards/uid/{{dashboard_uid}}"
          inputParameters:
            - name: dashboard_uid
              in: path
          operations:
            - name: query-dashboard
              method: GET

Deploys or upgrades a Helm chart for an EDA microservice to the Kubernetes cluster, validates the rollout, and logs the deployment in Datadog.

naftiko: "0.5"
info:
  label: "Helm Chart Deployment for EDA Services"
  description: "Deploys or upgrades a Helm chart for an EDA microservice to the Kubernetes cluster, validates the rollout, and logs the deployment in Datadog."
  tags:
    - deployment
    - eda
    - helm
    - kubernetes
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: eda-deployments
      port: 8080
      tools:
        - name: deploy-eda-service
          description: "Deploy or upgrade an EDA microservice via Helm and log the event."
          inputParameters:
            - name: release_name
              in: body
              type: string
              description: "Helm release name."
            - name: chart
              in: body
              type: string
              description: "Chart name in the Helm repo."
            - name: namespace
              in: body
              type: string
              description: "Kubernetes namespace."
            - name: values_override
              in: body
              type: object
              description: "Helm values overrides."
          steps:
            - name: deploy-chart
              type: call
              call: "helm.upgrade-release"
              with:
                release_name: "{{release_name}}"
                chart: "{{chart}}"
                namespace: "{{namespace}}"
                values: "{{values_override}}"
            - name: log-deployment
              type: call
              call: "datadog.send-event"
              with:
                title: "Helm deploy: {{release_name}}"
                text: "Chart {{chart}} deployed to {{namespace}}. Revision: {{deploy-chart.revision}}."
                tags: "deploy:helm,namespace:{{namespace}}"
  consumes:
    - type: http
      namespace: helm
      baseUri: "https://helm-api.amd.com/v1"
      authentication:
        type: bearer
        token: "$secrets.helm_api_token"
      resources:
        - name: releases
          path: "/namespaces/{{namespace}}/releases/{{release_name}}"
          inputParameters:
            - name: namespace
              in: path
            - name: release_name
              in: path
          operations:
            - name: upgrade-release
              method: PUT
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      resources:
        - name: events
          path: "/events"
          operations:
            - name: send-event
              method: POST

When a new partner lead is created in HubSpot, enriches it with ZoomInfo company data and syncs the enriched lead into Salesforce for the channel sales team.

naftiko: "0.5"
info:
  label: "HubSpot Partner Lead Enrichment and Sync"
  description: "When a new partner lead is created in HubSpot, enriches it with ZoomInfo company data and syncs the enriched lead into Salesforce for the channel sales team."
  tags:
    - partner-ecosystem
    - lead-management
    - hubspot
    - zoominfo
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: partner-leads
      port: 8080
      tools:
        - name: sync-partner-lead
          description: "Enrich a HubSpot partner lead with ZoomInfo data and sync to Salesforce."
          inputParameters:
            - name: contact_id
              in: body
              type: string
              description: "HubSpot contact ID."
          steps:
            - name: get-contact
              type: call
              call: "hubspot.get-contact"
              with:
                contact_id: "{{contact_id}}"
            - name: enrich-company
              type: call
              call: "zoominfo.enrich-company"
              with:
                company_name: "{{get-contact.company}}"
                domain: "{{get-contact.website}}"
            - name: create-lead
              type: call
              call: "salesforce.create-lead"
              with:
                FirstName: "{{get-contact.firstname}}"
                LastName: "{{get-contact.lastname}}"
                Company: "{{get-contact.company}}"
                Email: "{{get-contact.email}}"
                Industry: "{{enrich-company.industry}}"
                NumberOfEmployees: "{{enrich-company.employee_count}}"
                LeadSource: "Partner Channel"
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/objects/contacts/{{contact_id}}"
          inputParameters:
            - name: contact_id
              in: path
          operations:
            - name: get-contact
              method: GET
    - type: http
      namespace: zoominfo
      baseUri: "https://api.zoominfo.com"
      authentication:
        type: bearer
        token: "$secrets.zoominfo_token"
      resources:
        - name: company-enrich
          path: "/enrich/company"
          operations:
            - name: enrich-company
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://amd.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leads
          path: "/sobjects/Lead"
          operations:
            - name: create-lead
              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://amd.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://amd.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://amd.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

Fetches the current status of a tape-out milestone epic in Jira, including completion percentage, blockers, and remaining story points.

naftiko: "0.5"
info:
  label: "Jira Tape-Out Milestone Tracker"
  description: "Fetches the current status of a tape-out milestone epic in Jira, including completion percentage, blockers, and remaining story points."
  tags:
    - project-management
    - tape-out
    - jira
capability:
  exposes:
    - type: mcp
      namespace: tapeout-tracking
      port: 8080
      tools:
        - name: get-tapeout-status
          description: "Retrieve tape-out milestone epic status from Jira including completion and blockers."
          inputParameters:
            - name: epic_key
              in: body
              type: string
              description: "Jira epic key for the tape-out milestone (e.g., TAPEOUT-42)."
          call: "jira.get-issue"
          with:
            issue_key: "{{epic_key}}"
          outputParameters:
            - name: summary
              type: string
              mapping: "$.fields.summary"
            - name: status
              type: string
              mapping: "$.fields.status.name"
            - name: story_points_remaining
              type: number
              mapping: "$.fields.customfield_10016"
            - name: blockers
              type: array
              mapping: "$.fields.issuelinks[?(@.type.name=='Blocker')]"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://amd.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

Creates a Keycloak user account for a new external developer, assigns realm roles, and sends a welcome email via MailChimp with onboarding instructions.

naftiko: "0.5"
info:
  label: "Keycloak Developer Portal SSO Provisioning"
  description: "Creates a Keycloak user account for a new external developer, assigns realm roles, and sends a welcome email via MailChimp with onboarding instructions."
  tags:
    - identity
    - developer-portal
    - keycloak
    - mailchimp
capability:
  exposes:
    - type: mcp
      namespace: dev-identity
      port: 8080
      tools:
        - name: provision-developer
          description: "Create a Keycloak user for the AMD developer portal and send a welcome email."
          inputParameters:
            - name: email
              in: body
              type: string
              description: "Developer email address."
            - name: first_name
              in: body
              type: string
              description: "Developer first name."
            - name: last_name
              in: body
              type: string
              description: "Developer last name."
            - name: company
              in: body
              type: string
              description: "Developer company name."
          steps:
            - name: create-user
              type: call
              call: "keycloak.create-user"
              with:
                realm: "amd-developer-portal"
                username: "{{email}}"
                email: "{{email}}"
                firstName: "{{first_name}}"
                lastName: "{{last_name}}"
                enabled: true
                attributes:
                  company: "{{company}}"
                realmRoles:
                  - "developer"
                  - "sdk-download"
            - name: send-welcome
              type: call
              call: "mailchimp.send-transactional"
              with:
                template_name: "developer-welcome"
                to_email: "{{email}}"
                merge_vars:
                  first_name: "{{first_name}}"
                  portal_url: "https://developer.amd.com"
  consumes:
    - type: http
      namespace: keycloak
      baseUri: "https://sso.amd.com/auth/admin/realms"
      authentication:
        type: bearer
        token: "$secrets.keycloak_admin_token"
      resources:
        - name: users
          path: "/{{realm}}/users"
          inputParameters:
            - name: realm
              in: path
          operations:
            - name: create-user
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://mandrillapp.com/api/1.0"
      authentication:
        type: apiKey
        key: "$secrets.mandrill_api_key"
      resources:
        - name: messages
          path: "/messages/send-template"
          operations:
            - name: send-transactional
              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://amd.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://amd.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

Checks GPU node pool utilization in Azure Kubernetes Service and scales the cluster up or down based on EDA workload demand, logging the action to Datadog.

naftiko: "0.5"
info:
  label: "Kubernetes GPU Cluster Scaler"
  description: "Checks GPU node pool utilization in Azure Kubernetes Service and scales the cluster up or down based on EDA workload demand, logging the action to Datadog."
  tags:
    - infrastructure
    - gpu-compute
    - azure-kubernetes-service
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: gpu-cluster
      port: 8080
      tools:
        - name: scale-gpu-pool
          description: "Scale an AKS GPU node pool based on EDA workload demand and log the scaling event."
          inputParameters:
            - name: cluster_name
              in: body
              type: string
              description: "AKS cluster name."
            - name: node_pool
              in: body
              type: string
              description: "GPU node pool name."
            - name: desired_count
              in: body
              type: integer
              description: "Desired number of GPU nodes."
          steps:
            - name: scale-pool
              type: call
              call: "aks.update-node-pool"
              with:
                cluster_name: "{{cluster_name}}"
                node_pool: "{{node_pool}}"
                count: "{{desired_count}}"
            - name: log-scaling
              type: call
              call: "datadog.send-event"
              with:
                title: "GPU pool scaled: {{cluster_name}}/{{node_pool}}"
                text: "Node pool {{node_pool}} scaled to {{desired_count}} nodes."
                tags: "infra:aks,cluster:{{cluster_name}}"
  consumes:
    - type: http
      namespace: aks
      baseUri: "https://management.azure.com/subscriptions/$secrets.azure_subscription_id/resourceGroups/amd-eda-rg/providers/Microsoft.ContainerService/managedClusters"
      authentication:
        type: bearer
        token: "$secrets.azure_token"
      resources:
        - name: node-pools
          path: "/{{cluster_name}}/agentPools/{{node_pool}}"
          inputParameters:
            - name: cluster_name
              in: path
            - name: node_pool
              in: path
          operations:
            - name: update-node-pool
              method: PUT
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      resources:
        - name: events
          path: "/events"
          operations:
            - name: send-event
              method: POST

Creates and sends a MailChimp email campaign to AMD technology partners with product updates, SDK releases, and upcoming webinar announcements.

naftiko: "0.5"
info:
  label: "MailChimp Partner Newsletter Campaign"
  description: "Creates and sends a MailChimp email campaign to AMD technology partners with product updates, SDK releases, and upcoming webinar announcements."
  tags:
    - partner-ecosystem
    - marketing
    - mailchimp
capability:
  exposes:
    - type: mcp
      namespace: partner-comms
      port: 8080
      tools:
        - name: send-partner-newsletter
          description: "Create and send a MailChimp campaign to the AMD partner list."
          inputParameters:
            - name: subject
              in: body
              type: string
              description: "Email subject line."
            - name: html_content
              in: body
              type: string
              description: "HTML content of the newsletter."
            - name: list_id
              in: body
              type: string
              description: "MailChimp audience list ID."
          steps:
            - name: create-campaign
              type: call
              call: "mailchimp.create-campaign"
              with:
                type: "regular"
                recipients:
                  list_id: "{{list_id}}"
                settings:
                  subject_line: "{{subject}}"
                  from_name: "AMD Partner Program"
                  reply_to: "partners@amd.com"
            - name: set-content
              type: call
              call: "mailchimp.set-campaign-content"
              with:
                campaign_id: "{{create-campaign.id}}"
                html: "{{html_content}}"
            - name: send-campaign
              type: call
              call: "mailchimp.send-campaign"
              with:
                campaign_id: "{{create-campaign.id}}"
  consumes:
    - type: http
      namespace: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: basic
        username: "anystring"
        password: "$secrets.mailchimp_api_key"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: create-campaign
              method: POST
        - name: campaign-content
          path: "/campaigns/{{campaign_id}}/content"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: set-campaign-content
              method: PUT
        - name: campaign-actions
          path: "/campaigns/{{campaign_id}}/actions/send"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: send-campaign
              method: POST

Queries Mixpanel funnel analytics for the AMD ROCm SDK adoption flow, tracking download-to-first-build conversion across developer segments.

naftiko: "0.5"
info:
  label: "Mixpanel ROCm SDK Adoption Funnel"
  description: "Queries Mixpanel funnel analytics for the AMD ROCm SDK adoption flow, tracking download-to-first-build conversion across developer segments."
  tags:
    - analytics
    - developer-portal
    - mixpanel
capability:
  exposes:
    - type: mcp
      namespace: sdk-analytics
      port: 8080
      tools:
        - name: get-sdk-funnel
          description: "Query Mixpanel for ROCm SDK adoption funnel metrics."
          inputParameters:
            - name: funnel_id
              in: body
              type: string
              description: "Mixpanel funnel ID."
            - name: from_date
              in: body
              type: string
              description: "Start date (YYYY-MM-DD)."
            - name: to_date
              in: body
              type: string
              description: "End date (YYYY-MM-DD)."
          call: "mixpanel.get-funnel"
          with:
            funnel_id: "{{funnel_id}}"
            from_date: "{{from_date}}"
            to_date: "{{to_date}}"
  consumes:
    - type: http
      namespace: mixpanel
      baseUri: "https://mixpanel.com/api/2.0"
      authentication:
        type: basic
        username: "$secrets.mixpanel_api_secret"
        password: ""
      resources:
        - name: funnels
          path: "/funnels"
          operations:
            - name: get-funnel
              method: GET

Queries Nutanix Prism Central for hyperconverged cluster capacity metrics used by EDA compute farms, returning CPU, memory, and storage utilization.

naftiko: "0.5"
info:
  label: "Nutanix HCI Cluster Capacity Planner"
  description: "Queries Nutanix Prism Central for hyperconverged cluster capacity metrics used by EDA compute farms, returning CPU, memory, and storage utilization."
  tags:
    - infrastructure
    - capacity-planning
    - nutanix
capability:
  exposes:
    - type: mcp
      namespace: hci-capacity
      port: 8080
      tools:
        - name: get-cluster-capacity
          description: "Query Nutanix Prism Central for EDA cluster capacity metrics."
          inputParameters:
            - name: cluster_uuid
              in: body
              type: string
              description: "Nutanix cluster UUID."
          call: "nutanix.get-cluster"
          with:
            cluster_uuid: "{{cluster_uuid}}"
          outputParameters:
            - name: cpu_usage_pct
              type: number
              mapping: "$.stats.hypervisor_cpu_usage_ppm"
            - name: memory_usage_pct
              type: number
              mapping: "$.stats.hypervisor_memory_usage_ppm"
            - name: storage_usage_bytes
              type: number
              mapping: "$.usageStats.storage.usage_bytes"
  consumes:
    - type: http
      namespace: nutanix
      baseUri: "https://prism-central.amd.com/api/nutanix/v3"
      authentication:
        type: basic
        username: "$secrets.nutanix_user"
        password: "$secrets.nutanix_password"
      resources:
        - name: clusters
          path: "/clusters/{{cluster_uuid}}"
          inputParameters:
            - name: cluster_uuid
              in: path
          operations:
            - name: get-cluster
              method: GET

Retrieves a chip product bill of materials from Oracle E-Business Suite by item number, returning component hierarchy, quantities, and supplier sourcing.

naftiko: "0.5"
info:
  label: "Oracle ERP Bill of Materials Lookup"
  description: "Retrieves a chip product bill of materials from Oracle E-Business Suite by item number, returning component hierarchy, quantities, and supplier sourcing."
  tags:
    - manufacturing
    - bom
    - oracle
    - oracle-e-business-suite
capability:
  exposes:
    - type: mcp
      namespace: chip-bom
      port: 8080
      tools:
        - name: get-bom
          description: "Look up a chip product BOM in Oracle E-Business Suite."
          inputParameters:
            - name: item_number
              in: body
              type: string
              description: "Oracle item number for the chip product."
            - name: organization_id
              in: body
              type: string
              description: "Oracle organization ID."
          call: "oracle.get-bom"
          with:
            item_number: "{{item_number}}"
            organization_id: "{{organization_id}}"
          outputParameters:
            - name: item_description
              type: string
              mapping: "$.BillOfMaterial.ItemDescription"
            - name: components
              type: array
              mapping: "$.BillOfMaterial.Components"
            - name: revision
              type: string
              mapping: "$.BillOfMaterial.Revision"
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://oracle-ebs.amd.com/webservices/rest/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: bom
          path: "/bom/items/{{item_number}}/organizations/{{organization_id}}"
          inputParameters:
            - name: item_number
              in: path
            - name: organization_id
              in: path
          operations:
            - name: get-bom
              method: GET

Retrieves firewall rule configurations from Palo Alto Networks Panorama for EDA network segments and exports the audit report to Box.

naftiko: "0.5"
info:
  label: "Palo Alto Firewall Rule Audit"
  description: "Retrieves firewall rule configurations from Palo Alto Networks Panorama for EDA network segments and exports the audit report to Box."
  tags:
    - security
    - network
    - palo-alto-networks
    - box
capability:
  exposes:
    - type: mcp
      namespace: firewall-audit
      port: 8080
      tools:
        - name: audit-firewall-rules
          description: "Export Palo Alto firewall rules for EDA segments and upload audit report to Box."
          inputParameters:
            - name: device_group
              in: body
              type: string
              description: "Panorama device group name."
            - name: box_folder_id
              in: body
              type: string
              description: "Box folder ID for audit reports."
          steps:
            - name: get-rules
              type: call
              call: "paloalto.get-security-rules"
              with:
                device_group: "{{device_group}}"
            - name: upload-report
              type: call
              call: "box.upload-file"
              with:
                folder_id: "{{box_folder_id}}"
                file_name: "firewall-audit-{{device_group}}.json"
                content: "{{get-rules.rules}}"
  consumes:
    - type: http
      namespace: paloalto
      baseUri: "https://panorama.amd.com/restapi/v10.2"
      authentication:
        type: apiKey
        key: "$secrets.paloalto_api_key"
      resources:
        - name: security-rules
          path: "/Policies/SecurityRules"
          operations:
            - name: get-security-rules
              method: GET
    - type: http
      namespace: box
      baseUri: "https://upload.box.com/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files/content"
          operations:
            - name: upload-file
              method: POST

Retrieves recent Perforce Helix changelists for an RTL depot path, returning changelist numbers, descriptions, and authors for design audit.

naftiko: "0.5"
info:
  label: "Perforce Helix RTL Changelist Tracker"
  description: "Retrieves recent Perforce Helix changelists for an RTL depot path, returning changelist numbers, descriptions, and authors for design audit."
  tags:
    - source-control
    - chip-design
    - perforce
capability:
  exposes:
    - type: mcp
      namespace: rtl-changelists
      port: 8080
      tools:
        - name: list-recent-changelists
          description: "List recent Perforce changelists for an RTL depot path."
          inputParameters:
            - name: depot_path
              in: body
              type: string
              description: "Perforce depot path (e.g., //depot/rtl/epyc/...)."
            - name: max_results
              in: body
              type: integer
              description: "Maximum number of changelists to return."
          steps:
            - name: list-changes
              type: call
              call: "perforce.list-changelists"
              with:
                depot_path: "{{depot_path}}"
                max: "{{max_results}}"
            - name: post-summary
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "rtl-design-audit"
                text: "Recent changelists for {{depot_path}}: {{list-changes.count}} changes found. Latest: CL {{list-changes.changelists[0].number}} by {{list-changes.changelists[0].user}}."
  consumes:
    - type: http
      namespace: perforce
      baseUri: "https://helix-api.amd.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.perforce_token"
      resources:
        - name: changelists
          path: "/changes"
          operations:
            - name: list-changelists
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

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-workday
              type: call
              call: "workday.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-confluence
              type: call
              call: "confluence.process-resource"
              with:
                data: "{{get-workday.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: workday
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/amd"
      authentication:
        type: bearer
        token: "$secrets.workday_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: workday-op
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://amd.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 the PostgreSQL EDA job metadata database for job execution history, returning run times, exit codes, and resource consumption by job type.

naftiko: "0.5"
info:
  label: "PostgreSQL EDA Job Metadata Query"
  description: "Queries the PostgreSQL EDA job metadata database for job execution history, returning run times, exit codes, and resource consumption by job type."
  tags:
    - eda
    - metadata
    - postgresql
capability:
  exposes:
    - type: mcp
      namespace: eda-job-metadata
      port: 8080
      tools:
        - name: query-job-history
          description: "Query PostgreSQL for EDA job execution metadata."
          inputParameters:
            - name: job_type
              in: body
              type: string
              description: "EDA job type (synthesis, place-route, timing, drc)."
            - name: days_back
              in: body
              type: integer
              description: "Number of days of history to retrieve."
          call: "postgres.execute-query"
          with:
            query: "SELECT job_id, start_time, end_time, exit_code, peak_memory_gb, cpu_hours FROM eda_jobs WHERE job_type = '{{job_type}}' AND start_time >= NOW() - INTERVAL '{{days_back}} days' ORDER BY start_time DESC"
  consumes:
    - type: http
      namespace: postgres
      baseUri: "https://pgrest.amd.com/v1"
      authentication:
        type: bearer
        token: "$secrets.pgrest_token"
      resources:
        - name: query
          path: "/rpc/execute_query"
          operations:
            - name: execute-query
              method: POST

Triggers a Power BI dataset refresh for the chip revenue dashboard and sends a notification to the finance team in Microsoft Teams when complete.

naftiko: "0.5"
info:
  label: "Power BI Chip Revenue Dashboard Refresh"
  description: "Triggers a Power BI dataset refresh for the chip revenue dashboard and sends a notification to the finance team in Microsoft Teams when complete."
  tags:
    - analytics
    - finance
    - power-bi
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: revenue-analytics
      port: 8080
      tools:
        - name: refresh-revenue-dashboard
          description: "Refresh the Power BI chip revenue dataset and notify the finance team."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "Power BI dataset identifier."
            - name: group_id
              in: body
              type: string
              description: "Power BI workspace (group) ID."
          steps:
            - name: refresh-dataset
              type: call
              call: "powerbi.trigger-refresh"
              with:
                group_id: "{{group_id}}"
                dataset_id: "{{dataset_id}}"
            - name: notify-finance
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "finance-analytics"
                text: "Power BI revenue dashboard refreshed. Dataset {{dataset_id}} updated successfully."
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/groups/{{group_id}}/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: group_id
              in: path
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Queries Prometheus for EDA compute farm resource utilization metrics, evaluates against thresholds, and sends a capacity warning to Microsoft Teams if exceeded.

naftiko: "0.5"
info:
  label: "Prometheus EDA Farm Monitor with Slack Alert"
  description: "Queries Prometheus for EDA compute farm resource utilization metrics, evaluates against thresholds, and sends a capacity warning to Microsoft Teams if exceeded."
  tags:
    - monitoring
    - eda
    - prometheus
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: eda-monitoring
      port: 8080
      tools:
        - name: check-farm-utilization
          description: "Query Prometheus for EDA farm metrics and alert if thresholds are exceeded."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "PromQL query string."
            - name: threshold
              in: body
              type: number
              description: "Alert threshold percentage."
          steps:
            - name: query-metrics
              type: call
              call: "prometheus.query-instant"
              with:
                query: "{{query}}"
            - name: send-alert
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "eda-farm-alerts"
                text: "EDA farm utilization alert: {{query}} returned {{query-metrics.value}}. Threshold: {{threshold}}%."
  consumes:
    - type: http
      namespace: prometheus
      baseUri: "https://prometheus.amd.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.prometheus_token"
      resources:
        - name: query
          path: "/query"
          operations:
            - name: query-instant
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Checks the Redis cache for current EDA license availability by tool vendor, returning available seats, checked-out count, and queue depth.

naftiko: "0.5"
info:
  label: "Redis EDA License Cache Query"
  description: "Checks the Redis cache for current EDA license availability by tool vendor, returning available seats, checked-out count, and queue depth."
  tags:
    - eda
    - license-management
    - redis
capability:
  exposes:
    - type: mcp
      namespace: license-cache
      port: 8080
      tools:
        - name: get-license-status
          description: "Query Redis for EDA license availability by vendor and tool."
          inputParameters:
            - name: vendor
              in: body
              type: string
              description: "EDA vendor name (e.g., synopsys, cadence, siemens)."
            - name: tool_name
              in: body
              type: string
              description: "EDA tool name."
          call: "redis.get-key"
          with:
            key: "licenses:{{vendor}}:{{tool_name}}"
  consumes:
    - type: http
      namespace: redis
      baseUri: "https://redis-api.amd.com/v1"
      authentication:
        type: bearer
        token: "$secrets.redis_api_token"
      resources:
        - name: keys
          path: "/get/{{key}}"
          inputParameters:
            - name: key
              in: path
          operations:
            - name: get-key
              method: GET

Triggers an RTL synthesis run on Azure DevOps CI pipeline for a given design block, streams build logs to Datadog, and posts completion status to Microsoft Teams.

naftiko: "0.5"
info:
  label: "RTL Synthesis Job Launcher"
  description: "Triggers an RTL synthesis run on Azure DevOps CI pipeline for a given design block, streams build logs to Datadog, and posts completion status to Microsoft Teams."
  tags:
    - chip-design
    - synthesis
    - azure-devops
    - datadog
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: rtl-synthesis
      port: 8080
      tools:
        - name: launch-synthesis
          description: "Kick off an RTL synthesis pipeline for a specified design block and PDK target, then notify the design team on completion."
          inputParameters:
            - name: design_block
              in: body
              type: string
              description: "Name of the RTL design block to synthesize."
            - name: pdk_target
              in: body
              type: string
              description: "Process design kit target node (e.g., tsmc5nm, tsmc3nm)."
            - name: branch
              in: body
              type: string
              description: "Git branch containing the RTL source."
          steps:
            - name: trigger-pipeline
              type: call
              call: "azuredevops.run-pipeline"
              with:
                project: "amd-rtl-designs"
                pipeline_id: "synthesis-flow"
                parameters:
                  design_block: "{{design_block}}"
                  pdk_target: "{{pdk_target}}"
                  branch: "{{branch}}"
            - name: log-event
              type: call
              call: "datadog.send-event"
              with:
                title: "Synthesis launched: {{design_block}}"
                text: "Pipeline {{trigger-pipeline.run_id}} started for {{design_block}} on {{pdk_target}}."
                tags: "team:rtl,block:{{design_block}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "rtl-design-alerts"
                text: "Synthesis run {{trigger-pipeline.run_id}} launched for {{design_block}} ({{pdk_target}}) on branch {{branch}}."
  consumes:
    - type: http
      namespace: azuredevops
      baseUri: "https://dev.azure.com/amd"
      authentication:
        type: bearer
        token: "$secrets.azuredevops_token"
      resources:
        - name: pipelines
          path: "/{{project}}/_apis/pipelines/{{pipeline_id}}/runs"
          inputParameters:
            - name: project
              in: path
            - name: pipeline_id
              in: path
          operations:
            - name: run-pipeline
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      resources:
        - name: events
          path: "/events"
          operations:
            - name: send-event
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves a design win opportunity from Salesforce by opportunity ID and returns stage, account, product family, and projected revenue.

naftiko: "0.5"
info:
  label: "Salesforce Design Win Tracker"
  description: "Retrieves a design win opportunity from Salesforce by opportunity ID and returns stage, account, product family, and projected revenue."
  tags:
    - sales
    - design-win
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: design-wins
      port: 8080
      tools:
        - name: get-design-win
          description: "Look up a Salesforce design win opportunity by ID. Returns stage, account name, product family, and projected revenue."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "The Salesforce opportunity ID for the design win."
          call: "salesforce.get-opportunity"
          with:
            opportunity_id: "{{opportunity_id}}"
          outputParameters:
            - name: stage
              type: string
              mapping: "$.StageName"
            - name: account
              type: string
              mapping: "$.Account.Name"
            - name: product_family
              type: string
              mapping: "$.Product_Family__c"
            - name: projected_revenue
              type: string
              mapping: "$.Amount"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://amd.my.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: get-opportunity
              method: GET

Retrieves a travel expense report from SAP Concur by report ID, returning total amount, approval status, and line item summary for engineering travel.

naftiko: "0.5"
info:
  label: "SAP Concur Travel Expense Report"
  description: "Retrieves a travel expense report from SAP Concur by report ID, returning total amount, approval status, and line item summary for engineering travel."
  tags:
    - finance
    - travel
    - sap-concur
capability:
  exposes:
    - type: mcp
      namespace: travel-expenses
      port: 8080
      tools:
        - name: get-expense-report
          description: "Look up a SAP Concur expense report by ID."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "Concur expense report ID."
          call: "concur.get-report"
          with:
            report_id: "{{report_id}}"
          outputParameters:
            - name: total_amount
              type: number
              mapping: "$.Total"
            - name: approval_status
              type: string
              mapping: "$.ApprovalStatusName"
            - name: currency
              type: string
              mapping: "$.CurrencyCode"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: reports
          path: "/expense/reports/{{report_id}}"
          inputParameters:
            - name: report_id
              in: path
          operations:
            - name: get-report
              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: 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://amd-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://amd.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

Creates a ServiceNow change request for scheduled fab tool maintenance, attaches the maintenance plan from Confluence, and notifies the fab ops team on Microsoft Teams.

naftiko: "0.5"
info:
  label: "ServiceNow Fab Tool Maintenance Change"
  description: "Creates a ServiceNow change request for scheduled fab tool maintenance, attaches the maintenance plan from Confluence, and notifies the fab ops team on Microsoft Teams."
  tags:
    - manufacturing
    - maintenance
    - servicenow
    - confluence
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: fab-maintenance
      port: 8080
      tools:
        - name: create-maintenance-change
          description: "Create a ServiceNow change request for fab tool maintenance with Confluence attachment and Teams notification."
          inputParameters:
            - name: tool_id
              in: body
              type: string
              description: "Fab tool equipment identifier."
            - name: description
              in: body
              type: string
              description: "Description of the maintenance activity."
            - name: start_time
              in: body
              type: string
              description: "Planned maintenance start in ISO 8601."
            - name: end_time
              in: body
              type: string
              description: "Planned maintenance end in ISO 8601."
            - name: confluence_page_id
              in: body
              type: string
              description: "Confluence page ID for the maintenance plan."
          steps:
            - name: get-plan
              type: call
              call: "confluence.get-page"
              with:
                page_id: "{{confluence_page_id}}"
            - name: create-change
              type: call
              call: "servicenow.create-change"
              with:
                short_description: "Fab tool maintenance: {{tool_id}}"
                description: "{{description}}. Maintenance plan: {{get-plan.title}} — {{get-plan._links.webui}}"
                start_date: "{{start_time}}"
                end_date: "{{end_time}}"
                category: "fab_equipment"
                type: "standard"
            - name: notify-ops
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "fab-operations"
                text: "Maintenance change {{create-change.number}} created for tool {{tool_id}}. Window: {{start_time}} to {{end_time}}."
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://amd.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: content
          path: "/content/{{page_id}}"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: get-page
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://amd.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: changes
          path: "/table/change_request"
          operations:
            - name: create-change
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Monitors 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://amd.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

Executes a Snowflake SQL query against the silicon telemetry warehouse and returns structured results for post-silicon validation analysis.

naftiko: "0.5"
info:
  label: "Snowflake Silicon Telemetry Query"
  description: "Executes a Snowflake SQL query against the silicon telemetry warehouse and returns structured results for post-silicon validation analysis."
  tags:
    - analytics
    - telemetry
    - snowflake
    - post-silicon
capability:
  exposes:
    - type: mcp
      namespace: silicon-telemetry
      port: 8080
      tools:
        - name: query-telemetry
          description: "Run a SQL query against the Snowflake silicon telemetry data warehouse."
          inputParameters:
            - name: sql_statement
              in: body
              type: string
              description: "SQL SELECT statement to execute."
            - name: warehouse
              in: body
              type: string
              description: "Snowflake warehouse to use (e.g., TELEMETRY_WH)."
          steps:
            - name: run-query
              type: call
              call: "snowflake.execute-statement"
              with:
                statement: "{{sql_statement}}"
                warehouse: "{{warehouse}}"
                database: "SILICON_TELEMETRY"
            - name: log-query
              type: call
              call: "datadog.send-event"
              with:
                title: "Telemetry query executed"
                text: "Snowflake query on {{warehouse}} returned {{run-query.rowCount}} rows."
                tags: "data:snowflake,warehouse:{{warehouse}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://amd.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-statement
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apiKey
        key: "$secrets.datadog_api_key"
      resources:
        - name: events
          path: "/events"
          operations:
            - name: send-event
              method: POST

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

Searches Splunk for security events related to EDA license server access and returns recent anomalous activity logs.

naftiko: "0.5"
info:
  label: "Splunk Security Event Query"
  description: "Searches Splunk for security events related to EDA license server access and returns recent anomalous activity logs."
  tags:
    - security
    - monitoring
    - splunk
capability:
  exposes:
    - type: mcp
      namespace: security-monitoring
      port: 8080
      tools:
        - name: search-security-events
          description: "Search Splunk for security events on EDA license servers."
          inputParameters:
            - name: search_query
              in: body
              type: string
              description: "Splunk SPL search query."
            - name: earliest_time
              in: body
              type: string
              description: "Earliest time boundary (e.g., -24h)."
          steps:
            - name: create-search
              type: call
              call: "splunk.create-search"
              with:
                search: "{{search_query}}"
                earliest_time: "{{earliest_time}}"
                latest_time: "now"
            - name: notify-security
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "security-ops"
                text: "Splunk security search completed. Job ID: {{create-search.sid}}. Query: {{search_query}}."
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://splunk.amd.com:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: searches
          path: "/search/jobs"
          operations:
            - name: create-search
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Tracks component lead times, identifies delays, escalates critical shortages, and updates procurement.

naftiko: "0.5"
info:
  label: "Supply Chain Lead Time Monitor Pipeline"
  description: "Tracks component lead times, identifies delays, escalates critical shortages, and updates procurement."
  tags:
    - logistics
    - servicenow
    - salesforce
    - slack
capability:
  exposes:
    - type: mcp
      namespace: logistics
      port: 8080
      tools:
        - name: supply_chain_lead_time_monitor
          description: "Orchestrate supply chain lead time monitor 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-salesforce
              type: call
              call: "salesforce.process-resource"
              with:
                data: "{{get-servicenow.result}}"
            - name: create-slack
              type: call
              call: "slack.create-resource"
              with:
                channel: "{{notification_channel}}"
                text: "Supply Chain Lead Time Monitor Pipeline step 3 complete."

  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://amd.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: salesforce
      baseUri: "https://amd.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: salesforce-op
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: slack-op
              method: POST

When a supplier risk score changes in SAP Ariba, evaluates the impact on open purchase orders in SAP S/4HANA, logs a ServiceNow incident, and alerts the supply chain team on Microsoft Teams.

naftiko: "0.5"
info:
  label: "Supply Chain Risk Alert Pipeline"
  description: "When a supplier risk score changes in SAP Ariba, evaluates the impact on open purchase orders in SAP S/4HANA, logs a ServiceNow incident, and alerts the supply chain team on Microsoft Teams."
  tags:
    - supply-chain
    - risk-management
    - sap-ariba
    - sap-s4hana
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: supply-risk
      port: 8080
      tools:
        - name: assess-supplier-risk
          description: "Evaluate a supplier risk event from SAP Ariba, check affected POs, create an incident, and notify the supply chain team."
          inputParameters:
            - name: supplier_id
              in: body
              type: string
              description: "SAP Ariba supplier identifier."
            - name: risk_score
              in: body
              type: number
              description: "New risk score from Ariba risk assessment."
          steps:
            - name: get-supplier
              type: call
              call: "ariba.get-supplier-profile"
              with:
                supplier_id: "{{supplier_id}}"
            - name: get-open-pos
              type: call
              call: "sap.list-purchase-orders"
              with:
                supplier: "{{supplier_id}}"
                status: "open"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Supplier risk alert: {{get-supplier.supplier_name}} score {{risk_score}}"
                category: "supply_chain_risk"
                urgency: "high"
                description: "Supplier {{get-supplier.supplier_name}} risk score changed to {{risk_score}}. Affected open POs: {{get-open-pos.count}}."
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "supply-chain-alerts"
                text: "Supplier {{get-supplier.supplier_name}} risk score: {{risk_score}}. {{get-open-pos.count}} open POs affected. Incident: {{create-incident.number}}."
  consumes:
    - type: http
      namespace: ariba
      baseUri: "https://openapi.ariba.com/api/supplier-management/v1"
      authentication:
        type: bearer
        token: "$secrets.ariba_token"
      resources:
        - name: suppliers
          path: "/suppliers/{{supplier_id}}"
          inputParameters:
            - name: supplier_id
              in: path
          operations:
            - name: get-supplier-profile
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://amd-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: purchase-orders
          path: "/A_PurchaseOrder"
          operations:
            - name: list-purchase-orders
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://amd.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Triggers a Terraform Cloud run to provision or update EDA compute infrastructure, waits for plan approval, and notifies the infra team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Terraform Infrastructure Provisioner"
  description: "Triggers a Terraform Cloud run to provision or update EDA compute infrastructure, waits for plan approval, and notifies the infra team via Microsoft Teams."
  tags:
    - infrastructure
    - iac
    - terraform
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: infra-provisioning
      port: 8080
      tools:
        - name: provision-eda-infra
          description: "Trigger a Terraform Cloud workspace run for EDA infrastructure and notify the team."
          inputParameters:
            - name: workspace_id
              in: body
              type: string
              description: "Terraform Cloud workspace ID."
            - name: message
              in: body
              type: string
              description: "Run message describing the change."
          steps:
            - name: create-run
              type: call
              call: "terraform.create-run"
              with:
                workspace_id: "{{workspace_id}}"
                message: "{{message}}"
            - name: notify-infra
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "infra-ops"
                text: "Terraform run {{create-run.run_id}} created for workspace {{workspace_id}}: {{message}}. Awaiting plan approval."
  consumes:
    - type: http
      namespace: terraform
      baseUri: "https://app.terraform.io/api/v2"
      authentication:
        type: bearer
        token: "$secrets.terraform_token"
      resources:
        - name: runs
          path: "/runs"
          operations:
            - name: create-run
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Monitors 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://amd.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-workday
              type: call
              call: "workday.get-resource"
              with:
                resource_id: "{{resource_id}}"
            - name: process-servicenow
              type: call
              call: "servicenow.process-resource"
              with:
                data: "{{get-workday.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: workday
      baseUri: "https://wd5-impl-services1.workday.com/ccx/api/v1/amd"
      authentication:
        type: bearer
        token: "$secrets.workday_token" 
      resources:
        - name: resources
          path: "/resources/{{resource_id}}"
          operations:
            - name: workday-op
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://amd.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

Rotates an EDA tool service account credential stored in HashiCorp Vault and updates the corresponding Kubernetes secret.

naftiko: "0.5"
info:
  label: "Vault Secret Rotation for EDA Credentials"
  description: "Rotates an EDA tool service account credential stored in HashiCorp Vault and updates the corresponding Kubernetes secret."
  tags:
    - security
    - secrets-management
    - hashicorp-vault
    - kubernetes
capability:
  exposes:
    - type: mcp
      namespace: secret-rotation
      port: 8080
      tools:
        - name: rotate-eda-credential
          description: "Rotate an EDA service account credential in Vault and sync to Kubernetes."
          inputParameters:
            - name: secret_path
              in: body
              type: string
              description: "Vault secret path."
            - name: k8s_namespace
              in: body
              type: string
              description: "Kubernetes namespace for the secret."
            - name: k8s_secret_name
              in: body
              type: string
              description: "Kubernetes secret name to update."
          steps:
            - name: rotate-secret
              type: call
              call: "vault.rotate-credentials"
              with:
                path: "{{secret_path}}"
            - name: update-k8s-secret
              type: call
              call: "kubernetes.patch-secret"
              with:
                namespace: "{{k8s_namespace}}"
                secret_name: "{{k8s_secret_name}}"
                data:
                  password: "{{rotate-secret.new_password}}"
  consumes:
    - type: http
      namespace: vault
      baseUri: "https://vault.amd.com/v1"
      authentication:
        type: bearer
        token: "$secrets.vault_token"
      resources:
        - name: secrets
          path: "/{{path}}"
          inputParameters:
            - name: path
              in: path
          operations:
            - name: rotate-credentials
              method: POST
    - type: http
      namespace: kubernetes
      baseUri: "https://k8s-api.amd.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.k8s_token"
      resources:
        - name: secrets
          path: "/namespaces/{{namespace}}/secrets/{{secret_name}}"
          inputParameters:
            - name: namespace
              in: path
            - name: secret_name
              in: path
          operations:
            - name: patch-secret
              method: PATCH

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

Provisions a new VMware vSphere virtual machine for an EDA workstation, configures GPU passthrough, and registers it in ServiceNow CMDB.

naftiko: "0.5"
info:
  label: "VMware vSphere EDA VM Provisioner"
  description: "Provisions a new VMware vSphere virtual machine for an EDA workstation, configures GPU passthrough, and registers it in ServiceNow CMDB."
  tags:
    - infrastructure
    - eda
    - vmware
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: eda-vms
      port: 8080
      tools:
        - name: provision-eda-vm
          description: "Provision a VMware vSphere VM with GPU passthrough for EDA workloads and register in CMDB."
          inputParameters:
            - name: vm_name
              in: body
              type: string
              description: "Name for the new VM."
            - name: template
              in: body
              type: string
              description: "VM template name."
            - name: gpu_count
              in: body
              type: integer
              description: "Number of GPUs to assign."
            - name: owner_email
              in: body
              type: string
              description: "Email of the VM owner."
          steps:
            - name: create-vm
              type: call
              call: "vsphere.clone-vm"
              with:
                template: "{{template}}"
                name: "{{vm_name}}"
                gpu_passthrough: "{{gpu_count}}"
                folder: "EDA-Workstations"
            - name: register-cmdb
              type: call
              call: "servicenow.create-ci"
              with:
                name: "{{vm_name}}"
                sys_class_name: "cmdb_ci_vmware_instance"
                assigned_to: "{{owner_email}}"
                ip_address: "{{create-vm.ip_address}}"
  consumes:
    - type: http
      namespace: vsphere
      baseUri: "https://vcenter.amd.com/api/vcenter"
      authentication:
        type: bearer
        token: "$secrets.vsphere_token"
      resources:
        - name: vms
          path: "/vm"
          operations:
            - name: clone-vm
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://amd.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: cmdb
          path: "/table/cmdb_ci_vmware_instance"
          operations:
            - name: create-ci
              method: POST

Retrieves wafer lot tracking information from SAP S/4HANA manufacturing execution and returns lot status, current fab step, and estimated completion.

naftiko: "0.5"
info:
  label: "Wafer Lot Status Lookup"
  description: "Retrieves wafer lot tracking information from SAP S/4HANA manufacturing execution and returns lot status, current fab step, and estimated completion."
  tags:
    - manufacturing
    - wafer-tracking
    - sap
    - sap-s4hana
capability:
  exposes:
    - type: mcp
      namespace: fab-tracking
      port: 8080
      tools:
        - name: get-wafer-lot
          description: "Look up a wafer lot by lot ID in SAP manufacturing execution. Returns current fab step, status, and ETA."
          inputParameters:
            - name: lot_id
              in: body
              type: string
              description: "The wafer lot identifier."
          call: "sap.get-production-order"
          with:
            lot_id: "{{lot_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.d.OrderStatus"
            - name: current_step
              type: string
              mapping: "$.d.CurrentOperation"
            - name: eta
              type: string
              mapping: "$.d.PlannedEndDate"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://amd-s4.sap.com/sap/opu/odata/sap/PP_MFG_ORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      inputParameters:
        - name: Accept
          in: header
          value: "application/json"
        - name: sap-client
          in: header
          value: "200"
      resources:
        - name: production-orders
          path: "/A_ProductionOrder('{{lot_id}}')"
          inputParameters:
            - name: lot_id
              in: path
          operations:
            - name: get-production-order
              method: GET

Retrieves headcount data for an engineering organization from Workday, then queries open job requisitions in Workday Recruiting, and posts a summary to Microsoft Teams for workforce planning.

naftiko: "0.5"
info:
  label: "Workday Headcount and Hiring Pipeline"
  description: "Retrieves headcount data for an engineering organization from Workday, then queries open job requisitions in Workday Recruiting, and posts a summary to Microsoft Teams for workforce planning."
  tags:
    - hr
    - workforce-planning
    - workday
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-analytics
      port: 8080
      tools:
        - name: get-org-workforce-summary
          description: "Retrieve headcount and open requisition metrics for an engineering org and notify the team."
          inputParameters:
            - name: org_id
              in: body
              type: string
              description: "Workday supervisory organization ID."
          steps:
            - name: get-headcount
              type: call
              call: "workday.get-org-headcount"
              with:
                org_id: "{{org_id}}"
            - name: get-open-reqs
              type: call
              call: "workday.get-open-requisitions"
              with:
                org_id: "{{org_id}}"
            - name: post-summary
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "engineering-workforce"
                text: "Org {{org_id}} workforce: {{get-headcount.total_workers}} headcount, {{get-open-reqs.count}} open reqs, attrition {{get-headcount.attrition_rate}}%."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/amd"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: org-headcount
          path: "/organizations/{{org_id}}/headcount"
          inputParameters:
            - name: org_id
              in: path
          operations:
            - name: get-org-headcount
              method: GET
        - name: requisitions
          path: "/organizations/{{org_id}}/requisitions"
          inputParameters:
            - name: org_id
              in: path
          operations:
            - name: get-open-requisitions
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{channel_id}}/channels/general/messages"
          inputParameters:
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Creates a Zendesk support ticket for a technology partner issue, tagging it with partner tier and product family for SLA routing.

naftiko: "0.5"
info:
  label: "Zendesk Partner Support Ticket Creator"
  description: "Creates a Zendesk support ticket for a technology partner issue, tagging it with partner tier and product family for SLA routing."
  tags:
    - partner-ecosystem
    - support
    - zendesk
capability:
  exposes:
    - type: mcp
      namespace: partner-support
      port: 8080
      tools:
        - name: create-partner-ticket
          description: "Create a Zendesk ticket for a technology partner support request."
          inputParameters:
            - name: partner_name
              in: body
              type: string
              description: "Partner company name."
            - name: subject
              in: body
              type: string
              description: "Ticket subject."
            - name: description
              in: body
              type: string
              description: "Issue description."
            - name: partner_tier
              in: body
              type: string
              description: "Partner tier (platinum, gold, silver)."
            - name: product_family
              in: body
              type: string
              description: "AMD product family affected."
          call: "zendesk.create-ticket"
          with:
            subject: "{{subject}}"
            description: "{{description}}"
            requester_name: "{{partner_name}}"
            tags: "partner,{{partner_tier}},{{product_family}}"
            priority: "high"
  consumes:
    - type: http
      namespace: zendesk
      baseUri: "https://amd.zendesk.com/api/v2"
      authentication:
        type: basic
        username: "$secrets.zendesk_user"
        password: "$secrets.zendesk_token"
      resources:
        - name: tickets
          path: "/tickets"
          operations:
            - name: create-ticket
              method: POST

Creates a Zoom meeting for a chip design review, invites attendees from Workday org data, and creates a linked Jira ticket to track action items.

naftiko: "0.5"
info:
  label: "Zoom Design Review Meeting Scheduler"
  description: "Creates a Zoom meeting for a chip design review, invites attendees from Workday org data, and creates a linked Jira ticket to track action items."
  tags:
    - collaboration
    - design-review
    - zoom
    - workday
    - jira
capability:
  exposes:
    - type: mcp
      namespace: design-reviews
      port: 8080
      tools:
        - name: schedule-design-review
          description: "Schedule a Zoom design review meeting, pulling attendees from Workday and creating a Jira tracking ticket."
          inputParameters:
            - name: topic
              in: body
              type: string
              description: "Meeting topic / design block under review."
            - name: org_id
              in: body
              type: string
              description: "Workday org ID for the review team."
            - name: scheduled_time
              in: body
              type: string
              description: "Meeting start time in ISO 8601."
            - name: duration_minutes
              in: body
              type: integer
              description: "Meeting duration in minutes."
          steps:
            - name: get-team
              type: call
              call: "workday.get-org-members"
              with:
                org_id: "{{org_id}}"
            - name: create-meeting
              type: call
              call: "zoom.create-meeting"
              with:
                topic: "Design Review: {{topic}}"
                start_time: "{{scheduled_time}}"
                duration: "{{duration_minutes}}"
                invitees: "{{get-team.members}}"
            - name: create-tracker
              type: call
              call: "jira.create-issue"
              with:
                project: "DREV"
                issuetype: "Task"
                summary: "Action items: {{topic}} design review"
                description: "Zoom link: {{create-meeting.join_url}}. Attendees: {{get-team.count}} team members."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/amd"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: org-members
          path: "/organizations/{{org_id}}/members"
          inputParameters:
            - name: org_id
              in: path
          operations:
            - name: get-org-members
              method: GET
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_token"
      resources:
        - name: meetings
          path: "/users/me/meetings"
          operations:
            - name: create-meeting
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://amd.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