CircleK Capabilities

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

Sort
Expand

Pulls Adobe Analytics reports for Circle K store digital performance across web, mobile app, and loyalty program channels.

naftiko: "0.5"
info:
  label: "Adobe Analytics Store Digital Performance"
  description: "Pulls Adobe Analytics reports for Circle K store digital performance across web, mobile app, and loyalty program channels."
  tags:
    - analytics
    - adobe-analytics
    - digital-marketing
    - store-performance
capability:
  exposes:
    - type: mcp
      namespace: digital-analytics
      port: 8080
      tools:
        - name: get-store-digital-metrics
          description: "Retrieve Adobe Analytics digital performance report for Circle K stores."
          inputParameters:
            - name: report_suite_id
              in: body
              type: string
              description: "The Adobe Analytics report suite ID."
            - name: date_range
              in: body
              type: string
              description: "The date range for the report."
          call: "adobe-analytics.get-report"
          with:
            rsid: "{{report_suite_id}}"
            dimension: "variables/evar5"
            globalFilters: "[{type:'dateRange',dateRange:'{{date_range}}'}]"
  consumes:
    - type: http
      namespace: adobe-analytics
      baseUri: "https://analytics.adobe.io/api"
      authentication:
        type: bearer
        token: "$secrets.adobe_analytics_token"
      resources:
        - name: reports
          path: "/{{rsid}}/reports"
          inputParameters:
            - name: rsid
              in: path
          operations:
            - name: get-report
              method: POST

Retrieves ADP payroll processing status for Circle K store employees.

naftiko: "0.5"
info:
  label: "ADP Payroll Status Check"
  description: "Retrieves ADP payroll processing status for Circle K store employees."
  tags:
    - payroll
    - adp
    - hr
    - finance
capability:
  exposes:
    - type: mcp
      namespace: payroll-mgmt
      port: 8080
      tools:
        - name: get-payroll-status
          description: "Retrieve ADP payroll processing status."
          inputParameters:
            - name: pay_period_id
              in: body
              type: string
              description: "The ADP pay period ID."
          call: "adp.get-payroll"
          with:
            pay_period_id: "{{pay_period_id}}"
  consumes:
    - type: http
      namespace: adp
      baseUri: "https://api.adp.com/payroll/v1"
      authentication:
        type: bearer
        token: "$secrets.adp_token"
      resources:
        - name: payrolls
          path: "/pay-periods/{{pay_period_id}}"
          inputParameters:
            - name: pay_period_id
              in: path
          operations:
            - name: get-payroll
              method: GET

Retrieves market analysis workflow results from Alteryx for Circle K site selection and competitive intelligence, returning demographic and traffic data.

naftiko: "0.5"
info:
  label: "Alteryx Market Analysis Workflow"
  description: "Retrieves market analysis workflow results from Alteryx for Circle K site selection and competitive intelligence, returning demographic and traffic data."
  tags:
    - analytics
    - alteryx
    - market-analysis
    - site-selection
capability:
  exposes:
    - type: mcp
      namespace: market-analysis
      port: 8080
      tools:
        - name: get-market-analysis
          description: "Retrieve market analysis workflow results from Alteryx."
          inputParameters:
            - name: workflow_id
              in: body
              type: string
              description: "The Alteryx workflow ID."
          call: "alteryx.get-workflow-results"
          with:
            workflow_id: "{{workflow_id}}"
  consumes:
    - type: http
      namespace: alteryx
      baseUri: "https://circlek-alteryx.alteryx.com/api/v3"
      authentication:
        type: bearer
        token: "$secrets.alteryx_token"
      resources:
        - name: workflows
          path: "/workflows/{{workflow_id}}/results"
          inputParameters:
            - name: workflow_id
              in: path
          operations:
            - name: get-workflow-results
              method: GET

Lists files in Circle K's Amazon S3 data lake for data engineering pipelines.

naftiko: "0.5"
info:
  label: "Amazon S3 Data Lake File Listing"
  description: "Lists files in Circle K's Amazon S3 data lake for data engineering pipelines."
  tags:
    - data-lake
    - amazon-s3
    - data-engineering
    - storage
capability:
  exposes:
    - type: mcp
      namespace: data-lake
      port: 8080
      tools:
        - name: list-data-lake-files
          description: "List files in an S3 data lake prefix."
          inputParameters:
            - name: bucket
              in: body
              type: string
              description: "The S3 bucket name."
            - name: prefix
              in: body
              type: string
              description: "The S3 key prefix."
          call: "s3.list-objects"
          with:
            Bucket: "{{bucket}}"
            Prefix: "{{prefix}}"
  consumes:
    - type: http
      namespace: s3
      baseUri: "https://s3.us-east-1.amazonaws.com"
      authentication:
        type: aws-sigv4
        access_key: "$secrets.aws_access_key"
        secret_key: "$secrets.aws_secret_key"
      resources:
        - name: objects
          path: "/{{Bucket}}"
          inputParameters:
            - name: Bucket
              in: path
            - name: Prefix
              in: query
          operations:
            - name: list-objects
              method: GET

Monitors API integration health by checking MuleSoft gateway metrics, correlating with Dynatrace traces, and creating incidents in ServiceNow when thresholds are breached.

naftiko: "0.5"
info:
  label: "API Integration Health Monitoring Pipeline"
  description: "Monitors API integration health by checking MuleSoft gateway metrics, correlating with Dynatrace traces, and creating incidents in ServiceNow when thresholds are breached."
  tags:
    - integration
    - mulesoft
    - dynatrace
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: api-health
      port: 8080
      tools:
        - name: monitor-api-health
          description: "Monitor API integration health across gateway and APM systems."
          inputParameters:
            - name: api_name
              in: body
              type: string
              description: "The API name to monitor."
          steps:
            - name: get-gateway-metrics
              type: call
              call: "mulesoft.get-api-analytics"
              with:
                api_name: "{{api_name}}"
            - name: get-traces
              type: call
              call: "dynatrace.get-service-health"
              with:
                service_name: "{{api_name}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "API health degradation: {{api_name}}"
                description: "Error rate: {{get-gateway-metrics.error_rate}}%. Latency: {{get-traces.avg_latency}}ms. Failure rate: {{get-traces.failure_rate}}%."
                category: "integration"
  consumes:
    - type: http
      namespace: mulesoft
      baseUri: "https://anypoint.mulesoft.com/apimanager/api/v1"
      authentication:
        type: bearer
        token: "$secrets.mulesoft_token"
      resources:
        - name: analytics
          path: "/organizations/circlek/environments/production/apis/{{api_name}}/analytics"
          inputParameters:
            - name: api_name
              in: path
          operations:
            - name: get-api-analytics
              method: GET
    - type: http
      namespace: dynatrace
      baseUri: "https://circlek.live.dynatrace.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.dynatrace_token"
      resources:
        - name: services
          path: "/entities"
          inputParameters:
            - name: service_name
              in: query
          operations:
            - name: get-service-health
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://circlek.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

Retrieves AWS Lambda function execution metrics for Circle K serverless microservices, returning invocation counts, error rates, and duration data.

naftiko: "0.5"
info:
  label: "AWS Lambda Microservice Status"
  description: "Retrieves AWS Lambda function execution metrics for Circle K serverless microservices, returning invocation counts, error rates, and duration data."
  tags:
    - cloud
    - aws-lambda
    - serverless
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: lambda-status
      port: 8080
      tools:
        - name: get-lambda-status
          description: "Retrieve AWS Lambda function execution metrics."
          inputParameters:
            - name: function_name
              in: body
              type: string
              description: "The Lambda function name."
          call: "lambda.get-function-metrics"
          with:
            function_name: "{{function_name}}"
  consumes:
    - type: http
      namespace: lambda
      baseUri: "https://lambda.us-east-1.amazonaws.com/2015-03-31"
      authentication:
        type: bearer
        token: "$secrets.aws_lambda_token"
      resources:
        - name: functions
          path: "/functions/{{function_name}}"
          inputParameters:
            - name: function_name
              in: path
          operations:
            - name: get-function-metrics
              method: GET

Retrieves user profile information from Azure Active Directory for Circle K identity management, returning group memberships and access roles.

naftiko: "0.5"
info:
  label: "Azure Active Directory User Lookup"
  description: "Retrieves user profile information from Azure Active Directory for Circle K identity management, returning group memberships and access roles."
  tags:
    - identity
    - azure-active-directory
    - user-management
    - security
capability:
  exposes:
    - type: mcp
      namespace: identity-mgmt
      port: 8080
      tools:
        - name: lookup-ad-user
          description: "Look up a user profile in Azure Active Directory."
          inputParameters:
            - name: user_email
              in: body
              type: string
              description: "The user email address."
          call: "azure-ad.get-user"
          with:
            user_principal: "{{user_email}}"
  consumes:
    - type: http
      namespace: azure-ad
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: users
          path: "/users/{{user_principal}}"
          inputParameters:
            - name: user_principal
              in: path
          operations:
            - name: get-user
              method: GET

Triggers an Azure Data Factory pipeline for Circle K data integration and ETL workflows.

naftiko: "0.5"
info:
  label: "Azure Data Factory ETL Pipeline Trigger"
  description: "Triggers an Azure Data Factory pipeline for Circle K data integration and ETL workflows."
  tags:
    - data-integration
    - azure-data-factory
    - etl
    - data-pipeline
capability:
  exposes:
    - type: mcp
      namespace: data-pipelines
      port: 8080
      tools:
        - name: trigger-adf-pipeline
          description: "Trigger an Azure Data Factory pipeline run."
          inputParameters:
            - name: pipeline_name
              in: body
              type: string
              description: "The ADF pipeline name."
          call: "adf.create-pipeline-run"
          with:
            pipeline_name: "{{pipeline_name}}"
  consumes:
    - type: http
      namespace: adf
      baseUri: "https://management.azure.com/subscriptions/{{sub_id}}/resourceGroups/{{rg}}/providers/Microsoft.DataFactory/factories/circlek-adf"
      authentication:
        type: bearer
        token: "$secrets.azure_token"
      resources:
        - name: pipelines
          path: "/pipelines/{{pipeline_name}}/createRun"
          inputParameters:
            - name: pipeline_name
              in: path
          operations:
            - name: create-pipeline-run
              method: POST

Checks the latest build pipeline status in Azure DevOps for Circle K CI/CD workflows.

naftiko: "0.5"
info:
  label: "Azure DevOps Build Pipeline Status"
  description: "Checks the latest build pipeline status in Azure DevOps for Circle K CI/CD workflows."
  tags:
    - ci-cd
    - azure-devops
    - build-pipelines
capability:
  exposes:
    - type: mcp
      namespace: devops-builds
      port: 8080
      tools:
        - name: get-build-status
          description: "Retrieve the latest build status for an Azure DevOps pipeline."
          inputParameters:
            - name: project
              in: body
              type: string
              description: "The Azure DevOps project name."
            - name: pipeline_id
              in: body
              type: string
              description: "The build pipeline definition ID."
          call: "azuredevops.get-builds"
          with:
            project: "{{project}}"
            definitions: "{{pipeline_id}}"
            top: "1"
  consumes:
    - type: http
      namespace: azuredevops
      baseUri: "https://dev.azure.com/circlek"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azuredevops_pat"
      resources:
        - name: builds
          path: "/{{project}}/_apis/build/builds"
          inputParameters:
            - name: project
              in: path
            - name: definitions
              in: query
            - name: top
              in: query
          operations:
            - name: get-builds
              method: GET

Queries Azure Synapse Analytics for Circle K in-store merchandise sales data, returning category performance, basket size, and conversion metrics.

naftiko: "0.5"
info:
  label: "Azure Synapse Sales Analytics Query"
  description: "Queries Azure Synapse Analytics for Circle K in-store merchandise sales data, returning category performance, basket size, and conversion metrics."
  tags:
    - analytics
    - azure-synapse
    - sales
    - data-warehouse
capability:
  exposes:
    - type: mcp
      namespace: sales-analytics
      port: 8080
      tools:
        - name: query-sales-analytics
          description: "Query Azure Synapse for merchandise sales analytics."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The Circle K store number."
            - name: date_range
              in: body
              type: string
              description: "The date range for analysis."
          call: "synapse.execute-query"
          with:
            query: "SELECT * FROM merchandise_sales WHERE store = '{{store_number}}' AND period = '{{date_range}}'"
  consumes:
    - type: http
      namespace: synapse
      baseUri: "https://circlek-synapse.sql.azuresynapse.net/api/v1"
      authentication:
        type: bearer
        token: "$secrets.azure_synapse_token"
      resources:
        - name: queries
          path: "/execute"
          operations:
            - name: execute-query
              method: POST

Retrieves documents from Box for Circle K corporate document management.

naftiko: "0.5"
info:
  label: "Box Document Retrieval"
  description: "Retrieves documents from Box for Circle K corporate document management."
  tags:
    - document-management
    - box
    - corporate
capability:
  exposes:
    - type: mcp
      namespace: doc-management
      port: 8080
      tools:
        - name: get-document
          description: "Retrieve a Box document by file ID."
          inputParameters:
            - name: file_id
              in: body
              type: string
              description: "The Box file ID."
          call: "box.get-file"
          with:
            file_id: "{{file_id}}"
  consumes:
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files/{{file_id}}"
          inputParameters:
            - name: file_id
              in: path
          operations:
            - name: get-file
              method: GET

Schedules car wash equipment maintenance by monitoring sensor data in Datadog, creating work orders in ServiceNow, and notifying technicians via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Car Wash Maintenance Scheduling Pipeline"
  description: "Schedules car wash equipment maintenance by monitoring sensor data in Datadog, creating work orders in ServiceNow, and notifying technicians via Microsoft Teams."
  tags:
    - maintenance
    - datadog
    - servicenow
    - microsoft-teams
    - car-wash
capability:
  exposes:
    - type: mcp
      namespace: carwash-maintenance
      port: 8080
      tools:
        - name: schedule-carwash-maintenance
          description: "Schedule car wash equipment maintenance based on sensor data."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The Circle K store number."
            - name: equipment_id
              in: body
              type: string
              description: "The car wash equipment identifier."
          steps:
            - name: check-sensor-data
              type: call
              call: "datadog.query-metrics"
              with:
                query: "avg:circlek.carwash.{{equipment_id}}.cycles{store:{{store_number}}}"
            - name: create-work-order
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Car wash PM: {{equipment_id}} at store {{store_number}}"
                assignment_group: "carwash_maintenance"
                description: "Total cycles: {{check-sensor-data.total_cycles}}. Last service: {{check-sensor-data.last_service}}."
            - name: notify-technician
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "facilities"
                channel_id: "car_wash"
                text: "Car wash maintenance scheduled at store {{store_number}} ({{equipment_id}}). Work order: {{create-work-order.number}}. Cycles since service: {{check-sensor-data.total_cycles}}."
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: api-key
        key: "$secrets.datadog_api_key"
      resources:
        - name: metrics
          path: "/query"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: query-metrics
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://circlek.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/sc_task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Retrieves Cisco network device inventory for Circle K store and corporate locations.

naftiko: "0.5"
info:
  label: "Cisco Network Device Inventory"
  description: "Retrieves Cisco network device inventory for Circle K store and corporate locations."
  tags:
    - networking
    - cisco
    - infrastructure
    - inventory
capability:
  exposes:
    - type: mcp
      namespace: network-inventory
      port: 8080
      tools:
        - name: get-network-devices
          description: "Retrieve Cisco network device inventory."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "The site identifier."
          call: "cisco.get-devices"
          with:
            site_id: "{{site_id}}"
  consumes:
    - type: http
      namespace: cisco
      baseUri: "https://circlek-dnac.cisco.com/dna/intent/api/v1"
      authentication:
        type: bearer
        token: "$secrets.cisco_token"
      resources:
        - name: devices
          path: "/network-device"
          inputParameters:
            - name: site_id
              in: query
          operations:
            - name: get-devices
              method: GET

Retrieves Cloudflare CDN analytics for Circle K's digital properties.

naftiko: "0.5"
info:
  label: "Cloudflare CDN Performance Check"
  description: "Retrieves Cloudflare CDN analytics for Circle K's digital properties."
  tags:
    - infrastructure
    - cloudflare
    - cdn
    - performance
capability:
  exposes:
    - type: mcp
      namespace: cdn-analytics
      port: 8080
      tools:
        - name: get-cdn-analytics
          description: "Retrieve Cloudflare CDN analytics for a zone."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "The Cloudflare zone ID."
          call: "cloudflare.get-zone-analytics"
          with:
            zone_id: "{{zone_id}}"
  consumes:
    - type: http
      namespace: cloudflare
      baseUri: "https://api.cloudflare.com/client/v4"
      authentication:
        type: bearer
        token: "$secrets.cloudflare_token"
      resources:
        - name: analytics
          path: "/zones/{{zone_id}}/analytics/dashboard"
          inputParameters:
            - name: zone_id
              in: path
          operations:
            - name: get-zone-analytics
              method: GET

Monitors competitor fuel prices by scraping market data into Snowflake, analyzing margins in Databricks, and alerting pricing managers via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Competitive Fuel Price Monitoring Pipeline"
  description: "Monitors competitor fuel prices by scraping market data into Snowflake, analyzing margins in Databricks, and alerting pricing managers via Microsoft Teams."
  tags:
    - fuel-pricing
    - snowflake
    - databricks
    - microsoft-teams
    - competitive-intelligence
