CircleK Capabilities
Naftiko 0.5 capability definitions for CircleK - 100 capabilities showing integration workflows and service orchestrations.
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