Dollar General Capabilities
Naftiko 0.5 capability definitions for Dollar General - 100 capabilities showing integration workflows and service orchestrations.
Reviews access at Dollar General via Okta, IAM, and Jira.
naftiko: "0.5"
info:
label: "Access Review Pipeline"
description: "Reviews access at Dollar General via Okta, IAM, and Jira."
tags:
- security
- access-management
- okta
- compliance
capability:
exposes:
- type: mcp
namespace: access-rev
port: 8080
tools:
- name: review
description: "Review access at Dollar General."
inputParameters:
- name: dept
in: body
type: string
description: "Department."
steps:
- name: ent
type: call
call: "okta.get-users"
with:
dept: "{{dept}}"
- name: compare
type: call
call: "iam.compare"
with:
data: "{{ent.data}}"
- name: flag
type: call
call: "iam.flag"
with:
violations: "{{compare.violations}}"
- name: fix
type: call
call: "jira.create-issue"
with:
project: "IAM"
summary: "Violations in {{dept}}"
consumes:
- type: http
namespace: okta
baseUri: "https://dg.com.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_api_token"
resources:
- name: users
path: "/users"
operations:
- name: get-users
method: GET
- type: http
namespace: iam
baseUri: "https://iam.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.iam_token"
resources:
- name: reviews
path: "/compare"
operations:
- name: compare
method: POST
- type: http
namespace: jira
baseUri: "https://dg.com.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Manages API deprecation at Dollar General via consumer identification, notices, and tracking.
naftiko: "0.5"
info:
label: "API Deprecation Pipeline"
description: "Manages API deprecation at Dollar General via consumer identification, notices, and tracking."
tags:
- api-management
- communications
- governance
capability:
exposes:
- type: mcp
namespace: api-sunset
port: 8080
tools:
- name: notify-sunset
description: "Manage API sunset at Dollar General."
inputParameters:
- name: api
in: body
type: string
description: "API name."
- name: date
in: body
type: string
description: "Sunset date."
steps:
- name: consumers
type: call
call: "api-gw.consumers"
with:
api: "{{api}}"
- name: notify
type: call
call: "email.batch"
with:
to: "{{consumers.emails}}"
subject: "{{api}} sunset: {{date}}"
- name: track
type: call
call: "analytics.usage"
with:
api: "{{api}}"
- name: ticket
type: call
call: "jira.create-issue"
with:
project: "API"
summary: "Sunset {{api}} by {{date}}"
consumes:
- type: http
namespace: api-gw
baseUri: "https://api-gw.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.api_gw_token"
resources:
- name: consumers
path: "/apis/{{api}}/consumers"
inputParameters:
- name: api
in: path
operations:
- name: consumers
method: GET
- type: http
namespace: email
baseUri: "https://email.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.email_token"
resources:
- name: batch
path: "/send-batch"
operations:
- name: batch
method: POST
- type: http
namespace: analytics
baseUri: "https://analytics.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.analytics_token"
resources:
- name: usage
path: "/api-usage"
operations:
- name: usage
method: GET
- type: http
namespace: jira
baseUri: "https://dg.com.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
When store inventory for a product drops below the reorder point, creates a purchase requisition in SAP and notifies the district manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Automatic Reorder Pipeline"
description: "When store inventory for a product drops below the reorder point, creates a purchase requisition in SAP and notifies the district manager via Microsoft Teams."
tags:
- inventory
- procurement
- supply-chain
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: auto-reorder
port: 8080
tools:
- name: trigger-reorder
description: "Trigger an automatic reorder when inventory falls below threshold."
inputParameters:
- name: store_number
in: body
type: string
description: "The Dollar General store number."
- name: sku
in: body
type: string
description: "The product SKU."
- name: current_quantity
in: body
type: number
description: "Current on-hand quantity."
- name: reorder_quantity
in: body
type: number
description: "Quantity to reorder."
steps:
- name: create-requisition
type: call
call: "sap.create-purchase-req"
with:
plant: "{{store_number}}"
material: "{{sku}}"
quantity: "{{reorder_quantity}}"
- name: notify-dm
type: call
call: "msteams.send-message"
with:
channel_id: "district-{{store_number}}"
text: "Auto-reorder triggered for store {{store_number}}: SKU {{sku}} at {{current_quantity}} units. PR {{create-requisition.pr_number}} created for {{reorder_quantity}} units."
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_PURCHASEREQ_PROCESS_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: purchase-requisitions
path: "/A_PurchaseRequisitionHeader"
operations:
- name: create-purchase-req
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Checks S3 bucket at Dollar General.
naftiko: "0.5"
info:
label: "S3 Bucket Stats"
description: "Checks S3 bucket at Dollar General."
tags:
- storage
- aws
- s3
capability:
exposes:
- type: mcp
namespace: s3-stats
port: 8080
tools:
- name: get-bucket
description: "Get bucket stats at Dollar General."
inputParameters:
- name: bucket
in: body
type: string
description: "Bucket."
call: "s3.get-stats"
with:
bucket: "{{bucket}}"
outputParameters:
- name: objects
type: number
mapping: "$.NumberOfObjects"
consumes:
- type: http
namespace: s3
baseUri: "https://s3.amazonaws.com"
authentication:
type: bearer
token: "$secrets.aws_token"
resources:
- name: buckets
path: "/{{bucket}}?metrics"
inputParameters:
- name: bucket
in: path
operations:
- name: get-stats
method: GET
Checks build at Dollar General.
naftiko: "0.5"
info:
label: "Azure DevOps Build Check"
description: "Checks build at Dollar General."
tags:
- devops
- azure-devops
- ci-cd
capability:
exposes:
- type: mcp
namespace: azdo-build
port: 8080
tools:
- name: check-build
description: "Check build at Dollar General."
inputParameters:
- name: project
in: body
type: string
description: "Project."
- name: build_id
in: body
type: string
description: "Build ID."
call: "azdo.get-build"
with:
project: "{{project}}"
build_id: "{{build_id}}"
outputParameters:
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: azdo
baseUri: "https://dev.azure.com/dg.com"
authentication:
type: bearer
token: "$secrets.azdo_token"
resources:
- name: builds
path: "/{{project}}/_apis/build/builds/{{build_id}}"
inputParameters:
- name: project
in: path
- name: build_id
in: path
operations:
- name: get-build
method: GET
Checks Azure resource at Dollar General.
naftiko: "0.5"
info:
label: "Azure Resource Health"
description: "Checks Azure resource at Dollar General."
tags:
- cloud
- azure
- infrastructure
capability:
exposes:
- type: mcp
namespace: az-health
port: 8080
tools:
- name: check-resource
description: "Check resource at Dollar General."
inputParameters:
- name: resource_id
in: body
type: string
description: "Resource ID."
call: "azure.get-health"
with:
id: "{{resource_id}}"
outputParameters:
- name: state
type: string
mapping: "$.properties.availabilityState"
consumes:
- type: http
namespace: azure
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_token"
resources:
- name: health
path: "/{{id}}/providers/Microsoft.ResourceHealth/availabilityStatuses/current"
inputParameters:
- name: id
in: path
operations:
- name: get-health
method: GET
Verifies backups at Dollar General.
naftiko: "0.5"
info:
label: "Backup Verification Pipeline"
description: "Verifies backups at Dollar General."
tags:
- database
- backup
- operations
capability:
exposes:
- type: mcp
namespace: backup-verify
port: 8080
tools:
- name: verify-backups
description: "Verify backups at Dollar General."
inputParameters:
- name: db
in: body
type: string
description: "Database."
- name: date
in: body
type: string
description: "Backup date."
steps:
- name: status
type: call
call: "backup.get-status"
with:
db: "{{db}}"
date: "{{date}}"
- name: verify
type: call
call: "backup.verify"
with:
id: "{{status.backup_id}}"
- name: log
type: call
call: "snowflake.query"
with:
query: "INSERT INTO backup_log VALUES ('{{db}}','{{date}}','{{verify.status}}')"
- name: alert
type: call
call: "slack.post-message"
with:
channel: "#dba"
text: "Backup {{db}}: {{verify.status}}"
consumes:
- type: http
namespace: backup
baseUri: "https://backup.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.backup_token"
resources:
- name: backups
path: "/databases/{{db}}/status"
inputParameters:
- name: db
in: path
operations:
- name: get-status
method: GET
- type: http
namespace: snowflake
baseUri: "https://dg.com.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: query
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Analyzes budget variance at Dollar General via Oracle, Workday, and Slack.
naftiko: "0.5"
info:
label: "Budget Variance Pipeline"
description: "Analyzes budget variance at Dollar General via Oracle, Workday, and Slack."
tags:
- finance
- budget
- oracle
- workday
capability:
exposes:
- type: mcp
namespace: budget-var
port: 8080
tools:
- name: analyze-variance
description: "Check budget variance at Dollar General."
inputParameters:
- name: cc
in: body
type: string
description: "Cost center."
- name: period
in: body
type: string
description: "Period."
steps:
- name: actuals
type: call
call: "oracle.get-actuals"
with:
cc: "{{cc}}"
period: "{{period}}"
- name: budget
type: call
call: "workday.get-budget"
with:
cc: "{{cc}}"
- name: compute
type: call
call: "analytics.variance"
with:
a: "{{actuals.total}}"
b: "{{budget.total}}"
- name: alert
type: call
call: "slack.post-message"
with:
channel: "#finance"
text: "Variance {{cc}}: ${{compute.variance}}"
consumes:
- type: http
namespace: oracle
baseUri: "https://oracle.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.oracle_token"
resources:
- name: fin
path: "/actuals"
operations:
- name: get-actuals
method: GET
- type: http
namespace: workday
baseUri: "https://wd5.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: budgets
path: "/budgets"
operations:
- name: get-budget
method: GET
- type: http
namespace: analytics
baseUri: "https://analytics.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.analytics_token"
resources:
- name: var
path: "/compute"
operations:
- name: variance
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Plans capacity at Dollar General by collecting utilization and forecasting.
naftiko: "0.5"
info:
label: "Capacity Planning Pipeline"
description: "Plans capacity at Dollar General by collecting utilization and forecasting."
tags:
- infrastructure
- capacity-planning
- forecasting
capability:
exposes:
- type: mcp
namespace: capacity
port: 8080
tools:
- name: plan-capacity
description: "Plan capacity at Dollar General."
inputParameters:
- name: resource
in: body
type: string
description: "Resource type."
- name: months
in: body
type: number
description: "Forecast months."
steps:
- name: util
type: call
call: "monitoring.get-util"
with:
resource: "{{resource}}"
- name: forecast
type: call
call: "analytics.forecast"
with:
current: "{{util.pct}}"
months: "{{months}}"
- name: procure
type: call
call: "servicenow.create-request"
with:
type: "capacity"
resource: "{{resource}}"
- name: dashboard
type: call
call: "power-bi.refresh"
with:
dataset: "capacity"
consumes:
- type: http
namespace: monitoring
baseUri: "https://monitoring.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.monitoring_token"
resources:
- name: util
path: "/resources/{{resource}}/util"
inputParameters:
- name: resource
in: path
operations:
- name: get-util
method: GET
- type: http
namespace: analytics
baseUri: "https://analytics.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.analytics_token"
resources:
- name: forecast
path: "/demand"
operations:
- name: forecast
method: POST
- type: http
namespace: servicenow
baseUri: "https://dg.com.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- type: http
namespace: power-bi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.power_bi_token"
resources:
- name: datasets
path: "/datasets/{{dataset}}/refreshes"
inputParameters:
- name: dataset
in: path
operations:
- name: refresh
method: POST
Monitors cert expiry at Dollar General.
naftiko: "0.5"
info:
label: "Certificate Expiry Pipeline"
description: "Monitors cert expiry at Dollar General."
tags:
- security
- certificates
- monitoring
capability:
exposes:
- type: mcp
namespace: cert-monitor
port: 8080
tools:
- name: check-certs
description: "Monitor certs at Dollar General."
inputParameters:
- name: domains
in: body
type: string
description: "Domains to check."
steps:
- name: scan
type: call
call: "cert-scanner.scan"
with:
domains: "{{domains}}"
- name: filter
type: call
call: "analytics.filter-expiring"
with:
certs: "{{scan.results}}"
- name: ticket
type: call
call: "jira.create-issue"
with:
project: "SEC"
summary: "{{filter.count}} certs expiring"
- name: alert
type: call
call: "slack.post-message"
with:
channel: "#security"
text: "Cert alert: {{filter.count}} expiring"
consumes:
- type: http
namespace: cert-scanner
baseUri: "https://certs.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.cert_token"
resources:
- name: scans
path: "/scan"
operations:
- name: scan
method: POST
- type: http
namespace: jira
baseUri: "https://dg.com.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Routes changes at Dollar General through ServiceNow and CAB approval.
naftiko: "0.5"
info:
label: "Change Management Pipeline"
description: "Routes changes at Dollar General through ServiceNow and CAB approval."
tags:
- change-management
- servicenow
- itil
capability:
exposes:
- type: mcp
namespace: change-mgmt
port: 8080
tools:
- name: process-change
description: "Process changes at Dollar General."
inputParameters:
- name: change_id
in: body
type: string
description: "Change ID."
- name: date
in: body
type: string
description: "Date."
steps:
- name: get
type: call
call: "servicenow.get-change"
with:
id: "{{change_id}}"
- name: conflicts
type: call
call: "servicenow.check-conflicts"
with:
date: "{{date}}"
- name: submit
type: call
call: "servicenow.update"
with:
id: "{{change_id}}"
state: "approval"
- name: notify
type: call
call: "email.send"
with:
to: "cab@co.com"
subject: "CAB: {{change_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://dg.com.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: changes
path: "/table/change_request/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-change
method: GET
- type: http
namespace: email
baseUri: "https://email.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.email_token"
resources:
- name: messages
path: "/send"
operations:
- name: send
method: POST
Optimizes cloud costs at Dollar General via Azure, FinOps, Jira, and Power BI.
naftiko: "0.5"
info:
label: "Cloud Cost Optimization Pipeline"
description: "Optimizes cloud costs at Dollar General via Azure, FinOps, Jira, and Power BI."
tags:
- cloud
- cost-management
- finops
capability:
exposes:
- type: mcp
namespace: cloud-opt
port: 8080
tools:
- name: optimize
description: "Optimize cloud costs at Dollar General."
inputParameters:
- name: provider
in: body
type: string
description: "Provider."
- name: range
in: body
type: string
description: "Range."
steps:
- name: spend
type: call
call: "cloud.get-costs"
with:
provider: "{{provider}}"
range: "{{range}}"
- name: savings
type: call
call: "finops.analyze"
with:
data: "{{spend.data}}"
- name: action
type: call
call: "jira.create-issue"
with:
project: "FINOPS"
summary: "Save ${{savings.potential}}"
- name: report
type: call
call: "power-bi.refresh"
with:
dataset: "cloud"
consumes:
- type: http
namespace: cloud
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_token"
resources:
- name: costs
path: "/providers/Microsoft.CostManagement/query"
operations:
- name: get-costs
method: POST
- type: http
namespace: finops
baseUri: "https://finops.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.finops_token"
resources:
- name: analysis
path: "/savings"
operations:
- name: analyze
method: POST
- type: http
namespace: jira
baseUri: "https://dg.com.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: power-bi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.power_bi_token"
resources:
- name: datasets
path: "/datasets/{{dataset}}/refreshes"
inputParameters:
- name: dataset
in: path
operations:
- name: refresh
method: POST
Checks CloudWatch alarm at Dollar General.
naftiko: "0.5"
info:
label: "CloudWatch Alarm Check"
description: "Checks CloudWatch alarm at Dollar General."
tags:
- monitoring
- aws
- cloudwatch
capability:
exposes:
- type: mcp
namespace: cw-alarm
port: 8080
tools:
- name: check-alarm
description: "Check alarm at Dollar General."
inputParameters:
- name: alarm
in: body
type: string
description: "Alarm name."
call: "cw.describe-alarm"
with:
alarm: "{{alarm}}"
outputParameters:
- name: state
type: string
mapping: "$.MetricAlarms[0].StateValue"
consumes:
- type: http
namespace: cw
baseUri: "https://monitoring.us-east-1.amazonaws.com"
authentication:
type: bearer
token: "$secrets.aws_token"
resources:
- name: alarms
path: "/"
operations:
- name: describe-alarm
method: GET
Retrieves current pricing data from Circana market intelligence for a product category and compares against Dollar General's pricing in SAP.
naftiko: "0.5"
info:
label: "Competitor Price Comparison"
description: "Retrieves current pricing data from Circana market intelligence for a product category and compares against Dollar General's pricing in SAP."
tags:
- pricing
- analytics
- circana
- sap
capability:
exposes:
- type: mcp
namespace: competitor-pricing
port: 8080
tools:
- name: compare-competitor-prices
description: "Compare Dollar General pricing against competitor market data."
inputParameters:
- name: category
in: body
type: string
description: "The product category."
- name: region
in: body
type: string
description: "The geographic region."
steps:
- name: get-market-data
type: call
call: "circana.get-pricing-data"
with:
category: "{{category}}"
region: "{{region}}"
- name: get-dg-pricing
type: call
call: "sap.get-category-pricing"
with:
category: "{{category}}"
region: "{{region}}"
consumes:
- type: http
namespace: circana
baseUri: "https://api.circana.com/v1"
authentication:
type: bearer
token: "$secrets.circana_token"
resources:
- name: pricing
path: "/market-data/pricing"
operations:
- name: get-pricing-data
method: GET
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_SLSPRICINGCONDITIONRECORD_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: pricing
path: "/A_SlsPrcgCndnRecdValidity"
operations:
- name: get-category-pricing
method: GET
Searches Confluence at Dollar General.
naftiko: "0.5"
info:
label: "Confluence Article Search"
description: "Searches Confluence at Dollar General."
tags:
- knowledge-management
- confluence
- documentation
capability:
exposes:
- type: mcp
namespace: confluence-search
port: 8080
tools:
- name: search-articles
description: "Search Confluence at Dollar General."
inputParameters:
- name: query
in: body
type: string
description: "Query."
call: "confluence.search"
with:
query: "{{query}}"
outputParameters:
- name: title
type: string
mapping: "$.results[0].title"
consumes:
- type: http
namespace: confluence
baseUri: "https://dg.com.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: content
path: "/content/search"
operations:
- name: search
method: GET
Tracks contract renewals at Dollar General via contracts system, email, Jira, and Salesforce.
naftiko: "0.5"
info:
label: "Contract Renewal Pipeline"
description: "Tracks contract renewals at Dollar General via contracts system, email, Jira, and Salesforce."
tags:
- procurement
- contracts
- salesforce
- jira
capability:
exposes:
- type: mcp
namespace: contract-renew
port: 8080
tools:
- name: track
description: "Track renewals at Dollar General."
inputParameters:
- name: contract_id
in: body
type: string
description: "Contract ID."
- name: owner
in: body
type: string
description: "Owner email."
steps:
- name: get
type: call
call: "contracts.get"
with:
id: "{{contract_id}}"
- name: remind
type: call
call: "email.send"
with:
to: "{{owner}}"
subject: "Renewal: {{contract_id}}"
- name: task
type: call
call: "jira.create-issue"
with:
project: "PROC"
summary: "Renew {{contract_id}}"
- name: crm
type: call
call: "salesforce.update"
with:
id: "{{contract_id}}"
stage: "Renewal"
consumes:
- type: http
namespace: contracts
baseUri: "https://contracts.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.contracts_token"
resources:
- name: contracts
path: "/contracts/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get
method: GET
- type: http
namespace: email
baseUri: "https://email.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.email_token"
resources:
- name: messages
path: "/send"
operations:
- name: send
method: POST
- type: http
namespace: jira
baseUri: "https://dg.com.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: salesforce
baseUri: "https://dg.com.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opps
path: "/sobjects/Opportunity"
operations:
- name: update
method: PATCH
Reallocates costs at Dollar General.
naftiko: "0.5"
info:
label: "Cost Reallocation Pipeline"
description: "Reallocates costs at Dollar General."
tags:
- finance
- cost-allocation
- oracle
capability:
exposes:
- type: mcp
namespace: cost-realloc
port: 8080
tools:
- name: reallocate
description: "Reallocate costs at Dollar General."
inputParameters:
- name: source
in: body
type: string
description: "Source CC."
- name: target
in: body
type: string
description: "Target CC."
- name: amount
in: body
type: number
description: "Amount."
steps:
- name: current
type: call
call: "oracle.get-alloc"
with:
cc: "{{source}}"
- name: compute
type: call
call: "analytics.realloc"
with:
source: "{{source}}"
target: "{{target}}"
amount: "{{amount}}"
- name: post
type: call
call: "oracle.post-journal"
with:
entries: "{{compute.entries}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#finance"
text: "Reallocated ${{amount}} from {{source}} to {{target}}"
consumes:
- type: http
namespace: oracle
baseUri: "https://oracle.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.oracle_token"
resources:
- name: allocations
path: "/cost-centers/{{cc}}/allocations"
inputParameters:
- name: cc
in: path
operations:
- name: get-alloc
method: GET
- type: http
namespace: analytics
baseUri: "https://analytics.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.analytics_token"
resources:
- name: realloc
path: "/compute"
operations:
- name: realloc
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Monitors data pipelines at Dollar General via Databricks, Snowflake, Slack, and ServiceNow.
naftiko: "0.5"
info:
label: "Data Pipeline Monitor Pipeline"
description: "Monitors data pipelines at Dollar General via Databricks, Snowflake, Slack, and ServiceNow."
tags:
- data-engineering
- databricks
- monitoring
- slack
capability:
exposes:
- type: mcp
namespace: pipeline-mon
port: 8080
tools:
- name: monitor
description: "Monitor pipelines at Dollar General."
inputParameters:
- name: pipeline_id
in: body
type: string
description: "Pipeline ID."
steps:
- name: status
type: call
call: "databricks.get-run"
with:
id: "{{pipeline_id}}"
- name: quality
type: call
call: "snowflake.query"
with:
query: "SELECT COUNT(*) FROM out WHERE p='{{pipeline_id}}'"
- name: alert
type: call
call: "slack.post-message"
with:
channel: "#data"
text: "Pipeline {{pipeline_id}}: {{status.state}}"
- name: incident
type: call
call: "servicenow.create-incident"
with:
desc: "Pipeline {{pipeline_id}} issue"
consumes:
- type: http
namespace: databricks
baseUri: "https://dg.com.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/runs/get"
operations:
- name: get-run
method: GET
- type: http
namespace: snowflake
baseUri: "https://dg.com.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: query
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
- type: http
namespace: servicenow
baseUri: "https://dg.com.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
Manages data retention at Dollar General.
naftiko: "0.5"
info:
label: "Data Retention Pipeline"
description: "Manages data retention at Dollar General."
tags:
- data-governance
- compliance
- retention
capability:
exposes:
- type: mcp
namespace: retention
port: 8080
tools:
- name: cleanup
description: "Manage retention at Dollar General."
inputParameters:
- name: policy
in: body
type: string
description: "Policy ID."
steps:
- name: find
type: call
call: "catalog.find-expired"
with:
policy: "{{policy}}"
- name: archive
type: call
call: "storage.archive"
with:
records: "{{find.ids}}"
- name: delete
type: call
call: "db.delete"
with:
ids: "{{find.ids}}"
- name: log
type: call
call: "snowflake.query"
with:
query: "INSERT INTO retention_log VALUES ('{{policy}}',{{find.count}})"
consumes:
- type: http
namespace: catalog
baseUri: "https://catalog.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.catalog_token"
resources:
- name: policies
path: "/expired"
operations:
- name: find-expired
method: GET
- type: http
namespace: storage
baseUri: "https://storage.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.storage_token"
resources:
- name: archives
path: "/archive"
operations:
- name: archive
method: POST
- type: http
namespace: db
baseUri: "https://db.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.db_token"
resources:
- name: records
path: "/delete"
operations:
- name: delete
method: POST
- type: http
namespace: snowflake
baseUri: "https://dg.com.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: query
method: POST
Checks Datadog monitor at Dollar General.
naftiko: "0.5"
info:
label: "Datadog Monitor Check"
description: "Checks Datadog monitor at Dollar General."
tags:
- monitoring
- datadog
- observability
capability:
exposes:
- type: mcp
namespace: dd-monitor
port: 8080
tools:
- name: check-monitor
description: "Check monitor at Dollar General."
inputParameters:
- name: monitor_id
in: body
type: string
description: "Monitor ID."
call: "datadog.get-monitor"
with:
monitor_id: "{{monitor_id}}"
outputParameters:
- name: status
type: string
mapping: "$.overall_state"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
Initiates an inventory transfer between distribution centers in SAP to balance stock levels across the network.
naftiko: "0.5"
info:
label: "DC Inventory Transfer"
description: "Initiates an inventory transfer between distribution centers in SAP to balance stock levels across the network."
tags:
- supply-chain
- inventory
- sap
capability:
exposes:
- type: mcp
namespace: dc-transfers
port: 8080
tools:
- name: transfer-dc-inventory
description: "Initiate an inventory transfer between distribution centers."
inputParameters:
- name: source_dc
in: body
type: string
description: "The source distribution center."
- name: destination_dc
in: body
type: string
description: "The destination distribution center."
- name: sku
in: body
type: string
description: "The product SKU."
- name: quantity
in: body
type: number
description: "Quantity to transfer."
call: "sap.create-stock-transfer"
with:
from_plant: "{{source_dc}}"
to_plant: "{{destination_dc}}"
material: "{{sku}}"
quantity: "{{quantity}}"
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_STOCK_TRANSFER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: transfers
path: "/A_StockTransfer"
operations:
- name: create-stock-transfer
method: POST
Retrieves a Dollar General app customer profile including loyalty points, digital coupon clip history, and purchase preferences.
naftiko: "0.5"
info:
label: "DG App Customer Lookup"
description: "Retrieves a Dollar General app customer profile including loyalty points, digital coupon clip history, and purchase preferences."
tags:
- customer
- loyalty
- store-ops
capability:
exposes:
- type: mcp
namespace: customer-profile
port: 8080
tools:
- name: get-customer-profile
description: "Look up a DG app customer profile."
inputParameters:
- name: customer_id
in: body
type: string
description: "The DG app customer identifier."
call: "dg-loyalty.get-customer"
with:
customer_id: "{{customer_id}}"
consumes:
- type: http
namespace: dg-loyalty
baseUri: "https://api.dollargeneral.com/loyalty/v1"
authentication:
type: bearer
token: "$secrets.dg_loyalty_token"
resources:
- name: customers
path: "/customers/{{customer_id}}"
inputParameters:
- name: customer_id
in: path
operations:
- name: get-customer
method: GET
Monitors fresh produce inventory levels and expiration dates from SAP, flagging items approaching sell-by date for markdown or disposal.
naftiko: "0.5"
info:
label: "DG Fresh Produce Tracker"
description: "Monitors fresh produce inventory levels and expiration dates from SAP, flagging items approaching sell-by date for markdown or disposal."
tags:
- inventory
- fresh
- sap
capability:
exposes:
- type: mcp
namespace: fresh-tracking
port: 8080
tools:
- name: check-fresh-inventory
description: "Check fresh produce inventory and expiration status."
inputParameters:
- name: store_number
in: body
type: string
description: "The Dollar General store number."
- name: category
in: body
type: string
description: "Fresh category (produce, dairy, frozen)."
call: "sap.get-fresh-inventory"
with:
plant: "{{store_number}}"
category: "{{category}}"
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_BATCH_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: batches
path: "/A_Batch"
operations:
- name: get-fresh-inventory
method: GET
Validates a digital coupon code against the DG app loyalty system, returning redemption eligibility, discount value, and applicable products.
naftiko: "0.5"
info:
label: "Digital Coupon Validator"
description: "Validates a digital coupon code against the DG app loyalty system, returning redemption eligibility, discount value, and applicable products."
tags:
- marketing
- loyalty
- pricing
capability:
exposes:
- type: mcp
namespace: coupon-validation
port: 8080
tools:
- name: validate-coupon
description: "Validate a digital coupon for redemption eligibility."
inputParameters:
- name: coupon_code
in: body
type: string
description: "The digital coupon code."
- name: customer_id
in: body
type: string
description: "The DG app customer identifier."
call: "dg-loyalty.validate-coupon"
with:
code: "{{coupon_code}}"
customer: "{{customer_id}}"
consumes:
- type: http
namespace: dg-loyalty
baseUri: "https://api.dollargeneral.com/loyalty/v1"
authentication:
type: bearer
token: "$secrets.dg_loyalty_token"
resources:
- name: coupons
path: "/coupons/validate"
operations:
- name: validate-coupon
method: POST
Tracks an inbound shipment from a distribution center to a store, returning current location, estimated arrival time, and load contents.
naftiko: "0.5"
info:
label: "Distribution Center Shipment Tracking"
description: "Tracks an inbound shipment from a distribution center to a store, returning current location, estimated arrival time, and load contents."
tags:
- supply-chain
- tracking
- logistics
capability:
exposes:
- type: mcp
namespace: dc-shipment-tracking
port: 8080
tools:
- name: track-dc-shipment
description: "Track a distribution center to store shipment."
inputParameters:
- name: shipment_id
in: body
type: string
description: "The shipment identifier."
call: "sap.get-shipment-status"
with:
shipment_id: "{{shipment_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_SHIPMENT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: shipments
path: "/A_Shipment('{{shipment_id}}')"
inputParameters:
- name: shipment_id
in: path
operations:
- name: get-shipment-status
method: GET
Generates a district performance report by aggregating store sales from SAP, labor metrics from Workday, and operational incidents from ServiceNow across all stores in a district.
naftiko: "0.5"
info:
label: "District Performance Report"
description: "Generates a district performance report by aggregating store sales from SAP, labor metrics from Workday, and operational incidents from ServiceNow across all stores in a district."
tags:
- reporting
- analytics
- sap
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: district-performance
port: 8080
tools:
- name: get-district-report
description: "Generate a district-level performance report."
inputParameters:
- name: district_id
in: body
type: string
description: "The district identifier."
- name: month
in: body
type: string
description: "Report month in YYYY-MM format."
steps:
- name: get-sales
type: call
call: "sap.get-district-sales"
with:
district: "{{district_id}}"
month: "{{month}}"
- name: get-labor
type: call
call: "workday.get-district-labor"
with:
district: "{{district_id}}"
month: "{{month}}"
- name: get-incidents
type: call
call: "servicenow.get-district-incidents"
with:
district: "{{district_id}}"
month: "{{month}}"
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_SALES_REPORT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: district-sales
path: "/A_DistrictSales"
operations:
- name: get-district-sales
method: GET
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: district-labor
path: "/districts/{{district}}/labor"
inputParameters:
- name: district
in: path
operations:
- name: get-district-labor
method: GET
- type: http
namespace: servicenow
baseUri: "https://dollargeneral.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: get-district-incidents
method: GET
Checks container at Dollar General.
naftiko: "0.5"
info:
label: "Docker Container Check"
description: "Checks container at Dollar General."
tags:
- containers
- docker
- infrastructure
capability:
exposes:
- type: mcp
namespace: docker
port: 8080
tools:
- name: check-container
description: "Check container at Dollar General."
inputParameters:
- name: id
in: body
type: string
description: "Container ID."
call: "docker.get-container"
with:
id: "{{id}}"
outputParameters:
- name: status
type: string
mapping: "$.State.Status"
consumes:
- type: http
namespace: docker
baseUri: "https://docker.dg.com/v1.41"
authentication:
type: bearer
token: "$secrets.docker_token"
resources:
- name: containers
path: "/containers/{{id}}/json"
inputParameters:
- name: id
in: path
operations:
- name: get-container
method: GET
Tests disaster recovery at Dollar General via failover, health checks, and reporting.
naftiko: "0.5"
info:
label: "DR Test Pipeline"
description: "Tests disaster recovery at Dollar General via failover, health checks, and reporting."
tags:
- disaster-recovery
- business-continuity
- testing
capability:
exposes:
- type: mcp
namespace: dr-test
port: 8080
tools:
- name: test-dr
description: "Test DR at Dollar General."
inputParameters:
- name: plan_id
in: body
type: string
description: "Plan ID."
- name: type
in: body
type: string
description: "Test type."
steps:
- name: failover
type: call
call: "dr.failover"
with:
plan: "{{plan_id}}"
type: "{{type}}"
- name: validate
type: call
call: "monitoring.check"
with:
scope: "critical"
- name: measure
type: call
call: "dr.metrics"
with:
id: "{{failover.id}}"
- name: report
type: call
call: "confluence.create-page"
with:
title: "DR - {{plan_id}}"
body: "RTO:{{measure.rto}}m RPO:{{measure.rpo}}m"
consumes:
- type: http
namespace: dr
baseUri: "https://dr.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.dr_token"
resources:
- name: failovers
path: "/failovers"
operations:
- name: failover
method: POST
- type: http
namespace: monitoring
baseUri: "https://monitoring.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.monitoring_token"
resources:
- name: health
path: "/checks"
operations:
- name: check
method: POST
- type: http
namespace: confluence
baseUri: "https://dg.com.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
Detects infrastructure drift at Dollar General via Terraform, Slack, and Jira.
naftiko: "0.5"
info:
label: "Drift Detection Pipeline"
description: "Detects infrastructure drift at Dollar General via Terraform, Slack, and Jira."
tags:
- infrastructure
- terraform
- drift-detection
- devops
capability:
exposes:
- type: mcp
namespace: drift-det
port: 8080
tools:
- name: detect
description: "Detect drift at Dollar General."
inputParameters:
- name: ws_id
in: body
type: string
description: "Workspace ID."
- name: env
in: body
type: string
description: "Environment."
steps:
- name: plan
type: call
call: "terraform.run"
with:
ws: "{{ws_id}}"
- name: check
type: call
call: "terraform.get-plan"
with:
run: "{{plan.id}}"
- name: alert
type: call
call: "slack.post-message"
with:
channel: "#infra"
text: "Drift {{env}}: {{check.changes}} changes"
- name: ticket
type: call
call: "jira.create-issue"
with:
project: "INFRA"
summary: "Drift in {{env}}"
consumes:
- type: http
namespace: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: runs
path: "/runs"
operations:
- name: run
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
- type: http
namespace: jira
baseUri: "https://dg.com.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Checks ES index at Dollar General.
naftiko: "0.5"
info:
label: "ES Index Health"
description: "Checks ES index at Dollar General."
tags:
- search
- elasticsearch
- infrastructure
capability:
exposes:
- type: mcp
namespace: es-health
port: 8080
tools:
- name: check-index
description: "Check ES index at Dollar General."
inputParameters:
- name: index
in: body
type: string
description: "Index name."
call: "es.get-health"
with:
index: "{{index}}"
outputParameters:
- name: status
type: string
mapping: "$.status"
- name: docs
type: number
mapping: "$.docs.count"
consumes:
- type: http
namespace: es
baseUri: "https://es.dg.com:9200"
authentication:
type: bearer
token: "$secrets.es_token"
resources:
- name: indices
path: "/{{index}}/_stats"
inputParameters:
- name: index
in: path
operations:
- name: get-health
method: GET
Offboards employees at Dollar General via Okta, Slack, ServiceNow, and storage.
naftiko: "0.5"
info:
label: "Employee Offboarding Pipeline"
description: "Offboards employees at Dollar General via Okta, Slack, ServiceNow, and storage."
tags:
- hr
- offboarding
- okta
- servicenow
capability:
exposes:
- type: mcp
namespace: offboarding
port: 8080
tools:
- name: offboard
description: "Offboard employees at Dollar General."
inputParameters:
- name: emp_id
in: body
type: string
description: "Employee ID."
- name: last_day
in: body
type: string
description: "Last day."
steps:
- name: disable
type: call
call: "okta.deactivate"
with:
user: "{{emp_id}}"
- name: revoke
type: call
call: "slack.remove"
with:
user: "{{emp_id}}"
- name: return
type: call
call: "servicenow.create-request"
with:
type: "return"
emp: "{{emp_id}}"
- name: archive
type: call
call: "storage.archive"
with:
user: "{{emp_id}}"
consumes:
- type: http
namespace: okta
baseUri: "https://dg.com.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_api_token"
resources:
- name: users
path: "/users/{{user}}/lifecycle/deactivate"
inputParameters:
- name: user
in: path
operations:
- name: deactivate
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: users
path: "/users.admin.remove"
operations:
- name: remove
method: POST
- type: http
namespace: servicenow
baseUri: "https://dg.com.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- type: http
namespace: storage
baseUri: "https://storage.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.storage_token"
resources:
- name: archives
path: "/archive"
operations:
- name: archive
method: POST
When a new store employee is hired in Workday, creates their training assignments in Pluralsight, provisions POS access in ServiceNow, and notifies the store manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Employee Onboarding Pipeline"
description: "When a new store employee is hired in Workday, creates their training assignments in Pluralsight, provisions POS access in ServiceNow, and notifies the store manager via Microsoft Teams."
tags:
- hr
- onboarding
- workday
- pluralsight
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: store-onboarding
port: 8080
tools:
- name: onboard-store-employee
description: "Orchestrate onboarding for a new store employee."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee identifier."
- name: store_number
in: body
type: string
description: "The store number."
- name: role
in: body
type: string
description: "The employee role (cashier, lead, manager)."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: assign-training
type: call
call: "pluralsight.assign-channel"
with:
email: "{{get-employee.work_email}}"
channel: "dg-{{role}}-onboarding"
- name: provision-pos
type: call
call: "servicenow.create-request"
with:
short_description: "POS access for {{get-employee.full_name}} at store {{store_number}}"
category: "access_provisioning"
description: "Provision POS terminal access for {{get-employee.full_name}} ({{role}}) at store {{store_number}}."
- name: notify-manager
type: call
call: "msteams.send-message"
with:
channel_id: "store-{{store_number}}"
text: "New hire: {{get-employee.full_name}} ({{role}}) onboarded. Training assigned in Pluralsight. POS access request: {{provision-pos.number}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: pluralsight
baseUri: "https://api.pluralsight.com/api/v1"
authentication:
type: bearer
token: "$secrets.pluralsight_token"
resources:
- name: assignments
path: "/channels/assign"
operations:
- name: assign-channel
method: POST
- type: http
namespace: servicenow
baseUri: "https://dollargeneral.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves the weekly employee schedule from Workday for a specific Dollar General store, including shift times, roles, and coverage gaps.
naftiko: "0.5"
info:
label: "Employee Schedule Viewer"
description: "Retrieves the weekly employee schedule from Workday for a specific Dollar General store, including shift times, roles, and coverage gaps."
tags:
- hr
- scheduling
- workday
- store-ops
capability:
exposes:
- type: mcp
namespace: store-scheduling
port: 8080
tools:
- name: get-store-schedule
description: "Retrieve the weekly employee schedule for a store."
inputParameters:
- name: store_number
in: body
type: string
description: "The Dollar General store number."
- name: week_start
in: body
type: string
description: "The Monday start date in YYYY-MM-DD format."
call: "workday.get-schedule"
with:
location: "{{store_number}}"
week_start: "{{week_start}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: schedules
path: "/locations/{{location}}/schedules"
inputParameters:
- name: location
in: path
operations:
- name: get-schedule
method: GET
Pulls POS cash register totals and compares against SAP sales data, flagging discrepancies and logging them in ServiceNow for investigation.
naftiko: "0.5"
info:
label: "End-of-Day Cash Reconciliation"
description: "Pulls POS cash register totals and compares against SAP sales data, flagging discrepancies and logging them in ServiceNow for investigation."
tags:
- finance
- store-ops
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: cash-reconciliation
port: 8080
tools:
- name: reconcile-cash
description: "Run end-of-day cash reconciliation for a store."
inputParameters:
- name: store_number
in: body
type: string
description: "The Dollar General store number."
- name: date
in: body
type: string
description: "The business date in YYYY-MM-DD format."
- name: cash_counted
in: body
type: number
description: "Physical cash count total."
steps:
- name: get-pos-totals
type: call
call: "sap.get-sales-report"
with:
plant: "{{store_number}}"
date: "{{date}}"
- name: log-variance
type: call
call: "servicenow.create-incident"
with:
short_description: "Cash variance: Store {{store_number}} - {{date}}"
category: "cash_management"
description: "POS total: {{get-pos-totals.cash_total}}. Counted: {{cash_counted}}. Variance requires investigation."
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_SALES_REPORT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: sales-reports
path: "/A_SalesReport"
operations:
- name: get-sales-report
method: GET
- type: http
namespace: servicenow
baseUri: "https://dollargeneral.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
Generates ESG reports at Dollar General.
naftiko: "0.5"
info:
label: "ESG Report Pipeline"
description: "Generates ESG reports at Dollar General."
tags:
- sustainability
- esg
- reporting
capability:
exposes:
- type: mcp
namespace: esg
port: 8080
tools:
- name: gen-report
description: "Generate ESG report at Dollar General."
inputParameters:
- name: year
in: body
type: string
description: "Year."
steps:
- name: data
type: call
call: "platform.get-environmental"
with:
year: "{{year}}"
- name: compute
type: call
call: "analytics.compute-esg"
with:
data: "{{data.metrics}}"
- name: generate
type: call
call: "docs.create-report"
with:
template: "esg"
- name: publish
type: call
call: "sharepoint.upload"
with:
path: "/ESG/{{year}}/report.pdf"
consumes:
- type: http
namespace: platform
baseUri: "https://data.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.data_token"
resources:
- name: environmental
path: "/metrics"
operations:
- name: get-environmental
method: GET
- type: http
namespace: analytics
baseUri: "https://analytics.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.analytics_token"
resources:
- name: esg
path: "/compute"
operations:
- name: compute-esg
method: POST
- type: http
namespace: docs
baseUri: "https://docs.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.docs_token"
resources:
- name: reports
path: "/create"
operations:
- name: create-report
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.microsoft_graph_token"
resources:
- name: files
path: "/sites/root/drive/root:/{{path}}:/content"
operations:
- name: upload
method: PUT
Audits expenses at Dollar General via Concur, compliance checks, and email.
naftiko: "0.5"
info:
label: "Expense Audit Pipeline"
description: "Audits expenses at Dollar General via Concur, compliance checks, and email."
tags:
- finance
- travel
- sap-concur
- compliance
capability:
exposes:
- type: mcp
namespace: expense-audit
port: 8080
tools:
- name: audit
description: "Audit expenses at Dollar General."
inputParameters:
- name: report_id
in: body
type: string
description: "Report ID."
steps:
- name: get
type: call
call: "concur.get-report"
with:
id: "{{report_id}}"
- name: check
type: call
call: "compliance.check"
with:
expenses: "{{get.entries}}"
- name: flag
type: call
call: "workflow.flag"
with:
id: "{{report_id}}"
violations: "{{check.violations}}"
- name: notify
type: call
call: "email.send"
with:
to: "{{get.approver}}"
subject: "Expense {{report_id}} violations"
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/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-report
method: GET
- type: http
namespace: compliance
baseUri: "https://compliance.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.compliance_token"
resources:
- name: policies
path: "/check"
operations:
- name: check
method: POST
- type: http
namespace: workflow
baseUri: "https://workflow.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.workflow_token"
resources:
- name: reviews
path: "/flag"
operations:
- name: flag
method: POST
- type: http
namespace: email
baseUri: "https://email.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.email_token"
resources:
- name: messages
path: "/send"
operations:
- name: send
method: POST
Analyzes feedback at Dollar General via surveys, AI sentiment, and Power BI.
naftiko: "0.5"
info:
label: "Customer Feedback Pipeline"
description: "Analyzes feedback at Dollar General via surveys, AI sentiment, and Power BI."
tags:
- customer-experience
- analytics
- sentiment-analysis
capability:
exposes:
- type: mcp
namespace: feedback
port: 8080
tools:
- name: analyze
description: "Analyze feedback at Dollar General."
inputParameters:
- name: survey_id
in: body
type: string
description: "Survey ID."
steps:
- name: collect
type: call
call: "survey.get"
with:
id: "{{survey_id}}"
- name: sentiment
type: call
call: "ai.analyze"
with:
text: "{{collect.responses}}"
- name: themes
type: call
call: "ai.themes"
with:
data: "{{collect.responses}}"
- name: dashboard
type: call
call: "power-bi.refresh"
with:
dataset: "cx"
consumes:
- type: http
namespace: survey
baseUri: "https://surveys.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.survey_token"
resources:
- name: responses
path: "/surveys/{{id}}/responses"
inputParameters:
- name: id
in: path
operations:
- name: get
method: GET
- type: http
namespace: ai
baseUri: "https://api.openai.com/v1"
authentication:
type: bearer
token: "$secrets.openai_api_key"
resources:
- name: completions
path: "/chat/completions"
operations:
- name: analyze
method: POST
- type: http
namespace: power-bi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.power_bi_token"
resources:
- name: datasets
path: "/datasets/{{dataset}}/refreshes"
inputParameters:
- name: dataset
in: path
operations:
- name: refresh
method: POST
Checks GitHub repo at Dollar General.
naftiko: "0.5"
info:
label: "GitHub Repo Check"
description: "Checks GitHub repo at Dollar General."
tags:
- devops
- github
- version-control
capability:
exposes:
- type: mcp
namespace: gh-repo
port: 8080
tools:
- name: get-branch
description: "Check branch at Dollar General."
inputParameters:
- name: repo
in: body
type: string
description: "Repo."
- name: branch
in: body
type: string
description: "Branch."
call: "github.get-branch"
with:
repo: "{{repo}}"
branch: "{{branch}}"
outputParameters:
- name: sha
type: string
mapping: "$.commit.sha"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: branches
path: "/repos/org/{{repo}}/branches/{{branch}}"
inputParameters:
- name: repo
in: path
- name: branch
in: path
operations:
- name: get-branch
method: GET
Checks Google user at Dollar General.
naftiko: "0.5"
info:
label: "Google Workspace User Check"
description: "Checks Google user at Dollar General."
tags:
- identity
- google-workspace
- directory
capability:
exposes:
- type: mcp
namespace: gws
port: 8080
tools:
- name: check-user
description: "Check user at Dollar General."
inputParameters:
- name: email
in: body
type: string
description: "Email."
call: "google.get-user"
with:
email: "{{email}}"
outputParameters:
- name: suspended
type: boolean
mapping: "$.suspended"
consumes:
- type: http
namespace: google
baseUri: "https://admin.googleapis.com/admin/directory/v1"
authentication:
type: bearer
token: "$secrets.google_admin_token"
resources:
- name: users
path: "/users/{{email}}"
inputParameters:
- name: email
in: path
operations:
- name: get-user
method: GET
Checks Grafana dashboard at Dollar General.
naftiko: "0.5"
info:
label: "Grafana Dashboard Status"
description: "Checks Grafana dashboard at Dollar General."
tags:
- monitoring
- grafana
- dashboards
capability:
exposes:
- type: mcp
namespace: grafana
port: 8080
tools:
- name: check-dash
description: "Check dashboard at Dollar General."
inputParameters:
- name: uid
in: body
type: string
description: "Dashboard UID."
call: "grafana.get-dash"
with:
uid: "{{uid}}"
outputParameters:
- name: title
type: string
mapping: "$.dashboard.title"
consumes:
- type: http
namespace: grafana
baseUri: "https://grafana.dg.com/api"
authentication:
type: bearer
token: "$secrets.grafana_token"
resources:
- name: dashboards
path: "/dashboards/uid/{{uid}}"
inputParameters:
- name: uid
in: path
operations:
- name: get-dash
method: GET
Auto-routes tickets at Dollar General.
naftiko: "0.5"
info:
label: "Helpdesk Auto-Routing Pipeline"
description: "Auto-routes tickets at Dollar General."
tags:
- support
- helpdesk
- ai
- automation
capability:
exposes:
- type: mcp
namespace: ticket-route
port: 8080
tools:
- name: route-ticket
description: "Auto-route tickets at Dollar General."
inputParameters:
- name: ticket_id
in: body
type: string
description: "Ticket ID."
steps:
- name: get
type: call
call: "helpdesk.get-ticket"
with:
id: "{{ticket_id}}"
- name: classify
type: call
call: "ai.classify"
with:
subject: "{{get.subject}}"
body: "{{get.body}}"
- name: assign
type: call
call: "helpdesk.assign"
with:
id: "{{ticket_id}}"
team: "{{classify.team}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#{{classify.team}}"
text: "New: {{get.subject}} ({{classify.priority}})"
consumes:
- type: http
namespace: helpdesk
baseUri: "https://helpdesk.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.helpdesk_token"
resources:
- name: tickets
path: "/tickets/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get-ticket
method: GET
- type: http
namespace: ai
baseUri: "https://api.openai.com/v1"
authentication:
type: bearer
token: "$secrets.openai_api_key"
resources:
- name: completions
path: "/chat/completions"
operations:
- name: classify
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Escalates IT incidents at Dollar General via ServiceNow, PagerDuty, and Slack.
naftiko: "0.5"
info:
label: "IT Incident Escalation Pipeline"
description: "Escalates IT incidents at Dollar General via ServiceNow, PagerDuty, and Slack."
tags:
- incident-management
- servicenow
- pagerduty
- slack
capability:
exposes:
- type: mcp
namespace: incident-escalation
port: 8080
tools:
- name: escalate-incident
description: "Escalate incidents at Dollar General."
inputParameters:
- name: incident_id
in: body
type: string
description: "Incident ID."
- name: severity
in: body
type: string
description: "Severity."
steps:
- name: get-incident
type: call
call: "servicenow.get-incident"
with:
incident_id: "{{incident_id}}"
- name: page
type: call
call: "pagerduty.create-incident"
with:
title: "{{get-incident.description}}"
urgency: "{{severity}}"
- name: channel
type: call
call: "slack.create-channel"
with:
name: "inc-{{incident_id}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#inc-{{incident_id}}"
text: "P{{severity}}: {{get-incident.description}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://dg.com.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: incidents
path: "/table/incident/{{incident_id}}"
inputParameters:
- name: incident_id
in: path
operations:
- name: get-incident
method: GET
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: incidents
path: "/incidents"
operations:
- name: create-incident
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: channels
path: "/conversations.create"
operations:
- name: create-channel
method: POST
Retrieves sprint progress at Dollar General.
naftiko: "0.5"
info:
label: "Jira Sprint Progress Lookup"
description: "Retrieves sprint progress at Dollar General."
tags:
- project-management
- jira
- agile
capability:
exposes:
- type: mcp
namespace: jira-sprint
port: 8080
tools:
- name: get-sprint
description: "Look up sprint at Dollar General."
inputParameters:
- name: project_key
in: body
type: string
description: "Project key."
call: "jira.get-sprints"
with:
project: "{{project_key}}"
outputParameters:
- name: name
type: string
mapping: "$.values[0].name"
- name: state
type: string
mapping: "$.values[0].state"
consumes:
- type: http
namespace: jira
baseUri: "https://dg.com.atlassian.net/rest/agile/1.0"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: sprints
path: "/board/1/sprint"
operations:
- name: get-sprints
method: GET
Maintains KB at Dollar General by finding stale articles and notifying owners.
naftiko: "0.5"
info:
label: "Knowledge Base Maintenance Pipeline"
description: "Maintains KB at Dollar General by finding stale articles and notifying owners."
tags:
- knowledge-management
- confluence
- maintenance
capability:
exposes:
- type: mcp
namespace: kb-maint
port: 8080
tools:
- name: maintain-kb
description: "Maintain KB at Dollar General."
inputParameters:
- name: space
in: body
type: string
description: "Confluence space."
- name: stale_days
in: body
type: number
description: "Days threshold."
steps:
- name: find
type: call
call: "confluence.search-stale"
with:
space: "{{space}}"
days: "{{stale_days}}"
- name: notify
type: call
call: "email.batch"
with:
to: "{{find.owners}}"
subject: "KB review needed"
- name: flag
type: call
call: "confluence.add-label"
with:
pages: "{{find.ids}}"
label: "needs-review"
- name: report
type: call
call: "slack.post-message"
with:
channel: "#kb"
text: "KB: {{find.count}} stale articles"
consumes:
- type: http
namespace: confluence
baseUri: "https://dg.com.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: content
path: "/content/search"
operations:
- name: search-stale
method: GET
- type: http
namespace: email
baseUri: "https://email.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.email_token"
resources:
- name: batch
path: "/send-batch"
operations:
- name: batch
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Generates KPI digest at Dollar General from Snowflake, Oracle, Power BI, and email.
naftiko: "0.5"
info:
label: "Weekly KPI Digest Pipeline"
description: "Generates KPI digest at Dollar General from Snowflake, Oracle, Power BI, and email."
tags:
- reporting
- kpi
- snowflake
- executive
capability:
exposes:
- type: mcp
namespace: kpi-digest
port: 8080
tools:
- name: gen-digest
description: "Generate KPI digest at Dollar General."
inputParameters:
- name: week
in: body
type: string
description: "Week ending."
- name: dist
in: body
type: string
description: "Distribution list."
steps:
- name: ops
type: call
call: "snowflake.query"
with:
query: "SELECT * FROM kpis WHERE w='{{week}}'"
- name: fin
type: call
call: "oracle.get-summary"
with:
period: "{{week}}"
- name: refresh
type: call
call: "power-bi.refresh"
with:
dataset: "exec_kpis"
- name: send
type: call
call: "email.send"
with:
to: "{{dist}}"
subject: "KPIs - {{week}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://dg.com.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: query
method: POST
- type: http
namespace: oracle
baseUri: "https://oracle.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.oracle_token"
resources:
- name: fin
path: "/summary"
operations:
- name: get-summary
method: GET
- type: http
namespace: power-bi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.power_bi_token"
resources:
- name: datasets
path: "/datasets/{{dataset}}/refreshes"
inputParameters:
- name: dataset
in: path
operations:
- name: refresh
method: POST
- type: http
namespace: email
baseUri: "https://email.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.email_token"
resources:
- name: messages
path: "/send"
operations:
- name: send
method: POST
Checks K8s pod health at Dollar General.
naftiko: "0.5"
info:
label: "K8s Pod Health"
description: "Checks K8s pod health at Dollar General."
tags:
- containers
- kubernetes
- infrastructure
capability:
exposes:
- type: mcp
namespace: k8s-pod
port: 8080
tools:
- name: check-pod
description: "Check pod at Dollar General."
inputParameters:
- name: namespace
in: body
type: string
description: "Namespace."
- name: pod
in: body
type: string
description: "Pod name."
call: "k8s.get-pod"
with:
namespace: "{{namespace}}"
pod: "{{pod}}"
outputParameters:
- name: phase
type: string
mapping: "$.status.phase"
consumes:
- type: http
namespace: k8s
baseUri: "https://k8s.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.k8s_token"
resources:
- name: pods
path: "/namespaces/{{namespace}}/pods/{{pod}}"
inputParameters:
- name: namespace
in: path
- name: pod
in: path
operations:
- name: get-pod
method: GET
Checks license compliance at Dollar General via scanning, entitlements, and procurement.
naftiko: "0.5"
info:
label: "License Compliance Pipeline"
description: "Checks license compliance at Dollar General via scanning, entitlements, and procurement."
tags:
- compliance
- licensing
- procurement
capability:
exposes:
- type: mcp
namespace: license-comp
port: 8080
tools:
- name: check-licenses
description: "Check license compliance at Dollar General."
inputParameters:
- name: software
in: body
type: string
description: "Software."
- name: vendor
in: body
type: string
description: "Vendor."
steps:
- name: scan
type: call
call: "assets.installations"
with:
sw: "{{software}}"
- name: entitlements
type: call
call: "licenses.get"
with:
sw: "{{software}}"
- name: flag
type: call
call: "compliance.flag"
with:
installed: "{{scan.count}}"
entitled: "{{entitlements.count}}"
- name: procure
type: call
call: "servicenow.create-request"
with:
type: "license"
sw: "{{software}}"
consumes:
- type: http
namespace: assets
baseUri: "https://assets.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.asset_token"
resources:
- name: installations
path: "/installations"
operations:
- name: installations
method: GET
- type: http
namespace: licenses
baseUri: "https://licenses.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.license_token"
resources:
- name: ent
path: "/entitlements"
operations:
- name: get
method: GET
- type: http
namespace: compliance
baseUri: "https://compliance.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.compliance_token"
resources:
- name: overages
path: "/flag"
operations:
- name: flag
method: POST
- type: http
namespace: servicenow
baseUri: "https://dg.com.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
Tracks marketing campaigns at Dollar General.
naftiko: "0.5"
info:
label: "Marketing Campaign Pipeline"
description: "Tracks marketing campaigns at Dollar General."
tags:
- marketing
- google-ads
- analytics
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: track-campaign
description: "Track campaigns at Dollar General."
inputParameters:
- name: campaign
in: body
type: string
description: "Campaign ID."
steps:
- name: ads
type: call
call: "google-ads.get"
with:
id: "{{campaign}}"
- name: social
type: call
call: "social.get-metrics"
with:
campaign: "{{campaign}}"
- name: compile
type: call
call: "analytics.compile"
with:
ads: "{{ads.data}}"
social: "{{social.data}}"
- name: dashboard
type: call
call: "power-bi.refresh"
with:
dataset: "marketing"
consumes:
- type: http
namespace: google-ads
baseUri: "https://googleads.googleapis.com/v14"
authentication:
type: bearer
token: "$secrets.google_ads_token"
resources:
- name: campaigns
path: "/campaigns/{{id}}"
inputParameters:
- name: id
in: path
operations:
- name: get
method: GET
- type: http
namespace: social
baseUri: "https://social.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.social_token"
resources:
- name: metrics
path: "/campaigns/{{campaign}}"
inputParameters:
- name: campaign
in: path
operations:
- name: get-metrics
method: GET
- type: http
namespace: analytics
baseUri: "https://analytics.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.analytics_token"
resources:
- name: marketing
path: "/compile"
operations:
- name: compile
method: POST
- type: http
namespace: power-bi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.power_bi_token"
resources:
- name: datasets
path: "/datasets/{{dataset}}/refreshes"
inputParameters:
- name: dataset
in: path
operations:
- name: refresh
method: POST
Checks MongoDB at Dollar General.
naftiko: "0.5"
info:
label: "MongoDB Stats Check"
description: "Checks MongoDB at Dollar General."
tags:
- database
- mongodb
- operations
capability:
exposes:
- type: mcp
namespace: mongo
port: 8080
tools:
- name: get-stats
description: "Check MongoDB at Dollar General."
inputParameters:
- name: db
in: body
type: string
description: "Database."
- name: collection
in: body
type: string
description: "Collection."
call: "mongo.get-stats"
with:
db: "{{db}}"
collection: "{{collection}}"
outputParameters:
- name: count
type: number
mapping: "$.count"
consumes:
- type: http
namespace: mongo
baseUri: "https://mongo.dg.com/api/atlas/v1.0"
authentication:
type: bearer
token: "$secrets.mongo_token"
resources:
- name: collections
path: "/collStats"
operations:
- name: get-stats
method: GET
Generates monthly security reports at Dollar General from Splunk and Qualys.
naftiko: "0.5"
info:
label: "Monthly Security Report Pipeline"
description: "Generates monthly security reports at Dollar General from Splunk and Qualys."
tags:
- security
- reporting
- splunk
- compliance
capability:
exposes:
- type: mcp
namespace: sec-report
port: 8080
tools:
- name: gen-sec-report
description: "Generate security report at Dollar General."
inputParameters:
- name: month
in: body
type: string
description: "Month."
steps:
- name: splunk
type: call
call: "splunk.search"
with:
query: "index=security earliest=-30d"
- name: scans
type: call
call: "qualys.results"
with:
month: "{{month}}"
- name: compile
type: call
call: "analytics.compile-security"
with:
events: "{{splunk.count}}"
vulns: "{{scans.critical}}"
- name: send
type: call
call: "email.send"
with:
to: "ciso@co.com"
subject: "Security - {{month}}"
consumes:
- type: http
namespace: splunk
baseUri: "https://splunk.dg.com:8089/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: search
path: "/search/jobs"
operations:
- name: search
method: POST
- type: http
namespace: qualys
baseUri: "https://qualysapi.qualys.com/api/v2"
authentication:
type: bearer
token: "$secrets.qualys_token"
resources:
- name: results
path: "/fo/scan/results"
operations:
- name: results
method: GET
- type: http
namespace: analytics
baseUri: "https://analytics.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.analytics_token"
resources:
- name: security
path: "/compile"
operations:
- name: compile-security
method: POST
- type: http
namespace: email
baseUri: "https://email.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.email_token"
resources:
- name: messages
path: "/send"
operations:
- name: send
method: POST
Onboards employees at Dollar General with Okta, ServiceNow, Slack, and calendar.
naftiko: "0.5"
info:
label: "New Employee IT Onboarding Pipeline"
description: "Onboards employees at Dollar General with Okta, ServiceNow, Slack, and calendar."
tags:
- hr
- onboarding
- okta
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: it-onboarding
port: 8080
tools:
- name: onboard-employee
description: "Onboard employees at Dollar General."
inputParameters:
- name: name
in: body
type: string
description: "Name."
- name: dept
in: body
type: string
description: "Department."
- name: start
in: body
type: string
description: "Start date."
steps:
- name: okta
type: call
call: "okta.create-user"
with:
name: "{{name}}"
department: "{{dept}}"
- name: equip
type: call
call: "servicenow.create-request"
with:
type: "new_hire"
for: "{{name}}"
- name: slack
type: call
call: "slack.invite"
with:
email: "{{okta.email}}"
- name: orient
type: call
call: "calendar.create-event"
with:
title: "Orientation - {{name}}"
date: "{{start}}"
consumes:
- type: http
namespace: okta
baseUri: "https://dg.com.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_api_token"
resources:
- name: users
path: "/users"
operations:
- name: create-user
method: POST
- type: http
namespace: servicenow
baseUri: "https://dg.com.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: users
path: "/users.admin.invite"
operations:
- name: invite
method: POST
- type: http
namespace: calendar
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.microsoft_graph_token"
resources:
- name: events
path: "/users/hr/events"
operations:
- name: create-event
method: POST
Checks New Relic APM at Dollar General.
naftiko: "0.5"
info:
label: "New Relic APM Check"
description: "Checks New Relic APM at Dollar General."
tags:
- monitoring
- new-relic
- apm
capability:
exposes:
- type: mcp
namespace: nr-apm
port: 8080
tools:
- name: check-apm
description: "Check APM at Dollar General."
inputParameters:
- name: app_id
in: body
type: string
description: "App ID."
call: "newrelic.get-app"
with:
app_id: "{{app_id}}"
outputParameters:
- name: health
type: string
mapping: "$.application.health_status"
consumes:
- type: http
namespace: newrelic
baseUri: "https://api.newrelic.com/v2"
authentication:
type: bearer
token: "$secrets.new_relic_api_key"
resources:
- name: applications
path: "/applications/{{app_id}}.json"
inputParameters:
- name: app_id
in: path
operations:
- name: get-app
method: GET
Orchestrates new store setup by creating the store location in SAP, provisioning Workday positions, setting up ServiceNow support, and announcing via Microsoft Teams.
naftiko: "0.5"
info:
label: "New Store Setup Orchestrator"
description: "Orchestrates new store setup by creating the store location in SAP, provisioning Workday positions, setting up ServiceNow support, and announcing via Microsoft Teams."
tags:
- store-ops
- operations
- sap
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: store-setup
port: 8080
tools:
- name: setup-new-store
description: "Orchestrate the system setup for a new Dollar General store."
inputParameters:
- name: store_number
in: body
type: string
description: "The new store number."
- name: store_address
in: body
type: string
description: "The store physical address."
- name: district
in: body
type: string
description: "The district assignment."
- name: open_date
in: body
type: string
description: "Planned opening date in YYYY-MM-DD format."
steps:
- name: create-sap-plant
type: call
call: "sap.create-plant"
with:
plant_id: "{{store_number}}"
address: "{{store_address}}"
district: "{{district}}"
- name: create-workday-location
type: call
call: "workday.create-location"
with:
location_id: "{{store_number}}"
name: "DG Store {{store_number}}"
address: "{{store_address}}"
- name: create-support-config
type: call
call: "servicenow.create-config-item"
with:
name: "Store {{store_number}}"
category: "retail_store"
location: "{{store_address}}"
- name: announce
type: call
call: "msteams.send-message"
with:
channel_id: "operations"
text: "New store {{store_number}} created in district {{district}}. Address: {{store_address}}. Target opening: {{open_date}}. SAP, Workday, and ServiceNow configured."
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_PLANT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: plants
path: "/A_Plant"
operations:
- name: create-plant
method: POST
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: locations
path: "/locations"
operations:
- name: create-location
method: POST
- type: http
namespace: servicenow
baseUri: "https://dollargeneral.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: config-items
path: "/table/cmdb_ci"
operations:
- name: create-config-item
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Checks Okta user at Dollar General.
naftiko: "0.5"
info:
label: "Okta User Check"
description: "Checks Okta user at Dollar General."
tags:
- identity
- okta
- access-management
capability:
exposes:
- type: mcp
namespace: okta-user
port: 8080
tools:
- name: check-user
description: "Check user at Dollar General."
inputParameters:
- name: email
in: body
type: string
description: "Email."
call: "okta.get-user"
with:
email: "{{email}}"
outputParameters:
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: okta
baseUri: "https://dg.com.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_api_token"
resources:
- name: users
path: "/users/{{email}}"
inputParameters:
- name: email
in: path
operations:
- name: get-user
method: GET
Checks on-call at Dollar General.
naftiko: "0.5"
info:
label: "PagerDuty On-Call Check"
description: "Checks on-call at Dollar General."
tags:
- incident-management
- pagerduty
- on-call
capability:
exposes:
- type: mcp
namespace: pd-oncall
port: 8080
tools:
- name: get-oncall
description: "Check on-call at Dollar General."
inputParameters:
- name: schedule_id
in: body
type: string
description: "Schedule ID."
call: "pagerduty.get-oncall"
with:
schedule_id: "{{schedule_id}}"
outputParameters:
- name: user
type: string
mapping: "$.oncalls[0].user.summary"
consumes:
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: oncalls
path: "/oncalls"
operations:
- name: get-oncall
method: GET
Exports weekly timesheet hours from Workday for a store's employees, formatted for payroll processing via ADP.
naftiko: "0.5"
info:
label: "Payroll Hours Export"
description: "Exports weekly timesheet hours from Workday for a store's employees, formatted for payroll processing via ADP."
tags:
- hr
- payroll
- workday
- adp
capability:
exposes:
- type: mcp
namespace: payroll-export
port: 8080
tools:
- name: export-payroll-hours
description: "Export weekly timesheet hours for payroll processing."
inputParameters:
- name: store_number
in: body
type: string
description: "The Dollar General store number."
- name: week_ending
in: body
type: string
description: "The week ending date in YYYY-MM-DD format."
steps:
- name: get-timesheets
type: call
call: "workday.get-timesheets"
with:
location: "{{store_number}}"
week_ending: "{{week_ending}}"
- name: submit-to-adp
type: call
call: "adp.submit-hours"
with:
location: "{{store_number}}"
hours: "{{get-timesheets.entries}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: timesheets
path: "/locations/{{location}}/timesheets"
inputParameters:
- name: location
in: path
operations:
- name: get-timesheets
method: GET
- type: http
namespace: adp
baseUri: "https://api.adp.com/hr/v2"
authentication:
type: bearer
token: "$secrets.adp_token"
resources:
- name: payroll
path: "/payroll/hours"
operations:
- name: submit-hours
method: POST
Retrieves the current planogram assignment for a store aisle from the merchandising system and returns product placement requirements and compliance status.
naftiko: "0.5"
info:
label: "Planogram Compliance Check"
description: "Retrieves the current planogram assignment for a store aisle from the merchandising system and returns product placement requirements and compliance status."
tags:
- merchandising
- store-ops
- compliance
capability:
exposes:
- type: mcp
namespace: planogram-compliance
port: 8080
tools:
- name: get-planogram
description: "Retrieve the planogram for a store aisle."
inputParameters:
- name: store_number
in: body
type: string
description: "The Dollar General store number."
- name: aisle_id
in: body
type: string
description: "The aisle identifier."
call: "sap.get-planogram"
with:
plant: "{{store_number}}"
aisle: "{{aisle_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_PLANOGRAM_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: planograms
path: "/A_Planogram"
operations:
- name: get-planogram
method: GET
Creates postmortems at Dollar General.
naftiko: "0.5"
info:
label: "Incident Postmortem Pipeline"
description: "Creates postmortems at Dollar General."
tags:
- incident-management
- postmortem
- pagerduty
- confluence
capability:
exposes:
- type: mcp
namespace: postmortem
port: 8080
tools:
- name: create-postmortem
description: "Create postmortem at Dollar General."
inputParameters:
- name: incident_id
in: body
type: string
description: "Incident ID."
steps:
- name: timeline
type: call
call: "pagerduty.get-log"
with:
id: "{{incident_id}}"
- name: metrics
type: call
call: "datadog.get-metrics"
with:
incident: "{{incident_id}}"
- name: doc
type: call
call: "confluence.create-page"
with:
title: "Postmortem: {{timeline.title}}"
body: "Impact: {{metrics.impact}}"
- name: review
type: call
call: "calendar.create-event"
with:
title: "Review: {{timeline.title}}"
consumes:
- type: http
namespace: pagerduty
baseUri: "https://api.pagerduty.com"
authentication:
type: bearer
token: "$secrets.pagerduty_token"
resources:
- name: incidents
path: "/incidents/{{id}}/log_entries"
inputParameters:
- name: id
in: path
operations:
- name: get-log
method: GET
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: incidents
path: "/incidents"
operations:
- name: get-metrics
method: GET
- type: http
namespace: confluence
baseUri: "https://dg.com.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: calendar
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.microsoft_graph_token"
resources:
- name: events
path: "/users/sre/events"
operations:
- name: create-event
method: POST
Checks Power BI refresh at Dollar General.
naftiko: "0.5"
info:
label: "Power BI Refresh Check"
description: "Checks Power BI refresh at Dollar General."
tags:
- analytics
- power-bi
- dashboards
capability:
exposes:
- type: mcp
namespace: pbi-refresh
port: 8080
tools:
- name: check-refresh
description: "Check refresh at Dollar General."
inputParameters:
- name: dataset_id
in: body
type: string
description: "Dataset ID."
call: "power-bi.get-refresh"
with:
dataset_id: "{{dataset_id}}"
outputParameters:
- name: status
type: string
mapping: "$.value[0].status"
consumes:
- type: http
namespace: power-bi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.power_bi_token"
resources:
- name: datasets
path: "/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: get-refresh
method: GET
Applies a price markdown in SAP for clearance items at a store and updates the digital price labels and POS system simultaneously.
naftiko: "0.5"
info:
label: "Price Markdown Executor"
description: "Applies a price markdown in SAP for clearance items at a store and updates the digital price labels and POS system simultaneously."
tags:
- pricing
- merchandising
- sap
capability:
exposes:
- type: mcp
namespace: markdown-management
port: 8080
tools:
- name: apply-markdown
description: "Apply a price markdown for clearance items at a store."
inputParameters:
- name: store_number
in: body
type: string
description: "The Dollar General store number."
- name: sku
in: body
type: string
description: "The product SKU."
- name: markdown_percentage
in: body
type: number
description: "Markdown percentage (e.g., 25 for 25% off)."
- name: effective_date
in: body
type: string
description: "Markdown effective date in YYYY-MM-DD format."
steps:
- name: get-current-price
type: call
call: "sap.get-price"
with:
material: "{{sku}}"
plant: "{{store_number}}"
- name: apply-markdown
type: call
call: "sap.create-pricing-condition"
with:
material: "{{sku}}"
plant: "{{store_number}}"
discount_pct: "{{markdown_percentage}}"
valid_from: "{{effective_date}}"
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_SLSPRICINGCONDITIONRECORD_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: pricing
path: "/A_SlsPrcgCndnRecdValidity"
operations:
- name: get-price
method: GET
- name: pricing-conditions
path: "/A_SlsPrcgConditionRecord"
operations:
- name: create-pricing-condition
method: POST
Sets up a new Dollar General private label product in SAP with pricing, assigns it to stores, and notifies merchandising teams via Microsoft Teams.
naftiko: "0.5"
info:
label: "Private Label Product Setup"
description: "Sets up a new Dollar General private label product in SAP with pricing, assigns it to stores, and notifies merchandising teams via Microsoft Teams."
tags:
- products
- merchandising
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: private-label-setup
port: 8080
tools:
- name: create-private-label-product
description: "Set up a new private label product across store systems."
inputParameters:
- name: product_name
in: body
type: string
description: "The product name."
- name: sku
in: body
type: string
description: "The product SKU."
- name: category
in: body
type: string
description: "The product category."
- name: retail_price
in: body
type: number
description: "The retail price."
- name: store_cluster
in: body
type: string
description: "The store cluster for distribution."
steps:
- name: create-material
type: call
call: "sap.create-material"
with:
material_number: "{{sku}}"
description: "{{product_name}}"
category: "{{category}}"
price: "{{retail_price}}"
- name: notify-merch
type: call
call: "msteams.send-message"
with:
channel_id: "merchandising"
text: "New private label product: {{product_name}} ({{sku}}) at ${{retail_price}}. Category: {{category}}. Assigned to cluster: {{store_cluster}}."
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: materials
path: "/A_Product"
operations:
- name: create-material
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Looks up the current retail price for a product SKU including any active promotions or markdowns from the SAP pricing system.
naftiko: "0.5"
info:
label: "Product Price Check"
description: "Looks up the current retail price for a product SKU including any active promotions or markdowns from the SAP pricing system."
tags:
- pricing
- products
- sap
capability:
exposes:
- type: mcp
namespace: product-pricing
port: 8080
tools:
- name: get-product-price
description: "Look up the current retail price for a product."
inputParameters:
- name: sku
in: body
type: string
description: "The product SKU."
- name: store_number
in: body
type: string
description: "The store number for location-specific pricing."
call: "sap.get-price"
with:
material: "{{sku}}"
plant: "{{store_number}}"
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_SLSPRICINGCONDITIONRECORD_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: pricing
path: "/A_SlsPrcgCndnRecdValidity"
operations:
- name: get-price
method: GET
Queries Prometheus metrics at Dollar General.
naftiko: "0.5"
info:
label: "Prometheus Metrics Query"
description: "Queries Prometheus metrics at Dollar General."
tags:
- monitoring
- prometheus
- metrics
capability:
exposes:
- type: mcp
namespace: prom
port: 8080
tools:
- name: query
description: "Query Prometheus at Dollar General."
inputParameters:
- name: query
in: body
type: string
description: "PromQL query."
call: "prometheus.query"
with:
query: "{{query}}"
outputParameters:
- name: value
type: number
mapping: "$.data.result[0].value[1]"
consumes:
- type: http
namespace: prometheus
baseUri: "https://prometheus.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.prometheus_token"
resources:
- name: queries
path: "/query"
operations:
- name: query
method: GET
Pulls promotion performance data from SAP for a specific promotional campaign, returning lift metrics, redemption rates, and sales impact by store cluster.
naftiko: "0.5"
info:
label: "Promotion Effectiveness Report"
description: "Pulls promotion performance data from SAP for a specific promotional campaign, returning lift metrics, redemption rates, and sales impact by store cluster."
tags:
- marketing
- pricing
- analytics
- sap
capability:
exposes:
- type: mcp
namespace: promo-analytics
port: 8080
tools:
- name: get-promo-performance
description: "Retrieve promotion effectiveness metrics for a campaign."
inputParameters:
- name: promo_id
in: body
type: string
description: "The promotional campaign identifier."
call: "sap.get-promo-results"
with:
promo_id: "{{promo_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_PROMOTION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: promotions
path: "/A_Promotion('{{promo_id}}')/Results"
inputParameters:
- name: promo_id
in: path
operations:
- name: get-promo-results
method: GET
Checks the status of a purchase order in SAP S/4HANA, returning vendor details, order total, delivery schedule, and open line items.
naftiko: "0.5"
info:
label: "Purchase Order Status"
description: "Checks the status of a purchase order in SAP S/4HANA, returning vendor details, order total, delivery schedule, and open line items."
tags:
- procurement
- supply-chain
- sap
capability:
exposes:
- type: mcp
namespace: procurement-orders
port: 8080
tools:
- name: get-po-status
description: "Check the status of a purchase order."
inputParameters:
- name: po_number
in: body
type: string
description: "The SAP purchase order number."
call: "sap.get-po"
with:
po_number: "{{po_number}}"
consumes:
- type: http
namespace: sap
baseUri: "https://dg-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
Generates compliance reports at Dollar General from Snowflake, Power BI, and email.
naftiko: "0.5"
info:
label: "Quarterly Compliance Report Pipeline"
description: "Generates compliance reports at Dollar General from Snowflake, Power BI, and email."
tags:
- compliance
- reporting
- snowflake
- power-bi
capability:
exposes:
- type: mcp
namespace: compliance-rpt
port: 8080
tools:
- name: gen-report
description: "Generate compliance reports at Dollar General."
inputParameters:
- name: quarter
in: body
type: string
description: "Quarter."
- name: type
in: body
type: string
description: "Type."
steps:
- name: data
type: call
call: "snowflake.query"
with:
query: "SELECT * FROM compliance WHERE q='{{quarter}}'"
- name: metrics
type: call
call: "analytics.compute"
with:
data: "{{data.results}}"
- name: refresh
type: call
call: "power-bi.refresh"
with:
dataset: "compliance"
- name: send
type: call
call: "email.send"
with:
to: "compliance@co.com"
subject: "{{type}} - {{quarter}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://dg.com.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: query
method: POST
- type: http
namespace: analytics
baseUri: "https://analytics.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.analytics_token"
resources:
- name: metrics
path: "/compute"
operations:
- name: compute
method: POST
- type: http
namespace: power-bi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.power_bi_token"
resources:
- name: datasets
path: "/datasets/{{dataset}}/refreshes"
inputParameters:
- name: dataset
in: path
operations:
- name: refresh
method: POST
- type: http
namespace: email
baseUri: "https://email.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.email_token"
resources:
- name: messages
path: "/send"
operations:
- name: send
method: POST
Checks Redis at Dollar General.
naftiko: "0.5"
info:
label: "Redis Cache Status"
description: "Checks Redis at Dollar General."
tags:
- caching
- redis
- infrastructure
capability:
exposes:
- type: mcp
namespace: redis
port: 8080
tools:
- name: check-cache
description: "Check Redis at Dollar General."
inputParameters:
- name: instance
in: body
type: string
description: "Instance ID."
call: "redis.get-info"
with:
instance: "{{instance}}"
outputParameters:
- name: memory
type: string
mapping: "$.used_memory_human"
consumes:
- type: http
namespace: redis
baseUri: "https://redis.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.redis_token"
resources:
- name: instances
path: "/instances/{{instance}}/info"
inputParameters:
- name: instance
in: path
operations:
- name: get-info
method: GET
Checks release readiness at Dollar General.
naftiko: "0.5"
info:
label: "Release Readiness Pipeline"
description: "Checks release readiness at Dollar General."
tags:
- release-management
- devops
- quality
capability:
exposes:
- type: mcp
namespace: release-ready
port: 8080
tools:
- name: check-release
description: "Check release at Dollar General."
inputParameters:
- name: release_id
in: body
type: string
description: "Release ID."
- name: project
in: body
type: string
description: "Project."
steps:
- name: tests
type: call
call: "azdo.get-tests"
with:
project: "{{project}}"
release: "{{release_id}}"
- name: quality
type: call
call: "sonarqube.get-gate"
with:
project: "{{project}}"
- name: security
type: call
call: "security.get-scan"
with:
project: "{{project}}"
- name: doc
type: call
call: "confluence.create-page"
with:
title: "Release - {{release_id}}"
body: "Tests: {{tests.pass_rate}}% Quality: {{quality.status}}"
consumes:
- type: http
namespace: azdo
baseUri: "https://dev.azure.com/dg.com"
authentication:
type: bearer
token: "$secrets.azdo_token"
resources:
- name: tests
path: "/{{project}}/_apis/test/runs"
inputParameters:
- name: project
in: path
operations:
- name: get-tests
method: GET
- type: http
namespace: sonarqube
baseUri: "https://sonarqube.dg.com/api"
authentication:
type: bearer
token: "$secrets.sonarqube_token"
resources:
- name: quality
path: "/qualitygates/project_status"
operations:
- name: get-gate
method: GET
- type: http
namespace: security
baseUri: "https://security.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.security_token"
resources:
- name: scans
path: "/results"
operations:
- name: get-scan
method: GET
- type: http
namespace: confluence
baseUri: "https://dg.com.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: pages
path: "/content"
operations:
- name: create-page
method: POST
Records a store safety incident in ServiceNow, notifies the district safety coordinator via Microsoft Teams, and creates a Workday worker's comp case if applicable.
naftiko: "0.5"
info:
label: "Safety Incident Reporter"
description: "Records a store safety incident in ServiceNow, notifies the district safety coordinator via Microsoft Teams, and creates a Workday worker's comp case if applicable."
tags:
- safety
- store-ops
- servicenow
- microsoft-teams
- workday
capability:
exposes:
- type: mcp
namespace: safety-incidents
port: 8080
tools:
- name: report-safety-incident
description: "Report and process a store safety incident."
inputParameters:
- name: store_number
in: body
type: string
description: "The Dollar General store number."
- name: incident_type
in: body
type: string
description: "Type of safety incident."
- name: description
in: body
type: string
description: "Description of the incident."
- name: employee_id
in: body
type: string
description: "The Workday employee ID if an employee was involved."
steps:
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Safety incident: Store {{store_number}} - {{incident_type}}"
category: "safety"
urgency: "1"
description: "{{description}}. Employee: {{employee_id}}."
- name: notify-safety
type: call
call: "msteams.send-message"
with:
channel_id: "safety-team"
text: "Safety incident at store {{store_number}}: {{incident_type}}. {{description}}. Incident: {{create-incident.number}}."
- name: create-wc-case
type: call
call: "workday.create-safety-incident"
with:
worker_id: "{{employee_id}}"
incident_type: "{{incident_type}}"
description: "{{description}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://dollargeneral.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: safety
path: "/workers/{{worker_id}}/safety-incidents"
inputParameters:
- name: worker_id
in: path
operations:
- name: create-safety-incident
method: POST
Extracts store sales data from SAP and pushes it to Power BI for executive dashboard reporting and trend analysis.
naftiko: "0.5"
info:
label: "Sales Data Push to Power BI"
description: "Extracts store sales data from SAP and pushes it to Power BI for executive dashboard reporting and trend analysis."
tags:
- reporting
- analytics
- sap
- power-bi
capability:
exposes:
- type: mcp
namespace: sales-to-powerbi
port: 8080
tools:
- name: push-sales-to-powerbi
description: "Push store sales data to Power BI for dashboard reporting."
inputParameters:
- name: date
in: body
type: string
description: "The report date in YYYY-MM-DD format."
- name: district_id
in: body
type: string
description: "The district identifier."
steps:
- name: get-sales
type: call
call: "sap.get-district-sales"
with:
district: "{{district_id}}"
date: "{{date}}"
- name: push-data
type: call
call: "powerbi.push-rows"
with:
dataset_id: "$secrets.powerbi_dataset_id"
table_name: "StoreSales"
rows: "{{get-sales.store_summaries}}"
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_SALES_REPORT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: district-sales
path: "/A_DistrictSales"
operations:
- name: get-district-sales
method: GET
- 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}}/tables/{{table_name}}/rows"
inputParameters:
- name: dataset_id
in: path
- name: table_name
in: path
operations:
- name: push-rows
method: POST
Checks SAP PO at Dollar General.
naftiko: "0.5"
info:
label: "SAP PO Check"
description: "Checks SAP PO at Dollar General."
tags:
- procurement
- sap
- purchase-orders
capability:
exposes:
- type: mcp
namespace: sap-po
port: 8080
tools:
- name: get-po
description: "Check PO at Dollar General."
inputParameters:
- name: po_number
in: body
type: string
description: "PO number."
call: "sap.get-po"
with:
po_number: "{{po_number}}"
outputParameters:
- name: vendor
type: string
mapping: "$.order.vendor"
- name: status
type: string
mapping: "$.order.status"
consumes:
- type: http
namespace: sap
baseUri: "https://sap.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: purchase-orders
path: "/purchase-orders/{{po_number}}"
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
Pulls historical sales data from SAP for seasonal items and generates a demand forecast, creating purchase requisitions for the upcoming season.
naftiko: "0.5"
info:
label: "Seasonal Merchandise Planner"
description: "Pulls historical sales data from SAP for seasonal items and generates a demand forecast, creating purchase requisitions for the upcoming season."
tags:
- merchandising
- forecasting
- supply-chain
- sap
capability:
exposes:
- type: mcp
namespace: seasonal-planning
port: 8080
tools:
- name: plan-seasonal-merchandise
description: "Generate seasonal merchandise purchasing plan based on historical data."
inputParameters:
- name: category
in: body
type: string
description: "The merchandise category."
- name: season
in: body
type: string
description: "The target season (spring, summer, fall, winter, holiday)."
- name: store_cluster
in: body
type: string
description: "The store cluster for demand grouping."
steps:
- name: get-history
type: call
call: "sap.get-sales-history"
with:
category: "{{category}}"
season: "{{season}}"
cluster: "{{store_cluster}}"
- name: create-req
type: call
call: "sap.create-purchase-req"
with:
category: "{{category}}"
quantity: "{{get-history.forecast_quantity}}"
cluster: "{{store_cluster}}"
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_SALES_HISTORY_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: sales-history
path: "/A_SalesHistory"
operations:
- name: get-sales-history
method: GET
- name: purchase-requisitions
path: "/A_PurchaseRequisitionHeader"
operations:
- name: create-purchase-req
method: POST
Manages security training at Dollar General.
naftiko: "0.5"
info:
label: "Security Training Pipeline"
description: "Manages security training at Dollar General."
tags:
- security
- training
- compliance
capability:
exposes:
- type: mcp
namespace: sec-training
port: 8080
tools:
- name: manage-training
description: "Manage training at Dollar General."
inputParameters:
- name: campaign
in: body
type: string
description: "Campaign ID."
steps:
- name: untrained
type: call
call: "lms.get-incomplete"
with:
campaign: "{{campaign}}"
- name: remind
type: call
call: "email.batch"
with:
to: "{{untrained.emails}}"
subject: "Training due"
- name: track
type: call
call: "lms.get-completion"
with:
campaign: "{{campaign}}"
- name: report
type: call
call: "power-bi.refresh"
with:
dataset: "training"
consumes:
- type: http
namespace: lms
baseUri: "https://lms.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.lms_token"
resources:
- name: campaigns
path: "/campaigns/{{campaign}}/incomplete"
inputParameters:
- name: campaign
in: path
operations:
- name: get-incomplete
method: GET
- type: http
namespace: email
baseUri: "https://email.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.email_token"
resources:
- name: batch
path: "/send-batch"
operations:
- name: batch
method: POST
- type: http
namespace: power-bi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.power_bi_token"
resources:
- name: datasets
path: "/datasets/{{dataset}}/refreshes"
inputParameters:
- name: dataset
in: path
operations:
- name: refresh
method: POST
Remediates vulnerabilities at Dollar General via scanning, Jira, and Slack.
naftiko: "0.5"
info:
label: "Security Vulnerability Remediation Pipeline"
description: "Remediates vulnerabilities at Dollar General via scanning, Jira, and Slack."
tags:
- security
- vulnerability-management
- jira
capability:
exposes:
- type: mcp
namespace: vuln-fix
port: 8080
tools:
- name: remediate
description: "Fix vulnerabilities at Dollar General."
inputParameters:
- name: target
in: body
type: string
description: "Target."
- name: policy
in: body
type: string
description: "Policy."
steps:
- name: scan
type: call
call: "qualys.scan"
with:
target: "{{target}}"
policy: "{{policy}}"
- name: prioritize
type: call
call: "security.prioritize"
with:
scan: "{{scan.id}}"
- name: ticket
type: call
call: "jira.create-issue"
with:
project: "SEC"
summary: "Vulns: {{prioritize.critical}} critical"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#security"
text: "Scan: {{prioritize.critical}} critical"
consumes:
- type: http
namespace: qualys
baseUri: "https://qualysapi.qualys.com/api/v2"
authentication:
type: bearer
token: "$secrets.qualys_token"
resources:
- name: scans
path: "/fo/scan"
operations:
- name: scan
method: POST
- type: http
namespace: security
baseUri: "https://security.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.security_token"
resources:
- name: vulns
path: "/prioritize"
operations:
- name: prioritize
method: POST
- type: http
namespace: jira
baseUri: "https://dg.com.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Checks IT incident in ServiceNow for Dollar General.
naftiko: "0.5"
info:
label: "ServiceNow Incident Detail Check"
description: "Checks IT incident in ServiceNow for Dollar General."
tags:
- it-service
- servicenow
- incident-management
capability:
exposes:
- type: mcp
namespace: snow-incident
port: 8080
tools:
- name: check-incident
description: "Check incident at Dollar General."
inputParameters:
- name: incident_number
in: body
type: string
description: "Incident number."
call: "servicenow.get-incident"
with:
number: "{{incident_number}}"
outputParameters:
- name: state
type: string
mapping: "$.result.state"
- name: priority
type: string
mapping: "$.result.priority"
consumes:
- type: http
namespace: servicenow
baseUri: "https://dg.com.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: get-incident
method: GET
Retrieves SharePoint metadata at Dollar General.
naftiko: "0.5"
info:
label: "SharePoint File Metadata"
description: "Retrieves SharePoint metadata at Dollar General."
tags:
- document-management
- sharepoint
- collaboration
capability:
exposes:
- type: mcp
namespace: sp-docs
port: 8080
tools:
- name: get-file
description: "Look up file at Dollar General."
inputParameters:
- name: site_id
in: body
type: string
description: "Site ID."
- name: file_path
in: body
type: string
description: "Path."
call: "sharepoint.get-file"
with:
site_id: "{{site_id}}"
path: "{{file_path}}"
outputParameters:
- name: name
type: string
mapping: "$.name"
- name: size
type: number
mapping: "$.size"
consumes:
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.microsoft_graph_token"
resources:
- name: files
path: "/sites/{{site_id}}/drive/root:/{{path}}"
inputParameters:
- name: site_id
in: path
- name: path
in: path
operations:
- name: get-file
method: GET
Generates shelf label data from SAP product pricing for a batch of SKUs, formatted for in-store label printing.
naftiko: "0.5"
info:
label: "Shelf Label Printer"
description: "Generates shelf label data from SAP product pricing for a batch of SKUs, formatted for in-store label printing."
tags:
- store-ops
- pricing
- sap
capability:
exposes:
- type: mcp
namespace: shelf-labels
port: 8080
tools:
- name: generate-shelf-labels
description: "Generate shelf label data for a batch of products."
inputParameters:
- name: store_number
in: body
type: string
description: "The Dollar General store number."
- name: skus
in: body
type: string
description: "Comma-separated list of product SKUs."
call: "sap.get-label-data"
with:
plant: "{{store_number}}"
materials: "{{skus}}"
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_SLSPRICINGCONDITIONRECORD_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: label-data
path: "/A_SlsPrcgCndnRecdValidity"
operations:
- name: get-label-data
method: GET
When a shrinkage threshold is exceeded, creates a loss prevention incident in ServiceNow, pulls store camera footage references, and alerts the district manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Shrinkage Alert Handler"
description: "When a shrinkage threshold is exceeded, creates a loss prevention incident in ServiceNow, pulls store camera footage references, and alerts the district manager via Microsoft Teams."
tags:
- loss-prevention
- store-ops
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: shrinkage-alerts
port: 8080
tools:
- name: handle-shrinkage-alert
description: "Process a shrinkage alert with incident logging and management notification."
inputParameters:
- name: store_number
in: body
type: string
description: "The Dollar General store number."
- name: category
in: body
type: string
description: "Shrinkage category (unknown, employee, vendor, admin-error)."
- name: amount
in: body
type: number
description: "Estimated shrinkage amount in USD."
- name: period
in: body
type: string
description: "The reporting period."
steps:
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Shrinkage alert: Store {{store_number}} - ${{amount}}"
category: "loss_prevention"
urgency: "2"
description: "Shrinkage category: {{category}}. Amount: ${{amount}}. Period: {{period}}. Investigation required."
- name: alert-dm
type: call
call: "msteams.send-message"
with:
channel_id: "loss-prevention"
text: "Shrinkage alert for store {{store_number}}: ${{amount}} ({{category}}). Period: {{period}}. ServiceNow incident: {{create-incident.number}}."
consumes:
- type: http
namespace: servicenow
baseUri: "https://dollargeneral.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors SLAs at Dollar General via Datadog and Slack.
naftiko: "0.5"
info:
label: "SLA Monitoring Pipeline"
description: "Monitors SLAs at Dollar General via Datadog and Slack."
tags:
- operations
- sla
- datadog
- slack
capability:
exposes:
- type: mcp
namespace: sla-monitor
port: 8080
tools:
- name: check-sla
description: "Monitor SLAs at Dollar General."
inputParameters:
- name: service
in: body
type: string
description: "Service."
- name: target
in: body
type: number
description: "SLA target %."
steps:
- name: metrics
type: call
call: "datadog.get-sla"
with:
service: "{{service}}"
- name: check
type: call
call: "analytics.check-sla"
with:
uptime: "{{metrics.uptime}}"
target: "{{target}}"
- name: alert
type: call
call: "slack.post-message"
with:
channel: "#ops"
text: "SLA: {{service}} at {{metrics.uptime}}% (target: {{target}}%)"
- name: log
type: call
call: "servicenow.create-incident"
with:
desc: "SLA breach: {{service}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: metrics
path: "/metrics"
operations:
- name: get-sla
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
- type: http
namespace: servicenow
baseUri: "https://dg.com.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
Checks Snowflake warehouse usage at Dollar General.
naftiko: "0.5"
info:
label: "Snowflake Warehouse Usage"
description: "Checks Snowflake warehouse usage at Dollar General."
tags:
- data
- snowflake
- analytics
capability:
exposes:
- type: mcp
namespace: sf-usage
port: 8080
tools:
- name: check-warehouse
description: "Check warehouse at Dollar General."
inputParameters:
- name: warehouse
in: body
type: string
description: "Warehouse."
call: "snowflake.get-usage"
with:
warehouse: "{{warehouse}}"
outputParameters:
- name: credits
type: number
mapping: "$.data.credits_used"
consumes:
- type: http
namespace: snowflake
baseUri: "https://dg.com.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: warehouses
path: "/statements"
operations:
- name: get-usage
method: GET
Checks code quality at Dollar General.
naftiko: "0.5"
info:
label: "SonarQube Quality Check"
description: "Checks code quality at Dollar General."
tags:
- code-quality
- sonarqube
- devops
capability:
exposes:
- type: mcp
namespace: sq
port: 8080
tools:
- name: check-quality
description: "Check quality at Dollar General."
inputParameters:
- name: project
in: body
type: string
description: "Project key."
call: "sonarqube.get-measures"
with:
project: "{{project}}"
outputParameters:
- name: bugs
type: number
mapping: "$.component.measures[0].value"
consumes:
- type: http
namespace: sonarqube
baseUri: "https://sonarqube.dg.com/api"
authentication:
type: bearer
token: "$secrets.sonarqube_token"
resources:
- name: measures
path: "/measures/component"
operations:
- name: get-measures
method: GET
Searches Splunk at Dollar General.
naftiko: "0.5"
info:
label: "Splunk Log Search"
description: "Searches Splunk at Dollar General."
tags:
- security
- splunk
- logging
capability:
exposes:
- type: mcp
namespace: splunk-search
port: 8080
tools:
- name: search-logs
description: "Search logs at Dollar General."
inputParameters:
- name: query
in: body
type: string
description: "SPL query."
call: "splunk.search"
with:
query: "{{query}}"
outputParameters:
- name: count
type: number
mapping: "$.results.count"
consumes:
- type: http
namespace: splunk
baseUri: "https://splunk.dg.com:8089/services"
authentication:
type: bearer
token: "$secrets.splunk_token"
resources:
- name: search
path: "/search/jobs"
operations:
- name: search
method: POST
Processes a temporary store closure by updating SAP store status, notifying customers via Google Maps hours update, and alerting the team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Store Closure Processor"
description: "Processes a temporary store closure by updating SAP store status, notifying customers via Google Maps hours update, and alerting the team via Microsoft Teams."
tags:
- store-ops
- operations
- sap
- google-maps
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: store-closure
port: 8080
tools:
- name: process-store-closure
description: "Process a temporary store closure across all systems."
inputParameters:
- name: store_number
in: body
type: string
description: "The Dollar General store number."
- name: closure_reason
in: body
type: string
description: "Reason for the closure."
- name: reopen_date
in: body
type: string
description: "Expected reopening date in YYYY-MM-DD format."
steps:
- name: update-sap
type: call
call: "sap.update-plant-status"
with:
plant: "{{store_number}}"
status: "temporarily_closed"
- name: update-google
type: call
call: "google-maps.update-status"
with:
location_id: "{{store_number}}"
status: "temporarily_closed"
reopen_date: "{{reopen_date}}"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "store-operations"
text: "Store {{store_number}} temporarily closed. Reason: {{closure_reason}}. Expected reopen: {{reopen_date}}. SAP and Google Maps updated."
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_PLANT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: plants
path: "/A_Plant('{{plant}}')"
inputParameters:
- name: plant
in: path
operations:
- name: update-plant-status
method: PATCH
- type: http
namespace: google-maps
baseUri: "https://mybusinessbusinessinformation.googleapis.com/v1"
authentication:
type: bearer
token: "$secrets.google_business_token"
resources:
- name: locations
path: "/locations/{{location_id}}"
inputParameters:
- name: location_id
in: path
operations:
- name: update-status
method: PATCH
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Runs a store compliance check against operational standards, pulling inventory accuracy from SAP, staffing levels from Workday, and open maintenance tickets from ServiceNow.
naftiko: "0.5"
info:
label: "Store Compliance Audit"
description: "Runs a store compliance check against operational standards, pulling inventory accuracy from SAP, staffing levels from Workday, and open maintenance tickets from ServiceNow."
tags:
- compliance
- store-ops
- sap
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: store-audit
port: 8080
tools:
- name: run-store-audit
description: "Run a store operational compliance audit."
inputParameters:
- name: store_number
in: body
type: string
description: "The Dollar General store number."
- name: audit_date
in: body
type: string
description: "The audit date in YYYY-MM-DD format."
steps:
- name: check-inventory
type: call
call: "sap.get-inventory-accuracy"
with:
plant: "{{store_number}}"
- name: check-staffing
type: call
call: "workday.get-staffing-levels"
with:
location: "{{store_number}}"
date: "{{audit_date}}"
- name: check-maintenance
type: call
call: "servicenow.get-open-tickets"
with:
store: "{{store_number}}"
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: inventory-accuracy
path: "/A_MatlStkInAcctMod"
operations:
- name: get-inventory-accuracy
method: GET
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: staffing
path: "/locations/{{location}}/staffing"
inputParameters:
- name: location
in: path
operations:
- name: get-staffing-levels
method: GET
- type: http
namespace: servicenow
baseUri: "https://dollargeneral.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: get-open-tickets
method: GET
Queries the SAP inventory management system for current stock levels of a product at a specific Dollar General store location.
naftiko: "0.5"
info:
label: "Store Inventory Lookup"
description: "Queries the SAP inventory management system for current stock levels of a product at a specific Dollar General store location."
tags:
- inventory
- store-ops
- sap
capability:
exposes:
- type: mcp
namespace: store-inventory
port: 8080
tools:
- name: get-store-inventory
description: "Check current inventory levels for a product at a store."
inputParameters:
- name: store_number
in: body
type: string
description: "The Dollar General store number."
- name: sku
in: body
type: string
description: "The product SKU."
call: "sap.get-inventory"
with:
plant: "{{store_number}}"
material: "{{sku}}"
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: material-stock
path: "/A_MatlStkInAcctMod(Material='{{material}}',Plant='{{plant}}')"
inputParameters:
- name: material
in: path
- name: plant
in: path
operations:
- name: get-inventory
method: GET
Creates a store maintenance request in ServiceNow for equipment repairs, HVAC issues, or facility maintenance needs.
naftiko: "0.5"
info:
label: "Store Maintenance Request"
description: "Creates a store maintenance request in ServiceNow for equipment repairs, HVAC issues, or facility maintenance needs."
tags:
- store-ops
- maintenance
- servicenow
capability:
exposes:
- type: mcp
namespace: store-maintenance
port: 8080
tools:
- name: create-maintenance-request
description: "Submit a store maintenance request."
inputParameters:
- name: store_number
in: body
type: string
description: "The Dollar General store number."
- name: issue_type
in: body
type: string
description: "Type of maintenance issue (hvac, plumbing, electrical, equipment)."
- name: description
in: body
type: string
description: "Description of the maintenance issue."
- name: priority
in: body
type: string
description: "Priority level (low, medium, high, critical)."
call: "servicenow.create-incident"
with:
short_description: "Store {{store_number}} maintenance: {{issue_type}}"
category: "facilities"
urgency: "{{priority}}"
description: "{{description}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://dollargeneral.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
Updates store operating hours in SAP and Google Maps business profile simultaneously.
naftiko: "0.5"
info:
label: "Store Opening Hours Update"
description: "Updates store operating hours in SAP and Google Maps business profile simultaneously."
tags:
- store-ops
- sap
- google-maps
capability:
exposes:
- type: mcp
namespace: store-hours
port: 8080
tools:
- name: update-store-hours
description: "Update store operating hours across systems."
inputParameters:
- name: store_number
in: body
type: string
description: "The Dollar General store number."
- name: hours
in: body
type: string
description: "JSON object with day-of-week hours."
steps:
- name: update-sap
type: call
call: "sap.update-plant-hours"
with:
plant: "{{store_number}}"
hours: "{{hours}}"
- name: update-google
type: call
call: "google-maps.update-hours"
with:
location_id: "{{store_number}}"
hours: "{{hours}}"
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_PLANT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: plants
path: "/A_Plant('{{plant}}')"
inputParameters:
- name: plant
in: path
operations:
- name: update-plant-hours
method: PATCH
- type: http
namespace: google-maps
baseUri: "https://mybusinessbusinessinformation.googleapis.com/v1"
authentication:
type: bearer
token: "$secrets.google_business_token"
resources:
- name: locations
path: "/locations/{{location_id}}"
inputParameters:
- name: location_id
in: path
operations:
- name: update-hours
method: PATCH
Retrieves the daily sales summary for a Dollar General store including total revenue, transaction count, average basket size, and top-selling categories.
naftiko: "0.5"
info:
label: "Store Sales Report"
description: "Retrieves the daily sales summary for a Dollar General store including total revenue, transaction count, average basket size, and top-selling categories."
tags:
- sales
- reporting
- store-ops
capability:
exposes:
- type: mcp
namespace: store-sales
port: 8080
tools:
- name: get-daily-sales
description: "Retrieve the daily sales summary for a store."
inputParameters:
- name: store_number
in: body
type: string
description: "The Dollar General store number."
- name: date
in: body
type: string
description: "The report date in YYYY-MM-DD format."
call: "sap.get-sales-report"
with:
plant: "{{store_number}}"
date: "{{date}}"
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_SALES_REPORT_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: sales-reports
path: "/A_SalesReport"
operations:
- name: get-sales-report
method: GET
Schedules a district manager store visit in Microsoft Outlook and creates a visit checklist task in ServiceNow.
naftiko: "0.5"
info:
label: "Store Visit Scheduler"
description: "Schedules a district manager store visit in Microsoft Outlook and creates a visit checklist task in ServiceNow."
tags:
- store-ops
- scheduling
- microsoft-outlook
- servicenow
capability:
exposes:
- type: mcp
namespace: store-visits
port: 8080
tools:
- name: schedule-store-visit
description: "Schedule a district manager store visit."
inputParameters:
- name: store_number
in: body
type: string
description: "The Dollar General store number."
- name: dm_email
in: body
type: string
description: "The district manager's email."
- name: visit_date
in: body
type: string
description: "Visit date in YYYY-MM-DD format."
- name: visit_type
in: body
type: string
description: "Visit type (routine, audit, follow-up)."
steps:
- name: create-calendar-event
type: call
call: "outlook.create-event"
with:
organizer: "{{dm_email}}"
subject: "Store visit - DG {{store_number}} ({{visit_type}})"
start: "{{visit_date}}T09:00:00"
end: "{{visit_date}}T12:00:00"
- name: create-checklist
type: call
call: "servicenow.create-task"
with:
short_description: "Store visit checklist: DG {{store_number}} - {{visit_date}}"
category: "store_visit"
description: "Visit type: {{visit_type}}. Store: {{store_number}}. Manager: {{dm_email}}."
consumes:
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: calendar
path: "/users/{{organizer}}/events"
inputParameters:
- name: organizer
in: path
operations:
- name: create-event
method: POST
- type: http
namespace: servicenow
baseUri: "https://dollargeneral.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
When a supply chain delay is detected for a distribution center shipment, creates a ServiceNow incident and sends proactive notifications to affected store managers via Microsoft Teams.
naftiko: "0.5"
info:
label: "Supply Chain Delay Alert"
description: "When a supply chain delay is detected for a distribution center shipment, creates a ServiceNow incident and sends proactive notifications to affected store managers via Microsoft Teams."
tags:
- supply-chain
- alerts
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: supply-chain-alerts
port: 8080
tools:
- name: alert-supply-delay
description: "Process a supply chain delay alert and notify affected stores."
inputParameters:
- name: shipment_id
in: body
type: string
description: "The shipment identifier."
- name: affected_stores
in: body
type: string
description: "Comma-separated list of affected store numbers."
- name: delay_hours
in: body
type: number
description: "Estimated delay in hours."
- name: reason
in: body
type: string
description: "Reason for the delay."
steps:
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Supply delay: Shipment {{shipment_id}} - {{delay_hours}}hr delay"
category: "supply_chain"
description: "Shipment {{shipment_id}} delayed {{delay_hours}} hours. Reason: {{reason}}. Affected stores: {{affected_stores}}."
- name: notify-stores
type: call
call: "msteams.send-message"
with:
channel_id: "store-operations"
text: "Supply delay alert: Shipment {{shipment_id}} delayed {{delay_hours}} hours ({{reason}}). Affected stores: {{affected_stores}}. Incident: {{create-incident.number}}."
consumes:
- type: http
namespace: servicenow
baseUri: "https://dollargeneral.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves Teams activity at Dollar General.
naftiko: "0.5"
info:
label: "Teams Channel Activity"
description: "Retrieves Teams activity at Dollar General."
tags:
- communications
- microsoft-teams
- analytics
capability:
exposes:
- type: mcp
namespace: teams-activity
port: 8080
tools:
- name: get-activity
description: "Check Teams activity at Dollar General."
inputParameters:
- name: team_id
in: body
type: string
description: "Team ID."
- name: channel_id
in: body
type: string
description: "Channel ID."
call: "teams.get-messages"
with:
team_id: "{{team_id}}"
channel_id: "{{channel_id}}"
outputParameters:
- name: count
type: number
mapping: "$.value.length"
consumes:
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.microsoft_graph_token"
resources:
- name: messages
path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
inputParameters:
- name: team_id
in: path
- name: channel_id
in: path
operations:
- name: get-messages
method: GET
Checks Terraform workspace at Dollar General.
naftiko: "0.5"
info:
label: "Terraform Workspace Check"
description: "Checks Terraform workspace at Dollar General."
tags:
- infrastructure
- terraform
- iac
capability:
exposes:
- type: mcp
namespace: tf-ws
port: 8080
tools:
- name: check-ws
description: "Check workspace at Dollar General."
inputParameters:
- name: workspace_id
in: body
type: string
description: "Workspace ID."
call: "terraform.get-ws"
with:
workspace_id: "{{workspace_id}}"
outputParameters:
- name: name
type: string
mapping: "$.data.attributes.name"
consumes:
- type: http
namespace: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: workspaces
path: "/workspaces/{{workspace_id}}"
inputParameters:
- name: workspace_id
in: path
operations:
- name: get-ws
method: GET
Checks Vault secret at Dollar General.
naftiko: "0.5"
info:
label: "Vault Secret Metadata"
description: "Checks Vault secret at Dollar General."
tags:
- security
- vault
- secrets-management
capability:
exposes:
- type: mcp
namespace: vault
port: 8080
tools:
- name: check-secret
description: "Check secret at Dollar General."
inputParameters:
- name: path
in: body
type: string
description: "Secret path."
call: "vault.get-metadata"
with:
path: "{{path}}"
outputParameters:
- name: version
type: number
mapping: "$.data.current_version"
consumes:
- type: http
namespace: vault
baseUri: "https://vault.dg.com/v1"
authentication:
type: bearer
token: "$secrets.vault_token"
resources:
- name: secrets
path: "/secret/metadata/{{path}}"
inputParameters:
- name: path
in: path
operations:
- name: get-metadata
method: GET
Records a vendor delivery receipt in SAP, validates quantities against the purchase order, and logs discrepancies as ServiceNow incidents.
naftiko: "0.5"
info:
label: "Vendor Delivery Receiving"
description: "Records a vendor delivery receipt in SAP, validates quantities against the purchase order, and logs discrepancies as ServiceNow incidents."
tags:
- supply-chain
- receiving
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: vendor-receiving
port: 8080
tools:
- name: receive-vendor-delivery
description: "Record a vendor delivery and validate against the PO."
inputParameters:
- name: po_number
in: body
type: string
description: "The SAP purchase order number."
- name: store_number
in: body
type: string
description: "The receiving store number."
- name: received_items
in: body
type: string
description: "JSON array of received items with SKU and quantity."
steps:
- name: get-po
type: call
call: "sap.get-po"
with:
po_number: "{{po_number}}"
- name: post-receipt
type: call
call: "sap.create-goods-receipt"
with:
po_number: "{{po_number}}"
plant: "{{store_number}}"
items: "{{received_items}}"
- name: log-discrepancy
type: call
call: "servicenow.create-incident"
with:
short_description: "Delivery discrepancy: PO {{po_number}} at store {{store_number}}"
category: "supply_chain"
description: "PO {{po_number}} received at store {{store_number}}. Expected: {{get-po.total_items}}. Received: {{post-receipt.total_received}}. Review needed."
consumes:
- type: http
namespace: sap
baseUri: "https://dg-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
- name: goods-receipts
path: "/A_PurchaseOrder('{{po_number}}')/GoodsReceipt"
inputParameters:
- name: po_number
in: path
operations:
- name: create-goods-receipt
method: POST
- type: http
namespace: servicenow
baseUri: "https://dollargeneral.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 a vendor invoice from SAP, returning invoice number, amount, payment terms, due date, and approval status.
naftiko: "0.5"
info:
label: "Vendor Invoice Lookup"
description: "Retrieves a vendor invoice from SAP, returning invoice number, amount, payment terms, due date, and approval status."
tags:
- finance
- procurement
- sap
capability:
exposes:
- type: mcp
namespace: vendor-invoices
port: 8080
tools:
- name: get-vendor-invoice
description: "Look up a vendor invoice by invoice number."
inputParameters:
- name: invoice_number
in: body
type: string
description: "The SAP vendor invoice number."
call: "sap.get-invoice"
with:
invoice_number: "{{invoice_number}}"
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_SUPPLIERINVOICE_PROCESS_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: invoices
path: "/A_SupplierInvoice('{{invoice_number}}')"
inputParameters:
- name: invoice_number
in: path
operations:
- name: get-invoice
method: GET
Processes invoices at Dollar General via OCR, SAP matching, approval, and Oracle recording.
naftiko: "0.5"
info:
label: "Vendor Invoice Processing Pipeline"
description: "Processes invoices at Dollar General via OCR, SAP matching, approval, and Oracle recording."
tags:
- finance
- accounts-payable
- sap
- oracle
capability:
exposes:
- type: mcp
namespace: invoice-proc
port: 8080
tools:
- name: process-invoice
description: "Process invoices at Dollar General."
inputParameters:
- name: invoice_id
in: body
type: string
description: "Invoice ID."
- name: vendor_id
in: body
type: string
description: "Vendor ID."
steps:
- name: extract
type: call
call: "ocr.extract"
with:
doc: "{{invoice_id}}"
- name: match
type: call
call: "sap.match-po"
with:
vendor: "{{vendor_id}}"
amount: "{{extract.total}}"
- name: approve
type: call
call: "workflow.submit"
with:
invoice: "{{invoice_id}}"
- name: record
type: call
call: "oracle.create-payment"
with:
invoice: "{{invoice_id}}"
consumes:
- type: http
namespace: ocr
baseUri: "https://ocr.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.ocr_token"
resources:
- name: invoices
path: "/extract"
operations:
- name: extract
method: POST
- type: http
namespace: sap
baseUri: "https://sap.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: pos
path: "/match"
operations:
- name: match-po
method: POST
- type: http
namespace: workflow
baseUri: "https://workflow.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.workflow_token"
resources:
- name: approvals
path: "/submit"
operations:
- name: submit
method: POST
- type: http
namespace: oracle
baseUri: "https://oracle.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.oracle_token"
resources:
- name: payments
path: "/payments"
operations:
- name: create-payment
method: POST
Reviews vendors at Dollar General.
naftiko: "0.5"
info:
label: "Quarterly Vendor Review Pipeline"
description: "Reviews vendors at Dollar General."
tags:
- procurement
- vendor-management
- review
capability:
exposes:
- type: mcp
namespace: vendor-review
port: 8080
tools:
- name: review-vendor
description: "Review vendors at Dollar General."
inputParameters:
- name: vendor_id
in: body
type: string
description: "Vendor ID."
- name: quarter
in: body
type: string
description: "Quarter."
steps:
- name: perf
type: call
call: "procurement.get-metrics"
with:
vendor: "{{vendor_id}}"
q: "{{quarter}}"
- name: scorecard
type: call
call: "analytics.scorecard"
with:
data: "{{perf.data}}"
- name: invite
type: call
call: "email.send"
with:
to: "{{perf.contact}}"
subject: "QBR - {{quarter}}"
- name: schedule
type: call
call: "calendar.create-event"
with:
title: "QBR - {{perf.name}}"
consumes:
- type: http
namespace: procurement
baseUri: "https://procurement.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.procurement_token"
resources:
- name: vendors
path: "/vendors/{{vendor}}/metrics"
inputParameters:
- name: vendor
in: path
operations:
- name: get-metrics
method: GET
- type: http
namespace: analytics
baseUri: "https://analytics.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.analytics_token"
resources:
- name: scorecards
path: "/compute"
operations:
- name: scorecard
method: POST
- type: http
namespace: email
baseUri: "https://email.dg.com/api/v1"
authentication:
type: bearer
token: "$secrets.email_token"
resources:
- name: messages
path: "/send"
operations:
- name: send
method: POST
- type: http
namespace: calendar
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.microsoft_graph_token"
resources:
- name: events
path: "/users/proc/events"
operations:
- name: create-event
method: POST
Generates a vendor performance scorecard by pulling delivery timeliness from SAP, quality issue counts from ServiceNow, and fill rate data.
naftiko: "0.5"
info:
label: "Vendor Scorecard Generator"
description: "Generates a vendor performance scorecard by pulling delivery timeliness from SAP, quality issue counts from ServiceNow, and fill rate data."
tags:
- procurement
- analytics
- sap
- servicenow
capability:
exposes:
- type: mcp
namespace: vendor-scorecard
port: 8080
tools:
- name: generate-vendor-scorecard
description: "Generate a vendor performance scorecard."
inputParameters:
- name: vendor_id
in: body
type: string
description: "The SAP vendor identifier."
- name: period
in: body
type: string
description: "The evaluation period in YYYY-MM format."
steps:
- name: get-delivery-performance
type: call
call: "sap.get-vendor-delivery"
with:
vendor: "{{vendor_id}}"
period: "{{period}}"
- name: get-quality-issues
type: call
call: "servicenow.get-vendor-incidents"
with:
vendor: "{{vendor_id}}"
period: "{{period}}"
consumes:
- type: http
namespace: sap
baseUri: "https://dg-s4.sap.com/sap/opu/odata/sap/API_SUPPLIER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: vendor-performance
path: "/A_Supplier('{{vendor}}')/DeliveryPerformance"
inputParameters:
- name: vendor
in: path
operations:
- name: get-vendor-delivery
method: GET
- type: http
namespace: servicenow
baseUri: "https://dollargeneral.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: get-vendor-incidents
method: GET
Retrieves employee profile from Workday for Dollar General.
naftiko: "0.5"
info:
label: "Workday Employee Profile Lookup"
description: "Retrieves employee profile from Workday for Dollar General."
tags:
- hr
- workday
- employee-directory
capability:
exposes:
- type: mcp
namespace: workday-profile
port: 8080
tools:
- name: get-employee-profile
description: "Look up Dollar General employee in Workday."
inputParameters:
- name: employee_id
in: body
type: string
description: "Employee ID."
call: "workday.get-worker"
with:
employee_id: "{{employee_id}}"
outputParameters:
- name: name
type: string
mapping: "$.worker.name"
- name: title
type: string
mapping: "$.worker.title"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5.dg.com/api/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
Checks Zendesk ticket at Dollar General.
naftiko: "0.5"
info:
label: "Zendesk Ticket Check"
description: "Checks Zendesk ticket at Dollar General."
tags:
- support
- zendesk
- ticketing
capability:
exposes:
- type: mcp
namespace: zd-ticket
port: 8080
tools:
- name: check-ticket
description: "Check ticket at Dollar General."
inputParameters:
- name: ticket_id
in: body
type: string
description: "Ticket ID."
call: "zendesk.get-ticket"
with:
id: "{{ticket_id}}"
outputParameters:
- name: status
type: string
mapping: "$.ticket.status"
consumes:
- type: http
namespace: zendesk
baseUri: "https://dg.com.zendesk.com/api/v2"
authentication:
type: bearer
token: "$secrets.zendesk_token"
resources:
- name: tickets
path: "/tickets/{{id}}.json"
inputParameters:
- name: id
in: path
operations:
- name: get-ticket
method: GET