Hilton Capabilities
Naftiko 0.5 capability definitions for Hilton - 100 capabilities showing integration workflows and service orchestrations.
Retrieves booking funnel conversion data from Adobe Analytics for Hilton.com, returning step-by-step drop-off rates from search to confirmation.
naftiko: "0.5"
info:
label: "Adobe Analytics Booking Funnel Report"
description: "Retrieves booking funnel conversion data from Adobe Analytics for Hilton.com, returning step-by-step drop-off rates from search to confirmation."
tags:
- marketing
- adobe-analytics
- reporting
- hospitality
capability:
exposes:
- type: mcp
namespace: digital-analytics
port: 8080
tools:
- name: get-booking-funnel
description: "Given a date range, retrieve booking funnel conversion metrics from Adobe Analytics."
inputParameters:
- name: start_date
in: body
type: string
description: "Start date in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "End date in YYYY-MM-DD format."
call: "adobe-analytics.get-funnel-report"
with:
report_suite: "hilton-booking"
start_date: "{{start_date}}"
end_date: "{{end_date}}"
outputParameters:
- name: search_to_select_rate
type: string
mapping: "$.report.data.steps[0].conversion_rate"
- name: select_to_book_rate
type: string
mapping: "$.report.data.steps[1].conversion_rate"
consumes:
- type: http
namespace: adobe-analytics
baseUri: "https://analytics.adobe.io/api/hilton"
authentication:
type: bearer
token: "$secrets.adobe_analytics_token"
resources:
- name: reports
path: "/reports"
operations:
- name: get-funnel-report
method: POST
Uses the Anthropic API to analyze a batch of guest review texts from Salesforce, classifying sentiment and surfacing key themes for property management reporting.
naftiko: "0.5"
info:
label: "AI Guest Review Sentiment Analysis"
description: "Uses the Anthropic API to analyze a batch of guest review texts from Salesforce, classifying sentiment and surfacing key themes for property management reporting."
tags:
- ai
- guest-experience
- anthropic
- salesforce
- hospitality
capability:
exposes:
- type: mcp
namespace: ai-guest-insights
port: 8080
tools:
- name: analyze-guest-reviews
description: "Given a batch of guest review texts, call the Anthropic API to classify sentiment (positive, neutral, negative) and extract top themes (cleanliness, service, amenities, value). Use for weekly property performance reviews."
inputParameters:
- name: review_texts
in: body
type: string
description: "Concatenated guest review texts to analyze, separated by newlines."
- name: property_code
in: body
type: string
description: "The Hilton property code the reviews belong to."
- name: target_channel_id
in: body
type: string
description: "The Teams channel ID where the sentiment report should be posted."
steps:
- name: analyze-sentiment
type: call
call: "anthropic.create-message"
with:
model: "claude-3-5-sonnet-20241022"
prompt: "Analyze the following hotel guest reviews and provide: 1) Overall sentiment (positive/neutral/negative percentage), 2) Top 3 praised themes, 3) Top 3 complaints. Reviews:\n\n{{review_texts}}"
- name: post-report
type: call
call: "msteams-reviews.post-channel-message"
with:
channel_id: "{{target_channel_id}}"
message: "Guest Review Sentiment Report | Property: {{property_code}}\n\n{{analyze-sentiment.content}}"
consumes:
- type: http
namespace: anthropic
baseUri: "https://api.anthropic.com/v1"
authentication:
type: apikey
key: "x-api-key"
value: "$secrets.anthropic_api_key"
placement: header
resources:
- name: messages
path: "/messages"
operations:
- name: create-message
method: POST
- type: http
namespace: msteams-reviews
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Uses the Anthropic API to summarize Teams meeting transcript text into structured action items and key decisions, posting the summary to the relevant SharePoint document library.
naftiko: "0.5"
info:
label: "AI Meeting Notes Summarizer"
description: "Uses the Anthropic API to summarize Teams meeting transcript text into structured action items and key decisions, posting the summary to the relevant SharePoint document library."
tags:
- ai
- automation
- anthropic
- sharepoint
- microsoft-teams
- productivity
capability:
exposes:
- type: mcp
namespace: ai-productivity
port: 8080
tools:
- name: summarize-meeting-notes
description: "Given a Teams meeting transcript and meeting title, call the Anthropic API to extract action items and key decisions, then store the summary in SharePoint. Use after hotel leadership and operations review meetings."
inputParameters:
- name: transcript_text
in: body
type: string
description: "The full text of the Teams meeting transcript."
- name: meeting_title
in: body
type: string
description: "The title of the meeting, e.g. Q2 Revenue Strategy Review."
- name: site_id
in: body
type: string
description: "The SharePoint site ID where the meeting summary should be stored."
steps:
- name: generate-summary
type: call
call: "anthropic-notes.create-message"
with:
model: "claude-3-5-sonnet-20241022"
prompt: "Extract structured meeting notes from this transcript. Format as: 1) Key Decisions (bullet points), 2) Action Items with owner and due date, 3) Key Discussion Points. Transcript:\n\n{{transcript_text}}"
- name: store-summary
type: call
call: "sharepoint-notes.create-item"
with:
site_id: "{{site_id}}"
title: "{{meeting_title}} - Meeting Summary"
content: "{{generate-summary.content}}"
consumes:
- type: http
namespace: anthropic-notes
baseUri: "https://api.anthropic.com/v1"
authentication:
type: apikey
key: "x-api-key"
value: "$secrets.anthropic_api_key"
placement: header
resources:
- name: messages
path: "/messages"
operations:
- name: create-message
method: POST
- type: http
namespace: sharepoint-notes
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: list-items
path: "/sites/{{site_id}}/lists/MeetingNotes/items"
inputParameters:
- name: site_id
in: path
operations:
- name: create-item
method: POST
Verifies the integrity and timeliness of data backups stored in Amazon S3, checking object counts, last modified timestamps, and lifecycle policy compliance.
naftiko: "0.5"
info:
label: "Amazon S3 Data Backup Verification"
description: "Verifies the integrity and timeliness of data backups stored in Amazon S3, checking object counts, last modified timestamps, and lifecycle policy compliance."
tags:
- infrastructure
- amazon-s3
- data-protection
- compliance
capability:
exposes:
- type: mcp
namespace: backup-ops
port: 8080
tools:
- name: verify-s3-backup
description: "Given an S3 bucket name and prefix, verify backup completeness and recency."
inputParameters:
- name: bucket_name
in: body
type: string
description: "The S3 bucket name."
- name: prefix
in: body
type: string
description: "The S3 key prefix for the backup set."
call: "s3.list-objects"
with:
bucket: "{{bucket_name}}"
prefix: "{{prefix}}"
outputParameters:
- name: object_count
type: string
mapping: "$.KeyCount"
- name: latest_modified
type: string
mapping: "$.Contents[-1].LastModified"
consumes:
- type: http
namespace: s3
baseUri: "https://s3.amazonaws.com"
authentication:
type: aws-sigv4
access_key: "$secrets.aws_access_key"
secret_key: "$secrets.aws_secret_key"
resources:
- name: objects
path: "/{{bucket}}"
inputParameters:
- name: bucket
in: path
operations:
- name: list-objects
method: GET
Broadcasts operational alerts through Amazon SNS topics for critical hotel system events, coordinating with ServiceNow incident creation and Teams notifications.
naftiko: "0.5"
info:
label: "Amazon SNS Operational Alert Broadcaster"
description: "Broadcasts operational alerts through Amazon SNS topics for critical hotel system events, coordinating with ServiceNow incident creation and Teams notifications."
tags:
- operations
- amazon-sns
- servicenow
- microsoft-teams
- alerting
capability:
exposes:
- type: mcp
namespace: operational-alerts
port: 8080
tools:
- name: broadcast-alert
description: "Given an alert message and severity, publish to SNS, create a ServiceNow incident, and notify Teams."
inputParameters:
- name: topic_arn
in: body
type: string
description: "The SNS topic ARN."
- name: subject
in: body
type: string
description: "Alert subject line."
- name: message
in: body
type: string
description: "Alert message body."
- name: severity
in: body
type: string
description: "Alert severity: critical, high, medium, low."
steps:
- name: publish-sns
type: call
call: "sns.publish"
with:
topic_arn: "{{topic_arn}}"
subject: "{{subject}}"
message: "{{message}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "{{subject}}"
description: "{{message}}"
urgency: "{{severity}}"
assigned_to: "Operations_Center"
- name: notify-ops
type: call
call: "msteams.send-message"
with:
channel_id: "operations-center"
message: "[{{severity}}] {{subject}}: {{message}}. Incident: {{create-incident.number}}"
consumes:
- type: http
namespace: sns
baseUri: "https://sns.us-east-1.amazonaws.com"
authentication:
type: aws-sigv4
access_key: "$secrets.aws_access_key"
secret_key: "$secrets.aws_secret_key"
resources:
- name: topics
path: "/"
operations:
- name: publish
method: POST
- type: http
namespace: servicenow
baseUri: "https://hilton.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: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Audits Azure AD conditional access policies, compares against security baselines, generates a compliance report in SharePoint, and notifies the security team.
naftiko: "0.5"
info:
label: "Azure Active Directory Conditional Access Policy Audit"
description: "Audits Azure AD conditional access policies, compares against security baselines, generates a compliance report in SharePoint, and notifies the security team."
tags:
- security
- azure-active-directory
- sharepoint
- microsoft-teams
- compliance
capability:
exposes:
- type: mcp
namespace: identity-security
port: 8080
tools:
- name: audit-conditional-access
description: "Retrieve all conditional access policies, compare to baseline, and generate a compliance report."
inputParameters:
- name: baseline_id
in: body
type: string
description: "The security baseline document ID."
steps:
- name: get-policies
type: call
call: "azuread.list-conditional-access-policies"
with: {}
- name: create-report
type: call
call: "sharepoint.create-item"
with:
site_id: "hilton-security"
list_name: "ComplianceReports"
fields:
report_type: "conditional-access-audit"
policy_count: "{{get-policies.value.length}}"
baseline: "{{baseline_id}}"
- name: notify-security
type: call
call: "msteams.send-message"
with:
channel_id: "security-governance"
message: "Conditional Access Policy audit complete. {{get-policies.value.length}} policies reviewed against baseline {{baseline_id}}. Report: {{create-report.webUrl}}"
consumes:
- type: http
namespace: azuread
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: conditional-access
path: "/identity/conditionalAccess/policies"
operations:
- name: list-conditional-access-policies
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: list-items
path: "/sites/{{site_id}}/lists/{{list_name}}/items"
inputParameters:
- name: site_id
in: path
- name: list_name
in: path
operations:
- name: create-item
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Initiates a quarterly user access review in Azure Active Directory for a specified application, creates a ServiceNow tracking ticket, and notifies the security team via Teams.
naftiko: "0.5"
info:
label: "Azure AD User Access Review Trigger"
description: "Initiates a quarterly user access review in Azure Active Directory for a specified application, creates a ServiceNow tracking ticket, and notifies the security team via Teams."
tags:
- security
- azure-active-directory
- servicenow
- microsoft-teams
- compliance
capability:
exposes:
- type: mcp
namespace: identity-governance
port: 8080
tools:
- name: trigger-access-review
description: "Given an Azure AD application ID, create an access review, open a ServiceNow ticket, and notify the security team."
inputParameters:
- name: app_id
in: body
type: string
description: "The Azure AD application registration ID."
- name: review_period_days
in: body
type: string
description: "Number of days for the review period."
steps:
- name: create-review
type: call
call: "azuread.create-access-review"
with:
app_id: "{{app_id}}"
duration_days: "{{review_period_days}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Quarterly access review initiated for app {{app_id}}"
category: "security_compliance"
assigned_to: "Identity_Governance"
- name: notify-security
type: call
call: "msteams.send-message"
with:
channel_id: "security-team"
message: "Access review created for application {{app_id}}. Review ID: {{create-review.id}}. Duration: {{review_period_days}} days. Tracking ticket: {{create-ticket.number}}"
consumes:
- type: http
namespace: azuread
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: access-reviews
path: "/identityGovernance/accessReviews/definitions"
operations:
- name: create-access-review
method: POST
- type: http
namespace: servicenow
baseUri: "https://hilton.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: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When Azure Cost Management detects a spending anomaly across Hilton's cloud subscriptions, creates a ServiceNow incident and notifies the FinOps Teams channel with overage and affected subscription details.
naftiko: "0.5"
info:
label: "Azure Cost Anomaly Responder"
description: "When Azure Cost Management detects a spending anomaly across Hilton's cloud subscriptions, creates a ServiceNow incident and notifies the FinOps Teams channel with overage and affected subscription details."
tags:
- cloud
- finops
- azure
- servicenow
- microsoft-teams
- cost-management
capability:
exposes:
- type: mcp
namespace: cloud-finops
port: 8080
tools:
- name: handle-cost-anomaly
description: "Given an Azure subscription ID, anomaly description, and estimated overage, create a ServiceNow incident and notify the FinOps channel in Teams. Use when Azure budget alerts or cost anomalies fire."
inputParameters:
- name: subscription_id
in: body
type: string
description: "The Azure subscription ID with the detected anomaly."
- name: anomaly_description
in: body
type: string
description: "Description of the cost anomaly, including affected service and region."
- name: estimated_overage_usd
in: body
type: string
description: "Estimated monthly overage in USD."
steps:
- name: create-incident
type: call
call: "servicenow-cloud.create-incident"
with:
short_description: "Azure cost anomaly: {{anomaly_description}} in {{subscription_id}}"
category: "cloud_cost"
urgency: "2"
- name: notify-finops
type: call
call: "msteams-finops.post-channel-message"
with:
channel_id: "$secrets.teams_finops_channel_id"
message: "Azure cost anomaly detected | Subscription: {{subscription_id}} | Overage: ${{estimated_overage_usd}} | {{anomaly_description}} | Incident: {{create-incident.number}}"
consumes:
- type: http
namespace: servicenow-cloud
baseUri: "https://hilton.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-finops
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Monitors Azure Data Factory pipeline runs for data integration workflows, detects failures, and creates ServiceNow incidents with pipeline details and error logs.
naftiko: "0.5"
info:
label: "Azure Data Factory Pipeline Run Monitor"
description: "Monitors Azure Data Factory pipeline runs for data integration workflows, detects failures, and creates ServiceNow incidents with pipeline details and error logs."
tags:
- data-engineering
- azure-data-factory
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: data-integration
port: 8080
tools:
- name: monitor-adf-pipeline
description: "Given an ADF pipeline name, check the latest run and escalate failures."
inputParameters:
- name: pipeline_name
in: body
type: string
description: "The Azure Data Factory pipeline name."
- name: factory_name
in: body
type: string
description: "The ADF factory name."
steps:
- name: get-runs
type: call
call: "adf.get-pipeline-runs"
with:
factory_name: "{{factory_name}}"
pipeline_name: "{{pipeline_name}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "ADF pipeline failure: {{pipeline_name}} in {{factory_name}}"
category: "data_engineering"
assigned_to: "Data_Integration"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "data-engineering"
message: "ADF Pipeline {{pipeline_name}} - Status: {{get-runs.value[0].status}}. Duration: {{get-runs.value[0].durationInMs}}ms. Incident: {{create-incident.number}}"
consumes:
- type: http
namespace: adf
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: pipeline-runs
path: "/subscriptions/{{sub_id}}/resourceGroups/hilton-data/providers/Microsoft.DataFactory/factories/{{factory_name}}/pipelineruns"
inputParameters:
- name: factory_name
in: path
operations:
- name: get-pipeline-runs
method: POST
- type: http
namespace: servicenow
baseUri: "https://hilton.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: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors Azure Databricks ETL pipeline runs, checks for failures, creates ServiceNow incidents for failed jobs, and notifies the data engineering team via Teams.
naftiko: "0.5"
info:
label: "Azure Databricks ETL Pipeline Monitor"
description: "Monitors Azure Databricks ETL pipeline runs, checks for failures, creates ServiceNow incidents for failed jobs, and notifies the data engineering team via Teams."
tags:
- data-engineering
- azure-databricks
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: data-ops
port: 8080
tools:
- name: monitor-etl-pipeline
description: "Given a Databricks job ID, check the latest run status and escalate failures."
inputParameters:
- name: job_id
in: body
type: string
description: "The Databricks job ID."
steps:
- name: get-run
type: call
call: "databricks.get-latest-run"
with:
job_id: "{{job_id}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Databricks ETL failure: job {{job_id}} run {{get-run.run_id}}"
category: "data_engineering"
assigned_to: "Data_Engineering"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "data-engineering"
message: "ETL pipeline failure: Job {{job_id}}, Run {{get-run.run_id}}. State: {{get-run.state.result_state}}. Error: {{get-run.state.state_message}}. Incident: {{create-incident.number}}"
consumes:
- type: http
namespace: databricks
baseUri: "https://hilton-databricks.azuredatabricks.net/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/runs/list"
operations:
- name: get-latest-run
method: GET
- type: http
namespace: servicenow
baseUri: "https://hilton.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: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves the latest deployment pipeline run status from Azure DevOps for hotel platform services and posts a deployment summary to the engineering Teams channel.
naftiko: "0.5"
info:
label: "Azure DevOps Deployment Pipeline Status"
description: "Retrieves the latest deployment pipeline run status from Azure DevOps for hotel platform services and posts a deployment summary to the engineering Teams channel."
tags:
- devops
- cicd
- azure
- microsoft-teams
- deployment
capability:
exposes:
- type: mcp
namespace: devops-deployments
port: 8080
tools:
- name: get-deployment-status
description: "Given an Azure DevOps organization, project, and pipeline ID, retrieve the latest run status and post a deployment summary to the engineering channel in Teams. Use after release pipelines complete."
inputParameters:
- name: organization
in: body
type: string
description: "The Azure DevOps organization name, e.g. hilton-tech."
- name: project
in: body
type: string
description: "The Azure DevOps project name."
- name: pipeline_id
in: body
type: string
description: "The Azure DevOps pipeline definition ID."
steps:
- name: get-pipeline-runs
type: call
call: "azuredevops.list-pipeline-runs"
with:
organization: "{{organization}}"
project: "{{project}}"
pipeline_id: "{{pipeline_id}}"
- name: post-status
type: call
call: "msteams-cicd.post-channel-message"
with:
channel_id: "$secrets.teams_engineering_channel_id"
message: "Deployment Status | Project: {{project}} | Pipeline: {{pipeline_id}} | Latest run data retrieved from Azure DevOps."
consumes:
- type: http
namespace: azuredevops
baseUri: "https://dev.azure.com"
authentication:
type: basic
username: "$secrets.azuredevops_user"
password: "$secrets.azuredevops_pat"
resources:
- name: pipeline-runs
path: "/{{organization}}/{{project}}/_apis/pipelines/{{pipeline_id}}/runs"
inputParameters:
- name: organization
in: path
- name: project
in: path
- name: pipeline_id
in: path
operations:
- name: list-pipeline-runs
method: GET
- type: http
namespace: msteams-cicd
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Compiles release notes from Azure DevOps work items for a given release, creates a Confluence page, and notifies stakeholders via Teams.
naftiko: "0.5"
info:
label: "Azure DevOps Release Notes Generator"
description: "Compiles release notes from Azure DevOps work items for a given release, creates a Confluence page, and notifies stakeholders via Teams."
tags:
- engineering
- azure-devops
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: release-management
port: 8080
tools:
- name: generate-release-notes
description: "Given an Azure DevOps release ID, compile work items into release notes and publish to Confluence."
inputParameters:
- name: release_id
in: body
type: string
description: "The Azure DevOps release ID."
- name: project
in: body
type: string
description: "The Azure DevOps project name."
steps:
- name: get-work-items
type: call
call: "azuredevops.get-release-work-items"
with:
project: "{{project}}"
release_id: "{{release_id}}"
- name: create-page
type: call
call: "confluence.create-page"
with:
space_key: "ENG"
title: "Release Notes - {{project}} - {{release_id}}"
body: "{{get-work-items.formatted_notes}}"
- name: notify-stakeholders
type: call
call: "msteams.send-message"
with:
channel_id: "engineering-releases"
message: "Release notes published for {{project}} release {{release_id}}: {{create-page._links.webui}}. {{get-work-items.total_items}} work items included."
consumes:
- type: http
namespace: azuredevops
baseUri: "https://dev.azure.com/hilton"
authentication:
type: bearer
token: "$secrets.azuredevops_token"
resources:
- name: releases
path: "/{{project}}/_apis/release/releases/{{release_id}}/workitems"
inputParameters:
- name: project
in: path
- name: release_id
in: path
operations:
- name: get-release-work-items
method: GET
- type: http
namespace: confluence
baseUri: "https://hilton.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Processes IoT telemetry data from hotel HVAC and energy systems via Azure Event Hubs, detects anomalies, and creates maintenance tickets in ServiceNow.
naftiko: "0.5"
info:
label: "Azure Event Hubs IoT Telemetry Processor"
description: "Processes IoT telemetry data from hotel HVAC and energy systems via Azure Event Hubs, detects anomalies, and creates maintenance tickets in ServiceNow."
tags:
- infrastructure
- azure-event-hubs
- servicenow
- microsoft-teams
- iot
capability:
exposes:
- type: mcp
namespace: smart-building
port: 8080
tools:
- name: process-iot-telemetry
description: "Given an Event Hub namespace and property code, process recent telemetry and flag anomalies."
inputParameters:
- name: namespace
in: body
type: string
description: "The Event Hubs namespace."
- name: property_code
in: body
type: string
description: "The hotel property code."
steps:
- name: get-telemetry
type: call
call: "eventhubs.get-events"
with:
namespace: "{{namespace}}"
event_hub: "iot-{{property_code}}"
- name: create-maintenance
type: call
call: "servicenow.create-incident"
with:
short_description: "IoT anomaly detected at {{property_code}}: {{get-telemetry.anomaly_type}}"
category: "facilities"
assigned_to: "Facilities_Engineering"
- name: notify-engineering
type: call
call: "msteams.send-message"
with:
channel_id: "property-{{property_code}}-facilities"
message: "IoT anomaly: {{get-telemetry.anomaly_type}} at {{property_code}}. Sensor: {{get-telemetry.sensor_id}}. Value: {{get-telemetry.value}}. Maintenance ticket: {{create-maintenance.number}}"
consumes:
- type: http
namespace: eventhubs
baseUri: "https://{{namespace}}.servicebus.windows.net"
authentication:
type: bearer
token: "$secrets.eventhubs_token"
resources:
- name: events
path: "/{{event_hub}}/consumergroups/$Default/partitions/0/messages"
inputParameters:
- name: event_hub
in: path
operations:
- name: get-events
method: GET
- type: http
namespace: servicenow
baseUri: "https://hilton.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: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Tracks Azure Functions deployments, validates function health after deployment, updates the ServiceNow CMDB, and notifies the dev team via Teams.
naftiko: "0.5"
info:
label: "Azure Functions Serverless Deployment Tracker"
description: "Tracks Azure Functions deployments, validates function health after deployment, updates the ServiceNow CMDB, and notifies the dev team via Teams."
tags:
- engineering
- azure-functions
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: serverless-ops
port: 8080
tools:
- name: track-function-deployment
description: "Given a function app name and deployment ID, verify health and update tracking systems."
inputParameters:
- name: function_app
in: body
type: string
description: "The Azure Function App name."
- name: deployment_id
in: body
type: string
description: "The deployment ID."
steps:
- name: get-deployment
type: call
call: "azure.get-deployment-status"
with:
function_app: "{{function_app}}"
deployment_id: "{{deployment_id}}"
- name: update-cmdb
type: call
call: "servicenow.update-ci"
with:
ci_name: "azure-func-{{function_app}}"
attributes:
version: "{{get-deployment.properties.version}}"
last_deployed: "{{get-deployment.properties.end_time}}"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "engineering-deployments"
message: "Azure Function {{function_app}} deployed. Status: {{get-deployment.properties.status}}. Version: {{get-deployment.properties.version}}"
consumes:
- type: http
namespace: azure
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: deployments
path: "/subscriptions/{{sub_id}}/resourceGroups/hilton-functions/providers/Microsoft.Web/sites/{{function_app}}/deployments/{{deployment_id}}"
inputParameters:
- name: function_app
in: path
- name: deployment_id
in: path
operations:
- name: get-deployment-status
method: GET
- type: http
namespace: servicenow
baseUri: "https://hilton.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-ci
method: PATCH
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Responds to AKS pod scaling events by logging the event in Datadog, updating the ServiceNow CMDB, and notifying the platform engineering team via Teams.
naftiko: "0.5"
info:
label: "Azure Kubernetes Pod Scaling Event Handler"
description: "Responds to AKS pod scaling events by logging the event in Datadog, updating the ServiceNow CMDB, and notifying the platform engineering team via Teams."
tags:
- infrastructure
- azure-kubernetes-service
- datadog
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: platform-engineering
port: 8080
tools:
- name: handle-scaling-event
description: "Given AKS cluster and namespace details, process a scaling event across monitoring and ITSM systems."
inputParameters:
- name: cluster_name
in: body
type: string
description: "The AKS cluster name."
- name: namespace
in: body
type: string
description: "The Kubernetes namespace."
- name: deployment
in: body
type: string
description: "The deployment name that scaled."
- name: new_replicas
in: body
type: string
description: "The new replica count."
steps:
- name: log-event
type: call
call: "datadog.create-event"
with:
title: "AKS Scaling: {{deployment}} in {{cluster_name}}/{{namespace}}"
text: "Scaled to {{new_replicas}} replicas"
tags: "cluster:{{cluster_name}},namespace:{{namespace}}"
- name: update-cmdb
type: call
call: "servicenow.update-ci"
with:
ci_name: "{{cluster_name}}-{{namespace}}-{{deployment}}"
attributes:
replica_count: "{{new_replicas}}"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "platform-engineering"
message: "AKS scaling event: {{deployment}} in {{cluster_name}}/{{namespace}} scaled to {{new_replicas}} replicas."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
resources:
- name: events
path: "/events"
operations:
- name: create-event
method: POST
- type: http
namespace: servicenow
baseUri: "https://hilton.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-ci
method: PATCH
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries Azure Log Analytics for security events including failed login attempts, privilege escalations, and unusual access patterns across Hilton's cloud infrastructure.
naftiko: "0.5"
info:
label: "Azure Log Analytics Security Event Query"
description: "Queries Azure Log Analytics for security events including failed login attempts, privilege escalations, and unusual access patterns across Hilton's cloud infrastructure."
tags:
- security
- azure-log-analytics
- compliance
- monitoring
capability:
exposes:
- type: mcp
namespace: security-monitoring
port: 8080
tools:
- name: query-security-events
description: "Given a KQL query and time range, retrieve security events from Azure Log Analytics."
inputParameters:
- name: workspace_id
in: body
type: string
description: "The Log Analytics workspace ID."
- name: time_range
in: body
type: string
description: "Time range: 1h, 12h, 24h, 7d."
call: "loganalytics.run-query"
with:
workspace_id: "{{workspace_id}}"
timespan: "{{time_range}}"
outputParameters:
- name: event_count
type: string
mapping: "$.tables[0].rows.length"
- name: critical_events
type: string
mapping: "$.tables[0].rows"
consumes:
- type: http
namespace: loganalytics
baseUri: "https://api.loganalytics.io/v1"
authentication:
type: bearer
token: "$secrets.azure_loganalytics_token"
resources:
- name: query
path: "/workspaces/{{workspace_id}}/query"
inputParameters:
- name: workspace_id
in: path
operations:
- name: run-query
method: POST
Triggers an Azure Machine Learning pipeline to generate demand forecasts for hotel properties, stores results in Power BI, and notifies revenue management via Teams.
naftiko: "0.5"
info:
label: "Azure Machine Learning Demand Forecast"
description: "Triggers an Azure Machine Learning pipeline to generate demand forecasts for hotel properties, stores results in Power BI, and notifies revenue management via Teams."
tags:
- data-science
- azure-machine-learning
- power-bi
- microsoft-teams
- revenue-management
capability:
exposes:
- type: mcp
namespace: revenue-intelligence
port: 8080
tools:
- name: run-demand-forecast
description: "Given a region and forecast horizon, trigger the ML demand forecast pipeline."
inputParameters:
- name: region
in: body
type: string
description: "Target region: americas, emea, apac."
- name: horizon_days
in: body
type: string
description: "Forecast horizon in days."
steps:
- name: trigger-pipeline
type: call
call: "azureml.submit-pipeline-run"
with:
pipeline_id: "demand-forecast-v3"
parameters:
region: "{{region}}"
horizon: "{{horizon_days}}"
- name: refresh-dashboard
type: call
call: "powerbi.refresh-dataset"
with:
dataset_id: "demand-forecast-{{region}}"
- name: notify-revenue
type: call
call: "msteams.send-message"
with:
channel_id: "revenue-management"
message: "Demand forecast initiated for {{region}}, {{horizon_days}}-day horizon. Pipeline run: {{trigger-pipeline.run_id}}. Dashboard refreshing."
consumes:
- type: http
namespace: azureml
baseUri: "https://hilton-ml.api.azureml.ms"
authentication:
type: bearer
token: "$secrets.azureml_token"
resources:
- name: pipelines
path: "/pipelines/{{pipeline_id}}/submit"
inputParameters:
- name: pipeline_id
in: path
operations:
- name: submit-pipeline-run
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Triggers a Terraform Cloud workspace run to provision Azure infrastructure for hotel system environments, then posts the run status to the platform engineering Teams channel.
naftiko: "0.5"
info:
label: "Azure Terraform Infrastructure Provisioning"
description: "Triggers a Terraform Cloud workspace run to provision Azure infrastructure for hotel system environments, then posts the run status to the platform engineering Teams channel."
tags:
- cloud
- infrastructure
- azure
- terraform
- devops
capability:
exposes:
- type: mcp
namespace: platform-engineering
port: 8080
tools:
- name: run-terraform-workspace
description: "Given a Terraform Cloud workspace ID and run message, trigger a plan-and-apply run for Hilton's Azure infrastructure and notify the platform engineering channel in Teams."
inputParameters:
- name: workspace_id
in: body
type: string
description: "The Terraform Cloud workspace ID for the Azure environment to provision."
- name: run_message
in: body
type: string
description: "Description of the infrastructure change being applied."
steps:
- name: trigger-run
type: call
call: "terraform.create-run"
with:
workspace_id: "{{workspace_id}}"
message: "{{run_message}}"
- name: notify-platform
type: call
call: "msteams-platform.post-channel-message"
with:
channel_id: "$secrets.teams_platform_channel_id"
message: "Terraform run triggered | Workspace: {{workspace_id}} | Change: {{run_message}} | Run ID: {{trigger-run.run_id}}"
consumes:
- type: http
namespace: terraform
baseUri: "https://app.terraform.io/api/v2"
authentication:
type: bearer
token: "$secrets.terraform_token"
resources:
- name: runs
path: "/runs"
operations:
- name: create-run
method: POST
- type: http
namespace: msteams-platform
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves vendor contract documents from Box by contract ID or vendor name, returning file metadata, expiration dates, and download links.
naftiko: "0.5"
info:
label: "Box Contract Document Retrieval"
description: "Retrieves vendor contract documents from Box by contract ID or vendor name, returning file metadata, expiration dates, and download links."
tags:
- legal
- box
- document-management
- procurement
capability:
exposes:
- type: mcp
namespace: contract-management
port: 8080
tools:
- name: get-contract-document
description: "Given a vendor name or contract ID, retrieve contract documents from Box."
inputParameters:
- name: search_term
in: body
type: string
description: "Vendor name or contract ID to search for."
call: "box.search-files"
with:
query: "{{search_term}}"
ancestor_folder_ids: "vendor-contracts"
outputParameters:
- name: file_name
type: string
mapping: "$.entries[0].name"
- name: download_url
type: string
mapping: "$.entries[0].shared_link.download_url"
consumes:
- type: http
namespace: box
baseUri: "https://api.box.com/2.0"
authentication:
type: bearer
token: "$secrets.box_token"
resources:
- name: search
path: "/search"
operations:
- name: search-files
method: GET
Synchronizes approved brand templates from Canva to SharePoint for property marketing teams, ensuring consistent brand materials across all Hilton properties.
naftiko: "0.5"
info:
label: "Canva Brand Template Library Sync"
description: "Synchronizes approved brand templates from Canva to SharePoint for property marketing teams, ensuring consistent brand materials across all Hilton properties."
tags:
- marketing
- canva
- sharepoint
- brand-management
capability:
exposes:
- type: mcp
namespace: brand-assets
port: 8080
tools:
- name: sync-brand-templates
description: "Given a Canva folder ID, sync approved templates to the SharePoint brand library."
inputParameters:
- name: folder_id
in: body
type: string
description: "The Canva brand folder ID."
- name: brand
in: body
type: string
description: "The Hilton brand name for categorization."
steps:
- name: get-designs
type: call
call: "canva.list-designs"
with:
folder_id: "{{folder_id}}"
- name: upload-to-sharepoint
type: call
call: "sharepoint.upload-file"
with:
site_id: "hilton-brand-assets"
folder_path: "Templates/{{brand}}"
file_content: "{{get-designs.items}}"
- name: notify-marketing
type: call
call: "msteams.send-message"
with:
channel_id: "brand-{{brand}}-marketing"
message: "Brand templates synced: {{get-designs.total_count}} templates updated in SharePoint for {{brand}}. Library: {{upload-to-sharepoint.webUrl}}"
consumes:
- type: http
namespace: canva
baseUri: "https://api.canva.com/rest/v1"
authentication:
type: bearer
token: "$secrets.canva_token"
resources:
- name: designs
path: "/folders/{{folder_id}}/items"
inputParameters:
- name: folder_id
in: path
operations:
- name: list-designs
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive
path: "/sites/{{site_id}}/drive/root:/{{folder_path}}:/children"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: upload-file
method: PUT
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors Cisco wireless controller for guest WiFi network performance at hotel properties, checking connected clients, bandwidth utilization, and access point health.
naftiko: "0.5"
info:
label: "Cisco WiFi Guest Network Monitor"
description: "Monitors Cisco wireless controller for guest WiFi network performance at hotel properties, checking connected clients, bandwidth utilization, and access point health."
tags:
- infrastructure
- cisco
- monitoring
- hospitality
- networking
capability:
exposes:
- type: mcp
namespace: network-ops
port: 8080
tools:
- name: monitor-guest-wifi
description: "Given a property code, retrieve guest WiFi network metrics from Cisco wireless controller."
inputParameters:
- name: property_code
in: body
type: string
description: "The Hilton property code."
call: "cisco.get-network-summary"
with:
network_name: "HiltonGuest-{{property_code}}"
outputParameters:
- name: connected_clients
type: string
mapping: "$.summary.client_count"
- name: bandwidth_utilization
type: string
mapping: "$.summary.bandwidth_pct"
consumes:
- type: http
namespace: cisco
baseUri: "https://hilton-cisco.meraki.com/api/v1"
authentication:
type: apiKey
key: "$secrets.cisco_meraki_key"
resources:
- name: networks
path: "/networks/{{network_name}}/clients"
inputParameters:
- name: network_name
in: path
operations:
- name: get-network-summary
method: GET
When a DDoS attack is detected by Cloudflare, enables under-attack mode, creates a ServiceNow P1 incident, and alerts the security operations team via Teams.
naftiko: "0.5"
info:
label: "Cloudflare DDoS Mitigation Responder"
description: "When a DDoS attack is detected by Cloudflare, enables under-attack mode, creates a ServiceNow P1 incident, and alerts the security operations team via Teams."
tags:
- security
- cloudflare
- servicenow
- microsoft-teams
- infrastructure
capability:
exposes:
- type: mcp
namespace: security-ops
port: 8080
tools:
- name: respond-to-ddos
description: "Given a Cloudflare zone ID and attack details, enable mitigation mode, create incident, and alert security."
inputParameters:
- name: zone_id
in: body
type: string
description: "The Cloudflare zone ID under attack."
- name: attack_type
in: body
type: string
description: "Type of DDoS attack detected."
steps:
- name: enable-uam
type: call
call: "cloudflare.update-security-level"
with:
zone_id: "{{zone_id}}"
value: "under_attack"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "DDoS attack detected: {{attack_type}} on zone {{zone_id}}"
category: "security_incident"
urgency: "1"
impact: "1"
assigned_to: "Security_Operations"
- name: alert-secops
type: call
call: "msteams.send-message"
with:
channel_id: "security-operations"
message: "CRITICAL: DDoS attack ({{attack_type}}) detected on zone {{zone_id}}. Under-attack mode enabled. P1 incident: {{create-incident.number}}"
consumes:
- type: http
namespace: cloudflare
baseUri: "https://api.cloudflare.com/client/v4"
authentication:
type: bearer
token: "$secrets.cloudflare_token"
resources:
- name: zone-settings
path: "/zones/{{zone_id}}/settings/security_level"
inputParameters:
- name: zone_id
in: path
operations:
- name: update-security-level
method: PATCH
- type: http
namespace: servicenow
baseUri: "https://hilton.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: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When brand standards documents are updated in Confluence, sends a Teams notification to affected property GMs and creates a SharePoint tracking entry for acknowledgment.
naftiko: "0.5"
info:
label: "Confluence Brand Standards Update Notifier"
description: "When brand standards documents are updated in Confluence, sends a Teams notification to affected property GMs and creates a SharePoint tracking entry for acknowledgment."
tags:
- operations
- confluence
- microsoft-teams
- sharepoint
- hospitality
capability:
exposes:
- type: mcp
namespace: brand-operations
port: 8080
tools:
- name: notify-brand-update
description: "Given a Confluence page ID for an updated brand standard, notify relevant property teams and track acknowledgments."
inputParameters:
- name: page_id
in: body
type: string
description: "The Confluence page ID of the updated brand standard."
- name: brand
in: body
type: string
description: "The Hilton brand name, e.g. Hampton, DoubleTree."
steps:
- name: get-page
type: call
call: "confluence.get-page"
with:
page_id: "{{page_id}}"
- name: notify-teams
type: call
call: "msteams.send-message"
with:
channel_id: "brand-{{brand}}-operations"
message: "Brand standards updated: {{get-page.title}}. Please review and acknowledge. Link: {{get-page._links.webui}}"
- name: create-tracker
type: call
call: "sharepoint.create-item"
with:
site_id: "hilton-brand-standards"
list_name: "AcknowledgmentTracker"
fields:
page_title: "{{get-page.title}}"
brand: "{{brand}}"
status: "pending"
consumes:
- type: http
namespace: confluence
baseUri: "https://hilton.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: content
path: "/content/{{page_id}}"
inputParameters:
- name: page_id
in: path
operations:
- name: get-page
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: list-items
path: "/sites/{{site_id}}/lists/{{list_name}}/items"
inputParameters:
- name: site_id
in: path
- name: list_name
in: path
operations:
- name: create-item
method: POST
Queries Datadog for application latency metrics across Hilton's booking and loyalty platforms, returning p50, p95, and p99 latency values for a specified time window.
naftiko: "0.5"
info:
label: "Datadog Application Latency Check"
description: "Queries Datadog for application latency metrics across Hilton's booking and loyalty platforms, returning p50, p95, and p99 latency values for a specified time window."
tags:
- monitoring
- datadog
- infrastructure
- performance
capability:
exposes:
- type: mcp
namespace: platform-monitoring
port: 8080
tools:
- name: check-app-latency
description: "Given a service name and time window, retrieve latency percentiles from Datadog."
inputParameters:
- name: service_name
in: body
type: string
description: "The Datadog service name, e.g. hilton-booking-api."
- name: time_window
in: body
type: string
description: "Time window such as 1h, 6h, 24h."
call: "datadog.query-metrics"
with:
query: "avg:trace.http.request.duration{service:{{service_name}}} by {percentile}"
from: "{{time_window}}"
outputParameters:
- name: p50_ms
type: string
mapping: "$.series[0].pointlist[-1][1]"
- name: p99_ms
type: string
mapping: "$.series[2].pointlist[-1][1]"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
resources:
- name: metrics
path: "/query"
operations:
- name: query-metrics
method: GET
When a Datadog monitor alert fires for hotel systems (PMS, Wi-Fi, payment terminals), creates a ServiceNow incident and alerts the IT operations Teams channel with severity and affected property details.
naftiko: "0.5"
info:
label: "Datadog Infrastructure Alert Handler"
description: "When a Datadog monitor alert fires for hotel systems (PMS, Wi-Fi, payment terminals), creates a ServiceNow incident and alerts the IT operations Teams channel with severity and affected property details."
tags:
- itsm
- observability
- datadog
- servicenow
- microsoft-teams
- incident-response
capability:
exposes:
- type: mcp
namespace: infra-ops
port: 8080
tools:
- name: handle-infra-alert
description: "Given a Datadog monitor ID, alert title, affected property, and severity, create a ServiceNow incident and notify the IT operations Teams channel. Use when Datadog detects a hotel system failure or degradation."
inputParameters:
- name: monitor_id
in: body
type: string
description: "The Datadog monitor ID that triggered the alert."
- name: alert_title
in: body
type: string
description: "Human-readable alert title from Datadog."
- name: property_code
in: body
type: string
description: "The affected hotel property code."
- name: severity
in: body
type: string
description: "Alert severity: P1, P2, or P3."
steps:
- name: create-incident
type: call
call: "servicenow-infra.create-incident"
with:
short_description: "[{{severity}}] {{alert_title}} at property {{property_code}}"
urgency: "1"
category: "infrastructure"
- name: notify-it-ops
type: call
call: "msteams-infra.post-channel-message"
with:
channel_id: "$secrets.teams_it_ops_channel_id"
message: "ALERT {{severity}}: {{alert_title}} | Property: {{property_code}} | Monitor: {{monitor_id}} | Incident: {{create-incident.number}}"
consumes:
- type: http
namespace: servicenow-infra
baseUri: "https://hilton.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-infra
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Mutes Datadog monitors for a hotel system during a scheduled maintenance window and posts the mute schedule to the IT operations Teams channel for on-call visibility.
naftiko: "0.5"
info:
label: "Datadog Monitor Mute During Maintenance"
description: "Mutes Datadog monitors for a hotel system during a scheduled maintenance window and posts the mute schedule to the IT operations Teams channel for on-call visibility."
tags:
- observability
- maintenance
- datadog
- microsoft-teams
- itsm
capability:
exposes:
- type: mcp
namespace: maintenance-ops
port: 8080
tools:
- name: mute-monitors-for-maintenance
description: "Given a Datadog monitor ID, mute duration, and maintenance reason, suppress the monitor and notify the IT operations channel in Teams. Use before planned hotel system maintenance or infrastructure upgrades."
inputParameters:
- name: monitor_id
in: body
type: string
description: "The Datadog monitor ID to mute."
- name: duration_seconds
in: body
type: integer
description: "Duration of the mute in seconds."
- name: maintenance_reason
in: body
type: string
description: "Description of the maintenance activity."
steps:
- name: mute-monitor
type: call
call: "datadog-mute.mute-monitor"
with:
monitor_id: "{{monitor_id}}"
duration: "{{duration_seconds}}"
- name: notify-it-ops
type: call
call: "msteams-maint.post-channel-message"
with:
channel_id: "$secrets.teams_it_ops_channel_id"
message: "Monitor muted | ID: {{monitor_id}} | Duration: {{duration_seconds}}s | Reason: {{maintenance_reason}} | Alerts suppressed during maintenance."
consumes:
- type: http
namespace: datadog-mute
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: monitor-mute
path: "/monitor/{{monitor_id}}/mute"
inputParameters:
- name: monitor_id
in: path
operations:
- name: mute-monitor
method: POST
- type: http
namespace: msteams-maint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves SLO compliance data from Datadog for hotel system services (booking engine, PMS, loyalty platform) and publishes a weekly digest to the engineering leadership Teams channel.
naftiko: "0.5"
info:
label: "Datadog SLO Compliance Report"
description: "Retrieves SLO compliance data from Datadog for hotel system services (booking engine, PMS, loyalty platform) and publishes a weekly digest to the engineering leadership Teams channel."
tags:
- observability
- slo
- datadog
- microsoft-teams
- reporting
capability:
exposes:
- type: mcp
namespace: observability-reporting
port: 8080
tools:
- name: digest-slo-compliance
description: "Given a Datadog SLO ID and time window, retrieve compliance percentage and error budget remaining, then post a summary to the engineering leadership channel in Teams."
inputParameters:
- name: slo_id
in: body
type: string
description: "The Datadog SLO ID to check, e.g. for the booking engine or PMS."
- name: time_window
in: body
type: string
description: "The SLO rolling window, e.g. 7d or 30d."
steps:
- name: get-slo-history
type: call
call: "datadog.get-slo-history"
with:
slo_id: "{{slo_id}}"
- name: post-digest
type: call
call: "msteams-slo.post-channel-message"
with:
channel_id: "$secrets.teams_engineering_channel_id"
message: "SLO Compliance Report | SLO: {{slo_id}} | Window: {{time_window}} | Compliance and error budget data retrieved from Datadog."
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apikey
key: "DD-API-KEY"
value: "$secrets.datadog_api_key"
placement: header
resources:
- name: slo-history
path: "/slo/{{slo_id}}/history"
inputParameters:
- name: slo_id
in: path
operations:
- name: get-slo-history
method: GET
- type: http
namespace: msteams-slo
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Retrieves real user monitoring data from Dynatrace for Hilton's mobile app and website, returning page load times, crash rates, and user satisfaction scores.
naftiko: "0.5"
info:
label: "Dynatrace Real User Monitoring Report"
description: "Retrieves real user monitoring data from Dynatrace for Hilton's mobile app and website, returning page load times, crash rates, and user satisfaction scores."
tags:
- monitoring
- dynatrace
- performance
- digital-experience
capability:
exposes:
- type: mcp
namespace: digital-experience
port: 8080
tools:
- name: get-rum-report
description: "Given an application name, retrieve RUM metrics from Dynatrace."
inputParameters:
- name: application_name
in: body
type: string
description: "The Dynatrace application name, e.g. hilton-mobile-app."
call: "dynatrace.get-rum-metrics"
with:
application_name: "{{application_name}}"
outputParameters:
- name: apdex_score
type: string
mapping: "$.result[0].data[0].values[0]"
- name: avg_load_time_ms
type: string
mapping: "$.result[1].data[0].values[0]"
consumes:
- type: http
namespace: dynatrace
baseUri: "https://hilton.live.dynatrace.com/api/v2"
authentication:
type: bearer
token: "$secrets.dynatrace_token"
resources:
- name: metrics
path: "/metrics/query"
operations:
- name: get-rum-metrics
method: GET
When a hotel associate's termination is confirmed in Workday, creates a ServiceNow offboarding ticket for access revocation, archives their SharePoint files, and notifies the property IT lead via Teams.
naftiko: "0.5"
info:
label: "Employee Offboarding Orchestrator"
description: "When a hotel associate's termination is confirmed in Workday, creates a ServiceNow offboarding ticket for access revocation, archives their SharePoint files, and notifies the property IT lead via Teams."
tags:
- hr
- offboarding
- workday
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: trigger-offboarding
description: "Given a Workday employee ID and termination date, open a ServiceNow access-revocation ticket, archive their SharePoint folder, and notify the property IT lead in Teams."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID of the departing associate."
- name: termination_date
in: body
type: string
description: "The associate's last working day in YYYY-MM-DD format."
- name: property_code
in: body
type: string
description: "The property code where the associate was based."
steps:
- name: get-worker
type: call
call: "workday-off.get-worker"
with:
worker_id: "{{employee_id}}"
- name: create-offboarding-ticket
type: call
call: "servicenow-off.create-incident"
with:
short_description: "Offboarding: {{get-worker.display_name}} from {{property_code}}"
category: "hr_offboarding"
description: "{{get-worker.display_name}} ({{employee_id}}) terminates {{termination_date}} at {{property_code}}. Revoke all system access."
- name: notify-property-it
type: call
call: "msteams-off.post-channel-message"
with:
channel_id: "$secrets.teams_it_ops_channel_id"
message: "Offboarding initiated | Associate: {{get-worker.display_name}} | Property: {{property_code}} | Last day: {{termination_date}} | Ticket: {{create-offboarding-ticket.number}}"
consumes:
- type: http
namespace: workday-off
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/hilton/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow-off
baseUri: "https://hilton.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-off
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Checks F5 load balancer virtual server and pool member health status, identifying degraded or offline members for the booking and loyalty platforms.
naftiko: "0.5"
info:
label: "F5 Load Balancer Pool Status Check"
description: "Checks F5 load balancer virtual server and pool member health status, identifying degraded or offline members for the booking and loyalty platforms."
tags:
- infrastructure
- f5-networks
- monitoring
- networking
capability:
exposes:
- type: mcp
namespace: network-infrastructure
port: 8080
tools:
- name: check-pool-status
description: "Given an F5 pool name, retrieve member health status."
inputParameters:
- name: pool_name
in: body
type: string
description: "The F5 pool name."
call: "f5.get-pool-members"
with:
pool_name: "{{pool_name}}"
outputParameters:
- name: total_members
type: string
mapping: "$.items.length"
- name: active_members
type: string
mapping: "$.active_count"
consumes:
- type: http
namespace: f5
baseUri: "https://hilton-f5.com/mgmt/tm"
authentication:
type: basic
username: "$secrets.f5_user"
password: "$secrets.f5_password"
resources:
- name: pools
path: "/ltm/pool/{{pool_name}}/members"
inputParameters:
- name: pool_name
in: path
operations:
- name: get-pool-members
method: GET
Retrieves Facebook ad campaign performance metrics including impressions, clicks, conversions, and cost per acquisition for Hilton brand campaigns.
naftiko: "0.5"
info:
label: "Facebook Ad Campaign Performance Tracker"
description: "Retrieves Facebook ad campaign performance metrics including impressions, clicks, conversions, and cost per acquisition for Hilton brand campaigns."
tags:
- marketing
- facebook
- advertising
- reporting
capability:
exposes:
- type: mcp
namespace: paid-media
port: 8080
tools:
- name: get-campaign-performance
description: "Given a Facebook ad account ID and campaign ID, retrieve performance metrics."
inputParameters:
- name: account_id
in: body
type: string
description: "The Facebook ad account ID."
- name: campaign_id
in: body
type: string
description: "The campaign ID."
call: "facebook.get-campaign-insights"
with:
account_id: "{{account_id}}"
campaign_id: "{{campaign_id}}"
outputParameters:
- name: impressions
type: string
mapping: "$.data[0].impressions"
- name: clicks
type: string
mapping: "$.data[0].clicks"
- name: cost_per_result
type: string
mapping: "$.data[0].cost_per_action_type[0].value"
consumes:
- type: http
namespace: facebook
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.facebook_token"
resources:
- name: insights
path: "/{{campaign_id}}/insights"
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-insights
method: GET
When a GitHub Actions workflow fails on main branch, creates a ServiceNow incident, posts to the engineering Teams channel, and assigns the on-call developer from the Datadog rotation.
naftiko: "0.5"
info:
label: "GitHub Actions Build Failure Escalation"
description: "When a GitHub Actions workflow fails on main branch, creates a ServiceNow incident, posts to the engineering Teams channel, and assigns the on-call developer from the Datadog rotation."
tags:
- engineering
- github-actions
- servicenow
- microsoft-teams
- datadog
capability:
exposes:
- type: mcp
namespace: cicd-operations
port: 8080
tools:
- name: escalate-build-failure
description: "Given a GitHub repository and workflow run ID, escalate the build failure across ServiceNow, Teams, and on-call rotation."
inputParameters:
- name: repo
in: body
type: string
description: "The GitHub repository in org/repo format."
- name: run_id
in: body
type: string
description: "The failed workflow run ID."
steps:
- name: get-run
type: call
call: "github.get-workflow-run"
with:
repo: "{{repo}}"
run_id: "{{run_id}}"
- name: get-oncall
type: call
call: "datadog.get-oncall"
with:
schedule_id: "engineering-primary"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Build failure: {{repo}} workflow {{get-run.name}}"
category: "software_engineering"
assigned_to: "{{get-oncall.user.email}}"
urgency: "2"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "engineering-alerts"
message: "Build failure in {{repo}}: {{get-run.name}} ({{get-run.conclusion}}). On-call: {{get-oncall.user.name}}. Incident: {{create-incident.number}}. Run: {{get-run.html_url}}"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: workflow-runs
path: "/repos/{{repo}}/actions/runs/{{run_id}}"
inputParameters:
- name: repo
in: path
- name: run_id
in: path
operations:
- name: get-workflow-run
method: GET
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
resources:
- name: oncall
path: "/on-call/schedules/{{schedule_id}}/oncall"
inputParameters:
- name: schedule_id
in: path
operations:
- name: get-oncall
method: GET
- type: http
namespace: servicenow
baseUri: "https://hilton.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: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Monitors GitLab merge request pipelines for code quality gate results, blocks merges on failures, and notifies the engineering lead via Teams with quality metrics.
naftiko: "0.5"
info:
label: "GitLab Code Quality Gate Enforcer"
description: "Monitors GitLab merge request pipelines for code quality gate results, blocks merges on failures, and notifies the engineering lead via Teams with quality metrics."
tags:
- engineering
- gitlab
- microsoft-teams
- quality-assurance
capability:
exposes:
- type: mcp
namespace: code-quality
port: 8080
tools:
- name: enforce-quality-gate
description: "Given a GitLab project and merge request IID, check quality gates and notify the team."
inputParameters:
- name: project_id
in: body
type: string
description: "The GitLab project ID."
- name: mr_iid
in: body
type: string
description: "The merge request IID."
steps:
- name: get-pipeline
type: call
call: "gitlab.get-mr-pipelines"
with:
project_id: "{{project_id}}"
mr_iid: "{{mr_iid}}"
- name: get-quality
type: call
call: "gitlab.get-code-quality"
with:
project_id: "{{project_id}}"
pipeline_id: "{{get-pipeline[0].id}}"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "engineering-quality"
message: "Quality gate result for MR !{{mr_iid}}: Pipeline {{get-pipeline[0].status}}. Quality issues: {{get-quality.length}}. Blocking: {{get-quality.blocker_count}}"
consumes:
- type: http
namespace: gitlab
baseUri: "https://gitlab.hilton.com/api/v4"
authentication:
type: bearer
token: "$secrets.gitlab_token"
resources:
- name: merge-requests
path: "/projects/{{project_id}}/merge_requests/{{mr_iid}}/pipelines"
inputParameters:
- name: project_id
in: path
- name: mr_iid
in: path
operations:
- name: get-mr-pipelines
method: GET
- name: quality
path: "/projects/{{project_id}}/pipelines/{{pipeline_id}}/codequality_reports"
inputParameters:
- name: project_id
in: path
- name: pipeline_id
in: path
operations:
- name: get-code-quality
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls weekly website traffic metrics from Google Analytics for Hilton brand sites, including sessions, bounce rate, and conversion rate, then sends a summary to a Teams channel.
naftiko: "0.5"
info:
label: "Google Analytics Website Traffic Digest"
description: "Pulls weekly website traffic metrics from Google Analytics for Hilton brand sites, including sessions, bounce rate, and conversion rate, then sends a summary to a Teams channel."
tags:
- marketing
- google-analytics
- microsoft-teams
- reporting
- hospitality
capability:
exposes:
- type: mcp
namespace: digital-marketing
port: 8080
tools:
- name: generate-traffic-digest
description: "Given a brand site identifier, pull weekly traffic metrics from Google Analytics and post a summary to the marketing Teams channel."
inputParameters:
- name: property_id
in: body
type: string
description: "The Google Analytics property ID for the brand site."
steps:
- name: get-traffic
type: call
call: "google-analytics.get-report"
with:
property_id: "{{property_id}}"
date_range: "last_7_days"
metrics: "sessions,bounceRate,goalConversionRate"
- name: post-digest
type: call
call: "msteams.send-message"
with:
channel_id: "digital-marketing-team"
message: "Weekly Traffic Digest: Sessions: {{get-traffic.sessions}}, Bounce Rate: {{get-traffic.bounceRate}}%, Conversion: {{get-traffic.goalConversionRate}}%"
consumes:
- type: http
namespace: google-analytics
baseUri: "https://analyticsdata.googleapis.com/v1beta"
authentication:
type: bearer
token: "$secrets.google_analytics_token"
resources:
- name: reports
path: "/properties/{{property_id}}:runReport"
inputParameters:
- name: property_id
in: path
operations:
- name: get-report
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves franchise agreement documents and operational templates from Google Drive shared folders for franchise property owners.
naftiko: "0.5"
info:
label: "Google Drive Franchise Document Library"
description: "Retrieves franchise agreement documents and operational templates from Google Drive shared folders for franchise property owners."
tags:
- operations
- google-drive
- franchise
- document-management
capability:
exposes:
- type: mcp
namespace: franchise-ops
port: 8080
tools:
- name: get-franchise-documents
description: "Given a franchise ID, retrieve associated documents from Google Drive."
inputParameters:
- name: franchise_id
in: body
type: string
description: "The franchise property identifier."
call: "google-drive.list-files"
with:
folder_id: "franchise-{{franchise_id}}"
fields: "files(id,name,mimeType,modifiedTime)"
outputParameters:
- name: document_count
type: string
mapping: "$.files.length"
- name: latest_document
type: string
mapping: "$.files[0].name"
consumes:
- type: http
namespace: google-drive
baseUri: "https://www.googleapis.com/drive/v3"
authentication:
type: bearer
token: "$secrets.google_drive_token"
resources:
- name: files
path: "/files"
operations:
- name: list-files
method: GET
Retrieves guest feedback responses from Google Forms, aggregates scores, and syncs results to Salesforce for guest experience tracking.
naftiko: "0.5"
info:
label: "Google Forms Guest Feedback Collector"
description: "Retrieves guest feedback responses from Google Forms, aggregates scores, and syncs results to Salesforce for guest experience tracking."
tags:
- guest-experience
- google-forms
- salesforce
- feedback
capability:
exposes:
- type: mcp
namespace: guest-feedback
port: 8080
tools:
- name: collect-feedback
description: "Given a Google Forms form ID, retrieve responses and sync to Salesforce."
inputParameters:
- name: form_id
in: body
type: string
description: "The Google Forms form ID."
steps:
- name: get-responses
type: call
call: "google-forms.get-responses"
with:
form_id: "{{form_id}}"
- name: sync-to-salesforce
type: call
call: "salesforce.create-records"
with:
object: "Guest_Feedback__c"
records: "{{get-responses.responses}}"
consumes:
- type: http
namespace: google-forms
baseUri: "https://forms.googleapis.com/v1"
authentication:
type: bearer
token: "$secrets.google_forms_token"
resources:
- name: responses
path: "/forms/{{form_id}}/responses"
inputParameters:
- name: form_id
in: path
operations:
- name: get-responses
method: GET
- type: http
namespace: salesforce
baseUri: "https://hilton.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: composite
path: "/composite/sobjects"
operations:
- name: create-records
method: POST
Retrieves Google Maps business listing data for a Hilton property, checking accuracy of address, phone, hours, and ratings against the master property database.
naftiko: "0.5"
info:
label: "Google Maps Property Listing Audit"
description: "Retrieves Google Maps business listing data for a Hilton property, checking accuracy of address, phone, hours, and ratings against the master property database."
tags:
- marketing
- google-maps
- hospitality
- operations
capability:
exposes:
- type: mcp
namespace: property-marketing
port: 8080
tools:
- name: audit-property-listing
description: "Given a Google Place ID, retrieve the business listing details for auditing."
inputParameters:
- name: place_id
in: body
type: string
description: "The Google Maps Place ID for the property."
call: "google-maps.get-place-details"
with:
place_id: "{{place_id}}"
outputParameters:
- name: name
type: string
mapping: "$.result.name"
- name: rating
type: string
mapping: "$.result.rating"
- name: total_reviews
type: string
mapping: "$.result.user_ratings_total"
consumes:
- type: http
namespace: google-maps
baseUri: "https://maps.googleapis.com/maps/api"
authentication:
type: apiKey
key: "$secrets.google_maps_api_key"
resources:
- name: places
path: "/place/details/json"
operations:
- name: get-place-details
method: GET
Retrieves search performance data from Google Search Console for Hilton's web properties, including click-through rates, average position, and top queries.
naftiko: "0.5"
info:
label: "Google Search Console SEO Report"
description: "Retrieves search performance data from Google Search Console for Hilton's web properties, including click-through rates, average position, and top queries."
tags:
- marketing
- google-search-console
- seo
- reporting
capability:
exposes:
- type: mcp
namespace: seo-analytics
port: 8080
tools:
- name: get-seo-report
description: "Given a site URL and date range, retrieve search performance metrics from Google Search Console."
inputParameters:
- name: site_url
in: body
type: string
description: "The site URL registered in Search Console."
- name: start_date
in: body
type: string
description: "Start date in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "End date in YYYY-MM-DD format."
call: "searchconsole.query-analytics"
with:
site_url: "{{site_url}}"
start_date: "{{start_date}}"
end_date: "{{end_date}}"
outputParameters:
- name: total_clicks
type: string
mapping: "$.rows[0].clicks"
- name: avg_ctr
type: string
mapping: "$.rows[0].ctr"
- name: avg_position
type: string
mapping: "$.rows[0].position"
consumes:
- type: http
namespace: searchconsole
baseUri: "https://searchconsole.googleapis.com/webmasters/v3"
authentication:
type: bearer
token: "$secrets.google_searchconsole_token"
resources:
- name: analytics
path: "/sites/{{site_url}}/searchAnalytics/query"
inputParameters:
- name: site_url
in: path
operations:
- name: query-analytics
method: POST
Retrieves property budget vs. actual data from Google Sheets for GM review, flagging variances exceeding thresholds.
naftiko: "0.5"
info:
label: "Google Sheets Property Budget Tracker"
description: "Retrieves property budget vs. actual data from Google Sheets for GM review, flagging variances exceeding thresholds."
tags:
- finance
- google-sheets
- reporting
- hospitality
capability:
exposes:
- type: mcp
namespace: property-finance
port: 8080
tools:
- name: get-budget-status
description: "Given a Google Sheets spreadsheet ID, retrieve budget vs. actual data."
inputParameters:
- name: spreadsheet_id
in: body
type: string
description: "The Google Sheets spreadsheet ID."
- name: sheet_name
in: body
type: string
description: "The sheet tab name."
call: "google-sheets.get-values"
with:
spreadsheet_id: "{{spreadsheet_id}}"
range: "{{sheet_name}}!A1:Z100"
outputParameters:
- name: values
type: string
mapping: "$.values"
consumes:
- type: http
namespace: google-sheets
baseUri: "https://sheets.googleapis.com/v4"
authentication:
type: bearer
token: "$secrets.google_sheets_token"
resources:
- name: spreadsheets
path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}"
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: get-values
method: GET
Retrieves the latest published container version from Google Tag Manager for Hilton web properties, checking for recent changes and tag counts.
naftiko: "0.5"
info:
label: "Google Tag Manager Container Version Check"
description: "Retrieves the latest published container version from Google Tag Manager for Hilton web properties, checking for recent changes and tag counts."
tags:
- marketing
- google-tag-manager
- digital-experience
- reporting
capability:
exposes:
- type: mcp
namespace: tag-management
port: 8080
tools:
- name: check-container-version
description: "Given a GTM account and container ID, retrieve the latest version details."
inputParameters:
- name: account_id
in: body
type: string
description: "The GTM account ID."
- name: container_id
in: body
type: string
description: "The GTM container ID."
call: "gtm.get-latest-version"
with:
account_id: "{{account_id}}"
container_id: "{{container_id}}"
outputParameters:
- name: version_id
type: string
mapping: "$.containerVersion.containerVersionId"
- name: tag_count
type: string
mapping: "$.containerVersion.tag.length"
consumes:
- type: http
namespace: gtm
baseUri: "https://www.googleapis.com/tagmanager/v2"
authentication:
type: bearer
token: "$secrets.gtm_token"
resources:
- name: versions
path: "/accounts/{{account_id}}/containers/{{container_id}}/versions"
inputParameters:
- name: account_id
in: path
- name: container_id
in: path
operations:
- name: get-latest-version
method: GET
Retrieves guest satisfaction survey scores and comments from Salesforce for a specified property and date range, surfacing NPS and key feedback themes for hotel management.
naftiko: "0.5"
info:
label: "Guest Satisfaction Score Lookup"
description: "Retrieves guest satisfaction survey scores and comments from Salesforce for a specified property and date range, surfacing NPS and key feedback themes for hotel management."
tags:
- customer-success
- salesforce
- guest-experience
- reporting
- hospitality
capability:
exposes:
- type: mcp
namespace: guest-experience
port: 8080
tools:
- name: get-guest-satisfaction-scores
description: "Given a Hilton property code and date range, retrieve guest satisfaction survey scores and comment summaries from Salesforce. Use for property performance reviews and GM briefings."
inputParameters:
- name: property_code
in: body
type: string
description: "The Hilton property code, e.g. NYCHH for New York Conrad."
- name: start_date
in: body
type: string
description: "Start of the date range in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "End of the date range in YYYY-MM-DD format."
call: "salesforce.query-surveys"
with:
property_code: "{{property_code}}"
start_date: "{{start_date}}"
end_date: "{{end_date}}"
outputParameters:
- name: nps_score
type: string
mapping: "$.records[0].NPS_Score__c"
- name: total_responses
type: string
mapping: "$.totalSize"
- name: average_rating
type: string
mapping: "$.records[0].Average_Rating__c"
consumes:
- type: http
namespace: salesforce
baseUri: "https://hilton.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: survey-query
path: "/query"
inputParameters:
- name: q
in: query
operations:
- name: query-surveys
method: GET
When a new hotel associate is created in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint orientation folder, and sends a Teams welcome message with property and start date details.
naftiko: "0.5"
info:
label: "Hotel Staff Onboarding Orchestrator"
description: "When a new hotel associate is created in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint orientation folder, and sends a Teams welcome message with property and start date details."
tags:
- hr
- onboarding
- workday
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: "Given a Workday employee ID and start date, orchestrate the full onboarding sequence by opening a ServiceNow ticket, provisioning a SharePoint folder, and sending a Teams welcome message to the new associate."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID for the new hotel associate."
- name: start_date
in: body
type: string
description: "The associate's start date in YYYY-MM-DD format."
- name: property_code
in: body
type: string
description: "The Hilton property code where the associate will be based, e.g. NYCHH."
steps:
- name: get-worker
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "New associate onboarding: {{get-worker.display_name}} at {{property_code}}"
category: "hr_onboarding"
assigned_to: "IT_Onboarding"
- name: provision-folder
type: call
call: "sharepoint.create-folder"
with:
site_id: "hilton-hr-onboarding"
folder_path: "OnboardingDocs/{{property_code}}/{{get-worker.display_name}}_{{start_date}}"
- name: send-welcome
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-worker.work_email}}"
message: "Welcome to Hilton, {{get-worker.first_name}}! You're joining {{property_code}} on {{start_date}}. Your onboarding ticket: {{create-ticket.number}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/hilton/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: "https://hilton.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/sites/{{site_id}}/drive/root/children"
inputParameters:
- name: site_id
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
When a new lead is captured in HubSpot from digital campaigns, enriches the lead with Salesforce account data, creates a follow-up task, and notifies the regional sales team via Teams.
naftiko: "0.5"
info:
label: "HubSpot Digital Lead Capture Sync"
description: "When a new lead is captured in HubSpot from digital campaigns, enriches the lead with Salesforce account data, creates a follow-up task, and notifies the regional sales team via Teams."
tags:
- marketing
- hubspot
- salesforce
- microsoft-teams
- sales
capability:
exposes:
- type: mcp
namespace: lead-management
port: 8080
tools:
- name: sync-digital-lead
description: "Given a HubSpot contact ID, enrich with Salesforce data, create a follow-up task, and notify regional sales."
inputParameters:
- name: contact_id
in: body
type: string
description: "The HubSpot contact ID for the new lead."
- name: region
in: body
type: string
description: "The sales region, e.g. americas, emea, apac."
steps:
- name: get-contact
type: call
call: "hubspot.get-contact"
with:
contact_id: "{{contact_id}}"
- name: search-account
type: call
call: "salesforce.search-account"
with:
email_domain: "{{get-contact.email_domain}}"
- name: create-task
type: call
call: "salesforce.create-task"
with:
subject: "Follow up: {{get-contact.firstname}} {{get-contact.lastname}} from {{get-contact.company}}"
due_date: "+3d"
priority: "High"
- name: notify-sales
type: call
call: "msteams.send-message"
with:
channel_id: "sales-{{region}}"
message: "New digital lead: {{get-contact.firstname}} {{get-contact.lastname}} at {{get-contact.company}}. Account match: {{search-account.Name}}. Follow-up task created."
consumes:
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com/crm/v3"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: contacts
path: "/objects/contacts/{{contact_id}}"
inputParameters:
- name: contact_id
in: path
operations:
- name: get-contact
method: GET
- type: http
namespace: salesforce
baseUri: "https://hilton.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/query"
operations:
- name: search-account
method: GET
- name: tasks
path: "/sobjects/Task"
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Takes a Workday job requisition and posts it to Indeed, tracks the posting status, and updates the recruiter in Teams with the live listing URL.
naftiko: "0.5"
info:
label: "Indeed Job Posting Distribution"
description: "Takes a Workday job requisition and posts it to Indeed, tracks the posting status, and updates the recruiter in Teams with the live listing URL."
tags:
- hr
- indeed
- workday
- microsoft-teams
- recruiting
capability:
exposes:
- type: mcp
namespace: talent-acquisition
port: 8080
tools:
- name: distribute-job-posting
description: "Given a Workday requisition ID, create an Indeed job posting and notify the recruiter."
inputParameters:
- name: requisition_id
in: body
type: string
description: "The Workday job requisition ID."
steps:
- name: get-requisition
type: call
call: "workday.get-requisition"
with:
requisition_id: "{{requisition_id}}"
- name: post-job
type: call
call: "indeed.create-posting"
with:
title: "{{get-requisition.title}}"
description: "{{get-requisition.description}}"
location: "{{get-requisition.location}}"
company: "Hilton"
- name: notify-recruiter
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{get-requisition.recruiter_email}}"
message: "Job posted to Indeed: {{get-requisition.title}} at {{get-requisition.location}}. Listing URL: {{post-job.url}}. Requisition: {{requisition_id}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: requisitions
path: "/hilton/recruiting/requisitions/{{requisition_id}}"
inputParameters:
- name: requisition_id
in: path
operations:
- name: get-requisition
method: GET
- type: http
namespace: indeed
baseUri: "https://apis.indeed.com/v2"
authentication:
type: bearer
token: "$secrets.indeed_token"
resources:
- name: postings
path: "/postings"
operations:
- name: create-posting
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: chat
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves data quality scores from Informatica for guest master data, identifying duplicate records, missing fields, and data completeness metrics.
naftiko: "0.5"
info:
label: "Informatica Data Quality Score Report"
description: "Retrieves data quality scores from Informatica for guest master data, identifying duplicate records, missing fields, and data completeness metrics."
tags:
- data-management
- informatica
- reporting
- data-quality
capability:
exposes:
- type: mcp
namespace: data-governance
port: 8080
tools:
- name: get-data-quality-scores
description: "Given a data domain, retrieve quality scores from Informatica."
inputParameters:
- name: domain
in: body
type: string
description: "The data domain: guest, property, reservation."
call: "informatica.get-quality-report"
with:
domain: "{{domain}}"
outputParameters:
- name: completeness_score
type: string
mapping: "$.report.completeness"
- name: duplicate_count
type: string
mapping: "$.report.duplicates"
consumes:
- type: http
namespace: informatica
baseUri: "https://hilton.informaticacloud.com/api/v2"
authentication:
type: bearer
token: "$secrets.informatica_token"
resources:
- name: quality-reports
path: "/quality/reports"
operations:
- name: get-quality-report
method: GET
Pulls engagement metrics from Instagram Business API for Hilton brand accounts, compiling weekly reach, impressions, and top-performing content into a Teams digest.
naftiko: "0.5"
info:
label: "Instagram Social Media Engagement Digest"
description: "Pulls engagement metrics from Instagram Business API for Hilton brand accounts, compiling weekly reach, impressions, and top-performing content into a Teams digest."
tags:
- marketing
- instagram
- microsoft-teams
- social-media
capability:
exposes:
- type: mcp
namespace: social-marketing
port: 8080
tools:
- name: generate-instagram-digest
description: "Given an Instagram business account ID, compile weekly engagement metrics and post to Teams."
inputParameters:
- name: account_id
in: body
type: string
description: "The Instagram business account ID."
steps:
- name: get-insights
type: call
call: "instagram.get-account-insights"
with:
account_id: "{{account_id}}"
period: "week"
metrics: "reach,impressions,profile_views"
- name: post-digest
type: call
call: "msteams.send-message"
with:
channel_id: "social-media-marketing"
message: "Weekly Instagram Digest: Reach: {{get-insights.data[0].values[0].value}}, Impressions: {{get-insights.data[1].values[0].value}}, Profile Views: {{get-insights.data[2].values[0].value}}"
consumes:
- type: http
namespace: instagram
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.instagram_token"
resources:
- name: insights
path: "/{{account_id}}/insights"
inputParameters:
- name: account_id
in: path
operations:
- name: get-account-insights
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves engagement metrics for Hilton's LinkedIn employer brand posts and job listings over the past 30 days, posting a digest to the talent acquisition Teams channel.
naftiko: "0.5"
info:
label: "LinkedIn Hospitality Employer Brand Digest"
description: "Retrieves engagement metrics for Hilton's LinkedIn employer brand posts and job listings over the past 30 days, posting a digest to the talent acquisition Teams channel."
tags:
- marketing
- hr
- linkedin
- employer-brand
- reporting
capability:
exposes:
- type: mcp
namespace: talent-brand
port: 8080
tools:
- name: digest-linkedin-employer-brand
description: "Retrieve LinkedIn organization follower stats, post impressions, and job listing performance for Hilton's company page, then post a digest to the talent acquisition channel in Teams."
inputParameters:
- name: organization_id
in: body
type: string
description: "Hilton's LinkedIn organization URN ID."
- name: date_range_days
in: body
type: integer
description: "Number of days to include in the report, e.g. 30."
steps:
- name: get-follower-stats
type: call
call: "linkedin.get-follower-statistics"
with:
organization_id: "{{organization_id}}"
- name: post-digest
type: call
call: "msteams-talent.post-channel-message"
with:
channel_id: "$secrets.teams_talent_channel_id"
message: "LinkedIn Employer Brand Digest | Hilton | Last {{date_range_days}} days | Follower and engagement data retrieved. Review in full on LinkedIn Campaign Manager."
consumes:
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: follower-statistics
path: "/organizationalEntityFollowerStatistics"
inputParameters:
- name: organization_id
in: query
operations:
- name: get-follower-statistics
method: GET
- type: http
namespace: msteams-talent
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Syncs open positions from Workday to LinkedIn Recruiter job slots, updating pipeline metrics and notifying talent acquisition teams via Teams.
naftiko: "0.5"
info:
label: "LinkedIn Talent Pipeline Update"
description: "Syncs open positions from Workday to LinkedIn Recruiter job slots, updating pipeline metrics and notifying talent acquisition teams via Teams."
tags:
- hr
- linkedin
- workday
- microsoft-teams
- recruiting
capability:
exposes:
- type: mcp
namespace: talent-acquisition
port: 8080
tools:
- name: update-linkedin-pipeline
description: "Given a Workday requisition ID, sync the position to LinkedIn Recruiter and notify the TA team."
inputParameters:
- name: requisition_id
in: body
type: string
description: "The Workday job requisition ID."
steps:
- name: get-requisition
type: call
call: "workday.get-requisition"
with:
requisition_id: "{{requisition_id}}"
- name: post-to-linkedin
type: call
call: "linkedin.create-job-posting"
with:
title: "{{get-requisition.title}}"
location: "{{get-requisition.location}}"
description: "{{get-requisition.description}}"
- name: notify-ta
type: call
call: "msteams.send-message"
with:
channel_id: "talent-acquisition"
message: "LinkedIn job posting synced: {{get-requisition.title}} at {{get-requisition.location}}. LinkedIn posting: {{post-to-linkedin.posting_url}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: requisitions
path: "/hilton/recruiting/requisitions/{{requisition_id}}"
inputParameters:
- name: requisition_id
in: path
operations:
- name: get-requisition
method: GET
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: job-postings
path: "/jobPostings"
operations:
- name: create-job-posting
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Launches a targeted email campaign in MailChimp for Hilton Honors members, syncing segment data from Salesforce and posting campaign metrics to Teams.
naftiko: "0.5"
info:
label: "MailChimp Loyalty Campaign Launcher"
description: "Launches a targeted email campaign in MailChimp for Hilton Honors members, syncing segment data from Salesforce and posting campaign metrics to Teams."
tags:
- marketing
- mailchimp
- salesforce
- microsoft-teams
- loyalty
capability:
exposes:
- type: mcp
namespace: loyalty-marketing
port: 8080
tools:
- name: launch-loyalty-campaign
description: "Given a Salesforce segment ID and MailChimp template, launch a targeted loyalty campaign and notify marketing."
inputParameters:
- name: segment_id
in: body
type: string
description: "The Salesforce Honors member segment ID."
- name: template_id
in: body
type: string
description: "The MailChimp email template ID."
- name: campaign_name
in: body
type: string
description: "Name for the campaign."
steps:
- name: get-segment
type: call
call: "salesforce.get-campaign-members"
with:
segment_id: "{{segment_id}}"
- name: create-campaign
type: call
call: "mailchimp.create-campaign"
with:
name: "{{campaign_name}}"
template_id: "{{template_id}}"
list_id: "honors-members"
segment_count: "{{get-segment.totalSize}}"
- name: send-campaign
type: call
call: "mailchimp.send-campaign"
with:
campaign_id: "{{create-campaign.id}}"
- name: notify-marketing
type: call
call: "msteams.send-message"
with:
channel_id: "loyalty-marketing"
message: "Loyalty campaign '{{campaign_name}}' launched to {{get-segment.totalSize}} Honors members. Campaign ID: {{create-campaign.id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://hilton.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: campaigns
path: "/query"
operations:
- name: get-campaign-members
method: GET
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: bearer
token: "$secrets.mailchimp_token"
resources:
- name: campaigns
path: "/campaigns"
operations:
- name: create-campaign
method: POST
- name: campaign-actions
path: "/campaigns/{{campaign_id}}/actions/send"
inputParameters:
- name: campaign_id
in: path
operations:
- name: send-campaign
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves impression, reach, and booking conversion metrics from Meta Ads for Hilton's hotel campaigns and posts a weekly performance digest to the digital marketing Teams channel.
naftiko: "0.5"
info:
label: "Meta Hotel Campaign Performance Digest"
description: "Retrieves impression, reach, and booking conversion metrics from Meta Ads for Hilton's hotel campaigns and posts a weekly performance digest to the digital marketing Teams channel."
tags:
- marketing
- social
- meta
- microsoft-teams
- digital-marketing
- reporting
capability:
exposes:
- type: mcp
namespace: digital-marketing
port: 8080
tools:
- name: digest-meta-hotel-campaigns
description: "Given a Meta ad account ID and date preset, retrieve hotel campaign performance metrics (impressions, clicks, conversions, ROAS) and post a digest to the digital marketing Teams channel."
inputParameters:
- name: ad_account_id
in: body
type: string
description: "The Meta ad account ID for Hilton hotel campaigns, e.g. act_987654321."
- name: date_preset
in: body
type: string
description: "Meta Insights date preset, e.g. last_7d or last_30d."
steps:
- name: get-insights
type: call
call: "meta.get-ad-insights"
with:
ad_account_id: "{{ad_account_id}}"
date_preset: "{{date_preset}}"
- name: post-digest
type: call
call: "msteams-mktg.post-channel-message"
with:
channel_id: "$secrets.teams_digital_marketing_channel_id"
message: "Meta Hotel Campaign Digest | Account: {{ad_account_id}} | Period: {{date_preset}} | Insights retrieved. Full breakdown available in Ads Manager."
consumes:
- type: http
namespace: meta
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.meta_access_token"
resources:
- name: ad-insights
path: "/{{ad_account_id}}/insights"
inputParameters:
- name: ad_account_id
in: path
- name: date_preset
in: query
operations:
- name: get-ad-insights
method: GET
- type: http
namespace: msteams-mktg
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Checks device compliance status in Microsoft Endpoint Manager for corporate devices, identifying non-compliant devices and creating remediation tickets in ServiceNow.
naftiko: "0.5"
info:
label: "Microsoft Endpoint Manager Device Compliance Check"
description: "Checks device compliance status in Microsoft Endpoint Manager for corporate devices, identifying non-compliant devices and creating remediation tickets in ServiceNow."
tags:
- security
- microsoft-endpoint-manager
- servicenow
- compliance
capability:
exposes:
- type: mcp
namespace: endpoint-security
port: 8080
tools:
- name: check-device-compliance
description: "Given a device ID, check compliance status and create remediation tickets for violations."
inputParameters:
- name: device_id
in: body
type: string
description: "The Intune device ID."
steps:
- name: get-compliance
type: call
call: "intune.get-device-compliance"
with:
device_id: "{{device_id}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Non-compliant device: {{device_id}} - {{get-compliance.deviceName}}"
category: "endpoint_security"
assigned_to: "Endpoint_Security"
- name: notify-security
type: call
call: "msteams.send-message"
with:
channel_id: "endpoint-security"
message: "Device compliance violation: {{get-compliance.deviceName}} ({{device_id}}). Status: {{get-compliance.complianceState}}. Ticket: {{create-ticket.number}}"
consumes:
- type: http
namespace: intune
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: devices
path: "/deviceManagement/managedDevices/{{device_id}}"
inputParameters:
- name: device_id
in: path
operations:
- name: get-device-compliance
method: GET
- type: http
namespace: servicenow
baseUri: "https://hilton.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: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves financial consolidation data from Excel Online workbooks via Microsoft Graph, pulling regional P&L summaries for executive reporting.
naftiko: "0.5"
info:
label: "Microsoft Excel Financial Consolidation Report"
description: "Retrieves financial consolidation data from Excel Online workbooks via Microsoft Graph, pulling regional P&L summaries for executive reporting."
tags:
- finance
- microsoft-excel
- reporting
- financial-reporting
capability:
exposes:
- type: mcp
namespace: financial-reporting
port: 8080
tools:
- name: get-consolidation-data
description: "Given an Excel workbook ID and worksheet name, retrieve financial consolidation data."
inputParameters:
- name: workbook_id
in: body
type: string
description: "The Excel workbook drive item ID."
- name: worksheet
in: body
type: string
description: "The worksheet name."
call: "msgraph.get-range"
with:
workbook_id: "{{workbook_id}}"
worksheet: "{{worksheet}}"
range: "A1:Z50"
outputParameters:
- name: values
type: string
mapping: "$.values"
consumes:
- type: http
namespace: msgraph
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: workbooks
path: "/me/drive/items/{{workbook_id}}/workbook/worksheets/{{worksheet}}/range(address='{{range}}')"
inputParameters:
- name: workbook_id
in: path
- name: worksheet
in: path
- name: range
in: path
operations:
- name: get-range
method: GET
Sends personalized VIP guest arrival notifications via Outlook to property front desk and GM, pulling guest preferences from Salesforce and stay details from the reservation system.
naftiko: "0.5"
info:
label: "Microsoft Outlook VIP Guest Arrival Notifier"
description: "Sends personalized VIP guest arrival notifications via Outlook to property front desk and GM, pulling guest preferences from Salesforce and stay details from the reservation system."
tags:
- guest-experience
- microsoft-outlook
- salesforce
- hospitality
capability:
exposes:
- type: mcp
namespace: vip-services
port: 8080
tools:
- name: notify-vip-arrival
description: "Given a reservation ID, prepare and send VIP arrival notifications with guest preferences."
inputParameters:
- name: reservation_id
in: body
type: string
description: "The reservation confirmation number."
- name: property_code
in: body
type: string
description: "The hotel property code."
steps:
- name: get-reservation
type: call
call: "salesforce.get-reservation"
with:
reservation_id: "{{reservation_id}}"
- name: get-preferences
type: call
call: "salesforce.get-guest-preferences"
with:
guest_id: "{{get-reservation.Guest_ID__c}}"
- name: send-notification
type: call
call: "outlook.send-email"
with:
to: "frontdesk-{{property_code}}@hilton.com,gm-{{property_code}}@hilton.com"
subject: "VIP Arrival Alert: {{get-reservation.Guest_Name__c}} - {{get-reservation.Check_In__c}}"
body: "VIP guest {{get-reservation.Guest_Name__c}} ({{get-reservation.Honors_Tier__c}}) arriving {{get-reservation.Check_In__c}}. Preferences: {{get-preferences.summary}}. Room: {{get-reservation.Room_Type__c}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://hilton.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
operations:
- name: get-reservation
method: GET
- name: get-guest-preferences
method: GET
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/concierge@hilton.com/sendMail"
operations:
- name: send-email
method: POST
Checks the health and run status of Microsoft Power Automate flows used for hotel operations, identifying failed runs and notifying the automation team.
naftiko: "0.5"
info:
label: "Microsoft Power Automate Workflow Status Checker"
description: "Checks the health and run status of Microsoft Power Automate flows used for hotel operations, identifying failed runs and notifying the automation team."
tags:
- automation
- microsoft-power-automate
- microsoft-teams
- operations
capability:
exposes:
- type: mcp
namespace: automation-ops
port: 8080
tools:
- name: check-flow-status
description: "Given a Power Automate flow ID, check recent run statuses and alert on failures."
inputParameters:
- name: flow_id
in: body
type: string
description: "The Power Automate flow ID."
steps:
- name: get-runs
type: call
call: "powerautomate.get-flow-runs"
with:
flow_id: "{{flow_id}}"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "automation-ops"
message: "Flow {{flow_id}} status: Last run {{get-runs.value[0].status}} at {{get-runs.value[0].startTime}}. Failed runs in last 24h: {{get-runs.failed_count}}"
consumes:
- type: http
namespace: powerautomate
baseUri: "https://management.azure.com"
authentication:
type: bearer
token: "$secrets.azure_mgmt_token"
resources:
- name: flow-runs
path: "/providers/Microsoft.ProcessSimple/environments/Default/flows/{{flow_id}}/runs"
inputParameters:
- name: flow_id
in: path
operations:
- name: get-flow-runs
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Books meeting rooms at Hilton corporate offices via Microsoft Graph, checking availability and sending calendar invites with room details.
naftiko: "0.5"
info:
label: "Microsoft Teams Meeting Room Booking"
description: "Books meeting rooms at Hilton corporate offices via Microsoft Graph, checking availability and sending calendar invites with room details."
tags:
- operations
- microsoft-teams
- facilities
- productivity
capability:
exposes:
- type: mcp
namespace: workplace-services
port: 8080
tools:
- name: book-meeting-room
description: "Given a location, date, and time, find and book an available meeting room."
inputParameters:
- name: building
in: body
type: string
description: "Building name, e.g. McLean-HQ."
- name: date
in: body
type: string
description: "Meeting date in YYYY-MM-DD format."
- name: start_time
in: body
type: string
description: "Start time in HH:MM format."
- name: duration_minutes
in: body
type: string
description: "Meeting duration in minutes."
steps:
- name: find-rooms
type: call
call: "msgraph.find-meeting-times"
with:
building: "{{building}}"
date: "{{date}}"
start_time: "{{start_time}}"
duration: "{{duration_minutes}}"
- name: create-booking
type: call
call: "msgraph.create-event"
with:
room_email: "{{find-rooms.meetingTimeSuggestions[0].locations[0].locationEmailAddress}}"
start: "{{date}}T{{start_time}}:00"
duration_minutes: "{{duration_minutes}}"
consumes:
- type: http
namespace: msgraph
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: calendar
path: "/me/findMeetingTimes"
operations:
- name: find-meeting-times
method: POST
- name: events
path: "/me/events"
operations:
- name: create-event
method: POST
Queries New Relic for application performance metrics including error rate, throughput, and response time for Hilton's digital platforms.
naftiko: "0.5"
info:
label: "New Relic APM Health Check"
description: "Queries New Relic for application performance metrics including error rate, throughput, and response time for Hilton's digital platforms."
tags:
- monitoring
- new-relic
- infrastructure
- performance
capability:
exposes:
- type: mcp
namespace: apm-monitoring
port: 8080
tools:
- name: check-app-health
description: "Given a New Relic application ID, retrieve current health metrics."
inputParameters:
- name: app_id
in: body
type: string
description: "The New Relic application ID."
call: "newrelic.get-app-metrics"
with:
app_id: "{{app_id}}"
outputParameters:
- name: error_rate
type: string
mapping: "$.application.application_summary.error_rate"
- name: throughput
type: string
mapping: "$.application.application_summary.throughput"
- name: response_time
type: string
mapping: "$.application.application_summary.response_time"
consumes:
- type: http
namespace: newrelic
baseUri: "https://api.newrelic.com/v2"
authentication:
type: apiKey
key: "$secrets.newrelic_api_key"
resources:
- name: applications
path: "/applications/{{app_id}}.json"
inputParameters:
- name: app_id
in: path
operations:
- name: get-app-metrics
method: GET
Retrieves general ledger account balances from Oracle Cloud ERP for a specified period and cost center, supporting month-end close and financial reporting.
naftiko: "0.5"
info:
label: "Oracle Cloud ERP GL Balance Lookup"
description: "Retrieves general ledger account balances from Oracle Cloud ERP for a specified period and cost center, supporting month-end close and financial reporting."
tags:
- finance
- oracle-cloud
- reporting
- accounting
capability:
exposes:
- type: mcp
namespace: finance-gl
port: 8080
tools:
- name: get-gl-balance
description: "Given a GL account, cost center, and period, retrieve the account balance from Oracle Cloud ERP."
inputParameters:
- name: account_code
in: body
type: string
description: "The GL account code."
- name: cost_center
in: body
type: string
description: "The cost center code."
- name: period
in: body
type: string
description: "The accounting period, e.g. MAR-26."
call: "oracle-erp.get-balance"
with:
account_code: "{{account_code}}"
cost_center: "{{cost_center}}"
period: "{{period}}"
outputParameters:
- name: debit_balance
type: string
mapping: "$.items[0].DebitAmount"
- name: credit_balance
type: string
mapping: "$.items[0].CreditAmount"
- name: net_balance
type: string
mapping: "$.items[0].NetAmount"
consumes:
- type: http
namespace: oracle-erp
baseUri: "https://hilton-erp.oraclecloud.com/fscmRestApi/resources/v2"
authentication:
type: bearer
token: "$secrets.oracle_erp_token"
resources:
- name: gl-balances
path: "/generalLedgerBalances"
operations:
- name: get-balance
method: GET
Monitors Oracle Integration Cloud integration flows for hotel property system data exchanges, checking run status and error rates, with alerts to the integration team.
naftiko: "0.5"
info:
label: "Oracle Integration Cloud Flow Monitor"
description: "Monitors Oracle Integration Cloud integration flows for hotel property system data exchanges, checking run status and error rates, with alerts to the integration team."
tags:
- integration
- oracle-integration
- microsoft-teams
- monitoring
capability:
exposes:
- type: mcp
namespace: integration-ops
port: 8080
tools:
- name: monitor-integration-flow
description: "Given an Oracle IC integration ID, check recent run statuses and alert on issues."
inputParameters:
- name: integration_id
in: body
type: string
description: "The Oracle Integration Cloud integration identifier."
steps:
- name: get-runs
type: call
call: "oracle-ic.get-integration-runs"
with:
integration_id: "{{integration_id}}"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "integration-ops"
message: "Integration {{integration_id}} status: Last run {{get-runs.items[0].status}} at {{get-runs.items[0].endTime}}. Errors in last 24h: {{get-runs.error_count}}"
consumes:
- type: http
namespace: oracle-ic
baseUri: "https://hilton-oic.integration.ocp.oraclecloud.com/ic/api"
authentication:
type: bearer
token: "$secrets.oracle_ic_token"
resources:
- name: integrations
path: "/integration/v1/monitoring/runs"
operations:
- name: get-integration-runs
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries Oracle Opera PMS for real-time room inventory and availability for a given property and date range, returning room type counts and occupancy rates.
naftiko: "0.5"
info:
label: "Oracle Opera Room Inventory Check"
description: "Queries Oracle Opera PMS for real-time room inventory and availability for a given property and date range, returning room type counts and occupancy rates."
tags:
- revenue-management
- oracle
- hospitality
- reporting
capability:
exposes:
- type: mcp
namespace: revenue-management
port: 8080
tools:
- name: check-room-inventory
description: "Given a property code and date range, return room availability by type and occupancy rate from Oracle Opera."
inputParameters:
- name: property_code
in: body
type: string
description: "The Hilton property code."
- name: check_in
in: body
type: string
description: "Check-in date in YYYY-MM-DD format."
- name: check_out
in: body
type: string
description: "Check-out date in YYYY-MM-DD format."
call: "oracle-opera.get-availability"
with:
property_code: "{{property_code}}"
start_date: "{{check_in}}"
end_date: "{{check_out}}"
outputParameters:
- name: available_rooms
type: string
mapping: "$.availability.total_available"
- name: occupancy_rate
type: string
mapping: "$.availability.occupancy_pct"
consumes:
- type: http
namespace: oracle-opera
baseUri: "https://hilton-opera.oraclehospitality.com/api/v1"
authentication:
type: bearer
token: "$secrets.oracle_opera_token"
resources:
- name: availability
path: "/properties/{{property_code}}/availability"
inputParameters:
- name: property_code
in: path
operations:
- name: get-availability
method: GET
Processes a firewall rule change request by validating via ServiceNow change management, applying the rule in Palo Alto Networks, and logging the change for compliance audit.
naftiko: "0.5"
info:
label: "Palo Alto Firewall Rule Change Orchestrator"
description: "Processes a firewall rule change request by validating via ServiceNow change management, applying the rule in Palo Alto Networks, and logging the change for compliance audit."
tags:
- security
- palo-alto-networks
- servicenow
- compliance
- infrastructure
capability:
exposes:
- type: mcp
namespace: network-security
port: 8080
tools:
- name: process-firewall-change
description: "Given a ServiceNow change request number and firewall rule details, validate approval and apply the rule change."
inputParameters:
- name: change_number
in: body
type: string
description: "The ServiceNow change request number."
- name: rule_name
in: body
type: string
description: "Name for the firewall rule."
- name: source_zone
in: body
type: string
description: "Source security zone."
- name: dest_zone
in: body
type: string
description: "Destination security zone."
steps:
- name: verify-change
type: call
call: "servicenow.get-change-request"
with:
number: "{{change_number}}"
- name: apply-rule
type: call
call: "paloalto.create-security-rule"
with:
rule_name: "{{rule_name}}"
source_zone: "{{source_zone}}"
dest_zone: "{{dest_zone}}"
- name: log-change
type: call
call: "servicenow.update-change-request"
with:
number: "{{change_number}}"
work_notes: "Firewall rule {{rule_name}} applied successfully. Rule ID: {{apply-rule.rule_id}}"
state: "implement"
consumes:
- type: http
namespace: servicenow
baseUri: "https://hilton.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-requests
path: "/table/change_request"
operations:
- name: get-change-request
method: GET
- name: update-change-request
method: PATCH
- type: http
namespace: paloalto
baseUri: "https://hilton-panorama.paloaltonetworks.com/restapi/v10.2"
authentication:
type: apiKey
key: "$secrets.paloalto_api_key"
resources:
- name: security-rules
path: "/Policies/SecurityRules"
operations:
- name: create-security-rule
method: POST
Returns the current headcount breakdown by property, department, and employment type from Workday for workforce planning and finance cost-center reporting.
naftiko: "0.5"
info:
label: "Payroll Headcount Snapshot"
description: "Returns the current headcount breakdown by property, department, and employment type from Workday for workforce planning and finance cost-center reporting."
tags:
- hr
- finance
- reporting
- workday
- headcount
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-headcount-snapshot
description: "Returns headcount grouped by property, department, and cost center from Workday. Use for workforce planning, labor cost analysis, and quarterly finance reporting."
call: "workday-hc.headcount-report"
outputParameters:
- name: employees
type: array
mapping: "$.Report_Entry"
items:
- name: employee_id
type: string
mapping: "$.Employee_ID"
- name: full_name
type: string
mapping: "$.Employee_Name"
- name: property
type: string
mapping: "$.Property_Code"
- name: department
type: string
mapping: "$.Department"
- name: employment_type
type: string
mapping: "$.Employment_Type"
consumes:
- type: http
namespace: workday-hc
baseUri: "https://wd2-impl-services1.workday.com/ccx/service/customreport2/hilton"
authentication:
type: basic
username: "$secrets.workday_report_user"
password: "$secrets.workday_report_password"
resources:
- name: headcount
path: "/Headcount_By_Property_Department"
operations:
- name: headcount-report
method: GET
outputRawFormat: json
Retrieves team skill assessment scores from Pluralsight, identifies gaps against role benchmarks, generates a development plan in SharePoint, and notifies managers via Teams.
naftiko: "0.5"
info:
label: "Pluralsight Skills Gap Analysis"
description: "Retrieves team skill assessment scores from Pluralsight, identifies gaps against role benchmarks, generates a development plan in SharePoint, and notifies managers via Teams."
tags:
- hr
- pluralsight
- sharepoint
- microsoft-teams
- learning
capability:
exposes:
- type: mcp
namespace: talent-development
port: 8080
tools:
- name: analyze-skills-gap
description: "Given a Pluralsight team ID, analyze skill gaps and create development plans."
inputParameters:
- name: team_id
in: body
type: string
description: "The Pluralsight team identifier."
- name: role_benchmark
in: body
type: string
description: "The benchmark profile to compare against."
steps:
- name: get-assessments
type: call
call: "pluralsight.get-team-skills"
with:
team_id: "{{team_id}}"
- name: create-plan
type: call
call: "sharepoint.create-item"
with:
site_id: "hilton-learning"
list_name: "DevelopmentPlans"
fields:
team_id: "{{team_id}}"
benchmark: "{{role_benchmark}}"
avg_score: "{{get-assessments.average_score}}"
gap_areas: "{{get-assessments.gap_summary}}"
- name: notify-manager
type: call
call: "msteams.send-message"
with:
channel_id: "engineering-leadership"
message: "Skills gap analysis complete for team {{team_id}}. Average score: {{get-assessments.average_score}}/300. Key gaps: {{get-assessments.gap_summary}}. Development plan created."
consumes:
- type: http
namespace: pluralsight
baseUri: "https://api.pluralsight.com/api/v1"
authentication:
type: bearer
token: "$secrets.pluralsight_token"
resources:
- name: teams
path: "/teams/{{team_id}}/skills"
inputParameters:
- name: team_id
in: path
operations:
- name: get-team-skills
method: GET
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: list-items
path: "/sites/{{site_id}}/lists/{{list_name}}/items"
inputParameters:
- name: site_id
in: path
- name: list_name
in: path
operations:
- name: create-item
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Triggers a Power BI dataset refresh for the Revenue Per Available Room (RevPAR) dashboard and posts a confirmation to the revenue management Teams channel.
naftiko: "0.5"
info:
label: "Power BI RevPAR Dashboard Refresh"
description: "Triggers a Power BI dataset refresh for the Revenue Per Available Room (RevPAR) dashboard and posts a confirmation to the revenue management Teams channel."
tags:
- data-analytics
- reporting
- power-bi
- microsoft-teams
- revenue-management
capability:
exposes:
- type: mcp
namespace: revenue-analytics
port: 8080
tools:
- name: refresh-revpar-dashboard
description: "Given a Power BI workspace ID and dataset ID, trigger a RevPAR dashboard refresh and notify the revenue management channel in Teams. Use daily after night audit data loads."
inputParameters:
- name: workspace_id
in: body
type: string
description: "The Power BI workspace ID containing the RevPAR dataset."
- name: dataset_id
in: body
type: string
description: "The Power BI dataset ID for the RevPAR report."
steps:
- name: trigger-refresh
type: call
call: "powerbi.refresh-dataset"
with:
workspace_id: "{{workspace_id}}"
dataset_id: "{{dataset_id}}"
- name: notify-revenue-team
type: call
call: "msteams-revenue.post-channel-message"
with:
channel_id: "$secrets.teams_revenue_channel_id"
message: "RevPAR dashboard refresh triggered for dataset {{dataset_id}}. Updated data will be available shortly in Power BI."
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: dataset-refreshes
path: "/groups/{{workspace_id}}/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: workspace_id
in: path
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
- type: http
namespace: msteams-revenue
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Triggers a Qlik Sense app reload for property operations dashboards and posts the refresh status to the operations Teams channel.
naftiko: "0.5"
info:
label: "Qlik Sense Operations Dashboard Refresh"
description: "Triggers a Qlik Sense app reload for property operations dashboards and posts the refresh status to the operations Teams channel."
tags:
- reporting
- qlik-sense
- microsoft-teams
- operations
capability:
exposes:
- type: mcp
namespace: operations-reporting
port: 8080
tools:
- name: refresh-ops-dashboard
description: "Given a Qlik Sense app ID, trigger a reload and notify the operations team."
inputParameters:
- name: app_id
in: body
type: string
description: "The Qlik Sense app ID."
steps:
- name: trigger-reload
type: call
call: "qliksense.reload-app"
with:
app_id: "{{app_id}}"
- name: notify-ops
type: call
call: "msteams.send-message"
with:
channel_id: "property-operations"
message: "Operations dashboard refreshed. App: {{app_id}}, Reload ID: {{trigger-reload.id}}, Status: {{trigger-reload.status}}"
consumes:
- type: http
namespace: qliksense
baseUri: "https://hilton.us.qlikcloud.com/api/v1"
authentication:
type: bearer
token: "$secrets.qliksense_token"
resources:
- name: reloads
path: "/reloads"
operations:
- name: reload-app
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves corporate account health metrics from Salesforce including contract value, stay volume, satisfaction scores, and renewal dates for enterprise sales review.
naftiko: "0.5"
info:
label: "Salesforce Corporate Account Health Dashboard"
description: "Retrieves corporate account health metrics from Salesforce including contract value, stay volume, satisfaction scores, and renewal dates for enterprise sales review."
tags:
- sales
- salesforce
- reporting
- account-management
capability:
exposes:
- type: mcp
namespace: enterprise-sales
port: 8080
tools:
- name: get-account-health
description: "Given a Salesforce corporate account ID, retrieve account health metrics."
inputParameters:
- name: account_id
in: body
type: string
description: "The Salesforce account ID."
call: "salesforce.get-account-health"
with:
account_id: "{{account_id}}"
outputParameters:
- name: contract_value
type: string
mapping: "$.records[0].Contract_Value__c"
- name: ytd_room_nights
type: string
mapping: "$.records[0].YTD_Room_Nights__c"
- name: satisfaction_score
type: string
mapping: "$.records[0].CSAT_Score__c"
consumes:
- type: http
namespace: salesforce
baseUri: "https://hilton.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
operations:
- name: get-account-health
method: GET
Queries Salesforce for hotel event and meeting space availability for a given property, date, and capacity requirement, returning available rooms and pricing.
naftiko: "0.5"
info:
label: "Salesforce Event Space Availability Check"
description: "Queries Salesforce for hotel event and meeting space availability for a given property, date, and capacity requirement, returning available rooms and pricing."
tags:
- sales
- salesforce
- events
- hospitality
capability:
exposes:
- type: mcp
namespace: event-sales
port: 8080
tools:
- name: check-event-space
description: "Given a property code, date, and guest count, retrieve available event spaces from Salesforce."
inputParameters:
- name: property_code
in: body
type: string
description: "The Hilton property code."
- name: event_date
in: body
type: string
description: "Event date in YYYY-MM-DD format."
- name: guest_count
in: body
type: string
description: "Expected number of attendees."
call: "salesforce.query-event-spaces"
with:
property_code: "{{property_code}}"
date: "{{event_date}}"
capacity: "{{guest_count}}"
outputParameters:
- name: available_spaces
type: string
mapping: "$.totalSize"
- name: top_space
type: string
mapping: "$.records[0].Name"
- name: rate
type: string
mapping: "$.records[0].Daily_Rate__c"
consumes:
- type: http
namespace: salesforce
baseUri: "https://hilton.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
operations:
- name: query-event-spaces
method: GET
Retrieves upcoming franchise agreement renewals from Salesforce for managed and franchised properties and posts a 90-day renewal pipeline digest to the development team's Teams channel.
naftiko: "0.5"
info:
label: "Salesforce Franchise Agreement Renewal Tracker"
description: "Retrieves upcoming franchise agreement renewals from Salesforce for managed and franchised properties and posts a 90-day renewal pipeline digest to the development team's Teams channel."
tags:
- sales
- crm
- salesforce
- franchise
- development
- reporting
capability:
exposes:
- type: mcp
namespace: franchise-development
port: 8080
tools:
- name: get-renewal-pipeline
description: "Retrieve Salesforce contract records for Hilton franchise agreements expiring within 90 days. Use for development team pipeline reviews and proactive owner outreach planning."
inputParameters:
- name: days_ahead
in: body
type: integer
description: "Number of days ahead to look for expiring agreements, e.g. 90."
steps:
- name: query-renewals
type: call
call: "salesforce-renewals.query-contracts"
with:
days_ahead: "{{days_ahead}}"
- name: post-pipeline
type: call
call: "msteams-dev.post-channel-message"
with:
channel_id: "$secrets.teams_development_channel_id"
message: "Franchise Renewal Pipeline | Next {{days_ahead}} days | Contracts retrieved from Salesforce. Review expiring agreements and schedule owner outreach."
consumes:
- type: http
namespace: salesforce-renewals
baseUri: "https://hilton.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: contracts
path: "/query"
inputParameters:
- name: q
in: query
operations:
- name: query-contracts
method: GET
- type: http
namespace: msteams-dev
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
When a new group booking inquiry arrives in Salesforce, creates a ServiceNow case for the events team, sends a Teams notification to the property GM, and logs the inquiry in SharePoint for tracking.
naftiko: "0.5"
info:
label: "Salesforce Group Booking Inquiry Handler"
description: "When a new group booking inquiry arrives in Salesforce, creates a ServiceNow case for the events team, sends a Teams notification to the property GM, and logs the inquiry in SharePoint for tracking."
tags:
- sales
- salesforce
- servicenow
- microsoft-teams
- sharepoint
- hospitality
capability:
exposes:
- type: mcp
namespace: group-sales
port: 8080
tools:
- name: process-group-inquiry
description: "Given a Salesforce opportunity ID for a group booking, create a ServiceNow case, notify the property GM via Teams, and log in SharePoint."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "The Salesforce opportunity ID for the group booking inquiry."
- name: property_code
in: body
type: string
description: "The Hilton property code where the event would be held."
steps:
- name: get-opportunity
type: call
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
- name: create-case
type: call
call: "servicenow.create-incident"
with:
short_description: "Group booking inquiry: {{get-opportunity.Name}} - {{get-opportunity.Amount}} at {{property_code}}"
category: "events_sales"
assigned_to: "Events_Team"
- name: notify-gm
type: call
call: "msteams.send-message"
with:
channel_id: "property-{{property_code}}-leadership"
message: "New group booking inquiry: {{get-opportunity.Name}} for {{get-opportunity.Guest_Count__c}} guests, est. revenue {{get-opportunity.Amount}}. Case: {{create-case.number}}"
- name: log-inquiry
type: call
call: "sharepoint.create-item"
with:
site_id: "hilton-group-sales"
list_name: "GroupInquiries"
fields:
property: "{{property_code}}"
opportunity: "{{get-opportunity.Name}}"
case_number: "{{create-case.number}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://hilton.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity/{{opportunity_id}}"
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- type: http
namespace: servicenow
baseUri: "https://hilton.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: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: list-items
path: "/sites/{{site_id}}/lists/{{list_name}}/items"
inputParameters:
- name: site_id
in: path
- name: list_name
in: path
operations:
- name: create-item
method: POST
When a Hilton group sales opportunity is updated in Salesforce, creates a ServiceNow task for the events operations team to begin venue and catering setup planning.
naftiko: "0.5"
info:
label: "Salesforce Group Sales Opportunity Sync"
description: "When a Hilton group sales opportunity is updated in Salesforce, creates a ServiceNow task for the events operations team to begin venue and catering setup planning."
tags:
- sales
- crm
- salesforce
- servicenow
- events
- group-sales
capability:
exposes:
- type: mcp
namespace: group-sales
port: 8080
tools:
- name: sync-group-opportunity
description: "Given a Salesforce group sales opportunity ID, retrieve event details and create a ServiceNow operations task for the events team. Use when a group booking reaches the contracting stage."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "The Salesforce Opportunity ID for the group sales event."
steps:
- name: get-opportunity
type: call
call: "salesforce-opp.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
- name: create-ops-task
type: call
call: "servicenow-events.create-incident"
with:
short_description: "Events setup: {{get-opportunity.name}} at {{get-opportunity.property}}"
category: "events_operations"
description: "Group booking {{opportunity_id}} in contracting stage. Event: {{get-opportunity.name}}. Dates: {{get-opportunity.event_start_date}} to {{get-opportunity.event_end_date}}. Attendees: {{get-opportunity.attendee_count}}."
consumes:
- type: http
namespace: salesforce-opp
baseUri: "https://hilton.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity/{{opportunity_id}}"
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- type: http
namespace: servicenow-events
baseUri: "https://hilton.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
Retrieves Hilton Honors member tier status, point balance, and stay history from Salesforce for guest service and recognition purposes.
naftiko: "0.5"
info:
label: "Salesforce Honors Tier Status Lookup"
description: "Retrieves Hilton Honors member tier status, point balance, and stay history from Salesforce for guest service and recognition purposes."
tags:
- loyalty
- salesforce
- guest-experience
- hospitality
capability:
exposes:
- type: mcp
namespace: loyalty
port: 8080
tools:
- name: get-honors-status
description: "Given a Hilton Honors member number, retrieve tier status and point balance from Salesforce."
inputParameters:
- name: member_number
in: body
type: string
description: "The Hilton Honors membership number."
call: "salesforce.get-member"
with:
member_number: "{{member_number}}"
outputParameters:
- name: tier
type: string
mapping: "$.records[0].Tier_Status__c"
- name: points_balance
type: string
mapping: "$.records[0].Points_Balance__c"
- name: lifetime_nights
type: string
mapping: "$.records[0].Lifetime_Nights__c"
consumes:
- type: http
namespace: salesforce
baseUri: "https://hilton.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
operations:
- name: get-member
method: GET
Retrieves a Hilton Honors loyalty member record from Salesforce by membership number, returning tier status, point balance, and stay history for guest service use.
naftiko: "0.5"
info:
label: "Salesforce Loyalty Member Lookup"
description: "Retrieves a Hilton Honors loyalty member record from Salesforce by membership number, returning tier status, point balance, and stay history for guest service use."
tags:
- customer-success
- salesforce
- loyalty
- guest-experience
- hospitality
capability:
exposes:
- type: mcp
namespace: loyalty-crm
port: 8080
tools:
- name: get-loyalty-member
description: "Given a Hilton Honors membership number, retrieve member tier, point balance, lifetime nights, and recent stays from Salesforce. Use for front desk guest recognition and loyalty service workflows."
inputParameters:
- name: membership_number
in: body
type: string
description: "The Hilton Honors membership number, e.g. 9876543210."
call: "salesforce-loyalty.query-member"
with:
membership_number: "{{membership_number}}"
outputParameters:
- name: member_name
type: string
mapping: "$.records[0].Name"
- name: tier
type: string
mapping: "$.records[0].Tier__c"
- name: point_balance
type: string
mapping: "$.records[0].Point_Balance__c"
- name: lifetime_nights
type: string
mapping: "$.records[0].Lifetime_Nights__c"
consumes:
- type: http
namespace: salesforce-loyalty
baseUri: "https://hilton.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: loyalty-query
path: "/query"
inputParameters:
- name: q
in: query
operations:
- name: query-member
method: GET
Retrieves a monthly expense summary from SAP Concur for a given cost center, returning total spend, top categories, and policy violations count.
naftiko: "0.5"
info:
label: "SAP Concur Monthly Expense Summary"
description: "Retrieves a monthly expense summary from SAP Concur for a given cost center, returning total spend, top categories, and policy violations count."
tags:
- finance
- sap-concur
- reporting
- expense-management
capability:
exposes:
- type: mcp
namespace: finance-expenses
port: 8080
tools:
- name: get-monthly-expense-summary
description: "Given a cost center and month, retrieve expense totals and category breakdown from SAP Concur."
inputParameters:
- name: cost_center
in: body
type: string
description: "The cost center code."
- name: month
in: body
type: string
description: "Month in YYYY-MM format."
call: "concur.get-expense-summary"
with:
cost_center: "{{cost_center}}"
month: "{{month}}"
outputParameters:
- name: total_spend
type: string
mapping: "$.summary.total_amount"
- name: violation_count
type: string
mapping: "$.summary.policy_violations"
consumes:
- type: http
namespace: concur
baseUri: "https://us.api.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: expense-reports
path: "/expense/reports"
operations:
- name: get-expense-summary
method: GET
Retrieves submitted expense reports from SAP Concur for a given cost center and flags out-of-policy items, returning a structured audit list for the travel and expense team.
naftiko: "0.5"
info:
label: "SAP Concur Travel Expense Audit"
description: "Retrieves submitted expense reports from SAP Concur for a given cost center and flags out-of-policy items, returning a structured audit list for the travel and expense team."
tags:
- finance
- travel
- sap-concur
- audit
- expense-management
capability:
exposes:
- type: mcp
namespace: travel-expense
port: 8080
tools:
- name: audit-expense-reports
description: "Given a SAP Concur cost center code, retrieve all submitted expense reports and identify out-of-policy expenses. Use for monthly T&E audits and policy compliance reviews."
inputParameters:
- name: cost_center
in: body
type: string
description: "The cost center code to retrieve expense reports for."
call: "concur.list-reports-by-cost-center"
with:
cost_center: "{{cost_center}}"
outputParameters:
- name: reports
type: array
mapping: "$.Items"
items:
- name: report_id
type: string
mapping: "$.ID"
- name: submitter
type: string
mapping: "$.OwnerName"
- name: total
type: string
mapping: "$.Total"
- name: policy_compliant
type: string
mapping: "$.PolicyCompliant"
consumes:
- type: http
namespace: concur
baseUri: "https://www.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: expense-reports
path: "/expense/reports"
inputParameters:
- name: cost_center
in: query
operations:
- name: list-reports-by-cost-center
method: GET
Queries SAP HANA for real-time revenue data across hotel properties, returning ADR, occupancy, and RevPAR metrics for financial analysis.
naftiko: "0.5"
info:
label: "SAP HANA Revenue Reporting Query"
description: "Queries SAP HANA for real-time revenue data across hotel properties, returning ADR, occupancy, and RevPAR metrics for financial analysis."
tags:
- finance
- sap-hana
- revenue-management
- reporting
capability:
exposes:
- type: mcp
namespace: revenue-analytics
port: 8080
tools:
- name: query-revenue-metrics
description: "Given a region and date range, retrieve revenue metrics from SAP HANA."
inputParameters:
- name: region
in: body
type: string
description: "The operating region: americas, emea, apac."
- name: period
in: body
type: string
description: "Reporting period in YYYY-MM format."
call: "saphana.run-query"
with:
region: "{{region}}"
period: "{{period}}"
outputParameters:
- name: adr
type: string
mapping: "$.results[0].avg_daily_rate"
- name: occupancy
type: string
mapping: "$.results[0].occupancy_pct"
- name: revpar
type: string
mapping: "$.results[0].revpar"
consumes:
- type: http
namespace: saphana
baseUri: "https://hilton-hana.cfapps.sap.hana.ondemand.com/api/v1"
authentication:
type: bearer
token: "$secrets.saphana_token"
resources:
- name: queries
path: "/query"
operations:
- name: run-query
method: POST
Validates vendor invoices against SAP purchase orders and goods receipts, flags mismatches, creates a ServiceNow ticket for exceptions, and notifies accounts payable via Teams.
naftiko: "0.5"
info:
label: "SAP Invoice Three-Way Match Validator"
description: "Validates vendor invoices against SAP purchase orders and goods receipts, flags mismatches, creates a ServiceNow ticket for exceptions, and notifies accounts payable via Teams."
tags:
- finance
- sap
- servicenow
- microsoft-teams
- accounts-payable
capability:
exposes:
- type: mcp
namespace: finance-ap
port: 8080
tools:
- name: validate-invoice-match
description: "Given an SAP invoice number, perform three-way match validation and handle exceptions."
inputParameters:
- name: invoice_number
in: body
type: string
description: "The SAP invoice document number."
steps:
- name: get-invoice
type: call
call: "sap.get-invoice"
with:
invoice_number: "{{invoice_number}}"
- name: get-po
type: call
call: "sap.get-purchase-order"
with:
po_number: "{{get-invoice.po_reference}}"
- name: create-exception
type: call
call: "servicenow.create-incident"
with:
short_description: "Invoice mismatch: {{invoice_number}} vs PO {{get-invoice.po_reference}}"
category: "finance_ap"
assigned_to: "AP_Exceptions"
- name: notify-ap
type: call
call: "msteams.send-message"
with:
channel_id: "accounts-payable"
message: "Invoice {{invoice_number}} match result: PO {{get-invoice.po_reference}}, Invoice amount: {{get-invoice.amount}}, PO amount: {{get-po.net_value}}. Exception ticket: {{create-exception.number}}"
consumes:
- type: http
namespace: sap
baseUri: "https://hilton-sap.s4hana.cloud.sap/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: invoices
path: "/invoices/{{invoice_number}}"
inputParameters:
- name: invoice_number
in: path
operations:
- name: get-invoice
method: GET
- name: purchase-orders
path: "/purchase-orders/{{po_number}}"
inputParameters:
- name: po_number
in: path
operations:
- name: get-purchase-order
method: GET
- type: http
namespace: servicenow
baseUri: "https://hilton.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: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a ServiceNow change request for review, returning its approval status, risk classification, and implementation schedule for CAB governance workflows.
naftiko: "0.5"
info:
label: "ServiceNow Change Request Approval"
description: "Retrieves a ServiceNow change request for review, returning its approval status, risk classification, and implementation schedule for CAB governance workflows."
tags:
- itsm
- change-management
- servicenow
- governance
capability:
exposes:
- type: mcp
namespace: itsm-change
port: 8080
tools:
- name: get-change-request
description: "Given a ServiceNow change request number, retrieve its state, risk level, approval status, and scheduled implementation window. Use for CAB review and change governance processes."
inputParameters:
- name: change_number
in: body
type: string
description: "The ServiceNow change request number, e.g. CHG0034567."
call: "servicenow-change.get-change"
with:
change_number: "{{change_number}}"
outputParameters:
- name: state
type: string
mapping: "$.result.state"
- name: risk
type: string
mapping: "$.result.risk"
- name: approval
type: string
mapping: "$.result.approval"
- name: start_date
type: string
mapping: "$.result.start_date"
consumes:
- type: http
namespace: servicenow-change
baseUri: "https://hilton.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-requests
path: "/table/change_request"
inputParameters:
- name: change_number
in: query
operations:
- name: get-change
method: GET
Escalates a ServiceNow incident to P1, reassigns it to the IT escalation group, and notifies the CTO via Teams when a critical hotel system (booking engine, PMS, or payment) is impacted.
naftiko: "0.5"
info:
label: "ServiceNow Incident Escalation"
description: "Escalates a ServiceNow incident to P1, reassigns it to the IT escalation group, and notifies the CTO via Teams when a critical hotel system (booking engine, PMS, or payment) is impacted."
tags:
- itsm
- incident-response
- servicenow
- microsoft-teams
- sla
- escalation
capability:
exposes:
- type: mcp
namespace: itsm-escalation
port: 8080
tools:
- name: escalate-incident
description: "Given a ServiceNow incident number and escalation reason, update priority to P1, reassign to the IT escalation group, and notify the CTO channel in Teams. Use for critical hotel system failures impacting guests or revenue."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number to escalate, e.g. INC0045678."
- name: escalation_reason
in: body
type: string
description: "Business impact and reason for escalation."
steps:
- name: update-incident
type: call
call: "servicenow-esc.patch-incident"
with:
incident_number: "{{incident_number}}"
priority: "1"
assignment_group: "IT_Escalation"
- name: notify-cto
type: call
call: "msteams-esc.post-channel-message"
with:
channel_id: "$secrets.teams_cto_channel_id"
message: "CRITICAL ESCALATION P1 | Incident: {{incident_number}} | Impact: {{escalation_reason}} | IT Escalation team engaged. Guest experience may be affected."
consumes:
- type: http
namespace: servicenow-esc
baseUri: "https://hilton.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
inputParameters:
- name: incident_number
in: query
operations:
- name: patch-incident
method: PATCH
- type: http
namespace: msteams-esc
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Queries ServiceNow CMDB for IT asset details by asset tag or serial number, returning device type, assigned user, location, and warranty status.
naftiko: "0.5"
info:
label: "ServiceNow IT Asset Lookup"
description: "Queries ServiceNow CMDB for IT asset details by asset tag or serial number, returning device type, assigned user, location, and warranty status."
tags:
- it-operations
- servicenow
- asset-management
capability:
exposes:
- type: mcp
namespace: it-assets
port: 8080
tools:
- name: lookup-asset
description: "Given an asset tag, retrieve device details from ServiceNow CMDB."
inputParameters:
- name: asset_tag
in: body
type: string
description: "The IT asset tag identifier."
call: "servicenow.get-asset"
with:
asset_tag: "{{asset_tag}}"
outputParameters:
- name: device_type
type: string
mapping: "$.result.sys_class_name"
- name: assigned_to
type: string
mapping: "$.result.assigned_to.display_value"
- name: location
type: string
mapping: "$.result.location.display_value"
consumes:
- type: http
namespace: servicenow
baseUri: "https://hilton.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cmdb
path: "/table/alm_hardware"
operations:
- name: get-asset
method: GET
Creates and publishes knowledge base articles in ServiceNow from resolved incident patterns, then notifies the IT support team via Teams.
naftiko: "0.5"
info:
label: "ServiceNow Knowledge Base Article Publisher"
description: "Creates and publishes knowledge base articles in ServiceNow from resolved incident patterns, then notifies the IT support team via Teams."
tags:
- it-operations
- servicenow
- microsoft-teams
- knowledge-management
capability:
exposes:
- type: mcp
namespace: knowledge-ops
port: 8080
tools:
- name: publish-kb-article
description: "Given incident details and resolution steps, create a ServiceNow KB article and notify the team."
inputParameters:
- name: title
in: body
type: string
description: "The KB article title."
- name: category
in: body
type: string
description: "The knowledge category."
- name: resolution
in: body
type: string
description: "The resolution steps content."
steps:
- name: create-article
type: call
call: "servicenow.create-kb-article"
with:
title: "{{title}}"
category: "{{category}}"
text: "{{resolution}}"
- name: notify-support
type: call
call: "msteams.send-message"
with:
channel_id: "it-service-desk"
message: "New KB article published: {{title}}. Article: {{create-article.number}}. Category: {{category}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://hilton.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: kb-articles
path: "/table/kb_knowledge"
operations:
- name: create-kb-article
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Generates a problem management trend report from ServiceNow, identifying recurring issues, root causes, and resolution times for IT leadership review.
naftiko: "0.5"
info:
label: "ServiceNow Problem Management Trend Report"
description: "Generates a problem management trend report from ServiceNow, identifying recurring issues, root causes, and resolution times for IT leadership review."
tags:
- it-operations
- servicenow
- reporting
- problem-management
capability:
exposes:
- type: mcp
namespace: it-service-management
port: 8080
tools:
- name: get-problem-trends
description: "Given a date range, retrieve problem management trend data from ServiceNow."
inputParameters:
- name: start_date
in: body
type: string
description: "Start date in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "End date in YYYY-MM-DD format."
call: "servicenow.get-problem-stats"
with:
start_date: "{{start_date}}"
end_date: "{{end_date}}"
outputParameters:
- name: total_problems
type: string
mapping: "$.result.stats.total"
- name: avg_resolution_days
type: string
mapping: "$.result.stats.avg_resolution"
- name: top_category
type: string
mapping: "$.result.stats.top_category"
consumes:
- type: http
namespace: servicenow
baseUri: "https://hilton.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: stats
path: "/stats/problem"
operations:
- name: get-problem-stats
method: GET
Creates a new SharePoint document library item for an updated hotel operations policy and notifies all property general managers via Teams to review and acknowledge the update.
naftiko: "0.5"
info:
label: "SharePoint Policy Document Distribution"
description: "Creates a new SharePoint document library item for an updated hotel operations policy and notifies all property general managers via Teams to review and acknowledge the update."
tags:
- document-management
- sharepoint
- microsoft-teams
- compliance
- operations
capability:
exposes:
- type: mcp
namespace: policy-distribution
port: 8080
tools:
- name: distribute-policy-update
description: "Given a SharePoint site ID, document name, and policy version, create a new document item and notify the GM distribution channel in Teams. Use when hotel operations policies are updated and require property-wide acknowledgment."
inputParameters:
- name: site_id
in: body
type: string
description: "The SharePoint site ID for the operations policy library."
- name: document_name
in: body
type: string
description: "The name of the updated policy document."
- name: policy_version
in: body
type: string
description: "The new policy version number, e.g. v3.2."
- name: effective_date
in: body
type: string
description: "The date the policy takes effect in YYYY-MM-DD format."
steps:
- name: create-document-item
type: call
call: "sharepoint-policy.create-item"
with:
site_id: "{{site_id}}"
document_name: "{{document_name}}"
policy_version: "{{policy_version}}"
- name: notify-gms
type: call
call: "msteams-ops.post-channel-message"
with:
channel_id: "$secrets.teams_gm_distribution_channel_id"
message: "Policy Update | {{document_name}} {{policy_version}} | Effective: {{effective_date}} | Document uploaded to SharePoint. Please review and acknowledge by the effective date."
consumes:
- type: http
namespace: sharepoint-policy
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: list-items
path: "/sites/{{site_id}}/lists/PolicyDocuments/items"
inputParameters:
- name: site_id
in: path
operations:
- name: create-item
method: POST
- type: http
namespace: msteams-ops
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
Updates property operations manuals in SharePoint when policy changes are approved, notifies affected properties via Teams, and creates a Confluence knowledge base entry.
naftiko: "0.5"
info:
label: "SharePoint Property Operations Manual Updater"
description: "Updates property operations manuals in SharePoint when policy changes are approved, notifies affected properties via Teams, and creates a Confluence knowledge base entry."
tags:
- operations
- sharepoint
- microsoft-teams
- confluence
- hospitality
capability:
exposes:
- type: mcp
namespace: property-operations
port: 8080
tools:
- name: update-operations-manual
description: "Given a policy document ID and target properties, update SharePoint manuals and notify teams."
inputParameters:
- name: document_id
in: body
type: string
description: "The SharePoint document ID for the updated policy."
- name: brand
in: body
type: string
description: "The Hilton brand for targeted distribution."
steps:
- name: get-document
type: call
call: "sharepoint.get-document"
with:
site_id: "hilton-policies"
document_id: "{{document_id}}"
- name: create-kb
type: call
call: "confluence.create-page"
with:
space_key: "OPS"
title: "Policy Update: {{get-document.name}}"
body: "Updated policy document available. Version: {{get-document.eTag}}"
- name: notify-properties
type: call
call: "msteams.send-message"
with:
channel_id: "brand-{{brand}}-operations"
message: "Operations manual updated: {{get-document.name}}. Please review the latest version. KB article: {{create-kb._links.webui}}"
consumes:
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: documents
path: "/sites/{{site_id}}/drive/items/{{document_id}}"
inputParameters:
- name: site_id
in: path
- name: document_id
in: path
operations:
- name: get-document
method: GET
- type: http
namespace: confluence
baseUri: "https://hilton.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves network device status and performance metrics from SolarWinds for hotel property infrastructure, including uptime, CPU, memory, and interface utilization.
naftiko: "0.5"
info:
label: "SolarWinds Network Device Health Check"
description: "Retrieves network device status and performance metrics from SolarWinds for hotel property infrastructure, including uptime, CPU, memory, and interface utilization."
tags:
- infrastructure
- solarwinds
- monitoring
- networking
capability:
exposes:
- type: mcp
namespace: network-ops
port: 8080
tools:
- name: check-network-device
description: "Given a SolarWinds node ID, retrieve device health metrics."
inputParameters:
- name: node_id
in: body
type: string
description: "The SolarWinds node ID."
call: "solarwinds.get-node"
with:
node_id: "{{node_id}}"
outputParameters:
- name: status
type: string
mapping: "$.node.StatusDescription"
- name: cpu_load
type: string
mapping: "$.node.CPULoad"
- name: memory_used_pct
type: string
mapping: "$.node.PercentMemoryUsed"
consumes:
- type: http
namespace: solarwinds
baseUri: "https://hilton-solarwinds.com/SolarWinds/InformationService/v3/Json"
authentication:
type: basic
username: "$secrets.solarwinds_user"
password: "$secrets.solarwinds_password"
resources:
- name: nodes
path: "/Query"
operations:
- name: get-node
method: POST
Triggers a Tableau workbook refresh for the revenue forecasting dashboard, verifies data freshness, and posts results to the finance Teams channel.
naftiko: "0.5"
info:
label: "Tableau Revenue Forecast Refresh"
description: "Triggers a Tableau workbook refresh for the revenue forecasting dashboard, verifies data freshness, and posts results to the finance Teams channel."
tags:
- finance
- tableau
- microsoft-teams
- reporting
- revenue-management
capability:
exposes:
- type: mcp
namespace: finance-reporting
port: 8080
tools:
- name: refresh-revenue-forecast
description: "Given a Tableau workbook ID, trigger a refresh and notify the finance team with results."
inputParameters:
- name: workbook_id
in: body
type: string
description: "The Tableau workbook ID for the revenue forecast."
steps:
- name: trigger-refresh
type: call
call: "tableau.refresh-workbook"
with:
workbook_id: "{{workbook_id}}"
- name: get-status
type: call
call: "tableau.get-job-status"
with:
job_id: "{{trigger-refresh.job.id}}"
- name: notify-finance
type: call
call: "msteams.send-message"
with:
channel_id: "finance-leadership"
message: "Revenue forecast dashboard refreshed. Status: {{get-status.job.finishCode}}. Last data update: {{get-status.job.completedAt}}."
consumes:
- type: http
namespace: tableau
baseUri: "https://hilton-tableau.online.tableau.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: workbooks
path: "/sites/hilton/workbooks/{{workbook_id}}/refresh"
inputParameters:
- name: workbook_id
in: path
operations:
- name: refresh-workbook
method: POST
- name: jobs
path: "/sites/hilton/jobs/{{job_id}}"
inputParameters:
- name: job_id
in: path
operations:
- name: get-job-status
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries the Teradata data warehouse for guest stay analytics including average length of stay, repeat visit frequency, and revenue per guest segment.
naftiko: "0.5"
info:
label: "Teradata Guest Analytics Query"
description: "Queries the Teradata data warehouse for guest stay analytics including average length of stay, repeat visit frequency, and revenue per guest segment."
tags:
- analytics
- teradata
- reporting
- guest-experience
capability:
exposes:
- type: mcp
namespace: guest-analytics
port: 8080
tools:
- name: query-guest-analytics
description: "Given a guest segment and date range, retrieve analytics from Teradata."
inputParameters:
- name: segment
in: body
type: string
description: "Guest segment: business, leisure, group."
- name: quarter
in: body
type: string
description: "Fiscal quarter, e.g. Q1-2026."
call: "teradata.run-query"
with:
segment: "{{segment}}"
quarter: "{{quarter}}"
outputParameters:
- name: avg_length_of_stay
type: string
mapping: "$.results[0].avg_los"
- name: repeat_rate
type: string
mapping: "$.results[0].repeat_pct"
consumes:
- type: http
namespace: teradata
baseUri: "https://hilton-teradata.analytics.teradata.com/api/v1"
authentication:
type: bearer
token: "$secrets.teradata_token"
resources:
- name: queries
path: "/queries"
operations:
- name: run-query
method: POST
Monitors Twitter for Hilton brand mentions, filters high-engagement or negative sentiment tweets, creates Salesforce cases for guest complaints, and alerts social media team via Teams.
naftiko: "0.5"
info:
label: "Twitter Brand Mention Monitor"
description: "Monitors Twitter for Hilton brand mentions, filters high-engagement or negative sentiment tweets, creates Salesforce cases for guest complaints, and alerts social media team via Teams."
tags:
- marketing
- twitter
- salesforce
- microsoft-teams
- social-media
capability:
exposes:
- type: mcp
namespace: social-listening
port: 8080
tools:
- name: process-brand-mention
description: "Given a Twitter search query, find recent brand mentions and escalate negative ones."
inputParameters:
- name: query
in: body
type: string
description: "Twitter search query, e.g. @HiltonHonors OR @Hilton."
steps:
- name: search-tweets
type: call
call: "twitter.search-recent"
with:
query: "{{query}}"
max_results: "50"
- name: create-case
type: call
call: "salesforce.create-case"
with:
subject: "Social media escalation: Twitter brand mention"
description: "{{search-tweets.summary}}"
origin: "Twitter"
priority: "High"
- name: alert-team
type: call
call: "msteams.send-message"
with:
channel_id: "social-media-team"
message: "Brand mention alert: {{search-tweets.result_count}} mentions found. Negative sentiment: {{search-tweets.negative_count}}. Salesforce case: {{create-case.CaseNumber}}"
consumes:
- type: http
namespace: twitter
baseUri: "https://api.twitter.com/2"
authentication:
type: bearer
token: "$secrets.twitter_bearer_token"
resources:
- name: tweets
path: "/tweets/search/recent"
operations:
- name: search-recent
method: GET
- type: http
namespace: salesforce
baseUri: "https://hilton.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: cases
path: "/sobjects/Case"
operations:
- name: create-case
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Initiates a data restore from Veritas NetBackup, creates a ServiceNow change request for the restore operation, and notifies the requestor via Teams upon completion.
naftiko: "0.5"
info:
label: "Veritas NetBackup Restore Request"
description: "Initiates a data restore from Veritas NetBackup, creates a ServiceNow change request for the restore operation, and notifies the requestor via Teams upon completion."
tags:
- infrastructure
- veritas-netbackup
- servicenow
- microsoft-teams
- data-protection
capability:
exposes:
- type: mcp
namespace: backup-recovery
port: 8080
tools:
- name: initiate-restore
description: "Given a backup image ID and target location, initiate a restore and track via ServiceNow."
inputParameters:
- name: backup_id
in: body
type: string
description: "The NetBackup image ID."
- name: target_path
in: body
type: string
description: "The restore target file path."
- name: requestor_email
in: body
type: string
description: "Email of the person requesting the restore."
steps:
- name: create-change
type: call
call: "servicenow.create-change-request"
with:
short_description: "Data restore: backup {{backup_id}} to {{target_path}}"
category: "infrastructure"
assigned_to: "Backup_Team"
- name: start-restore
type: call
call: "netbackup.restore-image"
with:
backup_id: "{{backup_id}}"
target_path: "{{target_path}}"
- name: notify-requestor
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{requestor_email}}"
message: "Data restore initiated. Backup: {{backup_id}}, Target: {{target_path}}. Change request: {{create-change.number}}. Restore job: {{start-restore.job_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://hilton.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: change-requests
path: "/table/change_request"
operations:
- name: create-change-request
method: POST
- type: http
namespace: netbackup
baseUri: "https://hilton-netbackup.com/netbackup/admin/api/v4"
authentication:
type: bearer
token: "$secrets.netbackup_token"
resources:
- name: restores
path: "/recovery/workloads/vmware/recoverypoints/{{backup_id}}/recover"
inputParameters:
- name: backup_id
in: path
operations:
- name: restore-image
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: chat
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Sends pre-arrival and post-stay WhatsApp messages to Hilton guests using approved templates, pulling guest data from Salesforce and logging communications in ServiceNow.
naftiko: "0.5"
info:
label: "WhatsApp Guest Communication Sender"
description: "Sends pre-arrival and post-stay WhatsApp messages to Hilton guests using approved templates, pulling guest data from Salesforce and logging communications in ServiceNow."
tags:
- guest-experience
- whatsapp
- salesforce
- servicenow
- hospitality
capability:
exposes:
- type: mcp
namespace: guest-communications
port: 8080
tools:
- name: send-guest-whatsapp
description: "Given a reservation ID and template type, send a WhatsApp message to the guest and log the communication."
inputParameters:
- name: reservation_id
in: body
type: string
description: "The reservation confirmation number."
- name: template_type
in: body
type: string
description: "Template type: pre_arrival, welcome, or post_stay."
steps:
- name: get-reservation
type: call
call: "salesforce.get-reservation"
with:
reservation_id: "{{reservation_id}}"
- name: send-message
type: call
call: "whatsapp.send-template"
with:
phone_number: "{{get-reservation.Guest_Phone__c}}"
template_name: "hilton_{{template_type}}"
parameters:
guest_name: "{{get-reservation.Guest_Name__c}}"
property_name: "{{get-reservation.Property_Name__c}}"
check_in_date: "{{get-reservation.Check_In__c}}"
- name: log-communication
type: call
call: "servicenow.create-record"
with:
table: "u_guest_communications"
fields:
reservation: "{{reservation_id}}"
channel: "whatsapp"
template: "{{template_type}}"
status: "{{send-message.status}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://hilton.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
operations:
- name: get-reservation
method: GET
- type: http
namespace: whatsapp
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.whatsapp_token"
resources:
- name: messages
path: "/{{phone_number_id}}/messages"
operations:
- name: send-template
method: POST
- type: http
namespace: servicenow
baseUri: "https://hilton.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
Initiates the annual performance review cycle for hotel management associates in Workday by notifying all department managers via Teams to complete reviews by the submission deadline.
naftiko: "0.5"
info:
label: "Workday Annual Performance Review Kickoff"
description: "Initiates the annual performance review cycle for hotel management associates in Workday by notifying all department managers via Teams to complete reviews by the submission deadline."
tags:
- hr
- performance-management
- workday
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-performance
port: 8080
tools:
- name: kickoff-performance-reviews
description: "Given a Workday department ID, review cycle name, and deadline, retrieve active associates and notify managers via Teams to begin the review process in Workday."
inputParameters:
- name: department_id
in: body
type: string
description: "The Workday department ID to kick off reviews for."
- name: review_cycle
in: body
type: string
description: "The review cycle name, e.g. 2025 Annual Performance Review."
- name: deadline
in: body
type: string
description: "Submission deadline in YYYY-MM-DD format."
steps:
- name: get-employees
type: call
call: "workday-perf.list-workers"
with:
department_id: "{{department_id}}"
- name: notify-hr-channel
type: call
call: "msteams-perf.post-channel-message"
with:
channel_id: "$secrets.teams_hr_channel_id"
message: "Performance Review Kickoff | {{review_cycle}} | Department: {{department_id}} | Deadline: {{deadline}} | Please complete all reviews in Workday by the deadline."
consumes:
- type: http
namespace: workday-perf
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/hilton/workers"
inputParameters:
- name: department_id
in: query
operations:
- name: list-workers
method: GET
- type: http
namespace: msteams-perf
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: post-channel-message
method: POST
During open enrollment, pulls pending enrollment status from Workday, sends personalized reminder emails via Outlook, and tracks completion in SharePoint.
naftiko: "0.5"
info:
label: "Workday Benefits Enrollment Reminder Orchestrator"
description: "During open enrollment, pulls pending enrollment status from Workday, sends personalized reminder emails via Outlook, and tracks completion in SharePoint."
tags:
- hr
- workday
- microsoft-outlook
- sharepoint
- benefits
capability:
exposes:
- type: mcp
namespace: hr-benefits
port: 8080
tools:
- name: send-enrollment-reminders
description: "Given an enrollment period ID, identify pending enrollments and send reminders."
inputParameters:
- name: enrollment_period
in: body
type: string
description: "The enrollment period identifier."
steps:
- name: get-pending
type: call
call: "workday.get-pending-enrollments"
with:
period: "{{enrollment_period}}"
- name: send-reminders
type: call
call: "outlook.send-bulk-email"
with:
recipients: "{{get-pending.pending_emails}}"
subject: "Action Required: Complete Your Benefits Enrollment"
body: "Open enrollment closes soon. Please complete your benefits selections in Workday."
- name: update-tracker
type: call
call: "sharepoint.create-item"
with:
site_id: "hilton-hr-benefits"
list_name: "EnrollmentTracker"
fields:
period: "{{enrollment_period}}"
pending_count: "{{get-pending.total_pending}}"
reminders_sent: "{{get-pending.total_pending}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: benefits
path: "/hilton/benefits/enrollments"
operations:
- name: get-pending-enrollments
method: GET
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/hr-benefits@hilton.com/sendMail"
operations:
- name: send-bulk-email
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: list-items
path: "/sites/{{site_id}}/lists/{{list_name}}/items"
inputParameters:
- name: site_id
in: path
- name: list_name
in: path
operations:
- name: create-item
method: POST
When a compensation review cycle is initiated, pulls employee data from Workday, generates a Power BI dashboard refresh, creates a SharePoint folder for review documents, and notifies HR business partners via Teams.
naftiko: "0.5"
info:
label: "Workday Compensation Review Orchestrator"
description: "When a compensation review cycle is initiated, pulls employee data from Workday, generates a Power BI dashboard refresh, creates a SharePoint folder for review documents, and notifies HR business partners via Teams."
tags:
- hr
- workday
- power-bi
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-compensation
port: 8080
tools:
- name: initiate-comp-review
description: "Given a review cycle ID and department, orchestrate compensation review preparation across Workday, Power BI, SharePoint, and Teams."
inputParameters:
- name: cycle_id
in: body
type: string
description: "The compensation review cycle identifier."
- name: department
in: body
type: string
description: "The department name for the review scope."
steps:
- name: get-employees
type: call
call: "workday.get-department-workers"
with:
department: "{{department}}"
cycle_id: "{{cycle_id}}"
- name: refresh-dashboard
type: call
call: "powerbi.refresh-dataset"
with:
dataset_id: "comp-review-{{cycle_id}}"
- name: create-folder
type: call
call: "sharepoint.create-folder"
with:
site_id: "hilton-hr-compensation"
folder_path: "CompReviews/{{cycle_id}}/{{department}}"
- name: notify-hrbp
type: call
call: "msteams.send-message"
with:
channel_id: "hr-business-partners"
message: "Compensation review cycle {{cycle_id}} initiated for {{department}}. {{get-employees.total_count}} employees in scope. Dashboard refreshing. Documents: {{create-folder.webUrl}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/hilton/workers"
operations:
- name: get-department-workers
method: GET
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/sites/{{site_id}}/drive/root/children"
inputParameters:
- name: site_id
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves current headcount and open position data from Workday for a specified Hilton property code, returning staffing levels by department.
naftiko: "0.5"
info:
label: "Workday Headcount by Property Lookup"
description: "Retrieves current headcount and open position data from Workday for a specified Hilton property code, returning staffing levels by department."
tags:
- hr
- workday
- reporting
- hospitality
capability:
exposes:
- type: mcp
namespace: hr-reporting
port: 8080
tools:
- name: get-property-headcount
description: "Given a Hilton property code, retrieve current headcount and open positions from Workday broken down by department."
inputParameters:
- name: property_code
in: body
type: string
description: "The Hilton property code, e.g. NYCHH."
call: "workday.get-headcount"
with:
property_code: "{{property_code}}"
outputParameters:
- name: total_headcount
type: string
mapping: "$.summary.total_active"
- name: open_positions
type: string
mapping: "$.summary.open_reqs"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: headcount
path: "/hilton/headcount/{{property_code}}"
inputParameters:
- name: property_code
in: path
operations:
- name: get-headcount
method: GET
Checks compliance training completion status in Workday Learning for a property, identifies overdue associates, sends reminder emails via Outlook, and escalates to the property HR lead via Teams.
naftiko: "0.5"
info:
label: "Workday Learning Compliance Training Tracker"
description: "Checks compliance training completion status in Workday Learning for a property, identifies overdue associates, sends reminder emails via Outlook, and escalates to the property HR lead via Teams."
tags:
- hr
- workday
- microsoft-outlook
- microsoft-teams
- compliance
capability:
exposes:
- type: mcp
namespace: hr-compliance
port: 8080
tools:
- name: track-compliance-training
description: "Given a property code and training program ID, check completion rates and escalate overdue items."
inputParameters:
- name: property_code
in: body
type: string
description: "The Hilton property code."
- name: program_id
in: body
type: string
description: "The Workday Learning program identifier."
steps:
- name: get-completion
type: call
call: "workday.get-training-status"
with:
property_code: "{{property_code}}"
program_id: "{{program_id}}"
- name: send-reminders
type: call
call: "outlook.send-bulk-email"
with:
recipients: "{{get-completion.overdue_emails}}"
subject: "Action Required: Complete {{get-completion.program_name}} training"
body: "Your compliance training is overdue. Please complete by end of week."
- name: escalate-hr
type: call
call: "msteams.send-message"
with:
channel_id: "property-{{property_code}}-hr"
message: "Compliance training alert for {{get-completion.program_name}}: {{get-completion.completion_rate}}% complete. {{get-completion.overdue_count}} associates overdue. Reminders sent."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: learning
path: "/hilton/learning/programs/{{program_id}}/status"
inputParameters:
- name: program_id
in: path
operations:
- name: get-training-status
method: GET
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/hr-noreply@hilton.com/sendMail"
operations:
- name: send-bulk-email
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves organizational hierarchy data from Workday for a given manager or department, returning direct reports, span of control, and reporting chain.
naftiko: "0.5"
info:
label: "Workday Org Chart Lookup"
description: "Retrieves organizational hierarchy data from Workday for a given manager or department, returning direct reports, span of control, and reporting chain."
tags:
- hr
- workday
- reporting
- organizational-design
capability:
exposes:
- type: mcp
namespace: hr-org
port: 8080
tools:
- name: get-org-chart
description: "Given a Workday worker ID, retrieve the org chart showing direct reports and reporting chain."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID."
call: "workday.get-supervisory-org"
with:
worker_id: "{{worker_id}}"
outputParameters:
- name: direct_reports_count
type: string
mapping: "$.organization.direct_reports_count"
- name: manager_name
type: string
mapping: "$.organization.manager.display_name"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: organizations
path: "/hilton/workers/{{worker_id}}/supervisoryOrganization"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-supervisory-org
method: GET
Retrieves open hotel associate job requisitions and candidate pipeline counts from Workday Recruiting for a specified property or department, for talent acquisition reporting.
naftiko: "0.5"
info:
label: "Workday Recruiting Pipeline Status"
description: "Retrieves open hotel associate job requisitions and candidate pipeline counts from Workday Recruiting for a specified property or department, for talent acquisition reporting."
tags:
- hr
- recruiting
- workday
- talent-acquisition
- reporting
capability:
exposes:
- type: mcp
namespace: hr-recruiting
port: 8080
tools:
- name: get-recruiting-pipeline
description: "Given a Workday department or property ID, retrieve all open job requisitions and their candidate counts. Use for weekly talent acquisition reviews and hiring manager status updates."
inputParameters:
- name: department_id
in: body
type: string
description: "The Workday department ID or property organizational unit to check."
call: "workday-rec.list-requisitions"
with:
department_id: "{{department_id}}"
outputParameters:
- name: requisitions
type: array
mapping: "$.data"
items:
- name: req_id
type: string
mapping: "$.id"
- name: job_title
type: string
mapping: "$.jobTitle"
- name: status
type: string
mapping: "$.status"
- name: candidate_count
type: string
mapping: "$.candidateCount"
consumes:
- type: http
namespace: workday-rec
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/recruiting/v3"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: job-requisitions
path: "/jobRequisitions"
inputParameters:
- name: department_id
in: query
operations:
- name: list-requisitions
method: GET
When a hotel associate changes roles in Workday (e.g., front desk to assistant manager), creates a ServiceNow access update request and notifies the new manager via Teams.
naftiko: "0.5"
info:
label: "Workday Role Change Provisioning"
description: "When a hotel associate changes roles in Workday (e.g., front desk to assistant manager), creates a ServiceNow access update request and notifies the new manager via Teams."
tags:
- hr
- access-management
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-role-change
port: 8080
tools:
- name: provision-role-change
description: "Given a Workday employee ID, new role, and effective date, create a ServiceNow access-update request and notify the new manager in Teams. Use for promotions and inter-property transfers."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID of the associate changing roles."
- name: new_role
in: body
type: string
description: "The new job title, e.g. Assistant Front Office Manager."
- name: effective_date
in: body
type: string
description: "The effective date of the role change in YYYY-MM-DD format."
- name: new_manager_upn
in: body
type: string
description: "The Microsoft 365 UPN of the new manager."
steps:
- name: get-worker
type: call
call: "workday-rc.get-worker"
with:
worker_id: "{{employee_id}}"
- name: create-access-request
type: call
call: "servicenow-rc.create-incident"
with:
short_description: "Access update: {{get-worker.display_name}} moving to {{new_role}}"
category: "access_management"
- name: notify-manager
type: call
call: "msteams-rc.send-message"
with:
recipient_upn: "{{new_manager_upn}}"
message: "{{get-worker.display_name}} will join your team as {{new_role}} on {{effective_date}}. Access update ticket: {{create-access-request.number}}."
consumes:
- type: http
namespace: workday-rc
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/hilton/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow-rc
baseUri: "https://hilton.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-rc
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/{{recipient_upn}}/sendMail"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves an associate's time off balances from Workday including vacation, sick leave, and personal days remaining.
naftiko: "0.5"
info:
label: "Workday Time Off Balance Lookup"
description: "Retrieves an associate's time off balances from Workday including vacation, sick leave, and personal days remaining."
tags:
- hr
- workday
- employee-experience
capability:
exposes:
- type: mcp
namespace: hr-self-service
port: 8080
tools:
- name: get-time-off-balance
description: "Given a Workday employee ID, retrieve current time off balances."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID."
call: "workday.get-time-off-balance"
with:
worker_id: "{{employee_id}}"
outputParameters:
- name: vacation_hours
type: string
mapping: "$.balances[0].balance"
- name: sick_hours
type: string
mapping: "$.balances[1].balance"
- name: personal_hours
type: string
mapping: "$.balances[2].balance"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: time-off
path: "/hilton/workers/{{worker_id}}/timeOffBalances"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-time-off-balance
method: GET
Pulls YouTube channel analytics for Hilton's brand channels including views, watch time, subscriber growth, and top videos, then posts a digest to the marketing Teams channel.
naftiko: "0.5"
info:
label: "YouTube Brand Channel Analytics Digest"
description: "Pulls YouTube channel analytics for Hilton's brand channels including views, watch time, subscriber growth, and top videos, then posts a digest to the marketing Teams channel."
tags:
- marketing
- youtube
- microsoft-teams
- social-media
capability:
exposes:
- type: mcp
namespace: video-marketing
port: 8080
tools:
- name: generate-youtube-digest
description: "Given a YouTube channel ID, compile weekly analytics and post to Teams."
inputParameters:
- name: channel_id
in: body
type: string
description: "The YouTube channel ID."
steps:
- name: get-analytics
type: call
call: "youtube.get-channel-analytics"
with:
channel_id: "{{channel_id}}"
period: "last_7_days"
- name: post-digest
type: call
call: "msteams.send-message"
with:
channel_id: "content-marketing"
message: "YouTube Weekly Digest: Views: {{get-analytics.rows[0][0]}}, Watch Time (hrs): {{get-analytics.rows[0][1]}}, New Subscribers: {{get-analytics.rows[0][2]}}"
consumes:
- type: http
namespace: youtube
baseUri: "https://youtubeanalytics.googleapis.com/v2"
authentication:
type: bearer
token: "$secrets.youtube_token"
resources:
- name: reports
path: "/reports"
operations:
- name: get-channel-analytics
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channels
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves guest support ticket details and history from Zendesk for a given ticket ID or guest email, surfacing status, priority, and agent assignment.
naftiko: "0.5"
info:
label: "Zendesk Guest Support Ticket Lookup"
description: "Retrieves guest support ticket details and history from Zendesk for a given ticket ID or guest email, surfacing status, priority, and agent assignment."
tags:
- customer-service
- zendesk
- guest-experience
- hospitality
capability:
exposes:
- type: mcp
namespace: guest-support
port: 8080
tools:
- name: get-support-ticket
description: "Given a Zendesk ticket ID, retrieve ticket details including status, priority, and conversation history."
inputParameters:
- name: ticket_id
in: body
type: string
description: "The Zendesk ticket ID."
call: "zendesk.get-ticket"
with:
ticket_id: "{{ticket_id}}"
outputParameters:
- name: status
type: string
mapping: "$.ticket.status"
- name: priority
type: string
mapping: "$.ticket.priority"
- name: assignee
type: string
mapping: "$.ticket.assignee_id"
consumes:
- type: http
namespace: zendesk
baseUri: "https://hilton.zendesk.com/api/v2"
authentication:
type: bearer
token: "$secrets.zendesk_token"
resources:
- name: tickets
path: "/tickets/{{ticket_id}}"
inputParameters:
- name: ticket_id
in: path
operations:
- name: get-ticket
method: GET
Enriches corporate sales prospect records with company and contact data from ZoomInfo, updating Salesforce accounts with firmographic details.
naftiko: "0.5"
info:
label: "ZoomInfo Prospect Enrichment"
description: "Enriches corporate sales prospect records with company and contact data from ZoomInfo, updating Salesforce accounts with firmographic details."
tags:
- sales
- zoominfo
- salesforce
- data-enrichment
capability:
exposes:
- type: mcp
namespace: sales-enablement
port: 8080
tools:
- name: enrich-prospect
description: "Given a company domain, retrieve firmographic data from ZoomInfo and update the Salesforce account."
inputParameters:
- name: company_domain
in: body
type: string
description: "The prospect company domain."
- name: sf_account_id
in: body
type: string
description: "The Salesforce account ID to update."
steps:
- name: get-company
type: call
call: "zoominfo.search-company"
with:
domain: "{{company_domain}}"
- name: update-account
type: call
call: "salesforce.update-account"
with:
account_id: "{{sf_account_id}}"
fields:
NumberOfEmployees: "{{get-company.employeeCount}}"
AnnualRevenue: "{{get-company.revenue}}"
Industry: "{{get-company.industry}}"
consumes:
- type: http
namespace: zoominfo
baseUri: "https://api.zoominfo.com"
authentication:
type: bearer
token: "$secrets.zoominfo_token"
resources:
- name: companies
path: "/search/company"
operations:
- name: search-company
method: POST
- type: http
namespace: salesforce
baseUri: "https://hilton.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/{{account_id}}"
inputParameters:
- name: account_id
in: path
operations:
- name: update-account
method: PATCH