capability:
  exposes:
    - type: mcp
      namespace: competitive-pricing
      port: 8080
      tools:
        - name: monitor-competitor-prices
          description: "Monitor competitor fuel prices and analyze margin opportunities."
          inputParameters:
            - name: market_id
              in: body
              type: string
              description: "The geographic market ID."
            - name: fuel_grade
              in: body
              type: string
              description: "The fuel grade."
          steps:
            - name: get-competitor-prices
              type: call
              call: "snowflake.execute-statement"
              with:
                statement: "SELECT competitor, price, timestamp FROM competitor_fuel_prices WHERE market = '{{market_id}}' AND grade = '{{fuel_grade}}' AND timestamp > DATEADD(hour, -4, CURRENT_TIMESTAMP())"
            - name: analyze-margins
              type: call
              call: "databricks.invoke-endpoint"
              with:
                endpoint: "margin_analyzer"
                inputs: "{market: '{{market_id}}', grade: '{{fuel_grade}}', avg_competitor: {{get-competitor-prices.avg_price}}}"
            - name: alert-pricing
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "fuel_operations"
                channel_id: "competitive_pricing"
                text: "Market {{market_id}} ({{fuel_grade}}): Avg competitor ${{get-competitor-prices.avg_price}}. Our price: ${{analyze-margins.current_price}}. Margin opportunity: {{analyze-margins.opportunity_cpg}}cpg."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://circlek.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: databricks
      baseUri: "https://circlek.cloud.databricks.com/serving-endpoints"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: endpoints
          path: "/{{endpoint}}/invocations"
          inputParameters:
            - name: endpoint
              in: path
          operations:
            - name: invoke-endpoint
              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/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Searches Circle K's Confluence knowledge base for store operational procedures, compliance checklists, and training materials.

naftiko: "0.5"
info:
  label: "Confluence Operational Procedures Search"
  description: "Searches Circle K's Confluence knowledge base for store operational procedures, compliance checklists, and training materials."
  tags:
    - knowledge-management
    - confluence
    - operations
    - training
capability:
  exposes:
    - type: mcp
      namespace: knowledge-base
      port: 8080
      tools:
        - name: search-procedures
          description: "Search Confluence for operational procedures and training materials."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The search query string."
          call: "confluence.search-content"
          with:
            cql: "type=page AND space IN (STORE_OPS, COMPLIANCE, TRAINING) AND text~'{{query}}'"
            limit: "10"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://circlek.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: search
          path: "/search"
          inputParameters:
            - name: cql
              in: query
            - name: limit
              in: query
          operations:
            - name: search-content
              method: GET

Resolves customer complaints by creating Zendesk tickets, issuing loyalty points via DynamoDB, and sending resolution emails through MailChimp.

naftiko: "0.5"
info:
  label: "Customer Complaint Resolution Pipeline"
  description: "Resolves customer complaints by creating Zendesk tickets, issuing loyalty points via DynamoDB, and sending resolution emails through MailChimp."
  tags:
    - customer-service
    - zendesk
    - dynamodb
    - mailchimp
capability:
  exposes:
    - type: mcp
      namespace: complaint-resolution
      port: 8080
      tools:
        - name: resolve-customer-complaint
          description: "Resolve a customer complaint across support and loyalty systems."
          inputParameters:
            - name: customer_email
              in: body
              type: string
              description: "The customer email."
            - name: complaint_text
              in: body
              type: string
              description: "The complaint description."
          steps:
            - name: create-ticket
              type: call
              call: "zendesk.create-ticket"
              with:
                subject: "Customer complaint: {{customer_email}}"
                description: "{{complaint_text}}"
                priority: "high"
            - name: issue-points
              type: call
              call: "dynamodb.update-item"
              with:
                table_name: "loyalty_members"
                email: "{{customer_email}}"
                points_adjustment: "500"
                reason: "Complaint resolution: {{create-ticket.ticket_id}}"
            - name: send-resolution
              type: call
              call: "mailchimp.send-transactional"
              with:
                template: "complaint_resolved"
                to_email: "{{customer_email}}"
                merge_vars: "ticket_id={{create-ticket.ticket_id}},points=500"
  consumes:
    - type: http
      namespace: zendesk
      baseUri: "https://circlek.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: tickets
          path: "/tickets.json"
          operations:
            - name: create-ticket
              method: POST
    - type: http
      namespace: dynamodb
      baseUri: "https://dynamodb.us-east-1.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_dynamodb_token"
      resources:
        - name: items
          path: "/"
          operations:
            - name: update-item
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://mandrillapp.com/api/1.0"
      authentication:
        type: api-key
        key: "$secrets.mailchimp_api_key"
      resources:
        - name: transactional
          path: "/messages/send-template"
          operations:
            - name: send-transactional
              method: POST

Invokes a Databricks ML model for Circle K store demand forecasting based on location, day, weather, and events data.

naftiko: "0.5"
info:
  label: "Databricks Demand Forecasting Model"
  description: "Invokes a Databricks ML model for Circle K store demand forecasting based on location, day, weather, and events data."
  tags:
    - machine-learning
    - databricks
    - demand-forecasting
    - data-science
capability:
  exposes:
    - type: mcp
      namespace: ml-inference
      port: 8080
      tools:
        - name: run-demand-forecast
          description: "Run a demand forecasting model via Databricks serving endpoint."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The store number."
            - name: forecast_days
              in: body
              type: integer
              description: "Number of days to forecast."
          call: "databricks.invoke-endpoint"
          with:
            endpoint: "demand_forecast"
            inputs: "{store_number: '{{store_number}}', forecast_days: {{forecast_days}}}"
  consumes:
    - type: http
      namespace: databricks
      baseUri: "https://circlek.cloud.databricks.com/serving-endpoints"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: serving-endpoints
          path: "/{{endpoint}}/invocations"
          inputParameters:
            - name: endpoint
              in: path
          operations:
            - name: invoke-endpoint
              method: POST

Queries Datadog for POS system health metrics at Circle K stores, returning uptime, transaction throughput, and error rates.

naftiko: "0.5"
info:
  label: "Datadog POS System Health Monitor"
  description: "Queries Datadog for POS system health metrics at Circle K stores, returning uptime, transaction throughput, and error rates."
  tags:
    - monitoring
    - datadog
    - pos-systems
    - store-operations
capability:
  exposes:
    - type: mcp
      namespace: infra-monitoring
      port: 8080
      tools:
        - name: get-pos-health
          description: "Retrieve Datadog health metrics for a store POS system."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The store number."
          call: "datadog.query-metrics"
          with:
            query: "avg:pos.uptime{store:{{store_number}}}"
            from: "now-1h"
            to: "now"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: apikey
        key: "$secrets.datadog_api_key"
        app_key: "$secrets.datadog_app_key"
      resources:
        - name: metrics
          path: "/query"
          inputParameters:
            - name: query
              in: query
            - name: from
              in: query
            - name: to
              in: query
          operations:
            - name: query-metrics
              method: GET

Deploys digital signage content by pulling promotional assets from Box, configuring display schedules in Azure Data Factory, and confirming deployment via Datadog.

naftiko: "0.5"
info:
  label: "Digital Signage Content Deployment Pipeline"
  description: "Deploys digital signage content by pulling promotional assets from Box, configuring display schedules in Azure Data Factory, and confirming deployment via Datadog."
  tags:
    - marketing
    - box
    - azure-data-factory
    - datadog
    - digital-signage
capability:
  exposes:
    - type: mcp
      namespace: signage-content
      port: 8080
      tools:
        - name: deploy-signage-content
          description: "Deploy digital signage content to Circle K stores."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The promotional campaign ID."
            - name: region
              in: body
              type: string
              description: "The target region."
          steps:
            - name: get-assets
              type: call
              call: "box.get-folder-items"
              with:
                folder_id: "signage_{{campaign_id}}"
            - name: trigger-deployment
              type: call
              call: "adf.trigger-pipeline"
              with:
                pipeline: "signage_deployment"
                parameters: "{campaign: '{{campaign_id}}', region: '{{region}}', assets: {{get-assets.file_count}}}"
            - name: verify-deployment
              type: call
              call: "datadog.query-metrics"
              with:
                query: "sum:circlek.signage.deployment.success{region:{{region}},campaign:{{campaign_id}}}"
  consumes:
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: folders
          path: "/folders/{{folder_id}}/items"
          inputParameters:
            - name: folder_id
              in: path
          operations:
            - name: get-folder-items
              method: GET
    - type: http
      namespace: adf
      baseUri: "https://management.azure.com/subscriptions/circlek-sub/resourceGroups/data-rg/providers/Microsoft.DataFactory/factories/circlek-adf"
      authentication:
        type: bearer
        token: "$secrets.azure_token"
      resources:
        - name: pipelines
          path: "/pipelines/{{pipeline}}/createRun"
          inputParameters:
            - name: pipeline
              in: path
          operations:
            - name: trigger-pipeline
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: api-key
        key: "$secrets.datadog_api_key"
      resources:
        - name: metrics
          path: "/query"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: query-metrics
              method: GET

Retrieves loyalty program member details from DynamoDB for Circle K Inner Circle rewards, returning points balance, tier status, and transaction history.

naftiko: "0.5"
info:
  label: "DynamoDB Loyalty Member Lookup"
  description: "Retrieves loyalty program member details from DynamoDB for Circle K Inner Circle rewards, returning points balance, tier status, and transaction history."
  tags:
    - loyalty
    - dynamodb
    - customer-experience
    - rewards
capability:
  exposes:
    - type: mcp
      namespace: loyalty-members
      port: 8080
      tools:
        - name: lookup-loyalty-member
          description: "Look up a loyalty member in DynamoDB."
          inputParameters:
            - name: member_id
              in: body
              type: string
              description: "The loyalty member ID."
          call: "dynamodb.get-item"
          with:
            table_name: "loyalty_members"
            key: "{{member_id}}"
  consumes:
    - type: http
      namespace: dynamodb
      baseUri: "https://dynamodb.us-east-1.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_dynamodb_token"
      resources:
        - name: items
          path: "/"
          operations:
            - name: get-item
              method: POST

Queries Dynatrace for Circle K mobile app and web platform performance metrics including response times and error rates.

naftiko: "0.5"
info:
  label: "Dynatrace Digital Platform Monitor"
  description: "Queries Dynatrace for Circle K mobile app and web platform performance metrics including response times and error rates."
  tags:
    - monitoring
    - dynatrace
    - application-performance
    - digital-platform
capability:
  exposes:
    - type: mcp
      namespace: apm-monitoring
      port: 8080
      tools:
        - name: get-platform-performance
          description: "Retrieve Dynatrace performance metrics for Circle K digital platforms."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The Dynatrace entity ID."
          call: "dynatrace.get-metrics"
          with:
            entityId: "{{entity_id}}"
            metricSelector: "builtin:service.response.time,builtin:service.errors.total.rate"
  consumes:
    - type: http
      namespace: dynatrace
      baseUri: "https://circlek.live.dynatrace.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.dynatrace_token"
      resources:
        - name: metrics
          path: "/metrics/query"
          inputParameters:
            - name: metricSelector
              in: query
            - name: entityId
              in: query
          operations:
            - name: get-metrics
              method: GET

Facilitates employee performance reviews by pulling metrics from Workday, checking training completion in Pluralsight, and generating review documents in Google Sheets.

naftiko: "0.5"
info:
  label: "Employee Performance Review Pipeline"
  description: "Facilitates employee performance reviews by pulling metrics from Workday, checking training completion in Pluralsight, and generating review documents in Google Sheets."
  tags:
    - hr
    - workday
    - pluralsight
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: performance-reviews
      port: 8080
      tools:
        - name: prepare-performance-review
          description: "Prepare an employee performance review from multiple data sources."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The employee ID."
            - name: review_period
              in: body
              type: string
              description: "The review period."
          steps:
            - name: get-performance
              type: call
              call: "workday.get-performance-data"
              with:
                employee_id: "{{employee_id}}"
                period: "{{review_period}}"
            - name: get-training
              type: call
              call: "pluralsight.get-user-progress"
              with:
                user_id: "{{employee_id}}"
            - name: create-review
              type: call
              call: "google-sheets.create-spreadsheet"
              with:
                title: "Review: {{get-performance.name}} - {{review_period}}"
                data: "Rating: {{get-performance.rating}}. Goals: {{get-performance.goals_met}}/{{get-performance.goals_total}}. Training: {{get-training.completed_hours}} hours."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://circlek.workday.com/api/performance/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: performance
          path: "/reviews"
          inputParameters:
            - name: employee_id
              in: query
            - name: period
              in: query
          operations:
            - name: get-performance-data
              method: GET
    - type: http
      namespace: pluralsight
      baseUri: "https://api.pluralsight.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.pluralsight_token"
      resources:
        - name: progress
          path: "/users/{{user_id}}/progress"
          inputParameters:
            - name: user_id
              in: path
          operations:
            - name: get-user-progress
              method: GET
    - type: http
      namespace: google-sheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: spreadsheets
          path: "/spreadsheets"
          operations:
            - name: create-spreadsheet
              method: POST

Generates environmental compliance reports by pulling emissions data from Snowflake, validating against regulatory standards in ServiceNow, and filing in Box.

naftiko: "0.5"
info:
  label: "Environmental Compliance Reporting Pipeline"
  description: "Generates environmental compliance reports by pulling emissions data from Snowflake, validating against regulatory standards in ServiceNow, and filing in Box."
  tags:
    - compliance
    - snowflake
    - servicenow
    - box
    - environmental
capability:
  exposes:
    - type: mcp
      namespace: environmental-compliance
      port: 8080
      tools:
        - name: generate-environmental-report
          description: "Generate an environmental compliance report for a region."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "The operational region."
            - name: reporting_year
              in: body
              type: string
              description: "The reporting year."
          steps:
            - name: get-emissions-data
              type: call
              call: "snowflake.execute-statement"
              with:
                statement: "SELECT * FROM emissions_tracking WHERE region = '{{region}}' AND year = '{{reporting_year}}'"
            - name: validate-compliance
              type: call
              call: "servicenow.check-environmental-standards"
              with:
                region: "{{region}}"
                year: "{{reporting_year}}"
            - name: file-report
              type: call
              call: "box.upload-file"
              with:
                folder_id: "environmental_reports"
                filename: "env_compliance_{{region}}_{{reporting_year}}.pdf"
                content: "Total emissions: {{get-emissions-data.total_co2}}t CO2. Compliance: {{validate-compliance.status}}. Score: {{validate-compliance.score}}%."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://circlek.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: servicenow
      baseUri: "https://circlek.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: standards
          path: "/table/environmental_standard"
          operations:
            - name: check-environmental-standards
              method: POST
    - type: http
      namespace: box
      baseUri: "https://upload.box.com/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files/content"
          operations:
            - name: upload-file
              method: POST

Monitors EV charging station health by pulling telemetry from Datadog, checking utilization in Snowflake, and creating maintenance tickets in ServiceNow.

naftiko: "0.5"
info:
  label: "EV Charging Station Monitoring Pipeline"
  description: "Monitors EV charging station health by pulling telemetry from Datadog, checking utilization in Snowflake, and creating maintenance tickets in ServiceNow."
  tags:
    - ev-charging
    - datadog
    - snowflake
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: ev-charging
      port: 8080
      tools:
        - name: monitor-ev-charging
          description: "Monitor EV charging station health and utilization."
          inputParameters:
            - name: station_id
              in: body
              type: string
              description: "The EV charging station ID."
            - name: store_number
              in: body
              type: string
              description: "The Circle K store number."
          steps:
            - name: get-telemetry
              type: call
              call: "datadog.query-metrics"
              with:
                query: "avg:circlek.ev.{{station_id}}.status{store:{{store_number}}}"
            - name: get-utilization
              type: call
              call: "snowflake.execute-statement"
              with:
                statement: "SELECT sessions_today, avg_duration_min, revenue FROM ev_charging_stats WHERE station = '{{station_id}}'"
            - name: create-maintenance
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "EV station maintenance: {{station_id}} at store {{store_number}}"
                description: "Status: {{get-telemetry.status}}. Sessions today: {{get-utilization.sessions_today}}. Avg duration: {{get-utilization.avg_duration_min}} min."
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: api-key
        key: "$secrets.datadog_api_key"
      resources:
        - name: metrics
          path: "/query"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: query-metrics
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://circlek.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: servicenow
      baseUri: "https://circlek.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/sc_task"
          operations:
            - name: create-task
              method: POST

Retrieves Facebook ad campaign performance metrics for Circle K local store marketing.

naftiko: "0.5"
info:
  label: "Facebook Ad Campaign Status"
  description: "Retrieves Facebook ad campaign performance metrics for Circle K local store marketing."
  tags:
    - advertising
    - facebook
    - marketing
    - social-media
capability:
  exposes:
    - type: mcp
      namespace: ad-management
      port: 8080
      tools:
        - name: get-campaign-metrics
          description: "Retrieve Facebook ad campaign performance."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The Facebook campaign ID."
            - name: date_preset
              in: body
              type: string
              description: "Date preset (today, yesterday, last_7_days)."
          call: "facebook.get-campaign-insights"
          with:
            campaign_id: "{{campaign_id}}"
            date_preset: "{{date_preset}}"
  consumes:
    - type: http
      namespace: facebook
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.facebook_ads_token"
      resources:
        - name: campaign-insights
          path: "/{{campaign_id}}/insights"
          inputParameters:
            - name: campaign_id
              in: path
            - name: date_preset
              in: query
          operations:
            - name: get-campaign-insights
              method: GET

