Workday Capabilities
Naftiko 0.5 capability definitions for Workday - 100 capabilities showing integration workflows and service orchestrations.
Retrieves absence calendar for a department.
naftiko: "0.5"
info:
label: "Absence Calendar Lookup"
description: "Retrieves absence calendar for a department."
tags:
- hr
- scheduling
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-absence
description: "Retrieves absence calendar for a department."
inputParameters:
- name: entity_id
in: body
type: string
description: "The absence calendar lookup identifier."
call: "hr-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: hr-api
baseUri: "https://api.workday.com/hr/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: absence
path: "/absence/calendar/lookup/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-absence
method: GET
When a worker submits a time-off request in Workday, creates a corresponding out-of-office event in Google Calendar and notifies the team in Slack.
naftiko: "0.5"
info:
label: "Absence Request with Calendar Sync"
description: "When a worker submits a time-off request in Workday, creates a corresponding out-of-office event in Google Calendar and notifies the team in Slack."
tags:
- hr
- time-off
- workday
- google-calendar
- slack
capability:
exposes:
- type: mcp
namespace: absence-sync
port: 8080
tools:
- name: sync-absence-to-calendar
description: "Given a Workday absence request, create an OOO event in Google Calendar and notify the team."
inputParameters:
- name: absence_request_id
in: body
type: string
description: "The Workday absence request ID."
- name: team_channel
in: body
type: string
description: "The Slack channel for team notifications."
steps:
- name: get-absence
type: call
call: "workday.get-absence-request"
with:
request_id: "{{absence_request_id}}"
- name: create-ooo-event
type: call
call: "gcal.create-event"
with:
calendar_id: "{{get-absence.work_email}}"
summary: "OOO — {{get-absence.worker_name}}"
start_date: "{{get-absence.start_date}}"
end_date: "{{get-absence.end_date}}"
description: "{{get-absence.absence_type}}"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "{{team_channel}}"
text: "{{get-absence.worker_name}} will be OOO {{get-absence.start_date}} to {{get-absence.end_date}} ({{get-absence.absence_type}})."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: absences
path: "/absence/requests/{{request_id}}"
inputParameters:
- name: request_id
in: path
operations:
- name: get-absence-request
method: GET
- type: http
namespace: gcal
baseUri: "https://www.googleapis.com/calendar/v3"
authentication:
type: bearer
token: "$secrets.google_service_token"
resources:
- name: events
path: "/calendars/{{calendar_id}}/events"
inputParameters:
- name: calendar_id
in: path
operations:
- name: create-event
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a Workday supplier invoice exceeds the auto-approval threshold, routes for manager approval via Workday, posts to the AP Slack channel, and logs the approval in Confluence.
naftiko: "0.5"
info:
label: "Accounts Payable Invoice Approval"
description: "When a Workday supplier invoice exceeds the auto-approval threshold, routes for manager approval via Workday, posts to the AP Slack channel, and logs the approval in Confluence."
tags:
- finance
- accounts-payable
- workday-financials
- slack
- confluence
capability:
exposes:
- type: mcp
namespace: ap-approval
port: 8080
tools:
- name: route-invoice-approval
description: "Given a Workday invoice and threshold, route for manager approval, notify AP in Slack, and log in Confluence."
inputParameters:
- name: invoice_number
in: body
type: string
description: "The Workday supplier invoice number."
- name: ap_channel
in: body
type: string
description: "The Slack channel for AP notifications."
- name: confluence_page_id
in: body
type: string
description: "The Confluence page ID for the AP approval log."
steps:
- name: get-invoice
type: call
call: "workday.get-invoice"
with:
invoice_number: "{{invoice_number}}"
- name: notify-ap
type: call
call: "slack.post-message"
with:
channel: "{{ap_channel}}"
text: "Invoice {{invoice_number}} from {{get-invoice.vendor}} for {{get-invoice.amount}} requires approval. Due: {{get-invoice.due_date}}."
- name: log-to-confluence
type: call
call: "confluence.append-to-page"
with:
page_id: "{{confluence_page_id}}"
content: "| {{invoice_number}} | {{get-invoice.vendor}} | {{get-invoice.amount}} | {{get-invoice.due_date}} | Pending |"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: invoices
path: "/financial_management/supplier_invoices/{{invoice_number}}"
inputParameters:
- name: invoice_number
in: path
operations:
- name: get-invoice
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
- type: http
namespace: confluence
baseUri: "https://workday.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: pages
path: "/content/{{page_id}}"
inputParameters:
- name: page_id
in: path
operations:
- name: append-to-page
method: PUT
Retrieves a forecast version from Workday Adaptive Planning by plan name and version, returning revenue, expense, and headcount projections.
naftiko: "0.5"
info:
label: "Adaptive Planning Forecast Lookup"
description: "Retrieves a forecast version from Workday Adaptive Planning by plan name and version, returning revenue, expense, and headcount projections."
tags:
- planning
- finance
- workday
capability:
exposes:
- type: mcp
namespace: adaptive-planning
port: 8080
tools:
- name: get-forecast
description: "Retrieve a Workday Adaptive Planning forecast by plan and version. Returns revenue, expense, and headcount projections."
inputParameters:
- name: plan_name
in: body
type: string
description: "The Adaptive Planning plan name."
- name: version_name
in: body
type: string
description: "The forecast version name."
call: "workday.get-forecast"
with:
plan: "{{plan_name}}"
version: "{{version_name}}"
outputParameters:
- name: total_revenue
type: number
mapping: "$.projections.revenue"
- name: total_expense
type: number
mapping: "$.projections.expense"
- name: headcount
type: number
mapping: "$.projections.headcount"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: forecasts
path: "/planning/forecasts"
inputParameters:
- name: plan
in: query
- name: version
in: query
operations:
- name: get-forecast
method: GET
Manages annual compliance certifications by distributing attestations, tracking completion, and filing results.
naftiko: "0.5"
info:
label: "Annual Compliance Certification Orchestrator"
description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
tags:
- compliance
- hr
- legal
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: run-annual-compliance-certification-orchestrator
description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Annual Compliance Certification Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation.
naftiko: "0.5"
info:
label: "API Lifecycle Management Orchestrator"
description: "Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation."
tags:
- engineering
- api
- operations
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: run-api-lifecycle-management-orchestrator
description: "Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed API Lifecycle Management Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves benefit plan details by plan ID.
naftiko: "0.5"
info:
label: "Benefit Plan Details"
description: "Retrieves benefit plan details by plan ID."
tags:
- hr
- benefits
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-benefit
description: "Retrieves benefit plan details by plan ID."
inputParameters:
- name: entity_id
in: body
type: string
description: "The benefit plan details identifier."
call: "hr-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: hr-api
baseUri: "https://api.workday.com/hr/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: benefit
path: "/benefit/plan/details/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-benefit
method: GET
During open enrollment, queries Workday for workers who have not yet completed their benefits elections, then sends personalized reminder emails via SendGrid and logs reminders in Workday.
naftiko: "0.5"
info:
label: "Benefits Enrollment Reminder"
description: "During open enrollment, queries Workday for workers who have not yet completed their benefits elections, then sends personalized reminder emails via SendGrid and logs reminders in Workday."
tags:
- hr
- benefits
- workday
- sendgrid
capability:
exposes:
- type: mcp
namespace: benefits-enrollment
port: 8080
tools:
- name: send-enrollment-reminders
description: "Query Workday for incomplete benefits enrollments and send reminder emails through SendGrid."
inputParameters:
- name: enrollment_period_id
in: body
type: string
description: "The Workday open enrollment period ID."
- name: reminder_template_id
in: body
type: string
description: "The SendGrid email template ID for the reminder."
steps:
- name: get-incomplete-enrollments
type: call
call: "workday.get-enrollment-status"
with:
period_id: "{{enrollment_period_id}}"
status: "incomplete"
- name: send-reminders
type: call
call: "sendgrid.send-template-email"
with:
template_id: "{{reminder_template_id}}"
recipients: "{{get-incomplete-enrollments.worker_emails}}"
subject: "Action Required: Complete Your Benefits Enrollment"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: enrollments
path: "/benefits/enrollments"
inputParameters:
- name: period_id
in: query
- name: status
in: query
operations:
- name: get-enrollment-status
method: GET
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: mail
path: "/mail/send"
operations:
- name: send-template-email
method: POST
Compares Workday Adaptive Planning budget forecast against actual spend from Workday Financials, and alerts finance leadership in Slack when variance exceeds a threshold.
naftiko: "0.5"
info:
label: "Budget Variance Alert"
description: "Compares Workday Adaptive Planning budget forecast against actual spend from Workday Financials, and alerts finance leadership in Slack when variance exceeds a threshold."
tags:
- finance
- budgeting
- workday-financials
- workday
- slack
capability:
exposes:
- type: mcp
namespace: budget-variance
port: 8080
tools:
- name: check-budget-variance
description: "Compare planned vs actual spend for a cost center. Alert finance leadership in Slack if variance exceeds threshold."
inputParameters:
- name: cost_center_code
in: body
type: string
description: "The Workday cost center code."
- name: fiscal_year
in: body
type: string
description: "Fiscal year in YYYY format."
- name: variance_pct_threshold
in: body
type: number
description: "Maximum acceptable variance percentage."
- name: finance_channel
in: body
type: string
description: "The Slack channel for finance alerts."
steps:
- name: get-budget
type: call
call: "workday.get-budget"
with:
cost_center: "{{cost_center_code}}"
year: "{{fiscal_year}}"
- name: get-actuals
type: call
call: "workday.get-actuals"
with:
cost_center: "{{cost_center_code}}"
year: "{{fiscal_year}}"
- name: alert-finance
type: call
call: "slack.post-message"
with:
channel: "{{finance_channel}}"
text: "Budget variance alert for {{cost_center_code}} (FY{{fiscal_year}}): Budget {{get-budget.allocated}}, Actual {{get-actuals.total_spend}}. Remaining: {{get-budget.remaining}}. Threshold: {{variance_pct_threshold}}%."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: budgets
path: "/financial_management/cost_centers/{{cost_center}}/budgets"
inputParameters:
- name: cost_center
in: path
- name: year
in: query
operations:
- name: get-budget
method: GET
- name: actuals
path: "/financial_management/cost_centers/{{cost_center}}/actuals"
inputParameters:
- name: cost_center
in: path
- name: year
in: query
operations:
- name: get-actuals
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Returns the current status and pending step of a Workday business process instance, useful for tracking approvals and workflow progress.
naftiko: "0.5"
info:
label: "Business Process Status Check"
description: "Returns the current status and pending step of a Workday business process instance, useful for tracking approvals and workflow progress."
tags:
- platform
- workflow
- workday
capability:
exposes:
- type: mcp
namespace: platform-bpm
port: 8080
tools:
- name: get-business-process-status
description: "Check the status of a Workday business process by instance ID. Returns overall status, current step, and assigned approver."
inputParameters:
- name: process_instance_id
in: body
type: string
description: "The Workday business process instance ID."
call: "workday.get-bp-status"
with:
instance_id: "{{process_instance_id}}"
outputParameters:
- name: overall_status
type: string
mapping: "$.overallStatus"
- name: current_step
type: string
mapping: "$.currentStep.name"
- name: assigned_to
type: string
mapping: "$.currentStep.assignedTo"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: business-processes
path: "/businessProcesses/{{instance_id}}/status"
inputParameters:
- name: instance_id
in: path
operations:
- name: get-bp-status
method: GET
Retrieves the current status of a candidate application in Workday Recruiting, including stage, disposition, and recruiter.
naftiko: "0.5"
info:
label: "Candidate Application Status"
description: "Retrieves the current status of a candidate application in Workday Recruiting, including stage, disposition, and recruiter."
tags:
- recruiting
- hr
- workday-recruiting
capability:
exposes:
- type: mcp
namespace: recruiting-candidate
port: 8080
tools:
- name: get-candidate-status
description: "Look up a candidate application by ID in Workday Recruiting. Returns application stage, disposition reason, and assigned recruiter."
inputParameters:
- name: application_id
in: body
type: string
description: "The Workday candidate application ID."
call: "workday.get-application"
with:
app_id: "{{application_id}}"
outputParameters:
- name: stage
type: string
mapping: "$.currentStage"
- name: disposition
type: string
mapping: "$.dispositionReason"
- name: recruiter
type: string
mapping: "$.recruiter.fullName"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: applications
path: "/recruiting/applications/{{app_id}}"
inputParameters:
- name: app_id
in: path
operations:
- name: get-application
method: GET
When a compensation change is proposed in Workday, fetches the current and proposed amounts, routes for manager approval, and notifies HR and the employee in Slack upon completion.
naftiko: "0.5"
info:
label: "Compensation Change Approval Pipeline"
description: "When a compensation change is proposed in Workday, fetches the current and proposed amounts, routes for manager approval, and notifies HR and the employee in Slack upon completion."
tags:
- hr
- compensation
- workday
- slack
- approval
capability:
exposes:
- type: mcp
namespace: comp-approval
port: 8080
tools:
- name: route-comp-change
description: "Given a compensation change event ID, fetch details from Workday, get manager approval context, and notify stakeholders in Slack."
inputParameters:
- name: comp_event_id
in: body
type: string
description: "The Workday compensation change event ID."
- name: hr_channel
in: body
type: string
description: "The Slack channel ID for HR notifications."
steps:
- name: get-comp-event
type: call
call: "workday.get-comp-event"
with:
event_id: "{{comp_event_id}}"
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{get-comp-event.worker_id}}"
- name: get-manager
type: call
call: "workday.get-worker"
with:
worker_id: "{{get-employee.manager_id}}"
- name: notify-hr
type: call
call: "slack.post-message"
with:
channel: "{{hr_channel}}"
text: "Comp change approved for {{get-employee.full_name}}: {{get-comp-event.current_amount}} -> {{get-comp-event.proposed_amount}} ({{get-comp-event.reason}}). Approved by {{get-manager.full_name}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: comp-events
path: "/compensation/events/{{event_id}}"
inputParameters:
- name: event_id
in: path
operations:
- name: get-comp-event
method: GET
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Returns the current compensation details for a Workday worker, including base pay, bonus target, pay grade, and currency.
naftiko: "0.5"
info:
label: "Compensation Detail Lookup"
description: "Returns the current compensation details for a Workday worker, including base pay, bonus target, pay grade, and currency."
tags:
- hr
- compensation
- workday
capability:
exposes:
- type: mcp
namespace: hcm-compensation
port: 8080
tools:
- name: get-compensation
description: "Retrieve current compensation for a worker by employee ID. Returns base pay, bonus target percentage, pay grade, and currency."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee ID."
call: "workday.get-compensation"
with:
worker_id: "{{employee_id}}"
outputParameters:
- name: base_salary
type: number
mapping: "$.basePay.amount"
- name: bonus_target_pct
type: number
mapping: "$.bonusTarget.percentage"
- name: pay_grade
type: string
mapping: "$.payGrade"
- name: currency
type: string
mapping: "$.basePay.currency"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: compensation
path: "/workers/{{worker_id}}/compensation"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-compensation
method: GET
Retrieves a Confluence wiki page.
naftiko: "0.5"
info:
label: "Confluence Page Viewer"
description: "Retrieves a Confluence wiki page."
tags:
- collaboration
- confluence
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: get-confluence
description: "Retrieves a Confluence wiki page."
inputParameters:
- name: entity_id
in: body
type: string
description: "The confluence page viewer identifier."
call: "collaboration-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: collaboration-api
baseUri: "https://api.workday.com/collaboration/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: confluence
path: "/confluence/page/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-confluence
method: GET
Converts a contingent worker to full-time employee in Workday, provisions benefits enrollment, creates an Azure AD permanent account, and notifies HR and the hiring manager.
naftiko: "0.5"
info:
label: "Contractor Conversion to FTE"
description: "Converts a contingent worker to full-time employee in Workday, provisions benefits enrollment, creates an Azure AD permanent account, and notifies HR and the hiring manager."
tags:
- hr
- workday
- microsoft-teams
- onboarding
- contingent-worker
capability:
exposes:
- type: mcp
namespace: contractor-conversion
port: 8080
tools:
- name: convert-to-fte
description: "Convert a Workday contingent worker to FTE, provision benefits, create permanent AD account, and notify stakeholders."
inputParameters:
- name: contingent_worker_id
in: body
type: string
description: "The Workday contingent worker ID."
- name: fte_start_date
in: body
type: string
description: "The FTE start date in YYYY-MM-DD format."
- name: hr_channel
in: body
type: string
description: "The Teams channel webhook for HR notifications."
steps:
- name: get-worker
type: call
call: "workday.get-worker"
with:
worker_id: "{{contingent_worker_id}}"
- name: convert-worker
type: call
call: "workday.convert-to-employee"
with:
worker_id: "{{contingent_worker_id}}"
start_date: "{{fte_start_date}}"
- name: provision-ad
type: call
call: "msgraph.update-user"
with:
user_id: "{{get-worker.work_email}}"
employeeType: "Full-Time"
accountEnabled: true
- name: notify-hr
type: call
call: "msteams.send-webhook"
with:
webhook_url: "{{hr_channel}}"
text: "Contractor {{get-worker.full_name}} converted to FTE effective {{fte_start_date}}. New employee ID: {{convert-worker.employee_id}}. Benefits enrollment initiated."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.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
- name: conversions
path: "/workers/{{worker_id}}/convertToEmployee"
inputParameters:
- name: worker_id
in: path
operations:
- name: convert-to-employee
method: POST
- type: http
namespace: msgraph
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users/{{user_id}}"
inputParameters:
- name: user_id
in: path
operations:
- name: update-user
method: PATCH
- type: http
namespace: msteams
baseUri: "https://outlook.office.com/webhook"
authentication:
type: none
resources:
- name: incoming-webhook
path: "/{{webhook_url}}"
inputParameters:
- name: webhook_url
in: path
operations:
- name: send-webhook
method: POST
Looks up a Workday Financials cost center budget by code and fiscal year, returning allocated budget, spend-to-date, and remaining balance.
naftiko: "0.5"
info:
label: "Cost Center Budget Query"
description: "Looks up a Workday Financials cost center budget by code and fiscal year, returning allocated budget, spend-to-date, and remaining balance."
tags:
- finance
- budgeting
- workday-financials
capability:
exposes:
- type: mcp
namespace: finance-budget
port: 8080
tools:
- name: get-cost-center-budget
description: "Retrieve budget allocation for a Workday cost center and fiscal year. Returns allocated amount, spend-to-date, and remaining balance."
inputParameters:
- name: cost_center_code
in: body
type: string
description: "The Workday cost center code."
- name: fiscal_year
in: body
type: string
description: "Fiscal year in YYYY format."
call: "workday.get-budget"
with:
cost_center: "{{cost_center_code}}"
year: "{{fiscal_year}}"
outputParameters:
- name: allocated
type: number
mapping: "$.allocatedBudget"
- name: spent
type: number
mapping: "$.spendToDate"
- name: remaining
type: number
mapping: "$.remainingBalance"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: budgets
path: "/financial_management/cost_centers/{{cost_center}}/budgets"
inputParameters:
- name: cost_center
in: path
- name: year
in: query
operations:
- name: get-budget
method: GET
Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters.
naftiko: "0.5"
info:
label: "Cross-Functional Project Kickoff Orchestrator"
description: "Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters."
tags:
- project-management
- collaboration
- operations
capability:
exposes:
- type: mcp
namespace: project-management
port: 8080
tools:
- name: run-cross-functional-project-kickoff-orchestrator
description: "Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Cross-Functional Project Kickoff Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Handles customer data privacy requests by locating records, processing deletions, and confirming compliance.
naftiko: "0.5"
info:
label: "Customer Data Privacy Request Handler"
description: "Handles customer data privacy requests by locating records, processing deletions, and confirming compliance."
tags:
- compliance
- privacy
- customer-service
capability:
exposes:
- type: mcp
namespace: compliance
port: 8080
tools:
- name: run-customer-data-privacy-request-handler
description: "Handles customer data privacy requests by locating records, processing deletions, and confirming compliance."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Customer Data Privacy Request Handler for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations.
naftiko: "0.5"
info:
label: "Customer Journey Mapping Orchestrator"
description: "Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations."
tags:
- customer-experience
- analytics
- product-management
capability:
exposes:
- type: mcp
namespace: customer-experience
port: 8080
tools:
- name: run-customer-journey-mapping-orchestrator
description: "Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Customer Journey Mapping Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports.
naftiko: "0.5"
info:
label: "Data Governance Review Orchestrator"
description: "Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports."
tags:
- data-governance
- compliance
- analytics
capability:
exposes:
- type: mcp
namespace: data-governance
port: 8080
tools:
- name: run-data-governance-review-orchestrator
description: "Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Data Governance Review Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks.
naftiko: "0.5"
info:
label: "Digital Transformation Progress Orchestrator"
description: "Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks."
tags:
- strategy
- analytics
- project-management
capability:
exposes:
- type: mcp
namespace: strategy
port: 8080
tools:
- name: run-digital-transformation-progress-orchestrator
description: "Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Digital Transformation Progress Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Executes disaster recovery tests by failing over systems, validating recovery, and documenting results.
naftiko: "0.5"
info:
label: "Disaster Recovery Test Orchestrator"
description: "Executes disaster recovery tests by failing over systems, validating recovery, and documenting results."
tags:
- infrastructure
- operations
- compliance
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: run-disaster-recovery-test-orchestrator
description: "Executes disaster recovery tests by failing over systems, validating recovery, and documenting results."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Disaster Recovery Test Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Runs Workday diversity and inclusion reports, loads aggregated metrics into Snowflake, and triggers a Tableau dashboard refresh for the DEI leadership team.
naftiko: "0.5"
info:
label: "Diversity Metrics Dashboard Refresh"
description: "Runs Workday diversity and inclusion reports, loads aggregated metrics into Snowflake, and triggers a Tableau dashboard refresh for the DEI leadership team."
tags:
- hr
- analytics
- workday-reporting
- snowflake
- tableau
capability:
exposes:
- type: mcp
namespace: dei-metrics
port: 8080
tools:
- name: refresh-dei-dashboard
description: "Run Workday DEI reports, load to Snowflake, and refresh the Tableau DEI dashboard."
inputParameters:
- name: report_name
in: body
type: string
description: "The Workday diversity report name."
- name: datasource_id
in: body
type: string
description: "The Tableau datasource ID to refresh."
steps:
- name: run-dei-report
type: call
call: "workday.run-report"
with:
report: "{{report_name}}"
format: "json"
- name: load-to-snowflake
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO HR_ANALYTICS.DEI_METRICS (report_date, data) SELECT CURRENT_DATE(), PARSE_JSON('{{run-dei-report.data}}')"
- name: refresh-tableau
type: call
call: "tableau.refresh-datasource"
with:
datasource_id: "{{datasource_id}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: reports
path: "/reports/{{report}}"
inputParameters:
- name: report
in: path
- name: format
in: query
operations:
- name: run-report
method: GET
- type: http
namespace: snowflake
baseUri: "https://workday.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: tableau
baseUri: "https://tableau.workday.com/api/3.21"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: datasources
path: "/sites/default/datasources/{{datasource_id}}/refresh"
inputParameters:
- name: datasource_id
in: path
operations:
- name: refresh-datasource
method: POST
Generates an offer letter from Workday Recruiting candidate data, sends it for e-signature via DocuSign, and updates the candidate status in Workday upon completion.
naftiko: "0.5"
info:
label: "DocuSign Offer Letter Pipeline"
description: "Generates an offer letter from Workday Recruiting candidate data, sends it for e-signature via DocuSign, and updates the candidate status in Workday upon completion."
tags:
- recruiting
- hr
- workday-recruiting
- docusign
capability:
exposes:
- type: mcp
namespace: offer-letter
port: 8080
tools:
- name: send-offer-letter
description: "Pull candidate details from Workday, send an offer letter via DocuSign, and update candidate status."
inputParameters:
- name: application_id
in: body
type: string
description: "The Workday candidate application ID."
- name: template_id
in: body
type: string
description: "The DocuSign template ID for the offer letter."
steps:
- name: get-candidate
type: call
call: "workday.get-application"
with:
app_id: "{{application_id}}"
- name: send-envelope
type: call
call: "docusign.create-envelope"
with:
template_id: "{{template_id}}"
signer_email: "{{get-candidate.candidate_email}}"
signer_name: "{{get-candidate.candidate_name}}"
tabs:
position_title: "{{get-candidate.job_title}}"
start_date: "{{get-candidate.proposed_start_date}}"
salary: "{{get-candidate.proposed_salary}}"
- name: update-candidate-status
type: call
call: "workday.update-application-status"
with:
app_id: "{{application_id}}"
status: "Offer Sent"
envelope_id: "{{send-envelope.envelope_id}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: applications
path: "/recruiting/applications/{{app_id}}"
inputParameters:
- name: app_id
in: path
operations:
- name: get-application
method: GET
- name: application-status
path: "/recruiting/applications/{{app_id}}/status"
inputParameters:
- name: app_id
in: path
operations:
- name: update-application-status
method: PUT
- type: http
namespace: docusign
baseUri: "https://na4.docusign.net/restapi/v2.1/accounts/$secrets.docusign_account_id"
authentication:
type: bearer
token: "$secrets.docusign_token"
resources:
- name: envelopes
path: "/envelopes"
operations:
- name: create-envelope
method: POST
Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews.
naftiko: "0.5"
info:
label: "Employee Offboarding Orchestrator"
description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
tags:
- hr
- identity
- operations
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: run-employee-offboarding-orchestrator
description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Employee Offboarding Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
On worker termination in Workday, disables the Azure AD account, revokes Okta sessions, creates a ServiceNow offboarding ticket, and notifies the manager in Microsoft Teams.
naftiko: "0.5"
info:
label: "Employee Termination Workflow"
description: "On worker termination in Workday, disables the Azure AD account, revokes Okta sessions, creates a ServiceNow offboarding ticket, and notifies the manager in Microsoft Teams."
tags:
- hr
- offboarding
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: orchestrate-termination
description: "Given a terminated employee ID, disable AD account, revoke Okta sessions, open offboarding ticket, and notify the manager."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee ID of the terminated worker."
- name: termination_date
in: body
type: string
description: "The effective termination date in YYYY-MM-DD format."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: disable-ad-account
type: call
call: "msgraph.update-user"
with:
user_id: "{{get-employee.work_email}}"
accountEnabled: false
- name: revoke-sessions
type: call
call: "okta.clear-sessions"
with:
user_id: "{{get-employee.work_email}}"
- name: open-offboard-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Offboarding: {{get-employee.full_name}} — {{termination_date}}"
category: "hr_offboarding"
assigned_group: "IT_Offboarding"
description: "Recover equipment, revoke building access, archive mailbox for {{get-employee.full_name}}."
- name: notify-manager
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-employee.manager_email}}"
text: "Offboarding initiated for {{get-employee.full_name}} effective {{termination_date}}. IT ticket: {{open-offboard-ticket.number}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.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: msgraph
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users/{{user_id}}"
inputParameters:
- name: user_id
in: path
operations:
- name: update-user
method: PATCH
- type: http
namespace: okta
baseUri: "https://workday.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_token"
resources:
- name: sessions
path: "/users/{{user_id}}/sessions"
inputParameters:
- name: user_id
in: path
operations:
- name: clear-sessions
method: DELETE
- type: http
namespace: servicenow
baseUri: "https://workday.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: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI.
naftiko: "0.5"
info:
label: "Executive Dashboard Refresh Orchestrator"
description: "Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI."
tags:
- analytics
- power-bi
- business
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: run-executive-dashboard-refresh-orchestrator
description: "Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Executive Dashboard Refresh Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves expense reports from Workday, validates against corporate policy thresholds, and opens a Jira ticket for finance audit when violations are detected.
naftiko: "0.5"
info:
label: "Expense Report Compliance Check"
description: "Retrieves expense reports from Workday, validates against corporate policy thresholds, and opens a Jira ticket for finance audit when violations are detected."
tags:
- finance
- expense
- workday
- jira
- compliance
capability:
exposes:
- type: mcp
namespace: expense-compliance
port: 8080
tools:
- name: check-expense-compliance
description: "Fetch a Workday expense report and validate against policy. If violations found, open a Jira audit ticket."
inputParameters:
- name: expense_report_id
in: body
type: string
description: "The Workday expense report ID."
- name: employee_id
in: body
type: string
description: "The employee ID who submitted the report."
steps:
- name: get-expense
type: call
call: "workday.get-expense-report"
with:
report_id: "{{expense_report_id}}"
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: create-audit-ticket
type: call
call: "jira.create-issue"
with:
project_key: "FINAUDIT"
summary: "Expense policy review: {{get-expense.report_name}} — {{get-employee.full_name}}"
description: "Report total: {{get-expense.total_amount}} {{get-expense.currency}}. Submitted: {{get-expense.submit_date}}. Cost center: {{get-employee.cost_center}}."
issue_type: "Task"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: expense-reports
path: "/expense/reports/{{report_id}}"
inputParameters:
- name: report_id
in: path
operations:
- name: get-expense-report
method: GET
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: jira
baseUri: "https://workday.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Orchestrates the Workday financial period close by running the close report, posting pending journal entries, and notifying the controller team in Microsoft Teams when complete.
naftiko: "0.5"
info:
label: "Finance Period Close Orchestrator"
description: "Orchestrates the Workday financial period close by running the close report, posting pending journal entries, and notifying the controller team in Microsoft Teams when complete."
tags:
- finance
- accounting
- workday-financials
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: finance-close
port: 8080
tools:
- name: run-period-close
description: "Trigger a Workday fiscal period close sequence: run the close report, post pending journals, and notify controllers."
inputParameters:
- name: fiscal_period
in: body
type: string
description: "The fiscal period identifier (e.g. FY2026-Q1)."
- name: controller_channel
in: body
type: string
description: "The Teams channel webhook URL for controller notifications."
steps:
- name: run-close-report
type: call
call: "workday.run-report"
with:
report: "Period_Close_Summary"
format: "json"
- name: post-journals
type: call
call: "workday.post-pending-journals"
with:
period: "{{fiscal_period}}"
- name: notify-controllers
type: call
call: "msteams.send-webhook"
with:
webhook_url: "{{controller_channel}}"
text: "Period {{fiscal_period}} close complete. {{run-close-report.row_count}} items reviewed. {{post-journals.posted_count}} journals posted."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: reports
path: "/reports/{{report}}"
inputParameters:
- name: report
in: path
- name: format
in: query
operations:
- name: run-report
method: GET
- name: journal-posting
path: "/financial_management/journal_entries/post"
inputParameters:
- name: period
in: query
operations:
- name: post-pending-journals
method: POST
- type: http
namespace: msteams
baseUri: "https://outlook.office.com/webhook"
authentication:
type: none
resources:
- name: incoming-webhook
path: "/{{webhook_url}}"
inputParameters:
- name: webhook_url
in: path
operations:
- name: send-webhook
method: POST
Pulls Workday GL trial balance and bank statement data, compares balances, and creates a ServiceNow task for treasury when discrepancies are found.
naftiko: "0.5"
info:
label: "General Ledger Reconciliation Pipeline"
description: "Pulls Workday GL trial balance and bank statement data, compares balances, and creates a ServiceNow task for treasury when discrepancies are found."
tags:
- finance
- accounting
- workday-financials
- servicenow
- reconciliation
capability:
exposes:
- type: mcp
namespace: gl-reconciliation
port: 8080
tools:
- name: reconcile-gl
description: "Compare Workday GL trial balance against bank data. Create a ServiceNow task if discrepancies exist."
inputParameters:
- name: ledger_account
in: body
type: string
description: "The GL ledger account code."
- name: as_of_date
in: body
type: string
description: "The reconciliation date in YYYY-MM-DD format."
steps:
- name: get-trial-balance
type: call
call: "workday.get-trial-balance"
with:
account: "{{ledger_account}}"
date: "{{as_of_date}}"
- name: get-bank-balance
type: call
call: "workday.get-bank-statement"
with:
account: "{{ledger_account}}"
date: "{{as_of_date}}"
- name: open-discrepancy-task
type: call
call: "servicenow.create-task"
with:
short_description: "GL reconciliation discrepancy: {{ledger_account}} as of {{as_of_date}}"
description: "GL balance: {{get-trial-balance.balance}}, Bank balance: {{get-bank-balance.balance}}. Variance: {{get-trial-balance.balance}} - {{get-bank-balance.balance}}."
assigned_group: "Treasury_Operations"
category: "gl_reconciliation"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: trial-balance
path: "/financial_management/trial_balance/{{account}}"
inputParameters:
- name: account
in: path
- name: date
in: query
operations:
- name: get-trial-balance
method: GET
- name: bank-statements
path: "/financial_management/bank_statements/{{account}}"
inputParameters:
- name: account
in: path
- name: date
in: query
operations:
- name: get-bank-statement
method: GET
- type: http
namespace: servicenow
baseUri: "https://workday.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
Retrieves a file from Google Drive.
naftiko: "0.5"
info:
label: "Google Drive File Viewer"
description: "Retrieves a file from Google Drive."
tags:
- collaboration
- google-drive
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: get-google
description: "Retrieves a file from Google Drive."
inputParameters:
- name: entity_id
in: body
type: string
description: "The google drive file viewer identifier."
call: "collaboration-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: collaboration-api
baseUri: "https://api.workday.com/collaboration/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: google
path: "/google/drive/file/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-google
method: GET
Syncs approved headcount from Workday Adaptive Planning to a Snowflake data warehouse for BI reporting, then triggers a Tableau extract refresh for the executive dashboard.
naftiko: "0.5"
info:
label: "Headcount Planning Sync"
description: "Syncs approved headcount from Workday Adaptive Planning to a Snowflake data warehouse for BI reporting, then triggers a Tableau extract refresh for the executive dashboard."
tags:
- planning
- finance
- workday
- snowflake
- tableau
capability:
exposes:
- type: mcp
namespace: headcount-sync
port: 8080
tools:
- name: sync-headcount-plan
description: "Pull approved headcount from Workday Adaptive Planning, load into Snowflake, and refresh the Tableau executive dashboard."
inputParameters:
- name: plan_name
in: body
type: string
description: "The Adaptive Planning plan name."
- name: version_name
in: body
type: string
description: "The approved version name."
- name: datasource_id
in: body
type: string
description: "The Tableau datasource ID to refresh."
steps:
- name: get-headcount
type: call
call: "workday.get-forecast"
with:
plan: "{{plan_name}}"
version: "{{version_name}}"
- name: load-to-snowflake
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO HR_ANALYTICS.HEADCOUNT_PLAN (plan, version, headcount, revenue, expense) VALUES ('{{plan_name}}', '{{version_name}}', {{get-headcount.headcount}}, {{get-headcount.total_revenue}}, {{get-headcount.total_expense}})"
- name: refresh-tableau
type: call
call: "tableau.refresh-datasource"
with:
datasource_id: "{{datasource_id}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: forecasts
path: "/planning/forecasts"
inputParameters:
- name: plan
in: query
- name: version
in: query
operations:
- name: get-forecast
method: GET
- type: http
namespace: snowflake
baseUri: "https://workday.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: tableau
baseUri: "https://tableau.workday.com/api/3.21"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: datasources
path: "/sites/default/datasources/{{datasource_id}}/refresh"
inputParameters:
- name: datasource_id
in: path
operations:
- name: refresh-datasource
method: POST
Extracts terminated worker records from Workday past retention period, archives them to Amazon S3 cold storage, and logs the archival event in Datadog for audit.
naftiko: "0.5"
info:
label: "Hire-to-Retire Data Archival"
description: "Extracts terminated worker records from Workday past retention period, archives them to Amazon S3 cold storage, and logs the archival event in Datadog for audit."
tags:
- hr
- compliance
- workday
- amazon-s3
- datadog
capability:
exposes:
- type: mcp
namespace: data-archival
port: 8080
tools:
- name: archive-terminated-workers
description: "Extract terminated Workday workers past retention, archive to S3, and log in Datadog."
inputParameters:
- name: retention_cutoff_date
in: body
type: string
description: "Archive workers terminated before this date (YYYY-MM-DD)."
- name: s3_bucket
in: body
type: string
description: "The S3 bucket for archived data."
steps:
- name: get-terminated-workers
type: call
call: "workday.run-report"
with:
report: "Terminated_Workers_Archive"
format: "json"
- name: upload-to-s3
type: call
call: "s3.put-object"
with:
bucket: "{{s3_bucket}}"
key: "hr-archive/terminated/{{retention_cutoff_date}}.json"
body: "{{get-terminated-workers.data}}"
- name: log-to-datadog
type: call
call: "datadog.create-event"
with:
title: "Worker data archived: {{retention_cutoff_date}}"
text: "Archived {{get-terminated-workers.row_count}} terminated worker records to s3://{{s3_bucket}}/hr-archive/terminated/{{retention_cutoff_date}}.json"
tags: "service:workday,env:production,team:hr-platform"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: reports
path: "/reports/{{report}}"
inputParameters:
- name: report
in: path
- name: format
in: query
operations:
- name: run-report
method: GET
- type: http
namespace: s3
baseUri: "https://s3.amazonaws.com"
authentication:
type: bearer
token: "$secrets.aws_s3_token"
resources:
- name: objects
path: "/{{bucket}}/{{key}}"
inputParameters:
- name: bucket
in: path
- name: key
in: path
operations:
- name: put-object
method: PUT
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: events
path: "/events"
operations:
- name: create-event
method: POST
Orchestrates hr tech workflow 1 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Hr Tech Workflow 1"
description: "Orchestrates hr tech workflow 1 by coordinating across systems, validating data, and sending notifications."
tags:
- hr
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: run-hr-tech-workflow-001
description: "Orchestrates hr tech workflow 1 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Hr Tech Workflow 1 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates hr tech workflow 2 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Hr Tech Workflow 2"
description: "Orchestrates hr tech workflow 2 by coordinating across systems, validating data, and sending notifications."
tags:
- hr
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: run-hr-tech-workflow-002
description: "Orchestrates hr tech workflow 2 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Hr Tech Workflow 2 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves hr tech operational data for workflow 3.
naftiko: "0.5"
info:
label: "Hr Tech Data Query 3"
description: "Retrieves hr tech operational data for workflow 3."
tags:
- hr
- operations
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-data-3
description: "Query hr tech data for workflow 3."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "hr-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: hr-api
baseUri: "https://api.workday.com/hr-tech/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-3
method: GET
Orchestrates hr tech workflow 4 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Hr Tech Workflow 4"
description: "Orchestrates hr tech workflow 4 by coordinating across systems, validating data, and sending notifications."
tags:
- hr
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: run-hr-tech-workflow-004
description: "Orchestrates hr tech workflow 4 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Hr Tech Workflow 4 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates hr tech workflow 5 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Hr Tech Workflow 5"
description: "Orchestrates hr tech workflow 5 by coordinating across systems, validating data, and sending notifications."
tags:
- hr
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: run-hr-tech-workflow-005
description: "Orchestrates hr tech workflow 5 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Hr Tech Workflow 5 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves hr tech operational data for workflow 6.
naftiko: "0.5"
info:
label: "Hr Tech Data Query 6"
description: "Retrieves hr tech operational data for workflow 6."
tags:
- hr
- operations
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-data-6
description: "Query hr tech data for workflow 6."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "hr-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: hr-api
baseUri: "https://api.workday.com/hr-tech/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-6
method: GET
Orchestrates hr tech workflow 7 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Hr Tech Workflow 7"
description: "Orchestrates hr tech workflow 7 by coordinating across systems, validating data, and sending notifications."
tags:
- hr
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: run-hr-tech-workflow-007
description: "Orchestrates hr tech workflow 7 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Hr Tech Workflow 7 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates hr tech workflow 8 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Hr Tech Workflow 8"
description: "Orchestrates hr tech workflow 8 by coordinating across systems, validating data, and sending notifications."
tags:
- hr
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: run-hr-tech-workflow-008
description: "Orchestrates hr tech workflow 8 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Hr Tech Workflow 8 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves hr tech operational data for workflow 9.
naftiko: "0.5"
info:
label: "Hr Tech Data Query 9"
description: "Retrieves hr tech operational data for workflow 9."
tags:
- hr
- operations
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-data-9
description: "Query hr tech data for workflow 9."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "hr-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: hr-api
baseUri: "https://api.workday.com/hr-tech/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-9
method: GET
Orchestrates hr tech workflow 10 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Hr Tech Workflow 10"
description: "Orchestrates hr tech workflow 10 by coordinating across systems, validating data, and sending notifications."
tags:
- hr
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: run-hr-tech-workflow-010
description: "Orchestrates hr tech workflow 10 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Hr Tech Workflow 10 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates hr tech workflow 11 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Hr Tech Workflow 11"
description: "Orchestrates hr tech workflow 11 by coordinating across systems, validating data, and sending notifications."
tags:
- hr
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: run-hr-tech-workflow-011
description: "Orchestrates hr tech workflow 11 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Hr Tech Workflow 11 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves hr tech operational data for workflow 12.
naftiko: "0.5"
info:
label: "Hr Tech Data Query 12"
description: "Retrieves hr tech operational data for workflow 12."
tags:
- hr
- operations
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-data-12
description: "Query hr tech data for workflow 12."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "hr-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: hr-api
baseUri: "https://api.workday.com/hr-tech/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-12
method: GET
Orchestrates hr tech workflow 13 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Hr Tech Workflow 13"
description: "Orchestrates hr tech workflow 13 by coordinating across systems, validating data, and sending notifications."
tags:
- hr
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: run-hr-tech-workflow-013
description: "Orchestrates hr tech workflow 13 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Hr Tech Workflow 13 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Orchestrates hr tech workflow 14 by coordinating across systems, validating data, and sending notifications.
naftiko: "0.5"
info:
label: "Hr Tech Workflow 14"
description: "Orchestrates hr tech workflow 14 by coordinating across systems, validating data, and sending notifications."
tags:
- hr
- operations
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: run-hr-tech-workflow-014
description: "Orchestrates hr tech workflow 14 by coordinating across systems, validating data, and sending notifications."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Hr Tech Workflow 14 for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves hr tech operational data for workflow 15.
naftiko: "0.5"
info:
label: "Hr Tech Data Query 15"
description: "Retrieves hr tech operational data for workflow 15."
tags:
- hr
- operations
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-data-15
description: "Query hr tech data for workflow 15."
inputParameters:
- name: entity_id
in: body
type: string
description: "The entity identifier."
call: "hr-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: hr-api
baseUri: "https://api.workday.com/hr-tech/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: data
path: "/data/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-data-15
method: GET
Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests.
naftiko: "0.5"
info:
label: "Infrastructure Capacity Planning Orchestrator"
description: "Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests."
tags:
- infrastructure
- planning
- finance
capability:
exposes:
- type: mcp
namespace: infrastructure
port: 8080
tools:
- name: run-infrastructure-capacity-planning-orchestrator
description: "Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Infrastructure Capacity Planning Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Monitors Workday integration runs, and when a run fails, creates a PagerDuty incident and posts details to the platform engineering Slack channel.
naftiko: "0.5"
info:
label: "Integration Failure Alert Pipeline"
description: "Monitors Workday integration runs, and when a run fails, creates a PagerDuty incident and posts details to the platform engineering Slack channel."
tags:
- integrations
- platform-engineering
- workday-integrations
- pagerduty
- slack
capability:
exposes:
- type: mcp
namespace: integration-alerting
port: 8080
tools:
- name: alert-integration-failure
description: "Given a failed Workday integration run ID, create a PagerDuty incident and alert the platform team in Slack."
inputParameters:
- name: integration_run_id
in: body
type: string
description: "The failed Workday integration run ID."
- name: platform_channel
in: body
type: string
description: "The Slack channel ID for platform engineering."
steps:
- name: get-run-details
type: call
call: "workday.get-integration-run"
with:
run_id: "{{integration_run_id}}"
- name: create-incident
type: call
call: "pagerduty.create-incident"
with:
title: "Workday Integration Failed: {{get-run-details.integration_name}}"
service_id: "$secrets.pagerduty_workday_service_id"
urgency: "high"
body: "Run {{integration_run_id}} failed. Records processed: {{get-run-details.records_processed}}, failed: {{get-run-details.records_failed}}. Completed: {{get-run-details.completed_at}}."
- name: notify-platform
type: call
call: "slack.post-message"
with:
channel: "{{platform_channel}}"
text: "Integration failure: {{get-run-details.integration_name}} (run {{integration_run_id}}). {{get-run-details.records_failed}} records failed. PagerDuty incident: {{create-incident.incident_url}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: integration-runs
path: "/integrations/runs/{{run_id}}"
inputParameters:
- name: run_id
in: path
operations:
- name: get-integration-run
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_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Checks the execution status of a Workday Integration (EIB or Studio integration) by run ID, returning completion state, record counts, and error summary.
naftiko: "0.5"
info:
label: "Integration Run Status"
description: "Checks the execution status of a Workday Integration (EIB or Studio integration) by run ID, returning completion state, record counts, and error summary."
tags:
- integrations
- platform
- workday-integrations
capability:
exposes:
- type: mcp
namespace: integration-status
port: 8080
tools:
- name: get-integration-run
description: "Check the status of a Workday integration run. Returns state, records processed, records failed, and completion time."
inputParameters:
- name: integration_run_id
in: body
type: string
description: "The Workday integration run ID."
call: "workday.get-integration-run"
with:
run_id: "{{integration_run_id}}"
outputParameters:
- name: state
type: string
mapping: "$.status"
- name: records_processed
type: number
mapping: "$.recordsProcessed"
- name: records_failed
type: number
mapping: "$.recordsFailed"
- name: completed_at
type: string
mapping: "$.completedDateTime"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: integration-runs
path: "/integrations/runs/{{run_id}}"
inputParameters:
- name: run_id
in: path
operations:
- name: get-integration-run
method: GET
Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams.
naftiko: "0.5"
info:
label: "IT Change Management Orchestrator"
description: "Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams."
tags:
- it
- servicenow
- operations
capability:
exposes:
- type: mcp
namespace: it
port: 8080
tools:
- name: run-it-change-management-orchestrator
description: "Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed IT Change Management Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves a Jira ticket by issue key.
naftiko: "0.5"
info:
label: "Jira Ticket Viewer"
description: "Retrieves a Jira ticket by issue key."
tags:
- engineering
- jira
capability:
exposes:
- type: mcp
namespace: engineering
port: 8080
tools:
- name: get-jira
description: "Retrieves a Jira ticket by issue key."
inputParameters:
- name: entity_id
in: body
type: string
description: "The jira ticket viewer identifier."
call: "engineering-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: engineering-api
baseUri: "https://api.workday.com/engineering/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: jira
path: "/jira/ticket/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-jira
method: GET
When a Workday job requisition is approved, extracts the job details, creates a LinkedIn job posting via the LinkedIn API, and updates the requisition with the external posting URL.
naftiko: "0.5"
info:
label: "Job Requisition to LinkedIn Posting"
description: "When a Workday job requisition is approved, extracts the job details, creates a LinkedIn job posting via the LinkedIn API, and updates the requisition with the external posting URL."
tags:
- recruiting
- hr
- workday-recruiting
- linkedin
capability:
exposes:
- type: mcp
namespace: recruiting-syndication
port: 8080
tools:
- name: syndicate-to-linkedin
description: "Given a Workday requisition ID, pull job details and create a LinkedIn job posting. Returns the LinkedIn posting URL."
inputParameters:
- name: requisition_id
in: body
type: string
description: "The Workday job requisition ID."
steps:
- name: get-requisition
type: call
call: "workday.get-requisition"
with:
req_id: "{{requisition_id}}"
- name: post-to-linkedin
type: call
call: "linkedin.create-job-posting"
with:
title: "{{get-requisition.title}}"
description: "{{get-requisition.job_description}}"
location: "{{get-requisition.location}}"
company_id: "{{get-requisition.company_linkedin_id}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: requisitions
path: "/recruiting/requisitions/{{req_id}}"
inputParameters:
- name: req_id
in: path
operations:
- name: get-requisition
method: GET
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: job-postings
path: "/simpleJobPostings"
operations:
- name: create-job-posting
method: POST
Retrieves the status of a Workday Financials journal entry by ID, returning posting status, ledger, amount, and company.
naftiko: "0.5"
info:
label: "Journal Entry Status"
description: "Retrieves the status of a Workday Financials journal entry by ID, returning posting status, ledger, amount, and company."
tags:
- finance
- accounting
- workday-financials
capability:
exposes:
- type: mcp
namespace: finance-journal
port: 8080
tools:
- name: get-journal-entry
description: "Look up a Workday journal entry by ID. Returns status, ledger account, total amount, and company."
inputParameters:
- name: journal_id
in: body
type: string
description: "The Workday journal entry ID."
call: "workday.get-journal"
with:
journal_id: "{{journal_id}}"
outputParameters:
- name: status
type: string
mapping: "$.postingStatus"
- name: ledger
type: string
mapping: "$.ledgerAccount"
- name: total_amount
type: number
mapping: "$.totalAmount"
- name: company
type: string
mapping: "$.company"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: journals
path: "/financial_management/journal_entries/{{journal_id}}"
inputParameters:
- name: journal_id
in: path
operations:
- name: get-journal
method: GET
Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates.
naftiko: "0.5"
info:
label: "Knowledge Base Refresh Orchestrator"
description: "Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates."
tags:
- knowledge-management
- collaboration
- operations
capability:
exposes:
- type: mcp
namespace: knowledge-management
port: 8080
tools:
- name: run-knowledge-base-refresh-orchestrator
description: "Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Knowledge Base Refresh Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Queries Workday Learning for overdue compliance training assignments, sends reminder emails via SendGrid, and creates a Jira ticket for the compliance team when deadlines pass.
naftiko: "0.5"
info:
label: "Learning Assignment Compliance Tracker"
description: "Queries Workday Learning for overdue compliance training assignments, sends reminder emails via SendGrid, and creates a Jira ticket for the compliance team when deadlines pass."
tags:
- hr
- learning
- workday
- sendgrid
- jira
- compliance
capability:
exposes:
- type: mcp
namespace: learning-compliance
port: 8080
tools:
- name: track-overdue-training
description: "Find overdue Workday Learning assignments, send email reminders, and escalate to the compliance team via Jira."
inputParameters:
- name: course_id
in: body
type: string
description: "The Workday Learning course ID for the compliance training."
- name: reminder_template_id
in: body
type: string
description: "The SendGrid template ID for the reminder email."
steps:
- name: get-overdue-assignments
type: call
call: "workday.get-learning-assignments"
with:
course_id: "{{course_id}}"
status: "overdue"
- name: send-reminders
type: call
call: "sendgrid.send-template-email"
with:
template_id: "{{reminder_template_id}}"
recipients: "{{get-overdue-assignments.worker_emails}}"
subject: "Overdue: Required Compliance Training"
- name: escalate-to-compliance
type: call
call: "jira.create-issue"
with:
project_key: "COMPLY"
summary: "Overdue compliance training: {{get-overdue-assignments.count}} workers for course {{course_id}}"
description: "{{get-overdue-assignments.count}} workers have not completed required compliance training. Course: {{course_id}}. Reminder emails sent."
issue_type: "Task"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: learning-assignments
path: "/learning/assignments"
inputParameters:
- name: course_id
in: query
- name: status
in: query
operations:
- name: get-learning-assignments
method: GET
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: mail
path: "/mail/send"
operations:
- name: send-template-email
method: POST
- type: http
namespace: jira
baseUri: "https://workday.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Retrieves available courses from the learning catalog.
naftiko: "0.5"
info:
label: "Learning Course Catalog"
description: "Retrieves available courses from the learning catalog."
tags:
- hr
- learning
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-learning
description: "Retrieves available courses from the learning catalog."
inputParameters:
- name: entity_id
in: body
type: string
description: "The learning course catalog identifier."
call: "hr-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: hr-api
baseUri: "https://api.workday.com/hr/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: learning
path: "/learning/course/catalog/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-learning
method: GET
Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports.
naftiko: "0.5"
info:
label: "Marketing Campaign Performance Orchestrator"
description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
tags:
- marketing
- analytics
- finance
capability:
exposes:
- type: mcp
namespace: marketing
port: 8080
tools:
- name: run-marketing-campaign-performance-orchestrator
description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Marketing Campaign Performance Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Sends a message to a Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Microsoft Teams Message Sender"
description: "Sends a message to a Microsoft Teams channel."
tags:
- communications
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: communications
port: 8080
tools:
- name: get-microsoft
description: "Sends a message to a Microsoft Teams channel."
inputParameters:
- name: entity_id
in: body
type: string
description: "The microsoft teams message sender identifier."
call: "communications-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: communications-api
baseUri: "https://api.workday.com/communications/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: microsoft
path: "/microsoft/teams/message/sender/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-microsoft
method: GET
Fetches Workday expense reports with foreign currency transactions, converts amounts using live exchange rates, and syncs reconciled totals to the finance Smartsheet tracker.
naftiko: "0.5"
info:
label: "Multi-Currency Expense Reconciliation"
description: "Fetches Workday expense reports with foreign currency transactions, converts amounts using live exchange rates, and syncs reconciled totals to the finance Smartsheet tracker."
tags:
- finance
- expense
- workday
- smartsheet
- currency
capability:
exposes:
- type: mcp
namespace: fx-expense
port: 8080
tools:
- name: reconcile-fx-expenses
description: "Pull Workday foreign currency expenses, convert at live rates, and update the Smartsheet finance tracker."
inputParameters:
- name: expense_report_id
in: body
type: string
description: "The Workday expense report ID."
- name: base_currency
in: body
type: string
description: "The base currency for conversion (e.g. USD)."
- name: sheet_id
in: body
type: string
description: "The Smartsheet sheet ID for the finance tracker."
steps:
- name: get-expense
type: call
call: "workday.get-expense-report"
with:
report_id: "{{expense_report_id}}"
- name: get-exchange-rate
type: call
call: "exchangerate.get-rate"
with:
base: "{{base_currency}}"
target: "{{get-expense.currency}}"
- name: update-tracker
type: call
call: "smartsheet.add-row"
with:
sheet_id: "{{sheet_id}}"
cells:
report_id: "{{expense_report_id}}"
original_amount: "{{get-expense.total_amount}}"
original_currency: "{{get-expense.currency}}"
exchange_rate: "{{get-exchange-rate.rate}}"
converted_amount: "{{get-expense.total_amount}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: expense-reports
path: "/expense/reports/{{report_id}}"
inputParameters:
- name: report_id
in: path
operations:
- name: get-expense-report
method: GET
- type: http
namespace: exchangerate
baseUri: "https://api.exchangerate-api.com/v4"
authentication:
type: none
resources:
- name: rates
path: "/latest/{{base}}"
inputParameters:
- name: base
in: path
- name: target
in: query
operations:
- name: get-rate
method: GET
- type: http
namespace: smartsheet
baseUri: "https://api.smartsheet.com/2.0"
authentication:
type: bearer
token: "$secrets.smartsheet_token"
resources:
- name: rows
path: "/sheets/{{sheet_id}}/rows"
inputParameters:
- name: sheet_id
in: path
operations:
- name: add-row
method: POST
On new hire creation in Workday, provisions an Azure AD account, creates a ServiceNow onboarding ticket, and sends a Slack welcome message to the team channel.
naftiko: "0.5"
info:
label: "New Hire Onboarding Orchestrator"
description: "On new hire creation in Workday, provisions an Azure AD account, creates a ServiceNow onboarding ticket, and sends a Slack welcome message to the team channel."
tags:
- hr
- onboarding
- workday
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: orchestrate-onboarding
description: "Given a Workday employee ID and start date, provision Azure AD, open ServiceNow ticket, and welcome the hire in Slack."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee ID for the new hire."
- name: start_date
in: body
type: string
description: "The employee start date in YYYY-MM-DD format."
- name: team_channel
in: body
type: string
description: "The Slack channel ID for the hiring team."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: provision-ad
type: call
call: "msgraph.create-user"
with:
displayName: "{{get-employee.full_name}}"
mailNickname: "{{get-employee.username}}"
userPrincipalName: "{{get-employee.work_email}}"
- name: open-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Onboarding: {{get-employee.full_name}} starting {{start_date}}"
category: "hr_onboarding"
assigned_group: "IT_Onboarding"
description: "New hire {{get-employee.full_name}} — provision laptop, badge, and workspace."
- name: send-welcome
type: call
call: "slack.post-message"
with:
channel: "{{team_channel}}"
text: "Welcome {{get-employee.first_name}} to the team! Starting {{start_date}}. IT ticket: {{open-ticket.number}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.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: msgraph
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users"
operations:
- name: create-user
method: POST
- type: http
namespace: servicenow
baseUri: "https://workday.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: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves details of an open job requisition in Workday Recruiting, including title, hiring manager, department, and posting status.
naftiko: "0.5"
info:
label: "Open Position Lookup"
description: "Retrieves details of an open job requisition in Workday Recruiting, including title, hiring manager, department, and posting status."
tags:
- recruiting
- hr
- workday-recruiting
capability:
exposes:
- type: mcp
namespace: recruiting
port: 8080
tools:
- name: get-job-requisition
description: "Look up a Workday job requisition by ID. Returns title, hiring manager, department, location, and current status."
inputParameters:
- name: requisition_id
in: body
type: string
description: "The Workday job requisition ID."
call: "workday.get-requisition"
with:
req_id: "{{requisition_id}}"
outputParameters:
- name: title
type: string
mapping: "$.jobTitle"
- name: hiring_manager
type: string
mapping: "$.hiringManager.fullName"
- name: department
type: string
mapping: "$.department"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: requisitions
path: "/recruiting/requisitions/{{req_id}}"
inputParameters:
- name: req_id
in: path
operations:
- name: get-requisition
method: GET
Retrieves organizational chart for a department.
naftiko: "0.5"
info:
label: "Org Chart Viewer"
description: "Retrieves organizational chart for a department."
tags:
- hr
- organization
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-org
description: "Retrieves organizational chart for a department."
inputParameters:
- name: entity_id
in: body
type: string
description: "The org chart viewer identifier."
call: "hr-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: hr-api
baseUri: "https://api.workday.com/hr/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: org
path: "/org/chart/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-org
method: GET
Returns the supervisory organization hierarchy for a given organization ID in Workday, including parent org, manager, and direct child orgs.
naftiko: "0.5"
info:
label: "Organization Hierarchy Lookup"
description: "Returns the supervisory organization hierarchy for a given organization ID in Workday, including parent org, manager, and direct child orgs."
tags:
- hr
- organization
- workday
capability:
exposes:
- type: mcp
namespace: hcm-org
port: 8080
tools:
- name: get-org-hierarchy
description: "Retrieve the supervisory organization tree for a Workday org ID. Returns parent org, org manager, and child organizations."
inputParameters:
- name: org_id
in: body
type: string
description: "The Workday supervisory organization ID."
call: "workday.get-org"
with:
org_id: "{{org_id}}"
outputParameters:
- name: org_name
type: string
mapping: "$.name"
- name: manager
type: string
mapping: "$.manager.fullName"
- name: parent_org
type: string
mapping: "$.parentOrg.name"
- name: child_orgs
type: array
mapping: "$.childOrgs[*].name"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: organizations
path: "/organizations/{{org_id}}"
inputParameters:
- name: org_id
in: path
operations:
- name: get-org
method: GET
Compares Workday payroll results against ADP payroll register for a pay period, identifies discrepancies, and opens a ServiceNow task for payroll ops when variances exceed threshold.
naftiko: "0.5"
info:
label: "Payroll Discrepancy Alert"
description: "Compares Workday payroll results against ADP payroll register for a pay period, identifies discrepancies, and opens a ServiceNow task for payroll ops when variances exceed threshold."
tags:
- payroll
- finance
- workday-payroll
- adp
- servicenow
capability:
exposes:
- type: mcp
namespace: payroll-reconciliation
port: 8080
tools:
- name: reconcile-payroll
description: "Compare Workday and ADP payroll totals for a pay period. If variance exceeds threshold, create a ServiceNow task."
inputParameters:
- name: pay_period_id
in: body
type: string
description: "The Workday pay period identifier."
- name: adp_payroll_id
in: body
type: string
description: "The ADP payroll batch ID."
- name: variance_threshold
in: body
type: number
description: "Maximum acceptable variance in dollars."
steps:
- name: get-wd-payroll
type: call
call: "workday.get-payroll-summary"
with:
period_id: "{{pay_period_id}}"
- name: get-adp-payroll
type: call
call: "adp.get-payroll-summary"
with:
payroll_id: "{{adp_payroll_id}}"
- name: open-discrepancy-task
type: call
call: "servicenow.create-task"
with:
short_description: "Payroll discrepancy: period {{pay_period_id}}"
description: "Workday gross: {{get-wd-payroll.total_gross}}, ADP gross: {{get-adp-payroll.total_gross}}. Variance exceeds ${{variance_threshold}}."
assigned_group: "Payroll_Operations"
category: "payroll_reconciliation"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: payroll-runs
path: "/payroll/runs/{{period_id}}/summary"
inputParameters:
- name: period_id
in: path
operations:
- name: get-payroll-summary
method: GET
- type: http
namespace: adp
baseUri: "https://api.adp.com/payroll/v1"
authentication:
type: bearer
token: "$secrets.adp_token"
resources:
- name: payroll-summaries
path: "/payroll-summaries/{{payroll_id}}"
inputParameters:
- name: payroll_id
in: path
operations:
- name: get-payroll-summary
method: GET
- type: http
namespace: servicenow
baseUri: "https://workday.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
Fetches a Workday payroll run summary by pay period, returning total gross, net, deductions, and headcount for the period.
naftiko: "0.5"
info:
label: "Payroll Run Summary"
description: "Fetches a Workday payroll run summary by pay period, returning total gross, net, deductions, and headcount for the period."
tags:
- payroll
- finance
- workday-payroll
capability:
exposes:
- type: mcp
namespace: payroll-summary
port: 8080
tools:
- name: get-payroll-summary
description: "Retrieve a Workday payroll run summary for a given pay period. Returns gross pay, net pay, total deductions, and headcount."
inputParameters:
- name: pay_period_id
in: body
type: string
description: "The Workday pay period identifier (e.g. 2026-Q1-biweekly-06)."
call: "workday.get-payroll-summary"
with:
period_id: "{{pay_period_id}}"
outputParameters:
- name: total_gross
type: number
mapping: "$.totalGross"
- name: total_net
type: number
mapping: "$.totalNet"
- name: total_deductions
type: number
mapping: "$.totalDeductions"
- name: headcount
type: integer
mapping: "$.headcount"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: payroll-runs
path: "/payroll/runs/{{period_id}}/summary"
inputParameters:
- name: period_id
in: path
operations:
- name: get-payroll-summary
method: GET
Extracts payroll tax data from Workday Payroll for a tax period, formats it for filing, submits to the tax filing service, and notifies the payroll team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Payroll Tax Filing Automation"
description: "Extracts payroll tax data from Workday Payroll for a tax period, formats it for filing, submits to the tax filing service, and notifies the payroll team in Microsoft Teams."
tags:
- payroll
- tax
- workday-payroll
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: payroll-tax
port: 8080
tools:
- name: file-payroll-taxes
description: "Extract Workday payroll tax data, submit to filing service, and notify the payroll team."
inputParameters:
- name: tax_period
in: body
type: string
description: "The tax filing period (e.g. 2026-Q1)."
- name: jurisdiction
in: body
type: string
description: "Tax jurisdiction code (e.g. US-FED, US-CA)."
steps:
- name: get-tax-data
type: call
call: "workday.get-payroll-tax-data"
with:
period: "{{tax_period}}"
jurisdiction: "{{jurisdiction}}"
- name: submit-filing
type: call
call: "tax-service.submit-filing"
with:
period: "{{tax_period}}"
jurisdiction: "{{jurisdiction}}"
total_tax: "{{get-tax-data.total_tax_liability}}"
employee_count: "{{get-tax-data.employee_count}}"
- name: notify-payroll
type: call
call: "msteams.send-webhook"
with:
webhook_url: "$secrets.payroll_teams_webhook"
text: "Payroll tax filing submitted for {{jurisdiction}} — {{tax_period}}. Total liability: ${{get-tax-data.total_tax_liability}}. Filing ID: {{submit-filing.filing_id}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: payroll-tax
path: "/payroll/tax"
inputParameters:
- name: period
in: query
- name: jurisdiction
in: query
operations:
- name: get-payroll-tax-data
method: GET
- type: http
namespace: tax-service
baseUri: "https://api.taxfilingservice.com/v2"
authentication:
type: bearer
token: "$secrets.tax_service_token"
resources:
- name: filings
path: "/filings"
operations:
- name: submit-filing
method: POST
- type: http
namespace: msteams
baseUri: "https://outlook.office.com/webhook"
authentication:
type: none
resources:
- name: incoming-webhook
path: "/{{webhook_url}}"
inputParameters:
- name: webhook_url
in: path
operations:
- name: send-webhook
method: POST
Launches a performance review cycle by querying Workday for eligible workers, creating review tasks in Workday, and notifying managers in Microsoft Teams with review timelines.
naftiko: "0.5"
info:
label: "Performance Review Kickoff"
description: "Launches a performance review cycle by querying Workday for eligible workers, creating review tasks in Workday, and notifying managers in Microsoft Teams with review timelines."
tags:
- hr
- performance-management
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: performance-reviews
port: 8080
tools:
- name: kick-off-review-cycle
description: "Launch a performance review cycle: query eligible workers, create review tasks, and notify managers in Teams."
inputParameters:
- name: review_cycle_id
in: body
type: string
description: "The Workday performance review cycle ID."
- name: due_date
in: body
type: string
description: "Review submission due date in YYYY-MM-DD format."
steps:
- name: get-eligible-workers
type: call
call: "workday.get-review-eligible"
with:
cycle_id: "{{review_cycle_id}}"
- name: create-review-tasks
type: call
call: "workday.create-review-tasks"
with:
cycle_id: "{{review_cycle_id}}"
due_date: "{{due_date}}"
- name: notify-managers
type: call
call: "msteams.send-webhook"
with:
webhook_url: "$secrets.hr_teams_webhook"
text: "Performance review cycle {{review_cycle_id}} launched. {{get-eligible-workers.count}} workers eligible. Reviews due by {{due_date}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: review-eligible
path: "/performance/reviews/{{cycle_id}}/eligible"
inputParameters:
- name: cycle_id
in: path
operations:
- name: get-review-eligible
method: GET
- name: review-tasks
path: "/performance/reviews/{{cycle_id}}/tasks"
inputParameters:
- name: cycle_id
in: path
operations:
- name: create-review-tasks
method: POST
- type: http
namespace: msteams
baseUri: "https://outlook.office.com/webhook"
authentication:
type: none
resources:
- name: incoming-webhook
path: "/{{webhook_url}}"
inputParameters:
- name: webhook_url
in: path
operations:
- name: send-webhook
method: POST
Triggers a Power BI dataset refresh.
naftiko: "0.5"
info:
label: "Power BI Dashboard Refresher"
description: "Triggers a Power BI dataset refresh."
tags:
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-power
description: "Triggers a Power BI dataset refresh."
inputParameters:
- name: entity_id
in: body
type: string
description: "The power bi dashboard refresher identifier."
call: "analytics-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://api.workday.com/analytics/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: power
path: "/power/bi/dashboard/refresher/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-power
method: GET
Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports.
naftiko: "0.5"
info:
label: "Procurement Spend Analysis Orchestrator"
description: "Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports."
tags:
- procurement
- analytics
- finance
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: run-procurement-spend-analysis-orchestrator
description: "Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Procurement Spend Analysis Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Pulls procurement spend data from Workday Financials by category and period, loads into Snowflake spend analytics tables, and notifies the procurement lead in Slack.
naftiko: "0.5"
info:
label: "Procurement Spend Analysis"
description: "Pulls procurement spend data from Workday Financials by category and period, loads into Snowflake spend analytics tables, and notifies the procurement lead in Slack."
tags:
- finance
- procurement
- workday-financials
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: spend-analysis
port: 8080
tools:
- name: analyze-procurement-spend
description: "Pull Workday procurement spend by category, load to Snowflake, and notify the procurement lead."
inputParameters:
- name: spend_category
in: body
type: string
description: "The spend category to analyze."
- name: fiscal_period
in: body
type: string
description: "The fiscal period to analyze."
- name: procurement_channel
in: body
type: string
description: "The Slack channel for procurement alerts."
steps:
- name: get-spend-data
type: call
call: "workday.get-procurement-spend"
with:
category: "{{spend_category}}"
period: "{{fiscal_period}}"
- name: load-to-snowflake
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO FINANCE.PROCUREMENT_SPEND (category, period, total, supplier_count) VALUES ('{{spend_category}}', '{{fiscal_period}}', {{get-spend-data.total_spend}}, {{get-spend-data.supplier_count}})"
- name: notify-procurement
type: call
call: "slack.post-message"
with:
channel: "{{procurement_channel}}"
text: "Spend analysis complete for {{spend_category}} — {{fiscal_period}}: ${{get-spend-data.total_spend}} across {{get-spend-data.supplier_count}} suppliers."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: procurement-spend
path: "/financial_management/procurement/spend"
inputParameters:
- name: category
in: query
- name: period
in: query
operations:
- name: get-procurement-spend
method: GET
- type: http
namespace: snowflake
baseUri: "https://workday.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders.
naftiko: "0.5"
info:
label: "Quarterly Business Review Orchestrator"
description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
tags:
- analytics
- business
- sharepoint
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: run-quarterly-business-review-orchestrator
description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Quarterly Business Review Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Pulls completed revenue schedules from Workday Financials, posts them to the general ledger, and syncs the revenue data to Salesforce for sales operations reporting.
naftiko: "0.5"
info:
label: "Revenue Recognition Sync"
description: "Pulls completed revenue schedules from Workday Financials, posts them to the general ledger, and syncs the revenue data to Salesforce for sales operations reporting."
tags:
- finance
- accounting
- workday-financials
- salesforce
- revenue
capability:
exposes:
- type: mcp
namespace: revenue-sync
port: 8080
tools:
- name: sync-revenue-recognition
description: "Pull Workday revenue schedules, post to GL, and sync to Salesforce for reporting."
inputParameters:
- name: fiscal_period
in: body
type: string
description: "The fiscal period for revenue recognition."
- name: revenue_type
in: body
type: string
description: "Revenue type filter (e.g. subscription, services)."
steps:
- name: get-revenue-schedules
type: call
call: "workday.get-revenue-schedules"
with:
period: "{{fiscal_period}}"
type: "{{revenue_type}}"
- name: post-to-gl
type: call
call: "workday.post-journal-entry"
with:
ledger: "Revenue"
period: "{{fiscal_period}}"
amount: "{{get-revenue-schedules.total_recognized}}"
memo: "Revenue recognition — {{revenue_type}} — {{fiscal_period}}"
- name: sync-to-salesforce
type: call
call: "salesforce.upsert-revenue"
with:
period: "{{fiscal_period}}"
type: "{{revenue_type}}"
amount: "{{get-revenue-schedules.total_recognized}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: revenue-schedules
path: "/financial_management/revenue_schedules"
inputParameters:
- name: period
in: query
- name: type
in: query
operations:
- name: get-revenue-schedules
method: GET
- name: journal-entries
path: "/financial_management/journal_entries"
operations:
- name: post-journal-entry
method: POST
- type: http
namespace: salesforce
baseUri: "https://workday.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: revenue
path: "/sobjects/Revenue_Recognition__c"
operations:
- name: upsert-revenue
method: POST
Retrieves a Salesforce account by account ID.
naftiko: "0.5"
info:
label: "Salesforce Account Viewer"
description: "Retrieves a Salesforce account by account ID."
tags:
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: sales
port: 8080
tools:
- name: get-salesforce
description: "Retrieves a Salesforce account by account ID."
inputParameters:
- name: entity_id
in: body
type: string
description: "The salesforce account viewer identifier."
call: "sales-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: sales-api
baseUri: "https://api.workday.com/sales/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: salesforce
path: "/salesforce/account/viewer/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-salesforce
method: GET
Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation.
naftiko: "0.5"
info:
label: "Security Audit Orchestrator"
description: "Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation."
tags:
- security
- servicenow
- compliance
capability:
exposes:
- type: mcp
namespace: security
port: 8080
tools:
- name: run-security-audit-orchestrator
description: "Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Security Audit Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Creates a new incident in ServiceNow.
naftiko: "0.5"
info:
label: "ServiceNow Incident Creator"
description: "Creates a new incident in ServiceNow."
tags:
- it
- servicenow
capability:
exposes:
- type: mcp
namespace: it
port: 8080
tools:
- name: get-servicenow
description: "Creates a new incident in ServiceNow."
inputParameters:
- name: entity_id
in: body
type: string
description: "The servicenow incident creator identifier."
call: "it-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: it-api
baseUri: "https://api.workday.com/it/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: servicenow
path: "/servicenow/incident/creator/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-servicenow
method: GET
Extracts worker skills profiles from Workday, compares against role competency frameworks, identifies gaps, and creates personalized learning paths in Workday Learning.
naftiko: "0.5"
info:
label: "Skills Gap Analysis Pipeline"
description: "Extracts worker skills profiles from Workday, compares against role competency frameworks, identifies gaps, and creates personalized learning paths in Workday Learning."
tags:
- hr
- talent-management
- workday
- learning
capability:
exposes:
- type: mcp
namespace: skills-analysis
port: 8080
tools:
- name: analyze-skills-gap
description: "Pull worker skills from Workday, compare against role framework, and create a learning plan for identified gaps."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee ID."
- name: role_profile_id
in: body
type: string
description: "The Workday role competency profile ID."
steps:
- name: get-worker-skills
type: call
call: "workday.get-worker-skills"
with:
worker_id: "{{employee_id}}"
- name: get-role-framework
type: call
call: "workday.get-competency-framework"
with:
profile_id: "{{role_profile_id}}"
- name: create-learning-plan
type: call
call: "workday.create-learning-assignment"
with:
worker_id: "{{employee_id}}"
skills_gap: "{{get-role-framework.required_skills}}"
current_skills: "{{get-worker-skills.skills}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: worker-skills
path: "/workers/{{worker_id}}/skills"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker-skills
method: GET
- name: competency-frameworks
path: "/talent/competencyFrameworks/{{profile_id}}"
inputParameters:
- name: profile_id
in: path
operations:
- name: get-competency-framework
method: GET
- name: learning-assignments
path: "/learning/assignments"
operations:
- name: create-learning-assignment
method: POST
Sends a notification to a Slack channel.
naftiko: "0.5"
info:
label: "Slack Notification Publisher"
description: "Sends a notification to a Slack channel."
tags:
- communications
- slack
capability:
exposes:
- type: mcp
namespace: communications
port: 8080
tools:
- name: get-slack
description: "Sends a notification to a Slack channel."
inputParameters:
- name: entity_id
in: body
type: string
description: "The slack notification publisher identifier."
call: "communications-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: communications-api
baseUri: "https://api.workday.com/communications/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: slack
path: "/slack/notification/publisher/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-slack
method: GET
Runs an analytics query against the Snowflake data warehouse.
naftiko: "0.5"
info:
label: "Snowflake Analytics Query"
description: "Runs an analytics query against the Snowflake data warehouse."
tags:
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: analytics
port: 8080
tools:
- name: get-snowflake
description: "Runs an analytics query against the Snowflake data warehouse."
inputParameters:
- name: entity_id
in: body
type: string
description: "The snowflake analytics query identifier."
call: "analytics-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: analytics-api
baseUri: "https://api.workday.com/analytics/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: snowflake
path: "/snowflake/analytics/query/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-snowflake
method: GET
Retrieves a supplier invoice from Workday Financials by invoice number, returning vendor, amount, due date, and approval status.
naftiko: "0.5"
info:
label: "Supplier Invoice Lookup"
description: "Retrieves a supplier invoice from Workday Financials by invoice number, returning vendor, amount, due date, and approval status."
tags:
- finance
- accounts-payable
- workday-financials
capability:
exposes:
- type: mcp
namespace: finance-ap
port: 8080
tools:
- name: get-supplier-invoice
description: "Look up a Workday supplier invoice by number. Returns vendor name, invoice amount, due date, and approval status."
inputParameters:
- name: invoice_number
in: body
type: string
description: "The Workday supplier invoice number."
call: "workday.get-invoice"
with:
invoice_number: "{{invoice_number}}"
outputParameters:
- name: vendor
type: string
mapping: "$.supplierName"
- name: amount
type: number
mapping: "$.invoiceAmount"
- name: due_date
type: string
mapping: "$.dueDate"
- name: approval_status
type: string
mapping: "$.approvalStatus"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: invoices
path: "/financial_management/supplier_invoices/{{invoice_number}}"
inputParameters:
- name: invoice_number
in: path
operations:
- name: get-invoice
method: GET
When a new supplier is created in Workday, validates the vendor tax ID against an IRS TIN check service, provisions the supplier in Coupa for procurement, and notifies accounts payable in Slack.
naftiko: "0.5"
info:
label: "Supplier Onboarding Pipeline"
description: "When a new supplier is created in Workday, validates the vendor tax ID against an IRS TIN check service, provisions the supplier in Coupa for procurement, and notifies accounts payable in Slack."
tags:
- finance
- procurement
- workday-financials
- coupa
- slack
capability:
exposes:
- type: mcp
namespace: supplier-onboarding
port: 8080
tools:
- name: onboard-supplier
description: "Validate a new Workday supplier's tax ID, provision in Coupa, and notify AP in Slack."
inputParameters:
- name: supplier_id
in: body
type: string
description: "The Workday supplier ID."
- name: ap_channel
in: body
type: string
description: "The Slack channel for accounts payable notifications."
steps:
- name: get-supplier
type: call
call: "workday.get-supplier"
with:
supplier_id: "{{supplier_id}}"
- name: validate-tin
type: call
call: "tin-check.validate"
with:
tin: "{{get-supplier.tax_id}}"
name: "{{get-supplier.supplier_name}}"
- name: create-coupa-supplier
type: call
call: "coupa.create-supplier"
with:
name: "{{get-supplier.supplier_name}}"
tax_id: "{{get-supplier.tax_id}}"
payment_terms: "{{get-supplier.payment_terms}}"
- name: notify-ap
type: call
call: "slack.post-message"
with:
channel: "{{ap_channel}}"
text: "New supplier onboarded: {{get-supplier.supplier_name}} (TIN verified: {{validate-tin.is_valid}}). Coupa ID: {{create-coupa-supplier.supplier_id}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: suppliers
path: "/financial_management/suppliers/{{supplier_id}}"
inputParameters:
- name: supplier_id
in: path
operations:
- name: get-supplier
method: GET
- type: http
namespace: tin-check
baseUri: "https://api.tincheck.com/api/v1"
authentication:
type: bearer
token: "$secrets.tincheck_token"
resources:
- name: validation
path: "/validate"
operations:
- name: validate
method: POST
- type: http
namespace: coupa
baseUri: "https://workday.coupahost.com/api"
authentication:
type: bearer
token: "$secrets.coupa_token"
resources:
- name: suppliers
path: "/suppliers"
operations:
- name: create-supplier
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports.
naftiko: "0.5"
info:
label: "Sustainability Metrics Collection Orchestrator"
description: "Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports."
tags:
- sustainability
- analytics
- compliance
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: run-sustainability-metrics-collection-orchestrator
description: "Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Sustainability Metrics Collection Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves talent pipeline metrics for recruiting.
naftiko: "0.5"
info:
label: "Talent Pipeline Report"
description: "Retrieves talent pipeline metrics for recruiting."
tags:
- hr
- recruiting
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-talent
description: "Retrieves talent pipeline metrics for recruiting."
inputParameters:
- name: entity_id
in: body
type: string
description: "The talent pipeline report identifier."
call: "hr-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: hr-api
baseUri: "https://api.workday.com/hr/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: talent
path: "/talent/pipeline/report/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-talent
method: GET
Extracts talent review ratings and succession data from Workday, pushes structured records to Snowflake, and updates a Tableau dashboard for CHRO visibility.
naftiko: "0.5"
info:
label: "Talent Review Dashboard Sync"
description: "Extracts talent review ratings and succession data from Workday, pushes structured records to Snowflake, and updates a Tableau dashboard for CHRO visibility."
tags:
- hr
- talent-management
- workday
- snowflake
- tableau
capability:
exposes:
- type: mcp
namespace: talent-sync
port: 8080
tools:
- name: sync-talent-reviews
description: "Pull talent review data from Workday, load into Snowflake, and refresh the Tableau talent dashboard."
inputParameters:
- name: review_cycle
in: body
type: string
description: "The talent review cycle identifier (e.g. FY2026-annual)."
- name: datasource_id
in: body
type: string
description: "The Tableau datasource ID to refresh."
steps:
- name: get-talent-data
type: call
call: "workday.run-report"
with:
report: "Talent_Review_Summary"
format: "json"
- name: load-to-snowflake
type: call
call: "snowflake.execute-statement"
with:
statement: "INSERT INTO HR_ANALYTICS.TALENT_REVIEWS SELECT * FROM TABLE(RESULT_SCAN('{{get-talent-data.query_id}}'))"
- name: refresh-dashboard
type: call
call: "tableau.refresh-datasource"
with:
datasource_id: "{{datasource_id}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: reports
path: "/reports/{{report}}"
inputParameters:
- name: report
in: path
- name: format
in: query
operations:
- name: run-report
method: GET
- type: http
namespace: snowflake
baseUri: "https://workday.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-statement
method: POST
- type: http
namespace: tableau
baseUri: "https://tableau.workday.com/api/3.21"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: datasources
path: "/sites/default/datasources/{{datasource_id}}/refresh"
inputParameters:
- name: datasource_id
in: path
operations:
- name: refresh-datasource
method: POST
Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans.
naftiko: "0.5"
info:
label: "Third Party Risk Assessment Orchestrator"
description: "Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans."
tags:
- risk
- procurement
- compliance
capability:
exposes:
- type: mcp
namespace: risk
port: 8080
tools:
- name: run-third-party-risk-assessment-orchestrator
description: "Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Third Party Risk Assessment Orchestrator for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Retrieves a worker's current time-off balances from Workday, including vacation, sick leave, and personal days remaining.
naftiko: "0.5"
info:
label: "Time Off Balance Check"
description: "Retrieves a worker's current time-off balances from Workday, including vacation, sick leave, and personal days remaining."
tags:
- hr
- time-off
- workday
capability:
exposes:
- type: mcp
namespace: hcm-timeoff
port: 8080
tools:
- name: get-time-off-balance
description: "Check a worker's time-off balances by employee ID. Returns vacation, sick, and personal day balances."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee ID."
call: "workday.get-time-off-balance"
with:
worker_id: "{{employee_id}}"
outputParameters:
- name: vacation_hours
type: number
mapping: "$.balances[?(@.planName=='Vacation')].remainingHours"
- name: sick_hours
type: number
mapping: "$.balances[?(@.planName=='Sick')].remainingHours"
- name: personal_days
type: number
mapping: "$.balances[?(@.planName=='Personal')].remainingDays"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: time-off
path: "/workers/{{worker_id}}/timeOffBalances"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-time-off-balance
method: GET
Pulls approved time entries from Workday for a project, pushes hours to the billing system in Salesforce, and updates the project budget tracker in Smartsheet.
naftiko: "0.5"
info:
label: "Time Tracking to Project Billing"
description: "Pulls approved time entries from Workday for a project, pushes hours to the billing system in Salesforce, and updates the project budget tracker in Smartsheet."
tags:
- hr
- finance
- workday
- salesforce
- smartsheet
- time-tracking
capability:
exposes:
- type: mcp
namespace: time-billing
port: 8080
tools:
- name: sync-time-to-billing
description: "Pull approved Workday time entries for a project, push to Salesforce billing, and update Smartsheet budget tracker."
inputParameters:
- name: project_id
in: body
type: string
description: "The Workday project ID."
- name: billing_period
in: body
type: string
description: "The billing period in YYYY-MM format."
- name: sheet_id
in: body
type: string
description: "The Smartsheet sheet ID for budget tracking."
steps:
- name: get-time-entries
type: call
call: "workday.get-project-time"
with:
project_id: "{{project_id}}"
period: "{{billing_period}}"
- name: create-billing-record
type: call
call: "salesforce.create-billing"
with:
project_id: "{{project_id}}"
hours: "{{get-time-entries.total_hours}}"
amount: "{{get-time-entries.total_billable_amount}}"
period: "{{billing_period}}"
- name: update-budget-sheet
type: call
call: "smartsheet.add-row"
with:
sheet_id: "{{sheet_id}}"
cells:
project: "{{project_id}}"
period: "{{billing_period}}"
hours: "{{get-time-entries.total_hours}}"
billed: "{{get-time-entries.total_billable_amount}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: project-time
path: "/time_tracking/projects/{{project_id}}/entries"
inputParameters:
- name: project_id
in: path
- name: period
in: query
operations:
- name: get-project-time
method: GET
- type: http
namespace: salesforce
baseUri: "https://workday.my.salesforce.com/services/data/v59.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: billing
path: "/sobjects/Billing__c"
operations:
- name: create-billing
method: POST
- type: http
namespace: smartsheet
baseUri: "https://api.smartsheet.com/2.0"
authentication:
type: bearer
token: "$secrets.smartsheet_token"
resources:
- name: rows
path: "/sheets/{{sheet_id}}/rows"
inputParameters:
- name: sheet_id
in: path
operations:
- name: add-row
method: POST
Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign.
naftiko: "0.5"
info:
label: "Vendor Contract Renewal Pipeline"
description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
tags:
- procurement
- legal
- docusign
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: run-vendor-contract-renewal-pipeline
description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
inputParameters:
- name: request_id
in: body
type: string
description: "The unique request identifier."
steps:
- name: step-1
type: call
call: "primary-api.initiate"
with:
request_id: "{{request_id}}"
- name: step-2
type: call
call: "secondary-api.process"
with:
request_id: "{{request_id}}"
data: "{{step-1.result}}"
- name: notify
type: call
call: "notification-api.send"
with:
channel: "operations"
message: "Completed Vendor Contract Renewal Pipeline for request {{request_id}}."
consumes:
- type: http
namespace: primary-api
baseUri: "https://api.workday.com/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: primary
path: "/process"
operations:
- name: initiate
method: POST
- type: http
namespace: secondary-api
baseUri: "https://api.workday.com/v2"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: secondary
path: "/execute"
operations:
- name: process
method: POST
- type: http
namespace: notification-api
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/notifications"
operations:
- name: send
method: POST
Triggers a Workday Enterprise Interface Builder (EIB) data export, monitors completion, and uploads the output file to Amazon S3 for downstream consumption.
naftiko: "0.5"
info:
label: "Workday EIB Data Export"
description: "Triggers a Workday Enterprise Interface Builder (EIB) data export, monitors completion, and uploads the output file to Amazon S3 for downstream consumption."
tags:
- integrations
- platform-engineering
- workday-integrations
- amazon-s3
capability:
exposes:
- type: mcp
namespace: eib-export
port: 8080
tools:
- name: run-eib-export
description: "Trigger a Workday EIB export, wait for completion, and upload output to S3."
inputParameters:
- name: eib_id
in: body
type: string
description: "The Workday EIB integration system ID."
- name: s3_bucket
in: body
type: string
description: "The target S3 bucket name."
- name: s3_prefix
in: body
type: string
description: "The S3 key prefix for the output file."
steps:
- name: trigger-eib
type: call
call: "workday.launch-integration"
with:
integration_id: "{{eib_id}}"
- name: check-status
type: call
call: "workday.get-integration-run"
with:
run_id: "{{trigger-eib.run_id}}"
- name: upload-to-s3
type: call
call: "s3.put-object"
with:
bucket: "{{s3_bucket}}"
key: "{{s3_prefix}}/{{eib_id}}_{{trigger-eib.run_id}}.csv"
body: "{{check-status.output_data}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: integrations
path: "/integrations/{{integration_id}}/launch"
inputParameters:
- name: integration_id
in: path
operations:
- name: launch-integration
method: POST
- name: integration-runs
path: "/integrations/runs/{{run_id}}"
inputParameters:
- name: run_id
in: path
operations:
- name: get-integration-run
method: GET
- type: http
namespace: s3
baseUri: "https://s3.amazonaws.com"
authentication:
type: bearer
token: "$secrets.aws_s3_token"
resources:
- name: objects
path: "/{{bucket}}/{{key}}"
inputParameters:
- name: bucket
in: path
- name: key
in: path
operations:
- name: put-object
method: PUT
Retrieves employee profile from Workday.
naftiko: "0.5"
info:
label: "Workday Employee Profile"
description: "Retrieves employee profile from Workday."
tags:
- hr
- workday
capability:
exposes:
- type: mcp
namespace: hr
port: 8080
tools:
- name: get-workday
description: "Retrieves employee profile from Workday."
inputParameters:
- name: entity_id
in: body
type: string
description: "The workday employee profile identifier."
call: "hr-api.get-data"
with:
entity_id: "{{entity_id}}"
consumes:
- type: http
namespace: hr-api
baseUri: "https://api.workday.com/hr/v1"
authentication:
type: bearer
token: "$secrets.workday_api_token"
resources:
- name: workday
path: "/workday/employee/profile/{{entity_id}}"
inputParameters:
- name: entity_id
in: path
operations:
- name: get-workday
method: GET
Deploys a Workday Extend custom app by pushing the app package to the Workday Extend API, running validation, and posting deployment status to the engineering Slack channel.
naftiko: "0.5"
info:
label: "Workday Extend App Deployment"
description: "Deploys a Workday Extend custom app by pushing the app package to the Workday Extend API, running validation, and posting deployment status to the engineering Slack channel."
tags:
- platform-engineering
- workday-extend
- slack
- deployment
capability:
exposes:
- type: mcp
namespace: extend-deploy
port: 8080
tools:
- name: deploy-extend-app
description: "Deploy a Workday Extend app package, validate it, and notify the engineering team in Slack."
inputParameters:
- name: app_id
in: body
type: string
description: "The Workday Extend application ID."
- name: version
in: body
type: string
description: "The version label to deploy."
- name: eng_channel
in: body
type: string
description: "The Slack channel for engineering notifications."
steps:
- name: deploy-app
type: call
call: "workday.deploy-extend-app"
with:
app_id: "{{app_id}}"
version: "{{version}}"
- name: validate-deployment
type: call
call: "workday.validate-extend-app"
with:
app_id: "{{app_id}}"
deployment_id: "{{deploy-app.deployment_id}}"
- name: notify-eng
type: call
call: "slack.post-message"
with:
channel: "{{eng_channel}}"
text: "Workday Extend app {{app_id}} v{{version}} deployed. Status: {{validate-deployment.status}}. Deployment ID: {{deploy-app.deployment_id}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: extend-apps
path: "/apps/{{app_id}}/deploy"
inputParameters:
- name: app_id
in: path
operations:
- name: deploy-extend-app
method: POST
- name: extend-validation
path: "/apps/{{app_id}}/deployments/{{deployment_id}}/validate"
inputParameters:
- name: app_id
in: path
- name: deployment_id
in: path
operations:
- name: validate-extend-app
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Executes a Workday custom report by report name and returns the results as structured data. Useful for ad-hoc analytics queries.
naftiko: "0.5"
info:
label: "Workday Report Execution"
description: "Executes a Workday custom report by report name and returns the results as structured data. Useful for ad-hoc analytics queries."
tags:
- reporting
- analytics
- workday-reporting
capability:
exposes:
- type: mcp
namespace: reporting
port: 8080
tools:
- name: run-custom-report
description: "Execute a Workday custom report by name and optional filter parameters. Returns report data rows."
inputParameters:
- name: report_name
in: body
type: string
description: "The Workday custom report name (URL-safe)."
- name: format
in: body
type: string
description: "Output format: json or csv."
call: "workday.run-report"
with:
report: "{{report_name}}"
format: "{{format}}"
outputParameters:
- name: row_count
type: number
mapping: "$.Report_Entry.length()"
- name: data
type: array
mapping: "$.Report_Entry[*]"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: reports
path: "/reports/{{report}}"
inputParameters:
- name: report
in: path
- name: format
in: query
operations:
- name: run-report
method: GET
Triggers a Workday Studio integration build, monitors execution status, and on failure creates a GitHub issue and notifies the integration team in Slack.
naftiko: "0.5"
info:
label: "Workday Studio Integration Build Pipeline"
description: "Triggers a Workday Studio integration build, monitors execution status, and on failure creates a GitHub issue and notifies the integration team in Slack."
tags:
- integrations
- platform-engineering
- workday-studio
- github
- slack
capability:
exposes:
- type: mcp
namespace: studio-build
port: 8080
tools:
- name: run-studio-integration
description: "Trigger a Workday Studio integration, monitor it, and on failure create a GitHub issue and alert the team."
inputParameters:
- name: integration_id
in: body
type: string
description: "The Workday Studio integration system ID."
- name: github_repo
in: body
type: string
description: "The GitHub repository (owner/repo) for the integration code."
- name: team_channel
in: body
type: string
description: "The Slack channel for integration team alerts."
steps:
- name: trigger-integration
type: call
call: "workday.launch-integration"
with:
integration_id: "{{integration_id}}"
- name: check-status
type: call
call: "workday.get-integration-run"
with:
run_id: "{{trigger-integration.run_id}}"
- name: create-github-issue
type: call
call: "github.create-issue"
with:
repo: "{{github_repo}}"
title: "Integration failure: {{integration_id}} — run {{trigger-integration.run_id}}"
body: "Status: {{check-status.state}}. Records processed: {{check-status.records_processed}}, failed: {{check-status.records_failed}}."
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "{{team_channel}}"
text: "Studio integration {{integration_id}} run {{trigger-integration.run_id}}: {{check-status.state}}. GitHub issue: {{create-github-issue.html_url}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: integrations
path: "/integrations/{{integration_id}}/launch"
inputParameters:
- name: integration_id
in: path
operations:
- name: launch-integration
method: POST
- name: integration-runs
path: "/integrations/runs/{{run_id}}"
inputParameters:
- name: run_id
in: path
operations:
- name: get-integration-run
method: GET
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: issues
path: "/repos/{{repo}}/issues"
inputParameters:
- name: repo
in: path
operations:
- name: create-issue
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Extracts Workday tenant security and configuration settings, compares against a compliance baseline in GitHub, and opens a Jira ticket for any deviations.
naftiko: "0.5"
info:
label: "Workday Tenant Configuration Audit"
description: "Extracts Workday tenant security and configuration settings, compares against a compliance baseline in GitHub, and opens a Jira ticket for any deviations."
tags:
- platform-engineering
- security
- workday
- github
- jira
capability:
exposes:
- type: mcp
namespace: tenant-audit
port: 8080
tools:
- name: audit-tenant-config
description: "Pull Workday tenant config, compare against GitHub compliance baseline, and create Jira tickets for deviations."
inputParameters:
- name: tenant_id
in: body
type: string
description: "The Workday tenant identifier."
- name: baseline_repo
in: body
type: string
description: "The GitHub repo (owner/repo) containing the compliance baseline."
- name: baseline_path
in: body
type: string
description: "Path to the baseline config file in the repo."
steps:
- name: get-tenant-config
type: call
call: "workday.get-tenant-config"
with:
tenant_id: "{{tenant_id}}"
- name: get-baseline
type: call
call: "github.get-file"
with:
repo: "{{baseline_repo}}"
path: "{{baseline_path}}"
- name: create-deviation-ticket
type: call
call: "jira.create-issue"
with:
project_key: "WDPLATFORM"
summary: "Tenant config deviation detected: {{tenant_id}}"
description: "Current config differs from baseline at {{baseline_repo}}/{{baseline_path}}. Review tenant security settings."
issue_type: "Bug"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: tenant-config
path: "/tenants/{{tenant_id}}/configuration"
inputParameters:
- name: tenant_id
in: path
operations:
- name: get-tenant-config
method: GET
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: contents
path: "/repos/{{repo}}/contents/{{path}}"
inputParameters:
- name: repo
in: path
- name: path
in: path
operations:
- name: get-file
method: GET
- type: http
namespace: jira
baseUri: "https://workday.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: issues
path: "/issue"
operations:
- name: create-issue
method: POST
Syncs worker identity data from Workday to Okta for SSO provisioning, ensuring new hires and job changes are reflected in the identity provider within minutes.
naftiko: "0.5"
info:
label: "Workday to Okta Identity Sync"
description: "Syncs worker identity data from Workday to Okta for SSO provisioning, ensuring new hires and job changes are reflected in the identity provider within minutes."
tags:
- platform
- identity
- workday
- okta
- integrations
capability:
exposes:
- type: mcp
namespace: identity-sync
port: 8080
tools:
- name: sync-worker-to-okta
description: "Given a Workday employee ID, sync their profile and group memberships to Okta."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee ID."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: upsert-okta-user
type: call
call: "okta.upsert-user"
with:
email: "{{get-employee.work_email}}"
firstName: "{{get-employee.first_name}}"
lastName: "{{get-employee.last_name}}"
department: "{{get-employee.department}}"
title: "{{get-employee.job_title}}"
- name: assign-okta-group
type: call
call: "okta.assign-group"
with:
user_id: "{{upsert-okta-user.user_id}}"
group_name: "{{get-employee.department}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.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: okta
baseUri: "https://workday.okta.com/api/v1"
authentication:
type: bearer
token: "$secrets.okta_token"
resources:
- name: users
path: "/users"
operations:
- name: upsert-user
method: POST
- name: group-assignments
path: "/groups/{{group_name}}/users/{{user_id}}"
inputParameters:
- name: group_name
in: path
- name: user_id
in: path
operations:
- name: assign-group
method: PUT
Syncs Workday worker cost center and manager data to SAP Concur to keep expense delegation and approval hierarchies current.
naftiko: "0.5"
info:
label: "Workday to SAP Concur Expense Sync"
description: "Syncs Workday worker cost center and manager data to SAP Concur to keep expense delegation and approval hierarchies current."
tags:
- finance
- integrations
- workday
- sap-concur
capability:
exposes:
- type: mcp
namespace: concur-sync
port: 8080
tools:
- name: sync-worker-to-concur
description: "Pull worker details from Workday and update their profile in SAP Concur with current cost center and approver."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee ID."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: get-manager
type: call
call: "workday.get-worker"
with:
worker_id: "{{get-employee.manager_id}}"
- name: update-concur-profile
type: call
call: "concur.update-user"
with:
employee_id: "{{employee_id}}"
cost_center: "{{get-employee.cost_center}}"
approver_email: "{{get-manager.work_email}}"
department: "{{get-employee.department}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.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: concur
baseUri: "https://www.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: users
path: "/common/users/{{employee_id}}"
inputParameters:
- name: employee_id
in: path
operations:
- name: update-user
method: PUT
Retrieves a Workday worker profile by employee ID, returning name, position, department, manager, and hire date.
naftiko: "0.5"
info:
label: "Worker Profile Lookup"
description: "Retrieves a Workday worker profile by employee ID, returning name, position, department, manager, and hire date."
tags:
- hr
- human-capital-management
- workday
capability:
exposes:
- type: mcp
namespace: hcm-worker
port: 8080
tools:
- name: get-worker-profile
description: "Look up a Workday worker by employee ID. Returns full name, job title, department, manager, and hire date."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee ID."
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
outputParameters:
- name: full_name
type: string
mapping: "$.fullName"
- name: job_title
type: string
mapping: "$.jobTitle"
- name: department
type: string
mapping: "$.department"
- name: manager_id
type: string
mapping: "$.managerId"
- name: hire_date
type: string
mapping: "$.hireDate"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.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
On an inter-company worker transfer in Workday, updates the cost center assignment, transfers the ServiceNow CMDB asset records, and notifies both the old and new managers in Microsoft Teams.
naftiko: "0.5"
info:
label: "Worker Transfer Orchestrator"
description: "On an inter-company worker transfer in Workday, updates the cost center assignment, transfers the ServiceNow CMDB asset records, and notifies both the old and new managers in Microsoft Teams."
tags:
- hr
- workday
- servicenow
- microsoft-teams
- transfer
capability:
exposes:
- type: mcp
namespace: hr-transfer
port: 8080
tools:
- name: orchestrate-transfer
description: "Given a Workday transfer event, update cost center, transfer CMDB assets, and notify both managers."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday employee ID being transferred."
- name: new_cost_center
in: body
type: string
description: "The new cost center code."
- name: effective_date
in: body
type: string
description: "Transfer effective date in YYYY-MM-DD format."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: get-new-manager
type: call
call: "workday.get-cost-center-manager"
with:
cost_center: "{{new_cost_center}}"
- name: transfer-assets
type: call
call: "servicenow.update-cmdb-owner"
with:
current_owner: "{{get-employee.work_email}}"
new_cost_center: "{{new_cost_center}}"
- name: notify-old-manager
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-employee.manager_email}}"
text: "{{get-employee.full_name}} is transferring to {{new_cost_center}} effective {{effective_date}}. {{transfer-assets.asset_count}} assets reassigned."
- name: notify-new-manager
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-new-manager.manager_email}}"
text: "{{get-employee.full_name}} is joining your team effective {{effective_date}} from {{get-employee.cost_center}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.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
- name: cost-center-managers
path: "/organizations/costCenters/{{cost_center}}/manager"
inputParameters:
- name: cost_center
in: path
operations:
- name: get-cost-center-manager
method: GET
- type: http
namespace: servicenow
baseUri: "https://workday.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cmdb
path: "/table/cmdb_ci"
operations:
- name: update-cmdb-owner
method: PATCH
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Runs a Workday headcount report, enriches it with engagement survey scores from Qualtrics, and loads the combined dataset into Amazon Redshift for people analytics.
naftiko: "0.5"
info:
label: "Workforce Analytics Export"
description: "Runs a Workday headcount report, enriches it with engagement survey scores from Qualtrics, and loads the combined dataset into Amazon Redshift for people analytics."
tags:
- hr
- analytics
- workday-reporting
- qualtrics
- amazon-redshift
capability:
exposes:
- type: mcp
namespace: workforce-analytics
port: 8080
tools:
- name: export-workforce-analytics
description: "Run Workday headcount report, join with Qualtrics survey data, and load into Redshift."
inputParameters:
- name: report_name
in: body
type: string
description: "The Workday headcount report name."
- name: survey_id
in: body
type: string
description: "The Qualtrics survey ID for engagement data."
steps:
- name: run-headcount-report
type: call
call: "workday.run-report"
with:
report: "{{report_name}}"
format: "json"
- name: get-survey-results
type: call
call: "qualtrics.get-survey-responses"
with:
survey_id: "{{survey_id}}"
- name: load-to-redshift
type: call
call: "redshift.execute-query"
with:
query: "INSERT INTO people_analytics.workforce_combined (headcount_data, survey_data, load_date) VALUES ('{{run-headcount-report.data}}', '{{get-survey-results.responses}}', CURRENT_DATE)"
consumes:
- type: http
namespace: workday
baseUri: "https://wd5-services1.myworkday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: reports
path: "/reports/{{report}}"
inputParameters:
- name: report
in: path
- name: format
in: query
operations:
- name: run-report
method: GET
- type: http
namespace: qualtrics
baseUri: "https://yul1.qualtrics.com/API/v3"
authentication:
type: bearer
token: "$secrets.qualtrics_token"
resources:
- name: surveys
path: "/surveys/{{survey_id}}/responses"
inputParameters:
- name: survey_id
in: path
operations:
- name: get-survey-responses
method: GET
- type: http
namespace: redshift
baseUri: "https://redshift-data.us-east-1.amazonaws.com"
authentication:
type: bearer
token: "$secrets.aws_redshift_token"
resources:
- name: statements
path: "/execute-statement"
operations:
- name: execute-query
method: POST