Retrieves store layout design files from Figma for Circle K renovation and merchandising planning, returning design components and version history.

naftiko: "0.5"
info:
  label: "Figma Store Layout Design Retrieval"
  description: "Retrieves store layout design files from Figma for Circle K renovation and merchandising planning, returning design components and version history."
  tags:
    - design
    - figma
    - store-layout
    - merchandising
capability:
  exposes:
    - type: mcp
      namespace: store-design
      port: 8080
      tools:
        - name: get-store-layout
          description: "Retrieve a store layout design from Figma."
          inputParameters:
            - name: file_key
              in: body
              type: string
              description: "The Figma file key."
          call: "figma.get-file"
          with:
            file_key: "{{file_key}}"
  consumes:
    - type: http
      namespace: figma
      baseUri: "https://api.figma.com/v1"
      authentication:
        type: bearer
        token: "$secrets.figma_token"
      resources:
        - name: files
          path: "/files/{{file_key}}"
          inputParameters:
            - name: file_key
              in: path
          operations:
            - name: get-file
              method: GET

Manages fleet vehicle maintenance by tracking mileage in SAP, scheduling service in ServiceNow, and notifying fleet managers via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Fleet Vehicle Maintenance Pipeline"
  description: "Manages fleet vehicle maintenance by tracking mileage in SAP, scheduling service in ServiceNow, and notifying fleet managers via Microsoft Teams."
  tags:
    - fleet-management
    - sap
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: fleet-maintenance
      port: 8080
      tools:
        - name: schedule-fleet-maintenance
          description: "Schedule fleet vehicle maintenance based on mileage tracking."
          inputParameters:
            - name: vehicle_id
              in: body
              type: string
              description: "The fleet vehicle identifier."
          steps:
            - name: get-vehicle-data
              type: call
              call: "sap.get-fleet-vehicle"
              with:
                vehicle_id: "{{vehicle_id}}"
            - name: create-service-order
              type: call
              call: "servicenow.create-task"
              with:
                short_description: "Fleet PM: Vehicle {{vehicle_id}}"
                assignment_group: "fleet_maintenance"
                description: "Mileage: {{get-vehicle-data.current_mileage}}. Last service: {{get-vehicle-data.last_service_date}}. Next due: {{get-vehicle-data.next_service_mileage}}."
            - name: notify-fleet-mgr
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "fleet_operations"
                channel_id: "maintenance"
                text: "Fleet maintenance scheduled: Vehicle {{vehicle_id}}. Mileage: {{get-vehicle-data.current_mileage}}. Work order: {{create-service-order.number}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://circlek-s4.sap.com/sap/opu/odata/sap/FLEET_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: vehicles
          path: "/FleetVehicles('{{vehicle_id}}')"
          inputParameters:
            - name: vehicle_id
              in: path
          operations:
            - name: get-fleet-vehicle
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://circlek.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: tasks
          path: "/table/sc_task"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Audits food service quality by pulling temperature logs from Datadog IoT sensors, checking compliance in ServiceNow, and filing reports in SharePoint.

naftiko: "0.5"
info:
  label: "Food Service Quality Audit Pipeline"
  description: "Audits food service quality by pulling temperature logs from Datadog IoT sensors, checking compliance in ServiceNow, and filing reports in SharePoint."
  tags:
    - food-safety
    - datadog
    - servicenow
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: food-quality
      port: 8080
      tools:
        - name: audit-food-quality
          description: "Audit food service quality across temperature and compliance systems."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The Circle K store number."
            - name: audit_date
              in: body
              type: string
              description: "The audit date."
          steps:
            - name: get-temp-logs
              type: call
              call: "datadog.query-metrics"
              with:
                query: "avg:circlek.food.temperature{store:{{store_number}}}"
            - name: check-compliance
              type: call
              call: "servicenow.get-compliance-records"
              with:
                store: "{{store_number}}"
                type: "food_safety"
            - name: file-report
              type: call
              call: "sharepoint.upload-document"
              with:
                library: "FoodSafetyAudits"
                filename: "audit_{{store_number}}_{{audit_date}}.pdf"
                content: "Temperature compliance: {{get-temp-logs.compliance_pct}}%. Open issues: {{check-compliance.open_count}}."
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: api-key
        key: "$secrets.datadog_api_key"
      resources:
        - name: metrics
          path: "/query"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: query-metrics
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://circlek.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: compliance
          path: "/table/compliance_record"
          inputParameters:
            - name: store
              in: query
            - name: type
              in: query
          operations:
            - name: get-compliance-records
              method: GET
    - type: http
      namespace: sharepoint
      baseUri: "https://circlek.sharepoint.com/_api/v2.0"
      authentication:
        type: bearer
        token: "$secrets.sharepoint_token"
      resources:
        - name: documents
          path: "/drives/food-safety/items"
          operations:
            - name: upload-document
              method: POST

Retrieves firewall policy and threat status from Fortinet FortiGate for Circle K store network security monitoring.

naftiko: "0.5"
info:
  label: "Fortinet Firewall Status Check"
  description: "Retrieves firewall policy and threat status from Fortinet FortiGate for Circle K store network security monitoring."
  tags:
    - security
    - fortinet
    - network
    - firewall
capability:
  exposes:
    - type: mcp
      namespace: firewall-status
      port: 8080
      tools:
        - name: check-firewall-status
          description: "Check Fortinet firewall status for a Circle K store."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The Circle K store number."
          call: "fortinet.get-firewall-policy"
          with:
            device_name: "store-{{store_number}}-fw"
  consumes:
    - type: http
      namespace: fortinet
      baseUri: "https://circlek-fortimanager.fortinet.com/jsonrpc"
      authentication:
        type: bearer
        token: "$secrets.fortinet_token"
      resources:
        - name: policies
          path: "/pm/config/device/{{device_name}}/firewall/policy"
          inputParameters:
            - name: device_name
              in: path
          operations:
            - name: get-firewall-policy
              method: GET

Benchmarks franchise store performance by pulling KPIs from Snowflake, comparing against targets in Power BI, and generating scorecards in Confluence.

naftiko: "0.5"
info:
  label: "Franchise Performance Benchmarking Pipeline"
  description: "Benchmarks franchise store performance by pulling KPIs from Snowflake, comparing against targets in Power BI, and generating scorecards in Confluence."
  tags:
    - franchise
    - snowflake
    - power-bi
    - confluence
    - benchmarking
capability:
  exposes:
    - type: mcp
      namespace: franchise-benchmark
      port: 8080
      tools:
        - name: benchmark-franchise-performance
          description: "Benchmark franchise store performance against corporate targets."
          inputParameters:
            - name: franchisee_id
              in: body
              type: string
              description: "The franchisee identifier."
            - name: quarter
              in: body
              type: string
              description: "The fiscal quarter."
          steps:
            - name: get-kpis
              type: call
              call: "snowflake.execute-statement"
              with:
                statement: "SELECT * FROM franchise_kpis WHERE franchisee = '{{franchisee_id}}' AND quarter = '{{quarter}}'"
            - name: refresh-benchmark
              type: call
              call: "powerbi.refresh-dataset"
              with:
                dataset_id: "franchise_benchmarks"
            - name: create-scorecard
              type: call
              call: "confluence.create-page"
              with:
                space_key: "FRANCHISE"
                title: "Scorecard: {{franchisee_id}} - {{quarter}}"
                body: "Revenue: ${{get-kpis.revenue}}. Fuel margin: {{get-kpis.fuel_margin_pct}}%. Merch margin: {{get-kpis.merch_margin_pct}}%. Customer count: {{get-kpis.customer_count}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://circlek.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: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://circlek.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST

When fuel inventory drops below threshold in SAP HANA, creates a delivery request in Oracle, schedules the truck via Google Maps route optimization, and notifies the store manager via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Fuel Delivery Scheduling Pipeline"
  description: "When fuel inventory drops below threshold in SAP HANA, creates a delivery request in Oracle, schedules the truck via Google Maps route optimization, and notifies the store manager via Microsoft Teams."
  tags:
    - fuel-management
    - sap-hana
    - oracle
    - google-maps
    - microsoft-teams
    - logistics
capability:
  exposes:
    - type: mcp
      namespace: fuel-logistics
      port: 8080
      tools:
        - name: schedule-fuel-delivery
          description: "Schedule a fuel delivery when inventory is low, optimize the route, and notify the store."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The Circle K store number."
            - name: fuel_grade
              in: body
              type: string
              description: "The fuel grade requiring delivery."
          steps:
            - name: check-fuel-level
              type: call
              call: "sap-hana.query-fuel-levels"
              with:
                store_number: "{{store_number}}"
            - name: create-delivery-request
              type: call
              call: "oracle.create-delivery-order"
              with:
                store_number: "{{store_number}}"
                fuel_grade: "{{fuel_grade}}"
                quantity_needed: "{{check-fuel-level.reorder_quantity}}"
            - name: optimize-route
              type: call
              call: "googlemaps.get-directions"
              with:
                origin: "{{create-delivery-request.depot_address}}"
                destination: "{{check-fuel-level.store_address}}"
                mode: "driving"
            - name: notify-store-manager
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{check-fuel-level.manager_email}}"
                text: "Fuel delivery scheduled for store {{store_number}}. Grade: {{fuel_grade}}. ETA: {{optimize-route.duration}}. Delivery order: {{create-delivery-request.order_id}}."
  consumes:
    - type: http
      namespace: sap-hana
      baseUri: "https://circlek-hana.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_hana_user"
        password: "$secrets.sap_hana_password"
      resources:
        - name: fuel-levels
          path: "/fuel-inventory"
          inputParameters:
            - name: store_number
              in: query
          operations:
            - name: query-fuel-levels
              method: GET
    - type: http
      namespace: oracle
      baseUri: "https://circlek-erp.oracle.com/fscmRestApi/resources/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: delivery-orders
          path: "/deliveryOrders"
          operations:
            - name: create-delivery-order
              method: POST
    - type: http
      namespace: googlemaps
      baseUri: "https://maps.googleapis.com/maps/api"
      authentication:
        type: apikey
        key: "$secrets.google_maps_api_key"
      resources:
        - name: directions
          path: "/directions/json"
          inputParameters:
            - name: origin
              in: query
            - name: destination
              in: query
            - name: mode
              in: query
          operations:
            - name: get-directions
              method: GET
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Collects competitor fuel prices via market data, analyzes margin optimization using Databricks ML, updates pricing in SAP, and notifies regional managers via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Fuel Pricing Optimization Pipeline"
  description: "Collects competitor fuel prices via market data, analyzes margin optimization using Databricks ML, updates pricing in SAP, and notifies regional managers via Microsoft Teams."
  tags:
    - fuel-pricing
    - databricks
    - sap
    - microsoft-teams
    - optimization
capability:
  exposes:
    - type: mcp
      namespace: fuel-pricing
      port: 8080
      tools:
        - name: optimize-fuel-pricing
          description: "Run the fuel pricing optimization pipeline for a region."
          inputParameters:
            - name: region_id
              in: body
              type: string
              description: "The geographic region ID."
            - name: fuel_grade
              in: body
              type: string
              description: "The fuel grade to optimize."
          steps:
            - name: get-market-prices
              type: call
              call: "snowflake.execute-statement"
              with:
                statement: "SELECT avg_competitor_price, min_price, max_price FROM fuel_market_data WHERE region = '{{region_id}}' AND grade = '{{fuel_grade}}'"
            - name: run-optimization
              type: call
              call: "databricks.invoke-endpoint"
              with:
                endpoint: "fuel_price_optimizer"
                inputs: "{region: '{{region_id}}', grade: '{{fuel_grade}}', market_avg: {{get-market-prices.avg_competitor_price}}}"
            - name: update-sap-pricing
              type: call
              call: "sap.update-fuel-price"
              with:
                region_id: "{{region_id}}"
                fuel_grade: "{{fuel_grade}}"
                new_price: "{{run-optimization.recommended_price}}"
            - name: notify-regional-manager
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "fuel_operations"
                channel_id: "pricing_updates"
                text: "Fuel pricing updated for {{region_id}} ({{fuel_grade}}): New price ${{run-optimization.recommended_price}} (market avg ${{get-market-prices.avg_competitor_price}}). Estimated margin: {{run-optimization.margin_pct}}%."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://circlek.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: databricks
      baseUri: "https://circlek.cloud.databricks.com/serving-endpoints"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: serving-endpoints
          path: "/{{endpoint}}/invocations"
          inputParameters:
            - name: endpoint
              in: path
          operations:
            - name: invoke-endpoint
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://circlek-s4.sap.com/sap/opu/odata/sap/FUEL_PRICING_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: fuel-prices
          path: "/FuelPriceSet"
          operations:
            - name: update-fuel-price
              method: PATCH
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Optimizes fuel supply chain by forecasting demand in Databricks, checking terminal inventory in SAP HANA, and scheduling deliveries via Azure Data Factory.

naftiko: "0.5"
info:
  label: "Fuel Supply Chain Optimization Pipeline"
  description: "Optimizes fuel supply chain by forecasting demand in Databricks, checking terminal inventory in SAP HANA, and scheduling deliveries via Azure Data Factory."
  tags:
    - fuel-management
    - databricks
    - sap-hana
    - azure-data-factory
    - supply-chain
capability:
  exposes:
    - type: mcp
      namespace: fuel-supply-chain
      port: 8080
      tools:
        - name: optimize-fuel-supply
          description: "Optimize fuel supply chain with demand forecasting and delivery scheduling."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "The supply region."
            - name: fuel_grade
              in: body
              type: string
              description: "The fuel grade."
          steps:
            - name: forecast-demand
              type: call
              call: "databricks.invoke-endpoint"
              with:
                endpoint: "fuel_demand_forecast"
                inputs: "{region: '{{region}}', grade: '{{fuel_grade}}'}"
            - name: check-terminal-inventory
              type: call
              call: "sap-hana.get-terminal-levels"
              with:
                region: "{{region}}"
                grade: "{{fuel_grade}}"
            - name: schedule-deliveries
              type: call
              call: "adf.trigger-pipeline"
              with:
                pipeline: "fuel_delivery_scheduler"
                parameters: "{region: '{{region}}', grade: '{{fuel_grade}}', demand: {{forecast-demand.total_gallons}}, available: {{check-terminal-inventory.available_gallons}}}"
  consumes:
    - type: http
      namespace: databricks
      baseUri: "https://circlek.cloud.databricks.com/serving-endpoints"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: endpoints
          path: "/{{endpoint}}/invocations"
          inputParameters:
            - name: endpoint
              in: path
          operations:
            - name: invoke-endpoint
              method: POST
    - type: http
      namespace: sap-hana
      baseUri: "https://circlek-hana.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_hana_user"
        password: "$secrets.sap_hana_password"
      resources:
        - name: terminal-levels
          path: "/terminal-inventory"
          inputParameters:
            - name: region
              in: query
            - name: grade
              in: query
          operations:
            - name: get-terminal-levels
              method: GET
    - type: http
      namespace: adf
      baseUri: "https://management.azure.com/subscriptions/circlek-sub/resourceGroups/data-rg/providers/Microsoft.DataFactory/factories/circlek-adf"
      authentication:
        type: bearer
        token: "$secrets.azure_token"
      resources:
        - name: pipelines
          path: "/pipelines/{{pipeline}}/createRun"
          inputParameters:
            - name: pipeline
              in: path
          operations:
            - name: trigger-pipeline
              method: POST

Detects potential fuel tank leaks by monitoring inventory variances in SAP HANA, correlating with sensor data in Datadog, and creating emergency incidents in ServiceNow.

naftiko: "0.5"
info:
  label: "Fuel Tank Leak Detection Pipeline"
  description: "Detects potential fuel tank leaks by monitoring inventory variances in SAP HANA, correlating with sensor data in Datadog, and creating emergency incidents in ServiceNow."
  tags:
    - fuel-management
    - sap-hana
    - datadog
    - servicenow
    - safety
capability:
  exposes:
    - type: mcp
      namespace: leak-detection
      port: 8080
      tools:
        - name: detect-fuel-leak
          description: "Detect potential fuel tank leaks through inventory variance analysis."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The Circle K store number."
            - name: tank_id
              in: body
              type: string
              description: "The fuel tank identifier."
          steps:
            - name: check-inventory-variance
              type: call
              call: "sap-hana.query-fuel-variance"
              with:
                store_number: "{{store_number}}"
                tank_id: "{{tank_id}}"
            - name: check-sensors
              type: call
              call: "datadog.query-metrics"
              with:
                query: "avg:circlek.tank.{{tank_id}}.level{store:{{store_number}}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "FUEL LEAK ALERT: Tank {{tank_id}} at store {{store_number}}"
                urgency: "1"
                impact: "1"
                description: "Inventory variance: {{check-inventory-variance.variance_gallons}} gallons. Sensor reading: {{check-sensors.current_level}}."
  consumes:
    - type: http
      namespace: sap-hana
      baseUri: "https://circlek-hana.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_hana_user"
        password: "$secrets.sap_hana_password"
      resources:
        - name: fuel-variance
          path: "/fuel-inventory/variance"
          inputParameters:
            - name: store_number
              in: query
            - name: tank_id
              in: query
          operations:
            - name: query-fuel-variance
              method: GET
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: api-key
        key: "$secrets.datadog_api_key"
      resources:
        - name: metrics
          path: "/query"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: query-metrics
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://circlek.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

Triggers a GitHub Actions workflow for Circle K application builds.

naftiko: "0.5"
info:
  label: "GitHub Actions CI Workflow Trigger"
  description: "Triggers a GitHub Actions workflow for Circle K application builds."
  tags:
    - ci-cd
    - github-actions
    - development
    - automation
capability:
  exposes:
    - type: mcp
      namespace: ci-workflows
      port: 8080
      tools:
        - name: trigger-github-workflow
          description: "Trigger a GitHub Actions workflow dispatch event."
          inputParameters:
            - name: repo
              in: body
              type: string
              description: "The repository name (org/repo format)."
            - name: workflow_id
              in: body
              type: string
              description: "The workflow file name or ID."
            - name: ref
              in: body
              type: string
              description: "The git reference."
          call: "github.dispatch-workflow"
          with:
            repo: "{{repo}}"
            workflow_id: "{{workflow_id}}"
            ref: "{{ref}}"
  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

Retrieves open pull request details for a Circle K GitHub repository.

naftiko: "0.5"
info:
  label: "GitHub Repository PR Status"
  description: "Retrieves open pull request details for a Circle K GitHub repository."
  tags:
    - development
    - github
    - code-review
capability:
  exposes:
    - type: mcp
      namespace: dev-workflow
      port: 8080
      tools:
        - name: get-repo-prs
          description: "List open pull requests for a GitHub repository."
          inputParameters:
            - name: repo_name
              in: body
              type: string
              description: "The repository name (org/repo format)."
          call: "github.list-prs"
          with:
            repo: "{{repo_name}}"
            state: "open"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: pull-requests
          path: "/repos/{{repo}}/pulls"
          inputParameters:
            - name: repo
              in: path
            - name: state
              in: query
          operations:
            - name: list-prs
              method: GET

Queries Google Analytics for Circle K website traffic metrics by store location page, returning sessions, page views, and mobile order conversions.

naftiko: "0.5"
info:
  label: "Google Analytics Store Traffic Report"
  description: "Queries Google Analytics for Circle K website traffic metrics by store location page, returning sessions, page views, and mobile order conversions."
  tags:
    - analytics
    - google-analytics
    - marketing
    - store-performance
capability:
  exposes:
    - type: mcp
      namespace: marketing-analytics
      port: 8080
      tools:
        - name: get-store-traffic
          description: "Retrieve Google Analytics traffic data for a store location page."
          inputParameters:
            - name: store_slug
              in: body
              type: string
              description: "The store location URL slug."
            - name: start_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
            - name: end_date
              in: body
              type: string
              description: "End date in YYYY-MM-DD format."
          call: "ga.run-report"
          with:
            property: "properties/111222333"
            dateRanges: "[{startDate: '{{start_date}}', endDate: '{{end_date}}'}]"
            dimensionFilter: "pagePath=/stores/{{store_slug}}"
  consumes:
    - type: http
      namespace: ga
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/{{property}}:runReport"
          inputParameters:
            - name: property
              in: path
          operations:
            - name: run-report
              method: POST

Retrieves Google Cloud Dataflow pipeline execution status for Circle K real-time data streaming jobs, returning throughput and error metrics.

naftiko: "0.5"
info:
  label: "Google Cloud Dataflow Pipeline Status"
  description: "Retrieves Google Cloud Dataflow pipeline execution status for Circle K real-time data streaming jobs, returning throughput and error metrics."
  tags:
    - data-engineering
    - google-cloud-dataflow
    - streaming
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: dataflow-status
      port: 8080
      tools:
        - name: get-dataflow-status
          description: "Retrieve Dataflow pipeline execution status."
          inputParameters:
            - name: job_id
              in: body
              type: string
              description: "The Dataflow job ID."
          call: "dataflow.get-job"
          with:
            job_id: "{{job_id}}"
  consumes:
    - type: http
      namespace: dataflow
      baseUri: "https://dataflow.googleapis.com/v1b3"
      authentication:
        type: bearer
        token: "$secrets.gcp_dataflow_token"
      resources:
        - name: jobs
          path: "/projects/circlek/locations/us-central1/jobs/{{job_id}}"
          inputParameters:
            - name: job_id
              in: path
          operations:
            - name: get-job
              method: GET

Retrieves Google Maps place details for a Circle K store, returning address, hours, fuel prices, and customer rating.

naftiko: "0.5"
info:
  label: "Google Maps Store Locator"
  description: "Retrieves Google Maps place details for a Circle K store, returning address, hours, fuel prices, and customer rating."
  tags:
    - location-services
    - google-maps
    - store-info
capability:
  exposes:
    - type: mcp
      namespace: location-services
      port: 8080
      tools:
        - name: get-store-details
          description: "Retrieve Google Maps place details for a Circle K store."
          inputParameters:
            - name: place_id
              in: body
              type: string
              description: "The Google Maps place ID."
          call: "googlemaps.get-place-details"
          with:
            place_id: "{{place_id}}"
            fields: "name,formatted_address,opening_hours,rating"
  consumes:
    - type: http
      namespace: googlemaps
      baseUri: "https://maps.googleapis.com/maps/api"
      authentication:
        type: apikey
        key: "$secrets.google_maps_api_key"
      resources:
        - name: place-details
          path: "/place/details/json"
          inputParameters:
            - name: place_id
              in: query
            - name: fields
              in: query
          operations:
            - name: get-place-details
              method: GET

Reads operational data from Google Sheets for Circle K field operations tracking.

naftiko: "0.5"
info:
  label: "Google Sheets Store Operations Sync"
  description: "Reads operational data from Google Sheets for Circle K field operations tracking."
  tags:
    - data-management
    - google-sheets
    - operations
capability:
  exposes:
    - type: mcp
      namespace: spreadsheet-data
      port: 8080
      tools:
        - name: read-operations-sheet
          description: "Read data from a Google Sheets spreadsheet."
          inputParameters:
            - name: spreadsheet_id
              in: body
              type: string
              description: "The Google Sheets spreadsheet ID."
            - name: range
              in: body
              type: string
              description: "The cell range."
          call: "gsheets.get-values"
          with:
            spreadsheet_id: "{{spreadsheet_id}}"
            range: "{{range}}"
  consumes:
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: get-values
              method: GET

Retrieves Google Tag Manager container version and tag deployment status for Circle K digital properties, returning active tags and trigger configurations.

naftiko: "0.5"
info:
  label: "Google Tag Manager Container Status"
  description: "Retrieves Google Tag Manager container version and tag deployment status for Circle K digital properties, returning active tags and trigger configurations."
  tags:
    - digital-marketing
    - google-tag-manager
    - analytics
    - web
capability:
  exposes:
    - type: mcp
      namespace: tag-management
      port: 8080
      tools:
        - name: get-container-status
          description: "Retrieve Google Tag Manager container status."
          inputParameters:
            - name: container_id
              in: body
              type: string
              description: "The GTM container ID."
          call: "gtm.get-container-version"
          with:
            container_id: "{{container_id}}"
  consumes:
    - type: http
      namespace: gtm
      baseUri: "https://www.googleapis.com/tagmanager/v2"
      authentication:
        type: bearer
        token: "$secrets.google_tagmanager_token"
      resources:
        - name: containers
          path: "/accounts/circlek/containers/{{container_id}}/versions"
          inputParameters:
            - name: container_id
              in: path
          operations:
            - name: get-container-version
              method: GET

Retrieves HubSpot marketing campaign performance for Circle K promotions including email engagement and landing page conversions.

naftiko: "0.5"
info:
  label: "HubSpot Marketing Campaign Metrics"
  description: "Retrieves HubSpot marketing campaign performance for Circle K promotions including email engagement and landing page conversions."
  tags:
    - marketing
    - hubspot
    - campaigns
    - promotions
capability:
  exposes:
    - type: mcp
      namespace: marketing-campaigns
      port: 8080
      tools:
        - name: get-campaign-metrics
          description: "Retrieve HubSpot campaign performance metrics."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The HubSpot campaign ID."
          call: "hubspot.get-campaign"
          with:
            campaign_id: "{{campaign_id}}"
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/marketing/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: campaigns
          path: "/campaigns/{{campaign_id}}"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign
              method: GET

Checks the status of Informatica data integration pipelines for Circle K's enterprise data flows.

naftiko: "0.5"
info:
  label: "Informatica Data Pipeline Status"
  description: "Checks the status of Informatica data integration pipelines for Circle K's enterprise data flows."
  tags:
    - data-integration
    - informatica
    - etl
    - data-pipeline
capability:
  exposes:
    - type: mcp
      namespace: data-integration
      port: 8080
      tools:
        - name: get-pipeline-status
          description: "Retrieve Informatica data pipeline job status."
          inputParameters:
            - name: job_id
              in: body
              type: string
              description: "The Informatica job ID."
          call: "informatica.get-job-status"
          with:
            job_id: "{{job_id}}"
  consumes:
    - type: http
      namespace: informatica
      baseUri: "https://dm-us.informaticacloud.com/saas/api/v2"
      authentication:
        type: bearer
        token: "$secrets.informatica_token"
      resources:
        - name: jobs
          path: "/job/{{job_id}}"
          inputParameters:
            - name: job_id
              in: path
          operations:
            - name: get-job-status
              method: GET

Retrieves Instagram business account engagement metrics for Circle K social media marketing.

naftiko: "0.5"
info:
  label: "Instagram Social Engagement Tracker"
  description: "Retrieves Instagram business account engagement metrics for Circle K social media marketing."
  tags:
    - social-media
    - instagram
    - marketing
    - engagement
capability:
  exposes:
    - type: mcp
      namespace: social-analytics
      port: 8080
      tools:
        - name: get-instagram-engagement
          description: "Retrieve Instagram engagement metrics."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Instagram business account ID."
            - name: period
              in: body
              type: string
              description: "The time period."
          call: "instagram.get-insights"
          with:
            account_id: "{{account_id}}"
            metric: "impressions,reach,engagement"
            period: "{{period}}"
  consumes:
    - type: http
      namespace: instagram
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.instagram_token"
      resources:
        - name: insights
          path: "/{{account_id}}/insights"
          inputParameters:
            - name: account_id
              in: path
            - name: metric
              in: query
            - name: period
              in: query
          operations:
            - name: get-insights
              method: GET

Checks IT infrastructure health by pulling metrics from SolarWinds, querying Dynatrace for application performance, and posting reports to Microsoft Teams.

naftiko: "0.5"
info:
  label: "IT Infrastructure Health Check Pipeline"
  description: "Checks IT infrastructure health by pulling metrics from SolarWinds, querying Dynatrace for application performance, and posting reports to Microsoft Teams."
  tags:
    - it-operations
    - solarwinds
    - dynatrace
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: infra-health
      port: 8080
      tools:
        - name: check-infrastructure-health
          description: "Run a comprehensive IT infrastructure health check."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "The infrastructure region."
          steps:
            - name: get-network-health
              type: call
              call: "solarwinds.get-region-status"
              with:
                region: "{{region}}"
            - name: get-app-performance
              type: call
              call: "dynatrace.get-infrastructure-health"
              with:
                tag: "region:{{region}}"
            - name: post-report
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "it_operations"
                channel_id: "health_reports"
                text: "Infrastructure health for {{region}}: Network={{get-network-health.status}} ({{get-network-health.uptime_pct}}% uptime). App health={{get-app-performance.apdex}}. Alerts: {{get-app-performance.alert_count}}."
  consumes:
    - type: http
      namespace: solarwinds
      baseUri: "https://circlek-solarwinds.com/SolarWinds/InformationService/v3"
      authentication:
        type: basic
        username: "$secrets.solarwinds_user"
        password: "$secrets.solarwinds_password"
      resources:
        - name: status
          path: "/Query"
          operations:
            - name: get-region-status
              method: POST
    - type: http
      namespace: dynatrace
      baseUri: "https://circlek.live.dynatrace.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.dynatrace_token"
      resources:
        - name: infrastructure
          path: "/metrics/query"
          inputParameters:
            - name: tag
              in: query
          operations:
            - name: get-infrastructure-health
              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/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Retrieves Jira sprint progress for Circle K technology teams.

naftiko: "0.5"
info:
  label: "Jira Sprint Progress Tracker"
  description: "Retrieves Jira sprint progress for Circle K technology teams."
  tags:
    - project-management
    - jira
    - agile
    - sprint
capability:
  exposes:
    - type: mcp
      namespace: agile-tracking
      port: 8080
      tools:
        - name: get-sprint-progress
          description: "Retrieve Jira sprint progress."
          inputParameters:
            - name: board_id
              in: body
              type: string
              description: "The Jira board ID."
            - name: sprint_id
              in: body
              type: string
              description: "The sprint ID."
          call: "jira.get-sprint"
          with:
            board_id: "{{board_id}}"
            sprint_id: "{{sprint_id}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://circlek.atlassian.net/rest/agile/1.0"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: sprints
          path: "/board/{{board_id}}/sprint/{{sprint_id}}"
          inputParameters:
            - name: board_id
              in: path
            - name: sprint_id
              in: path
          operations:
            - name: get-sprint
              method: GET

Checks the health status of Kubernetes deployments in Azure Kubernetes Service for Circle K microservices.

naftiko: "0.5"
info:
  label: "Kubernetes Deployment Health Check"
  description: "Checks the health status of Kubernetes deployments in Azure Kubernetes Service for Circle K microservices."
  tags:
    - infrastructure
    - azure-kubernetes-service
    - kubernetes
    - container-management
capability:
  exposes:
    - type: mcp
      namespace: k8s-ops
      port: 8080
      tools:
        - name: check-deployment-health
          description: "Check AKS deployment health status."
          inputParameters:
            - name: namespace
              in: body
              type: string
              description: "The Kubernetes namespace."
            - name: deployment_name
              in: body
              type: string
              description: "The deployment name."
          call: "aks.get-deployment"
          with:
            namespace: "{{namespace}}"
            deployment: "{{deployment_name}}"
  consumes:
    - type: http
      namespace: aks
      baseUri: "https://circlek-aks.eastus.azmk8s.io"
      authentication:
        type: bearer
        token: "$secrets.aks_token"
      resources:
        - name: deployments
          path: "/apis/apps/v1/namespaces/{{namespace}}/deployments/{{deployment}}"
          inputParameters:
            - name: namespace
              in: path
            - name: deployment
              in: path
          operations:
            - name: get-deployment
              method: GET

Optimizes labor costs by analyzing transaction patterns in Snowflake, forecasting staffing needs in Databricks, and updating schedules in Workday.

naftiko: "0.5"
info:
  label: "Labor Cost Optimization Pipeline"
  description: "Optimizes labor costs by analyzing transaction patterns in Snowflake, forecasting staffing needs in Databricks, and updating schedules in Workday."
  tags:
    - workforce-management
    - snowflake
    - databricks
    - workday
capability:
  exposes:
    - type: mcp
      namespace: labor-optimization
      port: 8080
      tools:
        - name: optimize-labor-costs
          description: "Optimize store labor costs based on transaction forecasts."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The Circle K store number."
            - name: week
              in: body
              type: string
              description: "The target week."
          steps:
            - name: get-transaction-patterns
              type: call
              call: "snowflake.execute-statement"
              with:
                statement: "SELECT hour_of_day, avg_transactions, avg_basket_size FROM transaction_patterns WHERE store = '{{store_number}}' AND dayofweek = DAYOFWEEK('{{week}}')"
            - name: forecast-staffing
              type: call
              call: "databricks.invoke-endpoint"
              with:
                endpoint: "staffing_optimizer"
                inputs: "{store: '{{store_number}}', week: '{{week}}'}"
            - name: update-schedules
              type: call
              call: "workday.update-schedule"
              with:
                location: "{{store_number}}"
                week: "{{week}}"
                recommended_hours: "{{forecast-staffing.total_hours}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://circlek.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: databricks
      baseUri: "https://circlek.cloud.databricks.com/serving-endpoints"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: endpoints
          path: "/{{endpoint}}/invocations"
          inputParameters:
            - name: endpoint
              in: path
          operations:
            - name: invoke-endpoint
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://circlek.workday.com/api/staffing/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: schedules
          path: "/workers/schedules"
          operations:
            - name: update-schedule
              method: PATCH

Publishes job postings to LinkedIn for Circle K store and corporate positions, syncing from Workday requisition data.

naftiko: "0.5"
info:
  label: "LinkedIn Job Posting Publisher"
  description: "Publishes job postings to LinkedIn for Circle K store and corporate positions, syncing from Workday requisition data."
  tags:
    - recruiting
    - linkedin
    - workday
    - talent-acquisition
capability:
  exposes:
    - type: mcp
      namespace: talent-recruitment
      port: 8080
      tools:
        - name: publish-job-posting
          description: "Fetch a Workday requisition and publish a job posting to LinkedIn."
          inputParameters:
            - name: requisition_id
              in: body
              type: string
              description: "The Workday job requisition ID."
          steps:
            - name: get-requisition
              type: call
              call: "workday.get-requisition"
              with:
                requisition_id: "{{requisition_id}}"
            - name: post-to-linkedin
              type: call
              call: "linkedin.create-job-posting"
              with:
                title: "{{get-requisition.job_title}}"
                description: "{{get-requisition.job_description}}"
                location: "{{get-requisition.location}}"
            - name: notify-recruiter
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-requisition.recruiter_email}}"
                text: "Job '{{get-requisition.job_title}}' posted to LinkedIn. ID: {{post-to-linkedin.posting_id}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: requisitions
          path: "/jobRequisitions/{{requisition_id}}"
          inputParameters:
            - name: requisition_id
              in: path
          operations:
            - name: get-requisition
              method: GET
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: job-postings
          path: "/simpleJobPostings"
          operations:
            - name: create-job-posting
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Manages recruitment campaigns by pulling open positions from Workday, publishing to LinkedIn, and tracking applications in Salesforce.

naftiko: "0.5"
info:
  label: "LinkedIn Recruitment Campaign Pipeline"
  description: "Manages recruitment campaigns by pulling open positions from Workday, publishing to LinkedIn, and tracking applications in Salesforce."
  tags:
    - recruiting
    - workday
    - linkedin
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: recruitment-campaigns
      port: 8080
      tools:
        - name: run-recruitment-campaign
          description: "Run a recruitment campaign across job boards and social platforms."
          inputParameters:
            - name: job_family
              in: body
              type: string
              description: "The job family to recruit for."
            - name: region
              in: body
              type: string
              description: "The target region."
          steps:
            - name: get-open-positions
              type: call
              call: "workday.get-job-requisitions"
              with:
                job_family: "{{job_family}}"
                region: "{{region}}"
            - name: publish-jobs
              type: call
              call: "linkedin.create-job-post"
              with:
                title: "{{get-open-positions.title}}"
                location: "{{region}}"
                description: "{{get-open-positions.description}}"
                count: "{{get-open-positions.count}}"
            - name: track-campaign
              type: call
              call: "salesforce.create-campaign"
              with:
                name: "Recruiting: {{job_family}} - {{region}}"
                type: "Recruitment"
                target_applications: "{{get-open-positions.count}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://circlek.workday.com/api/recruiting/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: requisitions
          path: "/jobRequisitions"
          inputParameters:
            - name: job_family
              in: query
            - name: region
              in: query
          operations:
            - name: get-job-requisitions
              method: GET
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: jobs
          path: "/simpleJobPostings"
          operations:
            - name: create-job-post
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://circlek.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: campaigns
          path: "/sobjects/Campaign"
          operations:
            - name: create-campaign
              method: POST

Retrieves Looker dashboard data for Circle K fuel operations and store performance metrics.

naftiko: "0.5"
info:
  label: "Looker Fuel Operations Dashboard"
  description: "Retrieves Looker dashboard data for Circle K fuel operations and store performance metrics."
  tags:
    - analytics
    - looker
    - fuel-operations
    - business-intelligence
capability:
  exposes:
    - type: mcp
      namespace: bi-analytics
      port: 8080
      tools:
        - name: get-looker-dashboard
          description: "Retrieve Looker dashboard data."
          inputParameters:
            - name: dashboard_id
              in: body
              type: string
              description: "The Looker dashboard ID."
          call: "looker.get-dashboard"
          with:
            dashboard_id: "{{dashboard_id}}"
  consumes:
    - type: http
      namespace: looker
      baseUri: "https://circlek.looker.com/api/4.0"
      authentication:
        type: bearer
        token: "$secrets.looker_token"
      resources:
        - name: dashboards
          path: "/dashboards/{{dashboard_id}}"
          inputParameters:
            - name: dashboard_id
              in: path
          operations:
            - name: get-dashboard
              method: GET

Enrolls new Inner Circle loyalty members by creating profiles in DynamoDB, registering in Salesforce, and sending welcome campaigns through MailChimp.

naftiko: "0.5"
info:
  label: "Loyalty Program Enrollment Pipeline"
  description: "Enrolls new Inner Circle loyalty members by creating profiles in DynamoDB, registering in Salesforce, and sending welcome campaigns through MailChimp."
  tags:
    - loyalty
    - dynamodb
    - salesforce
    - mailchimp
capability:
  exposes:
    - type: mcp
      namespace: loyalty-enrollment
      port: 8080
      tools:
        - name: enroll-loyalty-member
          description: "Enroll a new member in the Circle K Inner Circle loyalty program."
          inputParameters:
            - name: customer_email
              in: body
              type: string
              description: "The customer email."
            - name: customer_name
              in: body
              type: string
              description: "The customer full name."
          steps:
            - name: create-member-record
              type: call
              call: "dynamodb.put-item"
              with:
                table_name: "loyalty_members"
                email: "{{customer_email}}"
                name: "{{customer_name}}"
                tier: "bronze"
            - name: create-sf-contact
              type: call
              call: "salesforce.create-contact"
              with:
                email: "{{customer_email}}"
                name: "{{customer_name}}"
                record_type: "Inner_Circle_Member"
            - name: send-welcome
              type: call
              call: "mailchimp.send-transactional"
              with:
                template: "inner_circle_welcome"
                to_email: "{{customer_email}}"
                merge_vars: "name={{customer_name}},member_id={{create-member-record.member_id}}"
  consumes:
    - type: http
      namespace: dynamodb
      baseUri: "https://dynamodb.us-east-1.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_dynamodb_token"
      resources:
        - name: items
          path: "/"
          operations:
            - name: put-item
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://circlek.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/sobjects/Contact"
          operations:
            - name: create-contact
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://mandrillapp.com/api/1.0"
      authentication:
        type: api-key
        key: "$secrets.mailchimp_api_key"
      resources:
        - name: transactional
          path: "/messages/send-template"
          operations:
            - name: send-transactional
              method: POST

Retrieves MailChimp campaign performance for Circle K Inner Circle loyalty program email communications.

naftiko: "0.5"
info:
  label: "MailChimp Loyalty Rewards Campaign"
  description: "Retrieves MailChimp campaign performance for Circle K Inner Circle loyalty program email communications."
  tags:
    - marketing
    - mailchimp
    - loyalty
    - email-campaigns
capability:
  exposes:
    - type: mcp
      namespace: loyalty-marketing
      port: 8080
      tools:
        - name: get-loyalty-campaign-metrics
          description: "Retrieve MailChimp loyalty campaign performance."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The MailChimp campaign ID."
          call: "mailchimp.get-campaign-report"
          with:
            campaign_id: "{{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: campaign-reports
          path: "/reports/{{campaign_id}}"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign-report
              method: GET

Validates store merchandise planogram compliance by checking inventory in Oracle Fusion, comparing against planogram standards in Snowflake, and flagging violations in Jira.

naftiko: "0.5"
info:
  label: "Merchandise Planogram Compliance Pipeline"
  description: "Validates store merchandise planogram compliance by checking inventory in Oracle Fusion, comparing against planogram standards in Snowflake, and flagging violations in Jira."
  tags:
    - merchandising
    - oracle-fusion
    - snowflake
    - jira
capability:
  exposes:
    - type: mcp
      namespace: planogram-compliance
      port: 8080
      tools:
        - name: check-planogram-compliance
          description: "Check merchandise planogram compliance for a store."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The Circle K store number."
            - name: category
              in: body
              type: string
              description: "The merchandise category."
          steps:
            - name: get-inventory
              type: call
              call: "oracle-fusion.get-store-inventory"
              with:
                store_number: "{{store_number}}"
                category: "{{category}}"
            - name: get-planogram
              type: call
              call: "snowflake.execute-statement"
              with:
                statement: "SELECT * FROM planogram_standards WHERE category = '{{category}}' AND store_format = (SELECT format FROM stores WHERE id = '{{store_number}}')"
            - name: flag-violations
              type: call
              call: "jira.create-issue"
              with:
                project: "MERCH"
                summary: "Planogram violation: {{category}} at store {{store_number}}"
                description: "Current SKUs: {{get-inventory.sku_count}}. Required: {{get-planogram.required_skus}}. Missing: {{get-planogram.missing_count}}."
                issue_type: "Task"
  consumes:
    - type: http
      namespace: oracle-fusion
      baseUri: "https://circlek.oraclecloud.com/fscmRestApi/resources/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_fusion_token"
      resources:
        - name: inventory
          path: "/inventoryItems"
          inputParameters:
            - name: store_number
              in: query
            - name: category
              in: query
          operations:
            - name: get-store-inventory
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://circlek.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: jira
      baseUri: "https://circlek.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Triggers a Microsoft Power Automate flow for Circle K business process automation.

naftiko: "0.5"
info:
  label: "Microsoft Power Automate Flow Trigger"
  description: "Triggers a Microsoft Power Automate flow for Circle K business process automation."
  tags:
    - automation
    - microsoft-power-automate
    - business-process
capability:
  exposes:
    - type: mcp
      namespace: process-automation
      port: 8080
      tools:
        - name: trigger-power-automate-flow
          description: "Trigger a Power Automate flow by flow ID."
          inputParameters:
            - name: flow_id
              in: body
              type: string
              description: "The Power Automate flow ID."
            - name: trigger_body
              in: body
              type: object
              description: "The JSON body for the flow trigger."
          call: "powerautomate.trigger-flow"
          with:
            flow_id: "{{flow_id}}"
            body: "{{trigger_body}}"
  consumes:
    - type: http
      namespace: powerautomate
      baseUri: "https://api.flow.microsoft.com/providers/Microsoft.ProcessSimple/environments"
      authentication:
        type: bearer
        token: "$secrets.powerautomate_token"
      resources:
        - name: flows
          path: "/{{environment_id}}/flows/{{flow_id}}/triggers/manual/run"
          inputParameters:
            - name: flow_id
              in: path
            - name: environment_id
              in: path
          operations:
            - name: trigger-flow
              method: POST

Sends a formatted notification message to a specified Microsoft Teams channel for Circle K operational communications.

naftiko: "0.5"
info:
  label: "Microsoft Teams Channel Notification"
  description: "Sends a formatted notification message to a specified Microsoft Teams channel for Circle K operational communications."
  tags:
    - communications
    - microsoft-teams
    - notifications
capability:
  exposes:
    - type: mcp
      namespace: team-comms
      port: 8080
      tools:
        - name: send-teams-notification
          description: "Send a notification message to a Microsoft Teams channel."
          inputParameters:
            - name: team_id
              in: body
              type: string
              description: "The Teams team ID."
            - name: channel_id
              in: body
              type: string
              description: "The Teams channel ID."
            - name: message
              in: body
              type: string
              description: "The message text to send."
          call: "msteams.send-channel-message"
          with:
            team_id: "{{team_id}}"
            channel_id: "{{channel_id}}"
            text: "{{message}}"
  consumes:
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Sends targeted push notifications by segmenting users in Snowflake, personalizing content via Databricks ML, and dispatching through the mobile platform API.

naftiko: "0.5"
info:
  label: "Mobile App Push Notification Pipeline"
  description: "Sends targeted push notifications by segmenting users in Snowflake, personalizing content via Databricks ML, and dispatching through the mobile platform API."
  tags:
    - mobile
    - snowflake
    - databricks
    - notifications
    - marketing
capability:
  exposes:
    - type: mcp
      namespace: push-notifications
      port: 8080
      tools:
        - name: send-targeted-notification
          description: "Send targeted push notifications to Circle K app users."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The notification campaign ID."
            - name: segment
              in: body
              type: string
              description: "The target user segment."
          steps:
            - name: get-segment-users
              type: call
              call: "snowflake.execute-statement"
              with:
                statement: "SELECT user_id, device_token, preferences FROM app_users WHERE segment = '{{segment}}' AND push_enabled = true"
            - name: personalize-content
              type: call
              call: "databricks.invoke-endpoint"
              with:
                endpoint: "notification_personalizer"
                inputs: "{campaign: '{{campaign_id}}', user_count: {{get-segment-users.count}}}"
            - name: dispatch-notifications
              type: call
              call: "lambda.invoke-function"
              with:
                function_name: "push-notification-dispatcher"
                payload: "{campaign: '{{campaign_id}}', segment: '{{segment}}', user_count: {{get-segment-users.count}}, template: '{{personalize-content.template_id}}'}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://circlek.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: databricks
      baseUri: "https://circlek.cloud.databricks.com/serving-endpoints"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: endpoints
          path: "/{{endpoint}}/invocations"
          inputParameters:
            - name: endpoint
              in: path
          operations:
            - name: invoke-endpoint
              method: POST
    - type: http
      namespace: lambda
      baseUri: "https://lambda.us-east-1.amazonaws.com/2015-03-31"
      authentication:
        type: bearer
        token: "$secrets.aws_lambda_token"
      resources:
        - name: functions
          path: "/functions/{{function_name}}/invocations"
          inputParameters:
            - name: function_name
              in: path
          operations:
            - name: invoke-function
              method: POST

Retrieves API gateway health and traffic metrics from MuleSoft Anypoint Platform for Circle K integration monitoring.

naftiko: "0.5"
info:
  label: "MuleSoft API Gateway Status"
  description: "Retrieves API gateway health and traffic metrics from MuleSoft Anypoint Platform for Circle K integration monitoring."
  tags:
    - integration
    - mulesoft
    - api-management
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: api-gateway
      port: 8080
      tools:
        - name: get-api-gateway-status
          description: "Retrieve MuleSoft API gateway health metrics."
          inputParameters:
            - name: api_id
              in: body
              type: string
              description: "The MuleSoft API ID."
          call: "mulesoft.get-api-status"
          with:
            api_id: "{{api_id}}"
  consumes:
    - type: http
      namespace: mulesoft
      baseUri: "https://anypoint.mulesoft.com/apimanager/api/v1"
      authentication:
        type: bearer
        token: "$secrets.mulesoft_token"
      resources:
        - name: apis
          path: "/organizations/circlek/environments/production/apis/{{api_id}}"
          inputParameters:
            - name: api_id
              in: path
          operations:
            - name: get-api-status
              method: GET

Audits network security compliance by scanning Fortinet firewall rules, checking Palo Alto Networks threat logs, and filing compliance reports in ServiceNow.

naftiko: "0.5"
info:
  label: "Network Security Compliance Pipeline"
  description: "Audits network security compliance by scanning Fortinet firewall rules, checking Palo Alto Networks threat logs, and filing compliance reports in ServiceNow."
  tags:
    - security
    - fortinet
    - palo-alto-networks
    - servicenow
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: network-security
      port: 8080
      tools:
        - name: audit-network-security
          description: "Audit network security compliance across firewall and threat systems."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "The network region to audit."
          steps:
            - name: scan-firewall-rules
              type: call
              call: "fortinet.get-policy-summary"
              with:
                region: "{{region}}"
            - name: check-threat-logs
              type: call
              call: "paloalto.get-threat-summary"
              with:
                region: "{{region}}"
            - name: file-compliance-report
              type: call
              call: "servicenow.create-assessment"
              with:
                category: "network_security"
                region: "{{region}}"
                description: "Firewall rules: {{scan-firewall-rules.rule_count}}. Non-compliant: {{scan-firewall-rules.non_compliant}}. Threats blocked: {{check-threat-logs.blocked_count}}."
  consumes:
    - type: http
      namespace: fortinet
      baseUri: "https://circlek-fortimanager.fortinet.com/jsonrpc"
      authentication:
        type: bearer
        token: "$secrets.fortinet_token"
      resources:
        - name: policies
          path: "/pm/config/adom/{{region}}/firewall/policy"
          inputParameters:
            - name: region
              in: path
          operations:
            - name: get-policy-summary
              method: GET
    - type: http
      namespace: paloalto
      baseUri: "https://circlek-panorama.paloaltonetworks.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.paloalto_token"
      resources:
        - name: threats
          path: "/threats/summary"
          inputParameters:
            - name: region
              in: query
          operations:
            - name: get-threat-summary
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://circlek.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: assessments
          path: "/table/asmt_assessment"
          operations:
            - name: create-assessment
              method: POST

Queries New Relic for infrastructure metrics at Circle K store locations, returning server health, network status, and storage utilization.

naftiko: "0.5"
info:
  label: "New Relic Store Infrastructure Check"
  description: "Queries New Relic for infrastructure metrics at Circle K store locations, returning server health, network status, and storage utilization."
  tags:
    - monitoring
    - new-relic
    - infrastructure
    - store-technology
capability:
  exposes:
    - type: mcp
      namespace: infra-health
      port: 8080
      tools:
        - name: get-store-infra-health
          description: "Retrieve New Relic infrastructure health for a Circle K store."
          inputParameters:
            - name: host_name
              in: body
              type: string
              description: "The New Relic host name."
          call: "newrelic.get-host"
          with:
            host_name: "{{host_name}}"
  consumes:
    - type: http
      namespace: newrelic
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: apikey
        key: "$secrets.newrelic_api_key"
      resources:
        - name: hosts
          path: "/servers.json"
          inputParameters:
            - name: host_name
              in: query
          operations:
            - name: get-host
              method: GET

Retrieves financial summary reports from Oracle Fusion for Circle K corporate finance, returning revenue, fuel margins, and merchandise profit data.

naftiko: "0.5"
info:
  label: "Oracle Fusion Financial Report"
  description: "Retrieves financial summary reports from Oracle Fusion for Circle K corporate finance, returning revenue, fuel margins, and merchandise profit data."
  tags:
    - finance
    - oracle-fusion
    - erp
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: erp-finance
      port: 8080
      tools:
        - name: get-financial-report
          description: "Retrieve a financial summary report from Oracle Fusion."
          inputParameters:
            - name: fiscal_period
              in: body
              type: string
              description: "The fiscal period to query."
          call: "oracle-fusion.get-financial-summary"
          with:
            fiscal_period: "{{fiscal_period}}"
  consumes:
    - type: http
      namespace: oracle-fusion
      baseUri: "https://circlek.oraclecloud.com/fscmRestApi/resources/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_fusion_token"
      resources:
        - name: financial-summaries
          path: "/financialSummaries"
          inputParameters:
            - name: fiscal_period
              in: query
          operations:
            - name: get-financial-summary
              method: GET

Queries Oracle Fusion for current merchandise inventory levels at Circle K stores, returning item quantities, reorder points, and low-stock flags.

naftiko: "0.5"
info:
  label: "Oracle Fusion Merchandise Inventory Check"
  description: "Queries Oracle Fusion for current merchandise inventory levels at Circle K stores, returning item quantities, reorder points, and low-stock flags."
  tags:
    - inventory
    - oracle
    - merchandise
    - convenience-store
capability:
  exposes:
    - type: mcp
      namespace: merch-inventory
      port: 8080
      tools:
        - name: check-merch-inventory
          description: "Check merchandise inventory at a Circle K store."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The store number."
            - name: item_number
              in: body
              type: string
              description: "The inventory item number."
          call: "oracle.get-inventory"
          with:
            store_number: "{{store_number}}"
            item_number: "{{item_number}}"
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://circlek-erp.oracle.com/fscmRestApi/resources/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: inventory-balances
          path: "/inventoryBalances"
          inputParameters:
            - name: store_number
              in: query
            - name: item_number
              in: query
          operations:
            - name: get-inventory
              method: GET

Retrieves active security alerts from Palo Alto Networks for Circle K's network perimeter and store connectivity.

naftiko: "0.5"
info:
  label: "Palo Alto Networks Security Monitoring"
  description: "Retrieves active security alerts from Palo Alto Networks for Circle K's network perimeter and store connectivity."
  tags:
    - security
    - palo-alto-networks
    - network
    - threat-detection
capability:
  exposes:
    - type: mcp
      namespace: network-security
      port: 8080
      tools:
        - name: get-security-alerts
          description: "Retrieve active security alerts from Palo Alto Networks."
          inputParameters:
            - name: severity
              in: body
              type: string
              description: "Alert severity filter."
          call: "paloalto.get-alerts"
          with:
            severity: "{{severity}}"
  consumes:
    - type: http
      namespace: paloalto
      baseUri: "https://circlek-fw.paloaltonetworks.com/restapi/v10.2"
      authentication:
        type: apikey
        key: "$secrets.paloalto_api_key"
      resources:
        - name: alerts
          path: "/Incidents"
          inputParameters:
            - name: severity
              in: query
          operations:
            - name: get-alerts
              method: GET

Assigns Pluralsight training courses to Circle K team members for compliance and professional development.

naftiko: "0.5"
info:
  label: "Pluralsight Training Assignment"
  description: "Assigns Pluralsight training courses to Circle K team members for compliance and professional development."
  tags:
    - training
    - pluralsight
    - learning
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: learning-mgmt
      port: 8080
      tools:
        - name: assign-training-course
          description: "Assign a Pluralsight training course."
          inputParameters:
            - name: user_email
              in: body
              type: string
              description: "The team member's email."
            - name: course_id
              in: body
              type: string
              description: "The Pluralsight course ID."
          call: "pluralsight.assign-course"
          with:
            email: "{{user_email}}"
            course_id: "{{course_id}}"
  consumes:
    - type: http
      namespace: pluralsight
      baseUri: "https://api.pluralsight.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.pluralsight_token"
      resources:
        - name: assignments
          path: "/assignments"
          operations:
            - name: assign-course
              method: POST

Manages POS system upgrades by deploying packages via Azure DevOps, verifying installation in Datadog, and reporting rollout status in Jira.

naftiko: "0.5"
info:
  label: "POS System Upgrade Rollout Pipeline"
  description: "Manages POS system upgrades by deploying packages via Azure DevOps, verifying installation in Datadog, and reporting rollout status in Jira."
  tags:
    - it-operations
    - azure-devops
    - datadog
    - jira
    - pos-systems
capability:
  exposes:
    - type: mcp
      namespace: pos-upgrade
      port: 8080
      tools:
        - name: rollout-pos-upgrade
          description: "Roll out a POS system upgrade to Circle K stores."
          inputParameters:
            - name: version
              in: body
              type: string
              description: "The POS software version."
            - name: store_batch
              in: body
              type: string
              description: "The store batch identifier."
          steps:
            - name: trigger-deployment
              type: call
              call: "azure-devops.trigger-pipeline"
              with:
                pipeline: "pos-upgrade"
                parameters: "{version: '{{version}}', batch: '{{store_batch}}'}"
            - name: verify-installation
              type: call
              call: "datadog.query-metrics"
              with:
                query: "sum:circlek.pos.version.{{version}}{batch:{{store_batch}}}"
            - name: update-tracking
              type: call
              call: "jira.update-issue"
              with:
                issue_key: "POSUPGRADE-{{version}}"
                status: "In Progress"
                comment: "Batch {{store_batch}} deployed. Verified: {{verify-installation.confirmed_count}} stores. Pending: {{verify-installation.pending_count}}."
  consumes:
    - type: http
      namespace: azure-devops
      baseUri: "https://dev.azure.com/circlek/POS/_apis/pipelines"
      authentication:
        type: bearer
        token: "$secrets.azure_devops_token"
      resources:
        - name: pipelines
          path: "/{{pipeline}}/runs"
          inputParameters:
            - name: pipeline
              in: path
          operations:
            - name: trigger-pipeline
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: api-key
        key: "$secrets.datadog_api_key"
      resources:
        - name: metrics
          path: "/query"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: query-metrics
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://circlek.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue/{{issue_key}}"
          inputParameters:
            - name: issue_key
              in: path
          operations:
            - name: update-issue
              method: PUT

Triggers a Power BI dataset refresh for Circle K store performance dashboards and returns the refresh status.

naftiko: "0.5"
info:
  label: "Power BI Store Performance Dashboard"
  description: "Triggers a Power BI dataset refresh for Circle K store performance dashboards and returns the refresh status."
  tags:
    - analytics
    - power-bi
    - dashboards
    - store-performance
capability:
  exposes:
    - type: mcp
      namespace: bi-dashboards
      port: 8080
      tools:
        - name: refresh-store-dashboard
          description: "Trigger a Power BI dataset refresh for store performance."
          inputParameters:
            - name: group_id
              in: body
              type: string
              description: "The Power BI workspace ID."
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID."
          call: "powerbi.refresh-dataset"
          with:
            group_id: "{{group_id}}"
            dataset_id: "{{dataset_id}}"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/groups/{{group_id}}/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: group_id
              in: path
            - name: dataset_id
              in: path
          operations:
            - name: refresh-dataset
              method: POST

Updates store price books by fetching new pricing from SAP, pushing updates to POS systems via Azure Data Factory, and notifying store managers via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Price Book Update Pipeline"
  description: "Updates store price books by fetching new pricing from SAP, pushing updates to POS systems via Azure Data Factory, and notifying store managers via Microsoft Teams."
  tags:
    - pricing
    - sap
    - azure-data-factory
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: price-book
      port: 8080
      tools:
        - name: update-price-book
          description: "Update store price books across POS systems."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "The target region."
            - name: category
              in: body
              type: string
              description: "The merchandise category."
          steps:
            - name: get-new-prices
              type: call
              call: "sap.get-price-list"
              with:
                region: "{{region}}"
                category: "{{category}}"
            - name: deploy-to-pos
              type: call
              call: "adf.trigger-pipeline"
              with:
                pipeline: "price_book_deploy"
                parameters: "{region: '{{region}}', category: '{{category}}', items: {{get-new-prices.item_count}}}"
            - name: notify-managers
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "store_operations"
                channel_id: "pricing"
                text: "Price book updated for {{region}} - {{category}}: {{get-new-prices.item_count}} items updated. Deploy status: {{deploy-to-pos.status}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://circlek-s4.sap.com/sap/opu/odata/sap/PRICING_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: price-lists
          path: "/PriceLists"
          inputParameters:
            - name: region
              in: query
            - name: category
              in: query
          operations:
            - name: get-price-list
              method: GET
    - type: http
      namespace: adf
      baseUri: "https://management.azure.com/subscriptions/circlek-sub/resourceGroups/data-rg/providers/Microsoft.DataFactory/factories/circlek-adf"
      authentication:
        type: bearer
        token: "$secrets.azure_token"
      resources:
        - name: pipelines
          path: "/pipelines/{{pipeline}}/createRun"
          inputParameters:
            - name: pipeline
              in: path
          operations:
            - name: trigger-pipeline
              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/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Triggers a Qlik Sense app reload for Circle K fuel margin analysis and returns the task status.

naftiko: "0.5"
info:
  label: "Qlik Sense Fuel Margin Analysis"
  description: "Triggers a Qlik Sense app reload for Circle K fuel margin analysis and returns the task status."
  tags:
    - analytics
    - qlik-sense
    - fuel-pricing
    - margin-analysis
capability:
  exposes:
    - type: mcp
      namespace: fuel-analytics
      port: 8080
      tools:
        - name: reload-fuel-margin-report
          description: "Trigger a Qlik Sense app reload for fuel margin analysis."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "The Qlik Sense app ID."
          call: "qlik.reload-app"
          with:
            app_id: "{{app_id}}"
  consumes:
    - type: http
      namespace: qlik
      baseUri: "https://circlek.us.qlikcloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.qlik_token"
      resources:
        - name: reloads
          path: "/reloads"
          operations:
            - name: reload-app
              method: POST

Retrieves store operations reports from QlikView for Circle K regional management, returning key metrics on transactions, shrinkage, and labor hours.

naftiko: "0.5"
info:
  label: "QlikView Store Operations Report"
  description: "Retrieves store operations reports from QlikView for Circle K regional management, returning key metrics on transactions, shrinkage, and labor hours."
  tags:
    - analytics
    - qlikview
    - store-operations
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: store-reports
      port: 8080
      tools:
        - name: get-store-operations-report
          description: "Retrieve a store operations report from QlikView."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "The operational region."
            - name: report_date
              in: body
              type: string
              description: "The report date."
          call: "qlikview.get-report"
          with:
            app_id: "store_operations"
            region: "{{region}}"
            date: "{{report_date}}"
  consumes:
    - type: http
      namespace: qlikview
      baseUri: "https://circlek-qlik.qlikcloud.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.qlikview_token"
      resources:
        - name: reports
          path: "/apps/{{app_id}}/objects/report"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: get-report
              method: GET

Generates quarterly business reviews by pulling financial data from Oracle Fusion, fuel metrics from Snowflake, and creating presentations in Confluence.

naftiko: "0.5"
info:
  label: "Quarterly Business Review Pipeline"
  description: "Generates quarterly business reviews by pulling financial data from Oracle Fusion, fuel metrics from Snowflake, and creating presentations in Confluence."
  tags:
    - finance
    - oracle-fusion
    - snowflake
    - confluence
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: qbr-generation
      port: 8080
      tools:
        - name: generate-qbr
          description: "Generate quarterly business review materials."
          inputParameters:
            - name: quarter
              in: body
              type: string
              description: "The fiscal quarter."
            - name: business_unit
              in: body
              type: string
              description: "The business unit."
          steps:
            - name: get-financials
              type: call
              call: "oracle-fusion.get-financial-summary"
              with:
                period: "{{quarter}}"
                unit: "{{business_unit}}"
            - name: get-fuel-metrics
              type: call
              call: "snowflake.execute-statement"
              with:
                statement: "SELECT total_gallons, fuel_margin, comp_growth FROM fuel_quarterly_summary WHERE quarter = '{{quarter}}' AND bu = '{{business_unit}}'"
            - name: create-review
              type: call
              call: "confluence.create-page"
              with:
                space_key: "QBR"
                title: "QBR {{quarter}} - {{business_unit}}"
                body: "Revenue: ${{get-financials.revenue}}. Fuel volume: {{get-fuel-metrics.total_gallons}} gal. Fuel margin: {{get-fuel-metrics.fuel_margin}}cpg. Comp growth: {{get-fuel-metrics.comp_growth}}%."
  consumes:
    - type: http
      namespace: oracle-fusion
      baseUri: "https://circlek.oraclecloud.com/fscmRestApi/resources/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_fusion_token"
      resources:
        - name: financials
          path: "/financialSummaries"
          inputParameters:
            - name: period
              in: query
            - name: unit
              in: query
          operations:
            - name: get-financial-summary
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://circlek.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: confluence
      baseUri: "https://circlek.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST

Aggregates regional sales performance by pulling data from Snowflake, generating dashboards in Tableau, and distributing reports via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Regional Sales Performance Pipeline"
  description: "Aggregates regional sales performance by pulling data from Snowflake, generating dashboards in Tableau, and distributing reports via Microsoft Teams."
  tags:
    - sales
    - snowflake
    - tableau
    - microsoft-teams
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: regional-sales
      port: 8080
      tools:
        - name: generate-regional-sales-report
          description: "Generate and distribute regional sales performance reports."
          inputParameters:
            - name: region
              in: body
              type: string
              description: "The sales region."
            - name: period
              in: body
              type: string
              description: "The reporting period."
          steps:
            - name: get-sales-data
              type: call
              call: "snowflake.execute-statement"
              with:
                statement: "SELECT * FROM regional_sales_summary WHERE region = '{{region}}' AND period = '{{period}}'"
            - name: refresh-dashboard
              type: call
              call: "tableau.refresh-extract"
              with:
                workbook: "regional_sales"
                datasource: "sales_by_region"
            - name: distribute-report
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "regional_managers"
                channel_id: "{{region}}"
                text: "Sales report for {{region}} ({{period}}): Revenue=${{get-sales-data.total_revenue}}, Fuel volume={{get-sales-data.fuel_gallons}} gal, Merch=${{get-sales-data.merchandise_revenue}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://circlek.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: tableau
      baseUri: "https://circlek.online.tableau.com/api/3.14"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: extracts
          path: "/sites/circlek/workbooks/{{workbook}}/refresh"
          inputParameters:
            - name: workbook
              in: path
          operations:
            - name: refresh-extract
              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/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Retrieves a Circle K loyalty member profile from Salesforce, returning points balance, tier status, and recent transaction history.

naftiko: "0.5"
info:
  label: "Salesforce Customer Loyalty Lookup"
  description: "Retrieves a Circle K loyalty member profile from Salesforce, returning points balance, tier status, and recent transaction history."
  tags:
    - crm
    - salesforce
    - loyalty
    - customer-management
capability:
  exposes:
    - type: mcp
      namespace: crm-loyalty
      port: 8080
      tools:
        - name: get-loyalty-member
          description: "Retrieve a Circle K loyalty member profile from Salesforce."
          inputParameters:
            - name: member_id
              in: body
              type: string
              description: "The loyalty member ID."
          call: "salesforce.query-member"
          with:
            q: "SELECT Id, Name, Points_Balance__c, Tier__c, Email FROM Loyalty_Member__c WHERE Member_ID__c = '{{member_id}}'"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://circlek.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: query
          path: "/query"
          inputParameters:
            - name: q
              in: query
          operations:
            - name: query-member
              method: GET

Retrieves expense report details from SAP Concur for Circle K corporate travel and expense management, returning line items and approval status.

naftiko: "0.5"
info:
  label: "SAP Concur Expense Report Lookup"
  description: "Retrieves expense report details from SAP Concur for Circle K corporate travel and expense management, returning line items and approval status."
  tags:
    - finance
    - sap-concur
    - expense-management
    - travel
capability:
  exposes:
    - type: mcp
      namespace: expense-management
      port: 8080
      tools:
        - name: get-expense-report
          description: "Retrieve an expense report from SAP Concur."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "The Concur expense report ID."
          call: "concur.get-report"
          with:
            report_id: "{{report_id}}"
  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

When a travel expense is submitted in SAP Concur, validates amounts, creates a journal entry in Oracle Financials, and notifies the approver via Microsoft Teams.

naftiko: "0.5"
info:
  label: "SAP Concur Travel Expense Processing"
  description: "When a travel expense is submitted in SAP Concur, validates amounts, creates a journal entry in Oracle Financials, and notifies the approver via Microsoft Teams."
  tags:
    - finance
    - sap-concur
    - oracle
    - microsoft-teams
    - expense-management
capability:
  exposes:
    - type: mcp
      namespace: expense-processing
      port: 8080
      tools:
        - name: process-travel-expense
          description: "Process a SAP Concur expense report through validation, Oracle sync, and approver notification."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "The SAP Concur expense report ID."
          steps:
            - name: get-expense-report
              type: call
              call: "concur.get-report"
              with:
                report_id: "{{report_id}}"
            - name: create-oracle-entry
              type: call
              call: "oracle.create-journal-entry"
              with:
                amount: "{{get-expense-report.total_amount}}"
                currency: "{{get-expense-report.currency}}"
                employee_id: "{{get-expense-report.employee_id}}"
            - name: notify-approver
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-expense-report.approver_email}}"
                text: "Expense Report {{report_id}} for ${{get-expense-report.total_amount}} from {{get-expense-report.employee_name}} is pending approval. Oracle journal: {{create-oracle-entry.journal_id}}."
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: expense-reports
          path: "/expense/reports/{{report_id}}"
          inputParameters:
            - name: report_id
              in: path
          operations:
            - name: get-report
              method: GET
    - type: http
      namespace: oracle
      baseUri: "https://circlek-erp.oracle.com/fscmRestApi/resources/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: journal-entries
          path: "/journalEntries"
          operations:
            - name: create-journal-entry
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

Queries SAP HANA for real-time fuel inventory levels across Circle K store locations, returning tank levels, fuel grades, and reorder alerts.

naftiko: "0.5"
info:
  label: "SAP HANA Fuel Inventory Query"
  description: "Queries SAP HANA for real-time fuel inventory levels across Circle K store locations, returning tank levels, fuel grades, and reorder alerts."
  tags:
    - fuel-management
    - sap-hana
    - inventory
    - convenience-store
capability:
  exposes:
    - type: mcp
      namespace: fuel-inventory
      port: 8080
      tools:
        - name: get-fuel-inventory
          description: "Query SAP HANA for fuel inventory levels at a Circle K store."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The Circle K store number."
          call: "sap-hana.query-fuel-levels"
          with:
            store_number: "{{store_number}}"
  consumes:
    - type: http
      namespace: sap-hana
      baseUri: "https://circlek-hana.sap.com/api/v1"
      authentication:
        type: basic
        username: "$secrets.sap_hana_user"
        password: "$secrets.sap_hana_password"
      resources:
        - name: fuel-levels
          path: "/fuel-inventory"
          inputParameters:
            - name: store_number
              in: query
          operations:
            - name: query-fuel-levels
              method: GET

Looks up a SAP purchase order by number and returns header status, vendor, total value, and delivery date for Circle K supply chain operations.

naftiko: "0.5"
info:
  label: "SAP Purchase Order Status"
  description: "Looks up a SAP purchase order by number and returns header status, vendor, total value, and delivery date for Circle K supply chain operations."
  tags:
    - procurement
    - erp
    - sap
    - purchase-order
    - supply-chain
capability:
  exposes:
    - type: mcp
      namespace: erp-procurement
      port: 8080
      tools:
        - name: get-purchase-order
          description: "Look up a SAP purchase order by PO number."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number (10-digit)."
          call: "sap.get-po"
          with:
            po_number: "{{po_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.d.OverallStatus"
            - name: vendor
              type: string
              mapping: "$.d.Supplier.CompanyName"
            - name: total_value
              type: string
              mapping: "$.d.TotalAmount"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://circlek-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('{{po_number}}')"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET

Fetches the current status of a ServiceNow incident by number for Circle K IT support operations.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Status"
  description: "Fetches the current status of a ServiceNow incident by number for Circle K IT support operations."
  tags:
    - it-support
    - servicenow
    - incident-management
capability:
  exposes:
    - type: mcp
      namespace: itsm-incidents
      port: 8080
      tools:
        - name: get-incident-status
          description: "Retrieve a ServiceNow incident by number."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number."
          call: "servicenow.get-incident"
          with:
            number: "{{incident_number}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://circlek.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          inputParameters:
            - name: number
              in: query
          operations:
            - name: get-incident
              method: GET

Searches Circle K SharePoint document libraries for operational manuals and compliance documents.

naftiko: "0.5"
info:
  label: "SharePoint Document Library Search"
  description: "Searches Circle K SharePoint document libraries for operational manuals and compliance documents."
  tags:
    - document-management
    - sharepoint
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: doc-search
      port: 8080
      tools:
        - name: search-sharepoint-docs
          description: "Search SharePoint document libraries."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "The search query."
            - name: site_id
              in: body
              type: string
              description: "The SharePoint site ID."
          call: "sharepoint.search-docs"
          with:
            site_id: "{{site_id}}"
            query: "{{query}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: search
          path: "/sites/{{site_id}}/drive/root/search(q='{{query}}')"
          inputParameters:
            - name: site_id
              in: path
            - name: query
              in: path
          operations:
            - name: search-docs
              method: GET

Manages Sip and Save drink promotions by segmenting customers in Snowflake, generating offers in Salesforce, and distributing via mobile push through AWS Lambda.

naftiko: "0.5"
info:
  label: "Sip and Save Promotion Pipeline"
  description: "Manages Sip and Save drink promotions by segmenting customers in Snowflake, generating offers in Salesforce, and distributing via mobile push through AWS Lambda."
  tags:
    - promotions
    - snowflake
    - salesforce
    - aws-lambda
    - loyalty
capability:
  exposes:
    - type: mcp
      namespace: sip-and-save
      port: 8080
      tools:
        - name: run-sip-and-save-promotion
          description: "Execute a Sip and Save drink promotion campaign."
          inputParameters:
            - name: promotion_id
              in: body
              type: string
              description: "The promotion identifier."
            - name: region
              in: body
              type: string
              description: "The target region."
          steps:
            - name: segment-customers
              type: call
              call: "snowflake.execute-statement"
              with:
                statement: "SELECT member_id, beverage_preference FROM loyalty_members WHERE region = '{{region}}' AND beverage_frequency > 3"
            - name: generate-offers
              type: call
              call: "salesforce.create-campaign"
              with:
                name: "Sip and Save: {{promotion_id}} - {{region}}"
                type: "Loyalty_Promotion"
                target_count: "{{segment-customers.count}}"
            - name: send-notifications
              type: call
              call: "lambda.invoke-function"
              with:
                function_name: "promotion-notifier"
                payload: "{promotion: '{{promotion_id}}', region: '{{region}}', campaign_id: '{{generate-offers.campaign_id}}', member_count: {{segment-customers.count}}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://circlek.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: salesforce
      baseUri: "https://circlek.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: campaigns
          path: "/sobjects/Campaign"
          operations:
            - name: create-campaign
              method: POST
    - type: http
      namespace: lambda
      baseUri: "https://lambda.us-east-1.amazonaws.com/2015-03-31"
      authentication:
        type: bearer
        token: "$secrets.aws_lambda_token"
      resources:
        - name: functions
          path: "/functions/{{function_name}}/invocations"
          inputParameters:
            - name: function_name
              in: path
          operations:
            - name: invoke-function
              method: POST

Executes a Snowflake SQL query against Circle K's analytics warehouse for store sales performance, product mix analysis, and regional trends.

naftiko: "0.5"
info:
  label: "Snowflake Sales Analytics Query"
  description: "Executes a Snowflake SQL query against Circle K's analytics warehouse for store sales performance, product mix analysis, and regional trends."
  tags:
    - data-warehouse
    - snowflake
    - sales-analytics
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: analytics-warehouse
      port: 8080
      tools:
        - name: query-sales-data
          description: "Execute a Snowflake analytics query for sales data."
          inputParameters:
            - name: sql
              in: body
              type: string
              description: "The SQL query to execute."
          call: "snowflake.execute-statement"
          with:
            statement: "{{sql}}"
            warehouse: "CIRCLEK_ANALYTICS_WH"
            database: "CIRCLEK_ANALYTICS"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://circlek.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-statement
              method: POST

Manages social media marketing by pulling campaign assets from Box, publishing to Facebook and Instagram, and tracking engagement in Google Analytics.

naftiko: "0.5"
info:
  label: "Social Media Marketing Pipeline"
  description: "Manages social media marketing by pulling campaign assets from Box, publishing to Facebook and Instagram, and tracking engagement in Google Analytics."
  tags:
    - marketing
    - box
    - facebook
    - instagram
    - google-analytics
capability:
  exposes:
    - type: mcp
      namespace: social-marketing
      port: 8080
      tools:
        - name: run-social-campaign
          description: "Execute a social media marketing campaign across platforms."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "The marketing campaign ID."
            - name: platform
              in: body
              type: string
              description: "The target social platform."
          steps:
            - name: get-assets
              type: call
              call: "box.get-folder-items"
              with:
                folder_id: "social_{{campaign_id}}"
            - name: publish-content
              type: call
              call: "facebook.create-post"
              with:
                page_id: "circlek_official"
                message: "{{get-assets.caption}}"
                media_url: "{{get-assets.primary_asset_url}}"
            - name: track-engagement
              type: call
              call: "google-analytics.create-event"
              with:
                category: "social_campaign"
                action: "{{platform}}_publish"
                label: "{{campaign_id}}"
  consumes:
    - type: http
      namespace: box
      baseUri: "https://api.box.com/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: folders
          path: "/folders/{{folder_id}}/items"
          inputParameters:
            - name: folder_id
              in: path
          operations:
            - name: get-folder-items
              method: GET
    - type: http
      namespace: facebook
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.facebook_page_token"
      resources:
        - name: posts
          path: "/{{page_id}}/feed"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: create-post
              method: POST
    - type: http
      namespace: google-analytics
      baseUri: "https://www.google-analytics.com/mp/collect"
      authentication:
        type: api-key
        key: "$secrets.google_analytics_key"
      resources:
        - name: events
          path: "/"
          operations:
            - name: create-event
              method: POST

Queries SolarWinds for network health at Circle K store locations.

naftiko: "0.5"
info:
  label: "SolarWinds Store Network Monitor"
  description: "Queries SolarWinds for network health at Circle K store locations."
  tags:
    - network-monitoring
    - solarwinds
    - store-infrastructure
capability:
  exposes:
    - type: mcp
      namespace: network-monitoring
      port: 8080
      tools:
        - name: get-store-network-health
          description: "Retrieve SolarWinds network health for a Circle K store."
          inputParameters:
            - name: node_id
              in: body
              type: string
              description: "The SolarWinds node ID."
          call: "solarwinds.get-node"
          with:
            node_id: "{{node_id}}"
  consumes:
    - type: http
      namespace: solarwinds
      baseUri: "https://circlek-solarwinds.com:17778/SolarWinds/InformationService/v3/Json"
      authentication:
        type: basic
        username: "$secrets.solarwinds_user"
        password: "$secrets.solarwinds_password"
      resources:
        - name: nodes
          path: "/Query"
          inputParameters:
            - name: node_id
              in: query
          operations:
            - name: get-node
              method: GET

Ensures new employee onboarding compliance by checking Workday profiles, assigning Pluralsight training, and tracking completion in Jira.

naftiko: "0.5"
info:
  label: "Store Employee Onboarding Compliance Pipeline"
  description: "Ensures new employee onboarding compliance by checking Workday profiles, assigning Pluralsight training, and tracking completion in Jira."
  tags:
    - hr
    - workday
    - pluralsight
    - jira
    - onboarding
capability:
  exposes:
    - type: mcp
      namespace: onboarding-compliance
      port: 8080
      tools:
        - name: verify-onboarding-compliance
          description: "Verify onboarding compliance for a new Circle K store employee."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The employee ID."
            - name: store_number
              in: body
              type: string
              description: "The assigned store number."
          steps:
            - name: get-employee-profile
              type: call
              call: "workday.get-worker"
              with:
                employee_id: "{{employee_id}}"
            - name: assign-training
              type: call
              call: "pluralsight.assign-channel"
              with:
                user_email: "{{get-employee-profile.email}}"
                channel_id: "circlek_store_onboarding"
            - name: create-tracking
              type: call
              call: "jira.create-issue"
              with:
                project: "HR"
                summary: "Onboarding: {{get-employee-profile.name}} - Store {{store_number}}"
                description: "Assigned {{assign-training.course_count}} training modules. Target: 14 days. Role: {{get-employee-profile.job_title}}."
                issue_type: "Task"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://circlek.workday.com/api/staffing/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{employee_id}}"
          inputParameters:
            - name: employee_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: pluralsight
      baseUri: "https://api.pluralsight.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.pluralsight_token"
      resources:
        - name: channels
          path: "/channels/assign"
          operations:
            - name: assign-channel
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://circlek.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder for training docs, and sends a Microsoft Teams welcome message to the new store associate.

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

Validates new store opening readiness by checking equipment status in ServiceNow, verifying POS configuration in Snowflake, and notifying operations via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Store Opening Readiness Pipeline"
  description: "Validates new store opening readiness by checking equipment status in ServiceNow, verifying POS configuration in Snowflake, and notifying operations via Microsoft Teams."
  tags:
    - store-operations
    - servicenow
    - snowflake
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: store-opening
      port: 8080
      tools:
        - name: validate-store-opening
          description: "Validate readiness for a new Circle K store opening."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The new store number."
            - name: opening_date
              in: body
              type: string
              description: "The planned opening date."
          steps:
            - name: check-equipment
              type: call
              call: "servicenow.get-assets"
              with:
                location: "store-{{store_number}}"
                status: "installed"
            - name: verify-pos
              type: call
              call: "snowflake.execute-statement"
              with:
                statement: "SELECT config_status, test_result FROM pos_configurations WHERE store = '{{store_number}}'"
            - name: notify-ops
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "store_operations"
                channel_id: "new_openings"
                text: "Store {{store_number}} opening readiness: Equipment={{check-equipment.installed_count}}/{{check-equipment.required_count}}, POS={{verify-pos.config_status}}. Target: {{opening_date}}."
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://circlek.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: assets
          path: "/table/alm_hardware"
          inputParameters:
            - name: location
              in: query
            - name: status
              in: query
          operations:
            - name: get-assets
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://circlek.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/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Tracks store renovation projects by pulling milestones from Jira, monitoring budget in Oracle Fusion, and reporting status via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Store Renovation Project Tracking Pipeline"
  description: "Tracks store renovation projects by pulling milestones from Jira, monitoring budget in Oracle Fusion, and reporting status via Microsoft Teams."
  tags:
    - facilities
    - jira
    - oracle-fusion
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: renovation-tracking
      port: 8080
      tools:
        - name: track-renovation
          description: "Track a store renovation project across planning and finance."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "The Jira project key."
            - name: store_number
              in: body
              type: string
              description: "The store number."
          steps:
            - name: get-milestones
              type: call
              call: "jira.get-project-issues"
              with:
                project: "{{project_key}}"
                type: "milestone"
            - name: get-budget
              type: call
              call: "oracle-fusion.get-project-cost"
              with:
                project_id: "RENO_{{store_number}}"
            - name: report-status
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "facilities"
                channel_id: "renovations"
                text: "Store {{store_number}} renovation: {{get-milestones.completed}}/{{get-milestones.total}} milestones. Budget: ${{get-budget.spent}}/${{get-budget.allocated}} ({{get-budget.pct_used}}%)."
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://circlek.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/search"
          operations:
            - name: get-project-issues
              method: GET
    - type: http
      namespace: oracle-fusion
      baseUri: "https://circlek.oraclecloud.com/fscmRestApi/resources/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_fusion_token"
      resources:
        - name: costs
          path: "/projectCosts"
          inputParameters:
            - name: project_id
              in: query
          operations:
            - name: get-project-cost
              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/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

When merchandise inventory drops below threshold, creates a replenishment order in SAP, confirms warehouse availability in Oracle, and notifies the store via Microsoft Teams with estimated delivery.

naftiko: "0.5"
info:
  label: "Store Replenishment Orchestrator"
  description: "When merchandise inventory drops below threshold, creates a replenishment order in SAP, confirms warehouse availability in Oracle, and notifies the store via Microsoft Teams with estimated delivery."
  tags:
    - supply-chain
    - sap
    - oracle
    - microsoft-teams
    - replenishment
capability:
  exposes:
    - type: mcp
      namespace: store-replenishment
      port: 8080
      tools:
        - name: trigger-replenishment
          description: "Orchestrate store replenishment through SAP, Oracle, and Teams notification."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The Circle K store number."
            - name: item_number
              in: body
              type: string
              description: "The item requiring replenishment."
            - name: quantity
              in: body
              type: integer
              description: "The quantity to order."
          steps:
            - name: create-sap-order
              type: call
              call: "sap.create-purchase-order"
              with:
                store_number: "{{store_number}}"
                item_number: "{{item_number}}"
                quantity: "{{quantity}}"
            - name: check-warehouse
              type: call
              call: "oracle.get-inventory"
              with:
                store_number: "WAREHOUSE_CENTRAL"
                item_number: "{{item_number}}"
            - name: notify-store
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "store_{{store_number}}"
                channel_id: "replenishment"
                text: "Replenishment order created for item {{item_number}} (qty: {{quantity}}). PO: {{create-sap-order.po_number}}. Warehouse stock: {{check-warehouse.quantity_on_hand}}."
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://circlek-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: create-purchase-order
              method: POST
    - type: http
      namespace: oracle
      baseUri: "https://circlek-erp.oracle.com/fscmRestApi/resources/v1"
      authentication:
        type: basic
        username: "$secrets.oracle_user"
        password: "$secrets.oracle_password"
      resources:
        - name: inventory-balances
          path: "/inventoryBalances"
          inputParameters:
            - name: store_number
              in: query
            - name: item_number
              in: query
          operations:
            - name: get-inventory
              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/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Processes security camera alerts by pulling event data from Datadog, creating incident tickets in ServiceNow, and notifying loss prevention via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Store Security Camera Alert Pipeline"
  description: "Processes security camera alerts by pulling event data from Datadog, creating incident tickets in ServiceNow, and notifying loss prevention via Microsoft Teams."
  tags:
    - security
    - datadog
    - servicenow
    - microsoft-teams
    - loss-prevention
capability:
  exposes:
    - type: mcp
      namespace: security-alerts
      port: 8080
      tools:
        - name: process-security-alert
          description: "Process a security camera alert across monitoring and ticketing systems."
          inputParameters:
            - name: alert_id
              in: body
              type: string
              description: "The security alert ID."
            - name: store_number
              in: body
              type: string
              description: "The Circle K store number."
          steps:
            - name: get-alert-details
              type: call
              call: "datadog.get-event"
              with:
                event_id: "{{alert_id}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Security alert at store {{store_number}}: {{get-alert-details.event_type}}"
                urgency: "2"
                category: "security"
                description: "Camera: {{get-alert-details.camera_id}}. Time: {{get-alert-details.timestamp}}. Type: {{get-alert-details.event_type}}."
            - name: notify-lp-team
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "loss_prevention"
                channel_id: "alerts"
                text: "Security alert at store {{store_number}}: {{get-alert-details.event_type}}. Camera: {{get-alert-details.camera_id}}. Ticket: {{create-incident.number}}."
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: api-key
        key: "$secrets.datadog_api_key"
      resources:
        - name: events
          path: "/events/{{event_id}}"
          inputParameters:
            - name: event_id
              in: path
          operations:
            - name: get-event
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://circlek.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/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Investigates store shrinkage by analyzing inventory variances in Snowflake, correlating with POS exceptions in Databricks, and creating investigation cases in Salesforce.

naftiko: "0.5"
info:
  label: "Store Shrinkage Investigation Pipeline"
  description: "Investigates store shrinkage by analyzing inventory variances in Snowflake, correlating with POS exceptions in Databricks, and creating investigation cases in Salesforce."
  tags:
    - loss-prevention
    - snowflake
    - databricks
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: shrinkage-investigation
      port: 8080
      tools:
        - name: investigate-shrinkage
          description: "Investigate store shrinkage through inventory and POS analysis."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The Circle K store number."
            - name: period
              in: body
              type: string
              description: "The investigation period."
          steps:
            - name: get-inventory-variance
              type: call
              call: "snowflake.execute-statement"
              with:
                statement: "SELECT category, variance_amount, variance_pct FROM inventory_shrinkage WHERE store = '{{store_number}}' AND period = '{{period}}' ORDER BY variance_amount DESC"
            - name: analyze-exceptions
              type: call
              call: "databricks.invoke-endpoint"
              with:
                endpoint: "pos_exception_analyzer"
                inputs: "{store: '{{store_number}}', period: '{{period}}'}"
            - name: create-investigation
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Shrinkage investigation: Store {{store_number}} ({{period}})"
                description: "Total variance: ${{get-inventory-variance.total_variance}}. Top category: {{get-inventory-variance.top_category}}. POS exceptions: {{analyze-exceptions.exception_count}}."
                priority: "High"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://circlek.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: databricks
      baseUri: "https://circlek.cloud.databricks.com/serving-endpoints"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: endpoints
          path: "/{{endpoint}}/invocations"
          inputParameters:
            - name: endpoint
              in: path
          operations:
            - name: invoke-endpoint
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://circlek.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST

Evaluates potential store sites by running demographic analysis in Alteryx, checking traffic data via Google Maps, and recording evaluations in Salesforce.

naftiko: "0.5"
info:
  label: "Store Site Selection Pipeline"
  description: "Evaluates potential store sites by running demographic analysis in Alteryx, checking traffic data via Google Maps, and recording evaluations in Salesforce."
  tags:
    - real-estate
    - alteryx
    - google-maps
    - salesforce
    - site-selection
capability:
  exposes:
    - type: mcp
      namespace: site-selection
      port: 8080
      tools:
        - name: evaluate-store-site
          description: "Evaluate a potential new Circle K store site."
          inputParameters:
            - name: site_address
              in: body
              type: string
              description: "The potential site address."
            - name: market_id
              in: body
              type: string
              description: "The target market."
          steps:
            - name: run-demographics
              type: call
              call: "alteryx.run-workflow"
              with:
                workflow_id: "site_demographic_analysis"
                params: "{address: '{{site_address}}', market: '{{market_id}}'}"
            - name: check-traffic
              type: call
              call: "google-maps.get-place-details"
              with:
                address: "{{site_address}}"
            - name: record-evaluation
              type: call
              call: "salesforce.create-opportunity"
              with:
                name: "New Site: {{site_address}}"
                stage: "Evaluation"
                description: "Population: {{run-demographics.population}}. Median income: ${{run-demographics.median_income}}. Daily traffic: {{check-traffic.daily_traffic}}. Competitor proximity: {{run-demographics.nearest_competitor_miles}} mi."
  consumes:
    - type: http
      namespace: alteryx
      baseUri: "https://circlek-alteryx.alteryx.com/api/v3"
      authentication:
        type: bearer
        token: "$secrets.alteryx_token"
      resources:
        - name: workflows
          path: "/workflows/{{workflow_id}}/run"
          inputParameters:
            - name: workflow_id
              in: path
          operations:
            - name: run-workflow
              method: POST
    - type: http
      namespace: google-maps
      baseUri: "https://maps.googleapis.com/maps/api"
      authentication:
        type: api-key
        key: "$secrets.google_maps_key"
      resources:
        - name: places
          path: "/place/details/json"
          inputParameters:
            - name: address
              in: query
          operations:
            - name: get-place-details
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://circlek.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity"
          operations:
            - name: create-opportunity
              method: POST

Triggers a Tableau workbook refresh for Circle K regional sales data and returns the updated dashboard URL.

naftiko: "0.5"
info:
  label: "Tableau Regional Sales Dashboard"
  description: "Triggers a Tableau workbook refresh for Circle K regional sales data and returns the updated dashboard URL."
  tags:
    - analytics
    - tableau
    - sales
    - regional-performance
capability:
  exposes:
    - type: mcp
      namespace: analytics-dashboards
      port: 8080
      tools:
        - name: refresh-regional-dashboard
          description: "Trigger a Tableau workbook refresh for regional sales."
          inputParameters:
            - name: workbook_id
              in: body
              type: string
              description: "The Tableau workbook ID."
          call: "tableau.refresh-workbook"
          with:
            workbook_id: "{{workbook_id}}"
  consumes:
    - type: http
      namespace: tableau
      baseUri: "https://circlek.online.tableau.com/api/3.19"
      authentication:
        type: bearer
        token: "$secrets.tableau_token"
      resources:
        - name: workbooks
          path: "/sites/{{site_id}}/workbooks/{{workbook_id}}/refresh"
          inputParameters:
            - name: workbook_id
              in: path
            - name: site_id
              in: path
          operations:
            - name: refresh-workbook
              method: POST

Monitors tobacco age verification compliance by pulling POS transaction data from Snowflake, checking violation records in ServiceNow, and alerting compliance officers via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Tobacco Age Verification Compliance Pipeline"
  description: "Monitors tobacco age verification compliance by pulling POS transaction data from Snowflake, checking violation records in ServiceNow, and alerting compliance officers via Microsoft Teams."
  tags:
    - compliance
    - snowflake
    - servicenow
    - microsoft-teams
    - regulatory
capability:
  exposes:
    - type: mcp
      namespace: age-verification
      port: 8080
      tools:
        - name: check-age-verification-compliance
          description: "Check tobacco age verification compliance for a store."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The Circle K store number."
            - name: period
              in: body
              type: string
              description: "The audit period."
          steps:
            - name: get-verification-data
              type: call
              call: "snowflake.execute-statement"
              with:
                statement: "SELECT total_tobacco_txns, verified_count, bypass_count FROM age_verification_log WHERE store = '{{store_number}}' AND period = '{{period}}'"
            - name: check-violations
              type: call
              call: "servicenow.get-violations"
              with:
                store: "{{store_number}}"
                category: "age_verification"
            - name: alert-compliance
              type: call
              call: "msteams.send-channel-message"
              with:
                team_id: "compliance"
                channel_id: "age_verification"
                text: "Age verification report for store {{store_number}}: Verified {{get-verification-data.verified_count}}/{{get-verification-data.total_tobacco_txns}}. Bypasses: {{get-verification-data.bypass_count}}. Open violations: {{check-violations.count}}."
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://circlek.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: servicenow
      baseUri: "https://circlek.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: violations
          path: "/table/compliance_violation"
          inputParameters:
            - name: store
              in: query
            - name: category
              in: query
          operations:
            - name: get-violations
              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/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-channel-message
              method: POST

Tracks vendor deliveries by checking purchase orders in SAP, monitoring delivery status via Google Maps, and updating receiving in Oracle Fusion.

naftiko: "0.5"
info:
  label: "Vendor Delivery Tracking Pipeline"
  description: "Tracks vendor deliveries by checking purchase orders in SAP, monitoring delivery status via Google Maps, and updating receiving in Oracle Fusion."
  tags:
    - supply-chain
    - sap
    - google-maps
    - oracle-fusion
capability:
  exposes:
    - type: mcp
      namespace: delivery-tracking
      port: 8080
      tools:
        - name: track-vendor-delivery
          description: "Track a vendor delivery from purchase order to store receiving."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number."
            - name: store_number
              in: body
              type: string
              description: "The destination store number."
          steps:
            - name: get-po-details
              type: call
              call: "sap.get-purchase-order"
              with:
                po_number: "{{po_number}}"
            - name: track-location
              type: call
              call: "google-maps.get-directions"
              with:
                origin: "{{get-po-details.ship_from}}"
                destination: "store-{{store_number}}"
            - name: update-receiving
              type: call
              call: "oracle-fusion.update-receipt"
              with:
                po_number: "{{po_number}}"
                eta: "{{track-location.duration}}"
                status: "in_transit"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://circlek-s4.sap.com/sap/opu/odata/sap/PO_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: purchase-orders
          path: "/PurchaseOrders('{{po_number}}')"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-purchase-order
              method: GET
    - type: http
      namespace: google-maps
      baseUri: "https://maps.googleapis.com/maps/api"
      authentication:
        type: api-key
        key: "$secrets.google_maps_key"
      resources:
        - name: directions
          path: "/directions/json"
          inputParameters:
            - name: origin
              in: query
            - name: destination
              in: query
          operations:
            - name: get-directions
              method: GET
    - type: http
      namespace: oracle-fusion
      baseUri: "https://circlek.oraclecloud.com/fscmRestApi/resources/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_fusion_token"
      resources:
        - name: receipts
          path: "/receivingReceipts"
          operations:
            - name: update-receipt
              method: PATCH

Processes vendor invoices by matching SAP purchase orders, validating receipts in Oracle Fusion, and creating payment records in SAP Ariba.

naftiko: "0.5"
info:
  label: "Vendor Invoice Processing Pipeline"
  description: "Processes vendor invoices by matching SAP purchase orders, validating receipts in Oracle Fusion, and creating payment records in SAP Ariba."
  tags:
    - finance
    - sap
    - oracle-fusion
    - sap-ariba
    - accounts-payable
capability:
  exposes:
    - type: mcp
      namespace: invoice-processing
      port: 8080
      tools:
        - name: process-vendor-invoice
          description: "Process a vendor invoice through matching and payment."
          inputParameters:
            - name: invoice_number
              in: body
              type: string
              description: "The vendor invoice number."
            - name: vendor_id
              in: body
              type: string
              description: "The vendor identifier."
          steps:
            - name: match-po
              type: call
              call: "sap.get-purchase-order"
              with:
                invoice_ref: "{{invoice_number}}"
                vendor_id: "{{vendor_id}}"
            - name: validate-receipt
              type: call
              call: "oracle-fusion.get-receipt"
              with:
                po_number: "{{match-po.po_number}}"
            - name: create-payment
              type: call
              call: "ariba.create-payment-request"
              with:
                invoice: "{{invoice_number}}"
                po_amount: "{{match-po.amount}}"
                receipt_amount: "{{validate-receipt.amount}}"
                vendor_id: "{{vendor_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://circlek-s4.sap.com/sap/opu/odata/sap/PO_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: purchase-orders
          path: "/PurchaseOrders"
          inputParameters:
            - name: invoice_ref
              in: query
            - name: vendor_id
              in: query
          operations:
            - name: get-purchase-order
              method: GET
    - type: http
      namespace: oracle-fusion
      baseUri: "https://circlek.oraclecloud.com/fscmRestApi/resources/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_fusion_token"
      resources:
        - name: receipts
          path: "/receivingReceipts"
          inputParameters:
            - name: po_number
              in: query
          operations:
            - name: get-receipt
              method: GET
    - type: http
      namespace: ariba
      baseUri: "https://circlek.ariba.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.ariba_token"
      resources:
        - name: payments
          path: "/paymentRequests"
          operations:
            - name: create-payment-request
              method: POST

Retrieves a Workday employee profile by worker ID for Circle K HR operations.

naftiko: "0.5"
info:
  label: "Workday Employee Profile Lookup"
  description: "Retrieves a Workday employee profile by worker ID for Circle K HR operations."
  tags:
    - hr
    - workday
    - employee-management
capability:
  exposes:
    - type: mcp
      namespace: hr-employees
      port: 8080
      tools:
        - name: get-employee-profile
          description: "Retrieve a Workday employee profile by worker ID."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_id}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET

Retrieves employee shift schedules from Workday for Circle K store operations, returning upcoming shifts, coverage gaps, and overtime status.

naftiko: "0.5"
info:
  label: "Workday Employee Schedule Lookup"
  description: "Retrieves employee shift schedules from Workday for Circle K store operations, returning upcoming shifts, coverage gaps, and overtime status."
  tags:
    - hr
    - workday
    - scheduling
    - workforce-management
capability:
  exposes:
    - type: mcp
      namespace: employee-schedules
      port: 8080
      tools:
        - name: get-employee-schedule
          description: "Retrieve employee shift schedules from Workday."
          inputParameters:
            - name: store_number
              in: body
              type: string
              description: "The Circle K store number."
            - name: week
              in: body
              type: string
              description: "The schedule week."
          call: "workday.get-schedules"
          with:
            location: "{{store_number}}"
            week: "{{week}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://circlek.workday.com/api/staffing/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: schedules
          path: "/workers/schedules"
          inputParameters:
            - name: location
              in: query
            - name: week
              in: query
          operations:
            - name: get-schedules
              method: GET

Searches Zendesk support tickets for Circle K customer feedback patterns, returning ticket themes, resolution times, and satisfaction scores.

naftiko: "0.5"
info:
  label: "Zendesk Customer Feedback Search"
  description: "Searches Zendesk support tickets for Circle K customer feedback patterns, returning ticket themes, resolution times, and satisfaction scores."
  tags:
    - customer-service
    - zendesk
    - feedback
    - support
capability:
  exposes:
    - type: mcp
      namespace: customer-feedback
      port: 8080
      tools:
        - name: search-customer-feedback
          description: "Search Zendesk for customer feedback tickets."
          inputParameters:
            - name: search_query
              in: body
              type: string
              description: "The search query string."
            - name: date_range
              in: body
              type: string
              description: "The date range for search."
          call: "zendesk.search-tickets"
          with:
            query: "{{search_query}}"
            created: "{{date_range}}"
  consumes:
    - type: http
      namespace: zendesk
      baseUri: "https://circlek.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: tickets
          path: "/search.json"
          inputParameters:
            - name: query
              in: query
          operations:
            - name: search-tickets
              method: GET

Retrieves Zendesk customer support ticket details for Circle K customer service operations.

naftiko: "0.5"
info:
  label: "Zendesk Customer Support Ticket Lookup"
  description: "Retrieves Zendesk customer support ticket details for Circle K customer service operations."
  tags:
    - customer-service
    - zendesk
    - support
    - tickets
capability:
  exposes:
    - type: mcp
      namespace: customer-support
      port: 8080
      tools:
        - name: get-support-ticket
          description: "Retrieve a Zendesk support ticket by ticket ID."
          inputParameters:
            - name: ticket_id
              in: body
              type: string
              description: "The Zendesk ticket ID."
          call: "zendesk.get-ticket"
          with:
            ticket_id: "{{ticket_id}}"
  consumes:
    - type: http
      namespace: zendesk
      baseUri: "https://circlek.zendesk.com/api/v2"
      authentication:
        type: basic
        username: "$secrets.zendesk_user"
        password: "$secrets.zendesk_token"
      resources:
        - name: tickets
          path: "/tickets/{{ticket_id}}"
          inputParameters:
            - name: ticket_id
              in: path
          operations:
            - name: get-ticket
              method: GET

Creates Zoom meetings for Circle K regional manager calls and training sessions.

naftiko: "0.5"
info:
  label: "Zoom Meeting Scheduler"
  description: "Creates Zoom meetings for Circle K regional manager calls and training sessions."
  tags:
    - communications
    - zoom
    - meetings
capability:
  exposes:
    - type: mcp
      namespace: meeting-mgmt
      port: 8080
      tools:
        - name: create-zoom-meeting
          description: "Create a Zoom meeting."
          inputParameters:
            - name: topic
              in: body
              type: string
              description: "The meeting topic."
            - name: start_time
              in: body
              type: string
              description: "Start time in ISO 8601 format."
            - name: duration
              in: body
              type: integer
              description: "Meeting duration in minutes."
          call: "zoom.create-meeting"
          with:
            topic: "{{topic}}"
            start_time: "{{start_time}}"
            duration: "{{duration}}"
  consumes:
    - 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