Royal Caribbean Group Capabilities
Naftiko 0.5 capability definitions for Royal Caribbean Group - 100 capabilities showing integration workflows and service orchestrations.
Retrieves the latest build status for an Azure DevOps pipeline.
naftiko: "0.5"
info:
label: "Azure DevOps Build Status"
description: "Retrieves the latest build status for an Azure DevOps pipeline."
tags:
- ci-cd
- engineering
- azure-devops
capability:
exposes:
- type: mcp
namespace: devops-ci
port: 8080
tools:
- name: get-build-status
description: "Look up the latest build for an Azure DevOps pipeline."
inputParameters:
- name: project
in: body
type: string
description: "The Azure DevOps project name."
- name: pipeline_id
in: body
type: string
description: "The pipeline definition ID."
call: "azdevops.get-latest-build"
with:
project: "{{project}}"
pipeline_id: "{{pipeline_id}}"
outputParameters:
- name: result
type: string
mapping: "$.value[0].result"
- name: status
type: string
mapping: "$.value[0].status"
consumes:
- type: http
namespace: azdevops
baseUri: "https://dev.azure.com/royalcaribbean"
authentication:
type: basic
username: "$secrets.azdevops_user"
password: "$secrets.azdevops_pat"
resources:
- name: builds
path: "/{{project}}/_apis/build/builds?definitions={{pipeline_id}}&$top=1&api-version=7.0"
inputParameters:
- name: project
in: path
- name: pipeline_id
in: path
operations:
- name: get-latest-build
method: GET
Retrieves beverage package status check data from the Royal Caribbean cruise line and hospitality systems.
naftiko: "0.5"
info:
label: "Beverage Package Status Check"
description: "Retrieves beverage package status check data from the Royal Caribbean cruise line and hospitality systems."
tags:
- beverage
- royal-caribbean
- check
capability:
exposes:
- type: mcp
namespace: beverage
port: 8080
tools:
- name: beverage-package-status-check
description: "Retrieves beverage package status check data from the Royal Caribbean cruise line and hospitality systems."
inputParameters:
- name: input_id
in: body
type: string
description: "The input id."
call: "royal-caribbean.beverage-package-status-check"
with:
input_id: "{{input_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: resource
path: "/beverage/package/status/check/{{input_id}}"
inputParameters:
- name: input_id
in: path
operations:
- name: beverage-package-status-check
method: GET
Orchestrates casino operations pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Casino Operations Pipeline"
description: "Orchestrates casino operations pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- casino
- royal-caribbean
- slack
- jira
- teams
capability:
exposes:
- type: mcp
namespace: casino
port: 8080
tools:
- name: casino-operations-pipeline
description: "Orchestrates casino operations pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "slack.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "jira.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "teams.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: slack-resource
path: "/api/casino"
operations:
- name: execute-1
method: POST
- type: http
namespace: jira
baseUri: "https://royalcaribbean.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: jira-resource
path: "/api/casino"
operations:
- name: execute-2
method: POST
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: teams-resource
path: "/api/casino"
operations:
- name: execute-3
method: POST
Queries Cloudflare for CDN performance metrics for Royal Caribbean web properties.
naftiko: "0.5"
info:
label: "Cloudflare CDN Performance"
description: "Queries Cloudflare for CDN performance metrics for Royal Caribbean web properties."
tags:
- infrastructure
- cdn
- cloudflare
capability:
exposes:
- type: mcp
namespace: cdn
port: 8080
tools:
- name: get-cdn-performance
description: "Retrieve Cloudflare zone analytics."
inputParameters:
- name: zone_id
in: body
type: string
description: "The Cloudflare zone ID."
call: "cloudflare.get-zone-analytics"
with:
zone_id: "{{zone_id}}"
consumes:
- type: http
namespace: cloudflare
baseUri: "https://api.cloudflare.com/client/v4"
authentication:
type: bearer
token: "$secrets.cloudflare_token"
resources:
- name: analytics
path: "/zones/{{zone_id}}/analytics/dashboard"
inputParameters:
- name: zone_id
in: path
operations:
- name: get-zone-analytics
method: GET
Searches Confluence for ship operations documentation by keyword and returns matching page titles and URLs.
naftiko: "0.5"
info:
label: "Confluence Ship Operations Wiki Search"
description: "Searches Confluence for ship operations documentation by keyword and returns matching page titles and URLs."
tags:
- documentation
- knowledge-management
- confluence
capability:
exposes:
- type: mcp
namespace: knowledge
port: 8080
tools:
- name: search-ship-docs
description: "Search Confluence for ship operations documentation."
inputParameters:
- name: query
in: body
type: string
description: "The search keyword."
call: "confluence.search"
with:
query: "{{query}}"
consumes:
- type: http
namespace: confluence
baseUri: "https://royalcaribbean.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: search
path: "/search?cql=type=page AND text~\"{{query}}\""
inputParameters:
- name: query
in: path
operations:
- name: search
method: GET
Retrieves crew certification status data from the Royal Caribbean cruise line and hospitality systems.
naftiko: "0.5"
info:
label: "Crew Certification Status"
description: "Retrieves crew certification status data from the Royal Caribbean cruise line and hospitality systems."
tags:
- crew
- royal-caribbean
- status
capability:
exposes:
- type: mcp
namespace: crew
port: 8080
tools:
- name: crew-certification-status
description: "Retrieves crew certification status data from the Royal Caribbean cruise line and hospitality systems."
inputParameters:
- name: input_id
in: body
type: string
description: "The input id."
call: "royal-caribbean.crew-certification-status"
with:
input_id: "{{input_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: resource
path: "/crew/certification/status/{{input_id}}"
inputParameters:
- name: input_id
in: path
operations:
- name: crew-certification-status
method: GET
Orchestrates crew payroll processing pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Crew Payroll Processing Pipeline"
description: "Orchestrates crew payroll processing pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- crew
- royal-caribbean
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: crew
port: 8080
tools:
- name: crew-payroll-processing-pipeline
description: "Orchestrates crew payroll processing pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "servicenow.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "snowflake.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "slack.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: servicenow-resource
path: "/api/crew"
operations:
- name: execute-1
method: POST
- type: http
namespace: snowflake
baseUri: "https://royalcaribbean.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: snowflake-resource
path: "/api/crew"
operations:
- name: execute-2
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: slack-resource
path: "/api/crew"
operations:
- name: execute-3
method: POST
When a crew scheduling conflict is detected in Workday, creates a ServiceNow task for the scheduling manager, and notifies the affected crew members via Microsoft Teams.
naftiko: "0.5"
info:
label: "Crew Scheduling Conflict Resolver"
description: "When a crew scheduling conflict is detected in Workday, creates a ServiceNow task for the scheduling manager, and notifies the affected crew members via Microsoft Teams."
tags:
- hr
- scheduling
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: crew-scheduling
port: 8080
tools:
- name: resolve-schedule-conflict
description: "Given two conflicting crew member IDs and shift details, create a ServiceNow task and notify via Teams."
inputParameters:
- name: crew_member_1
in: body
type: string
description: "First crew member Workday ID."
- name: crew_member_2
in: body
type: string
description: "Second crew member Workday ID."
- name: conflict_date
in: body
type: string
description: "The date of the scheduling conflict."
- name: ship_code
in: body
type: string
description: "The ship code."
steps:
- name: get-crew-1
type: call
call: "workday.get-worker"
with:
worker_id: "{{crew_member_1}}"
- name: get-crew-2
type: call
call: "workday.get-worker"
with:
worker_id: "{{crew_member_2}}"
- name: create-task
type: call
call: "servicenow.create-task"
with:
short_description: "Crew schedule conflict: {{get-crew-1.full_name}} / {{get-crew-2.full_name}} — {{conflict_date}}"
assigned_group: "Crew_Scheduling_{{ship_code}}"
description: "Schedule conflict on {{conflict_date}} between {{get-crew-1.full_name}} ({{get-crew-1.job_title}}) and {{get-crew-2.full_name}} ({{get-crew-2.job_title}})."
- name: notify-scheduling
type: call
call: "msteams.send-message"
with:
channel_id: "crew_scheduling_{{ship_code}}"
text: "Schedule Conflict on {{conflict_date}}: {{get-crew-1.full_name}} vs {{get-crew-2.full_name}}. Task: {{create-task.number}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates crew scheduling optimization pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Crew Scheduling Optimization Pipeline"
description: "Orchestrates crew scheduling optimization pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- crew
- royal-caribbean
- snowflake
- slack
- jira
capability:
exposes:
- type: mcp
namespace: crew
port: 8080
tools:
- name: crew-scheduling-optimization-pipeline
description: "Orchestrates crew scheduling optimization pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "snowflake.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "slack.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "jira.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://royalcaribbean.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: snowflake-resource
path: "/api/crew"
operations:
- name: execute-1
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: slack-resource
path: "/api/crew"
operations:
- name: execute-2
method: POST
- type: http
namespace: jira
baseUri: "https://royalcaribbean.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: jira-resource
path: "/api/crew"
operations:
- name: execute-3
method: POST
Orchestrates crew training compliance pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Crew Training Compliance Pipeline"
description: "Orchestrates crew training compliance pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- crew
- royal-caribbean
- slack
- jira
- teams
capability:
exposes:
- type: mcp
namespace: crew
port: 8080
tools:
- name: crew-training-compliance-pipeline
description: "Orchestrates crew training compliance pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "slack.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "jira.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "teams.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: slack-resource
path: "/api/crew"
operations:
- name: execute-1
method: POST
- type: http
namespace: jira
baseUri: "https://royalcaribbean.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: jira-resource
path: "/api/crew"
operations:
- name: execute-2
method: POST
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: teams-resource
path: "/api/crew"
operations:
- name: execute-3
method: POST
Orchestrates cruise pricing optimization pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Cruise Pricing Optimization Pipeline"
description: "Orchestrates cruise pricing optimization pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- cruise
- royal-caribbean
- royal-caribbean
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: cruise-pricing-optimization-pipeline
description: "Orchestrates cruise pricing optimization pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "royal-caribbean.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "salesforce.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "servicenow.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: royal-caribbean-resource
path: "/api/cruise"
operations:
- name: execute-1
method: POST
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_access_token"
resources:
- name: salesforce-resource
path: "/api/cruise"
operations:
- name: execute-2
method: POST
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: servicenow-resource
path: "/api/cruise"
operations:
- name: execute-3
method: POST
Queries Datadog for the health of a ship's onboard IT infrastructure, returning server status, network latency, and active alerts.
naftiko: "0.5"
info:
label: "Datadog Ship IT Infrastructure Monitor"
description: "Queries Datadog for the health of a ship's onboard IT infrastructure, returning server status, network latency, and active alerts."
tags:
- monitoring
- infrastructure
- datadog
capability:
exposes:
- type: mcp
namespace: ship-infra
port: 8080
tools:
- name: get-ship-infra-health
description: "Query Datadog for a ship's IT infrastructure health."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
call: "datadog.get-hosts"
with:
filter: "ship:{{ship_code}}"
outputParameters:
- name: host_count
type: number
mapping: "$.total_matching"
- name: hosts
type: array
mapping: "$.host_list"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
resources:
- name: hosts
path: "/hosts?filter={{filter}}"
inputParameters:
- name: filter
in: path
operations:
- name: get-hosts
method: GET
Retrieves dining reservation lookup data from the Royal Caribbean cruise line and hospitality systems.
naftiko: "0.5"
info:
label: "Dining Reservation Lookup"
description: "Retrieves dining reservation lookup data from the Royal Caribbean cruise line and hospitality systems."
tags:
- dining
- royal-caribbean
- lookup
capability:
exposes:
- type: mcp
namespace: dining
port: 8080
tools:
- name: dining-reservation-lookup
description: "Retrieves dining reservation lookup data from the Royal Caribbean cruise line and hospitality systems."
inputParameters:
- name: input_id
in: body
type: string
description: "The input id."
call: "royal-caribbean.dining-reservation-lookup"
with:
input_id: "{{input_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: resource
path: "/dining/reservation/lookup/{{input_id}}"
inputParameters:
- name: input_id
in: path
operations:
- name: dining-reservation-lookup
method: GET
Queries the pricing engine for current cabin pricing by ship, sailing date, and cabin category, returning base price, dynamic adjustment, and availability count.
naftiko: "0.5"
info:
label: "Dynamic Pricing Engine Query"
description: "Queries the pricing engine for current cabin pricing by ship, sailing date, and cabin category, returning base price, dynamic adjustment, and availability count."
tags:
- revenue
- pricing
- dynamic-pricing
- salesforce
capability:
exposes:
- type: mcp
namespace: pricing
port: 8080
tools:
- name: get-cabin-pricing
description: "Query current cabin pricing for a ship and sailing date."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: sailing_date
in: body
type: string
description: "The sailing date."
- name: cabin_category
in: body
type: string
description: "The cabin category (e.g., interior, ocean_view, balcony, suite)."
call: "salesforce.get-pricing"
with:
ship_code: "{{ship_code}}"
sailing_date: "{{sailing_date}}"
cabin_category: "{{cabin_category}}"
outputParameters:
- name: base_price
type: number
mapping: "$.Base_Price__c"
- name: dynamic_adjustment
type: number
mapping: "$.Dynamic_Adjustment__c"
- name: availability
type: number
mapping: "$.Available_Cabins__c"
consumes:
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: pricing
path: "/sobjects/Cabin_Pricing__c?ship={{ship_code}}&sailing={{sailing_date}}&category={{cabin_category}}"
inputParameters:
- name: ship_code
in: path
- name: sailing_date
in: path
- name: cabin_category
in: path
operations:
- name: get-pricing
method: GET
Queries the embarkation system for check-in progress by ship and sailing date, returning total checked-in guests, pending, and VIP arrivals.
naftiko: "0.5"
info:
label: "Embarkation Day Check-in Status"
description: "Queries the embarkation system for check-in progress by ship and sailing date, returning total checked-in guests, pending, and VIP arrivals."
tags:
- operations
- embarkation
- salesforce
capability:
exposes:
- type: mcp
namespace: embarkation
port: 8080
tools:
- name: get-checkin-status
description: "Query embarkation check-in progress for a ship and sailing date."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: sailing_date
in: body
type: string
description: "The sailing departure date."
call: "salesforce.get-checkin-status"
with:
ship_code: "{{ship_code}}"
sailing_date: "{{sailing_date}}"
outputParameters:
- name: total_expected
type: number
mapping: "$.Total_Expected__c"
- name: checked_in
type: number
mapping: "$.Checked_In__c"
- name: vip_arrivals
type: number
mapping: "$.VIP_Arrivals__c"
consumes:
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: embarkation
path: "/sobjects/Embarkation__c?ship={{ship_code}}&sailing={{sailing_date}}"
inputParameters:
- name: ship_code
in: path
- name: sailing_date
in: path
operations:
- name: get-checkin-status
method: GET
On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder for crew documents, and sends a Microsoft Teams welcome message.
naftiko: "0.5"
info:
label: "Employee Onboarding Orchestrator"
description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder for crew documents, and sends a Microsoft Teams welcome message."
tags:
- hr
- onboarding
- workday
- servicenow
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: "Given a Workday employee ID and start date, orchestrate the full onboarding sequence across ServiceNow, SharePoint, and Microsoft Teams."
inputParameters:
- name: workday_employee_id
in: body
type: string
description: "The Workday worker ID for the new hire."
- name: start_date
in: body
type: string
description: "The employee start date in YYYY-MM-DD format."
- name: department
in: body
type: string
description: "The department the new hire is joining."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{workday_employee_id}}"
- name: open-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "New hire onboarding: {{get-employee.full_name}}"
category: "hr_onboarding"
assigned_group: "IT_Onboarding"
description: "Onboarding for {{get-employee.full_name}} starting {{start_date}} in {{department}}."
- name: provision-folder
type: call
call: "sharepoint.create-folder"
with:
site_id: "hr_onboarding_site"
folder_path: "CrewDocs/{{get-employee.full_name}}_{{start_date}}"
- name: send-welcome
type: call
call: "msteams.send-message"
with:
channel_id: "new_hires"
text: "Welcome to Royal Caribbean, {{get-employee.first_name}}! Your onboarding ticket is {{open-ticket.number}}. Documents: {{provision-folder.url}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: drive-items
path: "/{{site_id}}/drive/root:/{{folder_path}}"
inputParameters:
- name: site_id
in: path
- name: folder_path
in: path
operations:
- name: create-folder
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates entertainment booking pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Entertainment Booking Pipeline"
description: "Orchestrates entertainment booking pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- entertainment
- royal-caribbean
- royal-caribbean
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: entertainment
port: 8080
tools:
- name: entertainment-booking-pipeline
description: "Orchestrates entertainment booking pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "royal-caribbean.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "salesforce.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "servicenow.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: royal-caribbean-resource
path: "/api/entertainment"
operations:
- name: execute-1
method: POST
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_access_token"
resources:
- name: salesforce-resource
path: "/api/entertainment"
operations:
- name: execute-2
method: POST
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: servicenow-resource
path: "/api/entertainment"
operations:
- name: execute-3
method: POST
When an entertainment schedule is finalized in SharePoint, publishes it to the digital signage system and notifies the entertainment director via Microsoft Teams.
naftiko: "0.5"
info:
label: "Entertainment Schedule Publisher"
description: "When an entertainment schedule is finalized in SharePoint, publishes it to the digital signage system and notifies the entertainment director via Microsoft Teams."
tags:
- entertainment
- onboard-operations
- sharepoint
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: entertainment
port: 8080
tools:
- name: publish-entertainment-schedule
description: "Given a ship code and schedule date, publish the entertainment schedule and notify the director."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: schedule_date
in: body
type: string
description: "The schedule date."
steps:
- name: get-schedule
type: call
call: "sharepoint.get-file"
with:
site_id: "entertainment_schedules"
file_path: "{{ship_code}}/{{schedule_date}}_schedule.pdf"
- name: notify-director
type: call
call: "msteams.send-message"
with:
channel_id: "entertainment_{{ship_code}}"
text: "Entertainment schedule published for {{ship_code}} on {{schedule_date}}. Document: {{get-schedule.url}}."
consumes:
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: files
path: "/{{site_id}}/drive/root:/{{file_path}}"
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: get-file
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves entertainment venue capacity data from the Royal Caribbean cruise line and hospitality systems.
naftiko: "0.5"
info:
label: "Entertainment Venue Capacity"
description: "Retrieves entertainment venue capacity data from the Royal Caribbean cruise line and hospitality systems."
tags:
- entertainment
- royal-caribbean
- capacity
capability:
exposes:
- type: mcp
namespace: entertainment
port: 8080
tools:
- name: entertainment-venue-capacity
description: "Retrieves entertainment venue capacity data from the Royal Caribbean cruise line and hospitality systems."
inputParameters:
- name: input_id
in: body
type: string
description: "The input id."
call: "royal-caribbean.entertainment-venue-capacity"
with:
input_id: "{{input_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: resource
path: "/entertainment/venue/capacity/{{input_id}}"
inputParameters:
- name: input_id
in: path
operations:
- name: entertainment-venue-capacity
method: GET
Retrieves expense reports from SAP Concur, validates against Workday cost center data, and opens a ServiceNow task for finance review when exceptions are detected.
naftiko: "0.5"
info:
label: "Expense Report Review Pipeline"
description: "Retrieves expense reports from SAP Concur, validates against Workday cost center data, and opens a ServiceNow task for finance review when exceptions are detected."
tags:
- finance
- expense
- sap-concur
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: expense-review
port: 8080
tools:
- name: review-expense-report
description: "Given a Concur report ID and employee ID, fetch details, validate cost center, and flag policy exceptions."
inputParameters:
- name: expense_report_id
in: body
type: string
description: "The SAP Concur expense report ID."
- name: employee_id
in: body
type: string
description: "The Workday employee ID."
steps:
- name: get-expense-report
type: call
call: "concur.get-expense-report"
with:
report_id: "{{expense_report_id}}"
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: open-review-task
type: call
call: "servicenow.create-task"
with:
short_description: "Expense review: {{get-expense-report.report_name}} — {{get-employee.full_name}}"
description: "Report {{expense_report_id}} total: {{get-expense-report.total_amount}}. Cost center: {{get-employee.cost_center}}."
assigned_group: "Finance_Audit"
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/{{report_id}}"
inputParameters:
- name: report_id
in: path
operations:
- name: get-expense-report
method: GET
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
When a ship maintenance window approaches, creates a SAP PM work order, opens a ServiceNow change request, notifies the fleet operations team in Microsoft Teams, and updates the Confluence maintenance calendar.
naftiko: "0.5"
info:
label: "Fleet Maintenance Scheduling Pipeline"
description: "When a ship maintenance window approaches, creates a SAP PM work order, opens a ServiceNow change request, notifies the fleet operations team in Microsoft Teams, and updates the Confluence maintenance calendar."
tags:
- fleet-management
- maintenance
- sap
- servicenow
- microsoft-teams
- confluence
capability:
exposes:
- type: mcp
namespace: fleet-maintenance
port: 8080
tools:
- name: schedule-ship-maintenance
description: "Given a ship code and maintenance type, create a SAP work order, open a change request, update Confluence, and notify the fleet team."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: maintenance_type
in: body
type: string
description: "The type of maintenance (e.g., dry_dock, engine_service, hull_inspection)."
- name: scheduled_date
in: body
type: string
description: "The scheduled maintenance date."
steps:
- name: create-work-order
type: call
call: "sap.create-work-order"
with:
equipment_id: "{{ship_code}}"
order_type: "{{maintenance_type}}"
scheduled_date: "{{scheduled_date}}"
- name: create-change-request
type: call
call: "servicenow.create-change"
with:
short_description: "Ship maintenance: {{ship_code}} — {{maintenance_type}}"
description: "Scheduled {{maintenance_type}} for {{ship_code}} on {{scheduled_date}}. SAP order: {{create-work-order.order_number}}."
assigned_group: "Fleet_Operations"
- name: update-calendar
type: call
call: "confluence.update-page"
with:
page_id: "fleet_maintenance_calendar"
body: "{{ship_code}} — {{maintenance_type}} — {{scheduled_date}} — SAP: {{create-work-order.order_number}} — CR: {{create-change-request.number}}"
- name: notify-fleet
type: call
call: "msteams.send-message"
with:
channel_id: "fleet_operations"
text: "Ship Maintenance Scheduled: {{ship_code}} — {{maintenance_type}} on {{scheduled_date}}. SAP: {{create-work-order.order_number}}. CR: {{create-change-request.number}}."
consumes:
- type: http
namespace: sap
baseUri: "https://royalcaribbean-s4.sap.com/sap/opu/odata/sap/PM_WORKORDER_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: work-orders
path: "/WorkOrders"
operations:
- name: create-work-order
method: POST
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: changes
path: "/table/change_request"
operations:
- name: create-change
method: POST
- type: http
namespace: confluence
baseUri: "https://royalcaribbean.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: content
path: "/content/{{page_id}}"
inputParameters:
- name: page_id
in: path
operations:
- name: update-page
method: PUT
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves the status of a GitHub pull request including review state and merge readiness.
naftiko: "0.5"
info:
label: "GitHub Pull Request Status"
description: "Retrieves the status of a GitHub pull request including review state and merge readiness."
tags:
- engineering
- ci-cd
- github
capability:
exposes:
- type: mcp
namespace: engineering-ci
port: 8080
tools:
- name: get-pr-status
description: "Look up a GitHub pull request by repo and PR number."
inputParameters:
- name: repo
in: body
type: string
description: "The GitHub repository in owner/repo format."
- name: pr_number
in: body
type: string
description: "The pull request number."
call: "github.get-pull-request"
with:
repo: "{{repo}}"
pr_number: "{{pr_number}}"
outputParameters:
- name: state
type: string
mapping: "$.state"
- name: mergeable
type: boolean
mapping: "$.mergeable"
consumes:
- type: http
namespace: github
baseUri: "https://api.github.com/repos"
authentication:
type: bearer
token: "$secrets.github_token"
resources:
- name: pull-requests
path: "/{{repo}}/pulls/{{pr_number}}"
inputParameters:
- name: repo
in: path
- name: pr_number
in: path
operations:
- name: get-pull-request
method: GET
Retrieves booking funnel metrics from Google Analytics for the Royal Caribbean website, returning session counts, conversion rates, and drop-off points.
naftiko: "0.5"
info:
label: "Google Analytics Web Booking Funnel"
description: "Retrieves booking funnel metrics from Google Analytics for the Royal Caribbean website, returning session counts, conversion rates, and drop-off points."
tags:
- marketing
- analytics
- google-analytics
capability:
exposes:
- type: mcp
namespace: web-analytics
port: 8080
tools:
- name: get-booking-funnel
description: "Retrieve booking funnel metrics from Google Analytics."
inputParameters:
- name: property_id
in: body
type: string
description: "The Google Analytics property ID."
- name: start_date
in: body
type: string
description: "Start date in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "End date in YYYY-MM-DD format."
call: "ga.run-report"
with:
property_id: "{{property_id}}"
start_date: "{{start_date}}"
end_date: "{{end_date}}"
consumes:
- type: http
namespace: ga
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: run-report
method: POST
Retrieves port-of-call location details from Google Maps including coordinates, nearby amenities, and place photos for guest information displays.
naftiko: "0.5"
info:
label: "Google Maps Port Information Lookup"
description: "Retrieves port-of-call location details from Google Maps including coordinates, nearby amenities, and place photos for guest information displays."
tags:
- operations
- navigation
- google-maps
capability:
exposes:
- type: mcp
namespace: port-info
port: 8080
tools:
- name: get-port-details
description: "Look up a port location and amenities using Google Maps Places API."
inputParameters:
- name: port_name
in: body
type: string
description: "The port name to search."
call: "gmaps.find-place"
with:
port_name: "{{port_name}}"
consumes:
- type: http
namespace: gmaps
baseUri: "https://maps.googleapis.com/maps/api/place"
authentication:
type: apiKey
key: "$secrets.google_maps_key"
resources:
- name: places
path: "/findplacefromtext/json?input={{port_name}}&inputtype=textquery&fields=name,geometry,formatted_address,photos"
inputParameters:
- name: port_name
in: path
operations:
- name: find-place
method: GET
Orchestrates group booking coordination pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Group Booking Coordination Pipeline"
description: "Orchestrates group booking coordination pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- group
- royal-caribbean
- sendgrid
- datadog
- royal-caribbean
capability:
exposes:
- type: mcp
namespace: group
port: 8080
tools:
- name: group-booking-coordination-pipeline
description: "Orchestrates group booking coordination pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "sendgrid.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "datadog.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "royal-caribbean.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: sendgrid-resource
path: "/api/group"
operations:
- name: execute-1
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: datadog-resource
path: "/api/group"
operations:
- name: execute-2
method: POST
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: royal-caribbean-resource
path: "/api/group"
operations:
- name: execute-3
method: POST
Orchestrates guest accessibility accommodation pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Guest Accessibility Accommodation Pipeline"
description: "Orchestrates guest accessibility accommodation pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- guest
- royal-caribbean
- teams
- sap
- sendgrid
capability:
exposes:
- type: mcp
namespace: guest
port: 8080
tools:
- name: guest-accessibility-accommodation-pipeline
description: "Orchestrates guest accessibility accommodation pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "teams.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "sap.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "sendgrid.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: teams-resource
path: "/api/guest"
operations:
- name: execute-1
method: POST
- type: http
namespace: sap
baseUri: "https://rc-erp.s4hana.ondemand.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: sap-resource
path: "/api/guest"
operations:
- name: execute-2
method: POST
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: sendgrid-resource
path: "/api/guest"
operations:
- name: execute-3
method: POST
When a guest complaint is received, creates a ServiceNow case, enriches with guest loyalty data from Salesforce, notifies the guest relations manager via Microsoft Teams, and sends a follow-up email via MailChimp.
naftiko: "0.5"
info:
label: "Guest Complaint Resolution Pipeline"
description: "When a guest complaint is received, creates a ServiceNow case, enriches with guest loyalty data from Salesforce, notifies the guest relations manager via Microsoft Teams, and sends a follow-up email via MailChimp."
tags:
- guest-services
- complaint-management
- servicenow
- salesforce
- microsoft-teams
- mailchimp
capability:
exposes:
- type: mcp
namespace: guest-complaints
port: 8080
tools:
- name: process-guest-complaint
description: "Given a guest ID and complaint description, create a ServiceNow case, enrich with loyalty data, notify the manager, and send follow-up."
inputParameters:
- name: guest_id
in: body
type: string
description: "The Salesforce guest record ID."
- name: complaint_category
in: body
type: string
description: "The complaint category (e.g., dining, cabin, entertainment)."
- name: complaint_description
in: body
type: string
description: "The complaint description."
- name: ship_code
in: body
type: string
description: "The ship code."
steps:
- name: get-guest
type: call
call: "salesforce.get-guest"
with:
guest_id: "{{guest_id}}"
- name: create-case
type: call
call: "servicenow.create-case"
with:
short_description: "Guest Complaint: {{complaint_category}} — {{get-guest.name}}"
category: "guest_complaint"
description: "Guest: {{get-guest.name}} ({{get-guest.loyalty_tier}}). Ship: {{ship_code}}. Category: {{complaint_category}}. Details: {{complaint_description}}"
assigned_group: "Guest_Relations_{{ship_code}}"
- name: notify-manager
type: call
call: "msteams.send-message"
with:
channel_id: "guest_relations_{{ship_code}}"
text: "Guest Complaint: {{get-guest.name}} ({{get-guest.loyalty_tier}}) — {{complaint_category}}. Case: {{create-case.number}}. {{complaint_description}}"
- name: send-acknowledgment
type: call
call: "mailchimp.send-transactional"
with:
template_id: "complaint_acknowledgment"
recipient_email: "{{get-guest.email}}"
merge_vars: "guest_name={{get-guest.name}},case_number={{create-case.number}},category={{complaint_category}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: guests
path: "/sobjects/Guest__c/{{guest_id}}"
inputParameters:
- name: guest_id
in: path
operations:
- name: get-guest
method: GET
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: cases
path: "/table/sn_customerservice_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: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: apiKey
key: "$secrets.mailchimp_api_key"
resources:
- name: transactional
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
Orchestrates guest dining preference pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Guest Dining Preference Pipeline"
description: "Orchestrates guest dining preference pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- guest
- royal-caribbean
- sendgrid
- datadog
- royal-caribbean
capability:
exposes:
- type: mcp
namespace: guest
port: 8080
tools:
- name: guest-dining-preference-pipeline
description: "Orchestrates guest dining preference pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "sendgrid.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "datadog.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "royal-caribbean.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: sendgrid-resource
path: "/api/guest"
operations:
- name: execute-1
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: datadog-resource
path: "/api/guest"
operations:
- name: execute-2
method: POST
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: royal-caribbean-resource
path: "/api/guest"
operations:
- name: execute-3
method: POST
Orchestrates guest disembarkation pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Guest Disembarkation Pipeline"
description: "Orchestrates guest disembarkation pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- guest
- royal-caribbean
- snowflake
- slack
- jira
capability:
exposes:
- type: mcp
namespace: guest
port: 8080
tools:
- name: guest-disembarkation-pipeline
description: "Orchestrates guest disembarkation pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "snowflake.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "slack.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "jira.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://royalcaribbean.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: snowflake-resource
path: "/api/guest"
operations:
- name: execute-1
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: slack-resource
path: "/api/guest"
operations:
- name: execute-2
method: POST
- type: http
namespace: jira
baseUri: "https://royalcaribbean.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: jira-resource
path: "/api/guest"
operations:
- name: execute-3
method: POST
Orchestrates guest embarkation optimization pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Guest Embarkation Optimization Pipeline"
description: "Orchestrates guest embarkation optimization pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- guest
- royal-caribbean
- jira
- teams
- sap
capability:
exposes:
- type: mcp
namespace: guest
port: 8080
tools:
- name: guest-embarkation-optimization-pipeline
description: "Orchestrates guest embarkation optimization pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "jira.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "teams.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "sap.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: jira
baseUri: "https://royalcaribbean.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: jira-resource
path: "/api/guest"
operations:
- name: execute-1
method: POST
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: teams-resource
path: "/api/guest"
operations:
- name: execute-2
method: POST
- type: http
namespace: sap
baseUri: "https://rc-erp.s4hana.ondemand.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: sap-resource
path: "/api/guest"
operations:
- name: execute-3
method: POST
Orchestrates guest experience personalization pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Guest Experience Personalization Pipeline"
description: "Orchestrates guest experience personalization pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- guest
- royal-caribbean
- salesforce
- servicenow
- snowflake
capability:
exposes:
- type: mcp
namespace: guest
port: 8080
tools:
- name: guest-experience-personalization-pipeline
description: "Orchestrates guest experience personalization pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "salesforce.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "servicenow.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "snowflake.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_access_token"
resources:
- name: salesforce-resource
path: "/api/guest"
operations:
- name: execute-1
method: POST
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: servicenow-resource
path: "/api/guest"
operations:
- name: execute-2
method: POST
- type: http
namespace: snowflake
baseUri: "https://royalcaribbean.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: snowflake-resource
path: "/api/guest"
operations:
- name: execute-3
method: POST
Retrieves guest folio balance check data from the Royal Caribbean cruise line and hospitality systems.
naftiko: "0.5"
info:
label: "Guest Folio Balance Check"
description: "Retrieves guest folio balance check data from the Royal Caribbean cruise line and hospitality systems."
tags:
- guest
- royal-caribbean
- check
capability:
exposes:
- type: mcp
namespace: guest
port: 8080
tools:
- name: guest-folio-balance-check
description: "Retrieves guest folio balance check data from the Royal Caribbean cruise line and hospitality systems."
inputParameters:
- name: input_id
in: body
type: string
description: "The input id."
call: "royal-caribbean.guest-folio-balance-check"
with:
input_id: "{{input_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: resource
path: "/guest/folio/balance/check/{{input_id}}"
inputParameters:
- name: input_id
in: path
operations:
- name: guest-folio-balance-check
method: GET
Orchestrates guest health screening pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Guest Health Screening Pipeline"
description: "Orchestrates guest health screening pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- guest
- royal-caribbean
- sendgrid
- datadog
- royal-caribbean
capability:
exposes:
- type: mcp
namespace: guest
port: 8080
tools:
- name: guest-health-screening-pipeline
description: "Orchestrates guest health screening pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "sendgrid.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "datadog.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "royal-caribbean.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: sendgrid-resource
path: "/api/guest"
operations:
- name: execute-1
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: datadog-resource
path: "/api/guest"
operations:
- name: execute-2
method: POST
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: royal-caribbean-resource
path: "/api/guest"
operations:
- name: execute-3
method: POST
Orchestrates guest loyalty engagement pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Guest Loyalty Engagement Pipeline"
description: "Orchestrates guest loyalty engagement pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- guest
- royal-caribbean
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: guest
port: 8080
tools:
- name: guest-loyalty-engagement-pipeline
description: "Orchestrates guest loyalty engagement pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "servicenow.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "snowflake.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "slack.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: servicenow-resource
path: "/api/guest"
operations:
- name: execute-1
method: POST
- type: http
namespace: snowflake
baseUri: "https://royalcaribbean.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: snowflake-resource
path: "/api/guest"
operations:
- name: execute-2
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: slack-resource
path: "/api/guest"
operations:
- name: execute-3
method: POST
Retrieves guest loyalty tier lookup data from the Royal Caribbean cruise line and hospitality systems.
naftiko: "0.5"
info:
label: "Guest Loyalty Tier Lookup"
description: "Retrieves guest loyalty tier lookup data from the Royal Caribbean cruise line and hospitality systems."
tags:
- guest
- royal-caribbean
- lookup
capability:
exposes:
- type: mcp
namespace: guest
port: 8080
tools:
- name: guest-loyalty-tier-lookup
description: "Retrieves guest loyalty tier lookup data from the Royal Caribbean cruise line and hospitality systems."
inputParameters:
- name: input_id
in: body
type: string
description: "The input id."
call: "royal-caribbean.guest-loyalty-tier-lookup"
with:
input_id: "{{input_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: resource
path: "/guest/loyalty/tier/lookup/{{input_id}}"
inputParameters:
- name: input_id
in: path
operations:
- name: guest-loyalty-tier-lookup
method: GET
Retrieves guest medical record lookup data from the Royal Caribbean cruise line and hospitality systems.
naftiko: "0.5"
info:
label: "Guest Medical Record Lookup"
description: "Retrieves guest medical record lookup data from the Royal Caribbean cruise line and hospitality systems."
tags:
- guest
- royal-caribbean
- lookup
capability:
exposes:
- type: mcp
namespace: guest
port: 8080
tools:
- name: guest-medical-record-lookup
description: "Retrieves guest medical record lookup data from the Royal Caribbean cruise line and hospitality systems."
inputParameters:
- name: input_id
in: body
type: string
description: "The input id."
call: "royal-caribbean.guest-medical-record-lookup"
with:
input_id: "{{input_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: resource
path: "/guest/medical/record/lookup/{{input_id}}"
inputParameters:
- name: input_id
in: path
operations:
- name: guest-medical-record-lookup
method: GET
Orchestrates guest photo package pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Guest Photo Package Pipeline"
description: "Orchestrates guest photo package pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- guest
- royal-caribbean
- salesforce
- servicenow
- snowflake
capability:
exposes:
- type: mcp
namespace: guest
port: 8080
tools:
- name: guest-photo-package-pipeline
description: "Orchestrates guest photo package pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "salesforce.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "servicenow.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "snowflake.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_access_token"
resources:
- name: salesforce-resource
path: "/api/guest"
operations:
- name: execute-1
method: POST
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: servicenow-resource
path: "/api/guest"
operations:
- name: execute-2
method: POST
- type: http
namespace: snowflake
baseUri: "https://royalcaribbean.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: snowflake-resource
path: "/api/guest"
operations:
- name: execute-3
method: POST
When a new cruise reservation is created in Salesforce, provisions a guest profile in the onboard systems, creates a ServiceNow setup ticket for cabin configuration, and sends a confirmation via Microsoft Teams to the guest services team.
naftiko: "0.5"
info:
label: "Guest Reservation Orchestrator"
description: "When a new cruise reservation is created in Salesforce, provisions a guest profile in the onboard systems, creates a ServiceNow setup ticket for cabin configuration, and sends a confirmation via Microsoft Teams to the guest services team."
tags:
- reservations
- guest-services
- salesforce
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: reservations
port: 8080
tools:
- name: orchestrate-reservation
description: "Given a Salesforce reservation ID, provision the guest profile, create a cabin setup ticket, and notify guest services."
inputParameters:
- name: reservation_id
in: body
type: string
description: "The Salesforce reservation record ID."
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: sailing_date
in: body
type: string
description: "The sailing departure date in YYYY-MM-DD format."
steps:
- name: get-reservation
type: call
call: "salesforce.get-reservation"
with:
reservation_id: "{{reservation_id}}"
- name: create-setup-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Cabin setup: {{get-reservation.guest_name}} — {{ship_code}} {{sailing_date}}"
category: "guest_services"
assigned_group: "Cabin_Setup_{{ship_code}}"
description: "Reservation {{reservation_id}} for {{get-reservation.guest_name}}. Cabin: {{get-reservation.cabin_number}}. Package: {{get-reservation.package_type}}."
- name: notify-guest-services
type: call
call: "msteams.send-message"
with:
channel_id: "guest_services_{{ship_code}}"
text: "New reservation: {{get-reservation.guest_name}} — Cabin {{get-reservation.cabin_number}} on {{ship_code}} sailing {{sailing_date}}. Setup ticket: {{create-setup-ticket.number}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: reservations
path: "/sobjects/Reservation__c/{{reservation_id}}"
inputParameters:
- name: reservation_id
in: path
operations:
- name: get-reservation
method: GET
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves guest special needs record data from the Royal Caribbean cruise line and hospitality systems.
naftiko: "0.5"
info:
label: "Guest Special Needs Record"
description: "Retrieves guest special needs record data from the Royal Caribbean cruise line and hospitality systems."
tags:
- guest
- royal-caribbean
- record
capability:
exposes:
- type: mcp
namespace: guest
port: 8080
tools:
- name: guest-special-needs-record
description: "Retrieves guest special needs record data from the Royal Caribbean cruise line and hospitality systems."
inputParameters:
- name: input_id
in: body
type: string
description: "The input id."
call: "royal-caribbean.guest-special-needs-record"
with:
input_id: "{{input_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: resource
path: "/guest/special/needs/record/{{input_id}}"
inputParameters:
- name: input_id
in: path
operations:
- name: guest-special-needs-record
method: GET
Coordinates special occasion celebrations onboard by arranging amenities, dining upgrades, and personalized experiences.
naftiko: "0.5"
info:
label: "Guest Special Occasion Pipeline"
description: "Coordinates special occasion celebrations onboard by arranging amenities, dining upgrades, and personalized experiences."
tags:
- guest-experience
- royal-caribbean
- salesforce
- sendgrid
capability:
exposes:
- type: mcp
namespace: guest
port: 8080
tools:
- name: guest-special-occasion-pipeline
description: "Coordinates special occasion celebrations onboard by arranging amenities, dining upgrades, and personalized experiences."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: get-guest
type: call
call: "salesforce.get-contact"
with:
input: "{{input_id}}"
- name: arrange-amenities
type: call
call: "royal-caribbean.create-amenity"
with:
input: "{{input_id}}"
- name: send-confirmation
type: call
call: "sendgrid.send-email"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_access_token"
resources:
- name: salesforce-resource
path: "/sobjects/Contact"
operations:
- name: get-contact
method: GET
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: royal-caribbean-resource
path: "/amenities"
operations:
- name: create-amenity
method: POST
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: sendgrid-resource
path: "/mail/send"
operations:
- name: send-email
method: POST
Orchestrates guest travel document verification pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Guest Travel Document Verification Pipeline"
description: "Orchestrates guest travel document verification pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- guest
- royal-caribbean
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: guest
port: 8080
tools:
- name: guest-travel-document-verification-pipeline
description: "Orchestrates guest travel document verification pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "servicenow.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "snowflake.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "slack.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: servicenow-resource
path: "/api/guest"
operations:
- name: execute-1
method: POST
- type: http
namespace: snowflake
baseUri: "https://royalcaribbean.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: snowflake-resource
path: "/api/guest"
operations:
- name: execute-2
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: slack-resource
path: "/api/guest"
operations:
- name: execute-3
method: POST
Orchestrates guest wedding event pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Guest Wedding Event Pipeline"
description: "Orchestrates guest wedding event pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- guest
- royal-caribbean
- datadog
- royal-caribbean
- salesforce
capability:
exposes:
- type: mcp
namespace: guest
port: 8080
tools:
- name: guest-wedding-event-pipeline
description: "Orchestrates guest wedding event pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "datadog.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "royal-caribbean.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "salesforce.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: datadog-resource
path: "/api/guest"
operations:
- name: execute-1
method: POST
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: royal-caribbean-resource
path: "/api/guest"
operations:
- name: execute-2
method: POST
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_access_token"
resources:
- name: salesforce-resource
path: "/api/guest"
operations:
- name: execute-3
method: POST
Retrieves a HubSpot contact by email for the marketing team.
naftiko: "0.5"
info:
label: "HubSpot Contact Lookup"
description: "Retrieves a HubSpot contact by email for the marketing team."
tags:
- marketing
- crm
- hubspot
capability:
exposes:
- type: mcp
namespace: marketing-crm
port: 8080
tools:
- name: get-hubspot-contact
description: "Look up a HubSpot contact by email."
inputParameters:
- name: email
in: body
type: string
description: "The contact email."
call: "hubspot.get-contact"
with:
email: "{{email}}"
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/{{email}}?idProperty=email"
inputParameters:
- name: email
in: path
operations:
- name: get-contact
method: GET
Retrieves new leads from HubSpot and syncs them to Salesforce for the sales team to follow up on cruise package inquiries.
naftiko: "0.5"
info:
label: "HubSpot Lead Capture Integration"
description: "Retrieves new leads from HubSpot and syncs them to Salesforce for the sales team to follow up on cruise package inquiries."
tags:
- sales
- crm
- hubspot
- salesforce
capability:
exposes:
- type: mcp
namespace: lead-sync
port: 8080
tools:
- name: sync-hubspot-lead
description: "Given a HubSpot contact ID, fetch the lead details and create a corresponding Salesforce lead."
inputParameters:
- name: hubspot_contact_id
in: body
type: string
description: "The HubSpot contact ID."
steps:
- name: get-hubspot-contact
type: call
call: "hubspot.get-contact"
with:
contact_id: "{{hubspot_contact_id}}"
- name: create-sf-lead
type: call
call: "salesforce.create-lead"
with:
first_name: "{{get-hubspot-contact.firstname}}"
last_name: "{{get-hubspot-contact.lastname}}"
email: "{{get-hubspot-contact.email}}"
company: "{{get-hubspot-contact.company}}"
source: "HubSpot"
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://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: leads
path: "/sobjects/Lead"
operations:
- name: create-lead
method: POST
Retrieves engagement metrics for Royal Caribbean Instagram posts, returning likes, comments, and reach for the social media marketing team.
naftiko: "0.5"
info:
label: "Instagram Social Engagement Tracker"
description: "Retrieves engagement metrics for Royal Caribbean Instagram posts, returning likes, comments, and reach for the social media marketing team."
tags:
- marketing
- social-media
- instagram
capability:
exposes:
- type: mcp
namespace: social-media
port: 8080
tools:
- name: get-instagram-engagement
description: "Retrieve engagement metrics for an Instagram post."
inputParameters:
- name: post_id
in: body
type: string
description: "The Instagram media ID."
call: "instagram.get-media-insights"
with:
post_id: "{{post_id}}"
outputParameters:
- name: likes
type: number
mapping: "$.data[0].values[0].value"
- name: comments
type: number
mapping: "$.data[1].values[0].value"
- name: reach
type: number
mapping: "$.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: media-insights
path: "/{{post_id}}/insights?metric=likes,comments,reach"
inputParameters:
- name: post_id
in: path
operations:
- name: get-media-insights
method: GET
Orchestrates itinerary weather adjustment pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Itinerary Weather Adjustment Pipeline"
description: "Orchestrates itinerary weather adjustment pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- itinerary
- royal-caribbean
- sap
- sendgrid
- datadog
capability:
exposes:
- type: mcp
namespace: itinerary
port: 8080
tools:
- name: itinerary-weather-adjustment-pipeline
description: "Orchestrates itinerary weather adjustment pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "sap.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "sendgrid.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "datadog.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://rc-erp.s4hana.ondemand.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: sap-resource
path: "/api/itinerary"
operations:
- name: execute-1
method: POST
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: sendgrid-resource
path: "/api/itinerary"
operations:
- name: execute-2
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: datadog-resource
path: "/api/itinerary"
operations:
- name: execute-3
method: POST
Queries a weather API for port-of-call forecasts, checks for severe weather, and notifies the bridge team and guest services via Microsoft Teams with itinerary adjustment recommendations.
naftiko: "0.5"
info:
label: "Itinerary Weather Alert Pipeline"
description: "Queries a weather API for port-of-call forecasts, checks for severe weather, and notifies the bridge team and guest services via Microsoft Teams with itinerary adjustment recommendations."
tags:
- operations
- weather
- microsoft-teams
- itinerary
capability:
exposes:
- type: mcp
namespace: weather-alerts
port: 8080
tools:
- name: check-port-weather
description: "Given a port name and date, check weather forecast and alert if severe conditions expected."
inputParameters:
- name: port_name
in: body
type: string
description: "The port-of-call name."
- name: port_date
in: body
type: string
description: "The port visit date."
- name: ship_code
in: body
type: string
description: "The ship code."
steps:
- name: get-forecast
type: call
call: "weather.get-forecast"
with:
location: "{{port_name}}"
date: "{{port_date}}"
- name: notify-bridge
type: call
call: "msteams.send-message"
with:
channel_id: "bridge_{{ship_code}}"
text: "Weather Alert for {{port_name}} on {{port_date}}: {{get-forecast.condition}}. Wind: {{get-forecast.wind_speed}} kts. Seas: {{get-forecast.wave_height}} ft. Recommendation: {{get-forecast.advisory}}."
- name: notify-guest-services
type: call
call: "msteams.send-message"
with:
channel_id: "guest_services_{{ship_code}}"
text: "Weather Advisory for {{port_name}} ({{port_date}}): {{get-forecast.condition}}. Excursion adjustments may be needed."
consumes:
- type: http
namespace: weather
baseUri: "https://api.weatherapi.com/v1"
authentication:
type: apiKey
key: "$secrets.weather_api_key"
resources:
- name: forecast
path: "/forecast.json?q={{location}}&dt={{date}}"
inputParameters:
- name: location
in: path
- name: date
in: path
operations:
- name: get-forecast
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Fetches the current sprint details and open issue count from Jira for a given development board.
naftiko: "0.5"
info:
label: "Jira Project Sprint Tracker"
description: "Fetches the current sprint details and open issue count from Jira for a given development board."
tags:
- engineering
- project-management
- jira
capability:
exposes:
- type: mcp
namespace: engineering-pm
port: 8080
tools:
- name: get-sprint-status
description: "Retrieve active sprint details for a Jira board."
inputParameters:
- name: board_id
in: body
type: string
description: "The Jira board ID."
call: "jira.get-active-sprint"
with:
board_id: "{{board_id}}"
outputParameters:
- name: sprint_name
type: string
mapping: "$.values[0].name"
- name: start_date
type: string
mapping: "$.values[0].startDate"
- name: end_date
type: string
mapping: "$.values[0].endDate"
consumes:
- type: http
namespace: jira
baseUri: "https://royalcaribbean.atlassian.net/rest/agile/1.0"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: sprints
path: "/board/{{board_id}}/sprint?state=active"
inputParameters:
- name: board_id
in: path
operations:
- name: get-active-sprint
method: GET
Generates release notes from Jira issues and publishes to Confluence.
naftiko: "0.5"
info:
label: "Jira to Confluence Release Notes"
description: "Generates release notes from Jira issues and publishes to Confluence."
tags:
- engineering
- release-management
- jira
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: release-mgmt
port: 8080
tools:
- name: generate-release-notes
description: "Fetch Jira issues and publish release notes."
inputParameters:
- name: project_key
in: body
type: string
description: "Jira project key."
- name: version_name
in: body
type: string
description: "Release version."
steps:
- name: get-issues
type: call
call: "jira.search-issues"
with:
jql: "project = {{project_key}} AND fixVersion = '{{version_name}}' AND status = Done"
- name: create-notes
type: call
call: "confluence.create-page"
with:
space_key: "ENG"
title: "Release Notes: {{project_key}} {{version_name}}"
body: "Release {{version_name}}. Issues: {{get-issues.total}}."
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "engineering_releases"
text: "Release notes: {{project_key}} {{version_name}}. URL: {{create-notes.url}}."
consumes:
- type: http
namespace: jira
baseUri: "https://royalcaribbean.atlassian.net/rest/api/3"
authentication:
type: basic
username: "$secrets.jira_user"
password: "$secrets.jira_api_token"
resources:
- name: search
path: "/search?jql={{jql}}"
inputParameters:
- name: jql
in: path
operations:
- name: search-issues
method: GET
- type: http
namespace: confluence
baseUri: "https://royalcaribbean.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_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: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves the status of a LinkedIn job posting including application count for the talent acquisition team.
naftiko: "0.5"
info:
label: "LinkedIn Recruitment Pipeline Status"
description: "Retrieves the status of a LinkedIn job posting including application count for the talent acquisition team."
tags:
- recruitment
- talent-acquisition
- linkedin
capability:
exposes:
- type: mcp
namespace: recruitment
port: 8080
tools:
- name: get-job-posting-status
description: "Look up a LinkedIn job posting by ID."
inputParameters:
- name: job_posting_id
in: body
type: string
description: "The LinkedIn job posting ID."
call: "linkedin.get-job-posting"
with:
job_posting_id: "{{job_posting_id}}"
outputParameters:
- name: status
type: string
mapping: "$.status"
- name: application_count
type: number
mapping: "$.applicationCount"
consumes:
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: job-postings
path: "/jobPostings/{{job_posting_id}}"
inputParameters:
- name: job_posting_id
in: path
operations:
- name: get-job-posting
method: GET
When a guest reaches a loyalty tier threshold in Salesforce, updates their tier, sends a personalized upgrade email via MailChimp, and notifies the loyalty program manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Loyalty Program Tier Upgrade Pipeline"
description: "When a guest reaches a loyalty tier threshold in Salesforce, updates their tier, sends a personalized upgrade email via MailChimp, and notifies the loyalty program manager via Microsoft Teams."
tags:
- loyalty
- guest-services
- salesforce
- mailchimp
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: loyalty-upgrade
port: 8080
tools:
- name: process-tier-upgrade
description: "Given a guest ID and new tier, update Salesforce, send upgrade email, and notify the manager."
inputParameters:
- name: guest_id
in: body
type: string
description: "The Salesforce guest record ID."
- name: new_tier
in: body
type: string
description: "The new loyalty tier (e.g., Gold, Platinum, Diamond)."
steps:
- name: get-guest
type: call
call: "salesforce.get-guest"
with:
guest_id: "{{guest_id}}"
- name: update-tier
type: call
call: "salesforce.update-guest-tier"
with:
guest_id: "{{guest_id}}"
new_tier: "{{new_tier}}"
- name: send-upgrade-email
type: call
call: "mailchimp.send-transactional"
with:
template_id: "loyalty_tier_upgrade"
recipient_email: "{{get-guest.email}}"
merge_vars: "guest_name={{get-guest.name}},old_tier={{get-guest.loyalty_tier}},new_tier={{new_tier}}"
- name: notify-loyalty-manager
type: call
call: "msteams.send-message"
with:
channel_id: "loyalty_program"
text: "Loyalty Tier Upgrade: {{get-guest.name}} upgraded from {{get-guest.loyalty_tier}} to {{new_tier}}. Sailings: {{get-guest.sailing_count}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: guests
path: "/sobjects/Guest__c/{{guest_id}}"
inputParameters:
- name: guest_id
in: path
operations:
- name: get-guest
method: GET
- name: update-guest-tier
method: PATCH
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: apiKey
key: "$secrets.mailchimp_api_key"
resources:
- name: transactional
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves performance metrics for a MailChimp email campaign including open rate, click rate, and unsubscribe count.
naftiko: "0.5"
info:
label: "MailChimp Email Campaign Performance"
description: "Retrieves performance metrics for a MailChimp email campaign including open rate, click rate, and unsubscribe count."
tags:
- marketing
- email
- mailchimp
capability:
exposes:
- type: mcp
namespace: email-marketing
port: 8080
tools:
- name: get-campaign-performance
description: "Look up MailChimp campaign performance by campaign ID."
inputParameters:
- name: campaign_id
in: body
type: string
description: "The MailChimp campaign ID."
call: "mailchimp.get-campaign-report"
with:
campaign_id: "{{campaign_id}}"
outputParameters:
- name: open_rate
type: number
mapping: "$.opens.open_rate"
- name: click_rate
type: number
mapping: "$.clicks.click_rate"
- name: unsubscribes
type: number
mapping: "$.unsubscribed"
consumes:
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: basic
username: "anystring"
password: "$secrets.mailchimp_api_key"
resources:
- name: reports
path: "/reports/{{campaign_id}}"
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-report
method: GET
When a medical emergency is reported onboard, creates a ServiceNow critical incident, notifies the ship medical team and shore-side operations via Microsoft Teams, and logs the event for regulatory reporting.
naftiko: "0.5"
info:
label: "Medical Emergency Response Pipeline"
description: "When a medical emergency is reported onboard, creates a ServiceNow critical incident, notifies the ship medical team and shore-side operations via Microsoft Teams, and logs the event for regulatory reporting."
tags:
- safety
- medical
- servicenow
- microsoft-teams
- emergency
capability:
exposes:
- type: mcp
namespace: medical-emergency
port: 8080
tools:
- name: report-medical-emergency
description: "Given emergency details, create a critical incident, notify medical and shore-side teams."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship code."
- name: emergency_type
in: body
type: string
description: "The type of medical emergency."
- name: location_onboard
in: body
type: string
description: "The onboard location."
- name: guest_id
in: body
type: string
description: "The guest ID if applicable."
steps:
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Medical Emergency: {{emergency_type}} on {{ship_code}}"
category: "medical_emergency"
urgency: "critical"
description: "Type: {{emergency_type}}. Location: {{location_onboard}}. Guest: {{guest_id}}."
assigned_group: "Medical_Team_{{ship_code}}"
- name: notify-medical
type: call
call: "msteams.send-message"
with:
channel_id: "medical_{{ship_code}}"
text: "MEDICAL EMERGENCY: {{emergency_type}} at {{location_onboard}} on {{ship_code}}. Incident: {{create-incident.number}}."
- name: notify-shoreside
type: call
call: "msteams.send-message"
with:
channel_id: "shore_operations"
text: "Medical Emergency Alert: {{ship_code}} — {{emergency_type}} at {{location_onboard}}. ServiceNow: {{create-incident.number}}."
consumes:
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Sends a formatted message to a specified Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Microsoft Teams Channel Notifier"
description: "Sends a formatted message to a specified Microsoft Teams channel."
tags:
- communications
- messaging
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: comms
port: 8080
tools:
- name: send-teams-notification
description: "Send a text message to a Microsoft Teams channel."
inputParameters:
- name: channel_id
in: body
type: string
description: "The Teams channel ID."
- name: message
in: body
type: string
description: "The message text."
call: "msteams.send-message"
with:
channel_id: "{{channel_id}}"
text: "{{message}}"
consumes:
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Queries New Relic for application performance metrics.
naftiko: "0.5"
info:
label: "New Relic Application Performance"
description: "Queries New Relic for application performance metrics."
tags:
- monitoring
- performance
- new-relic
capability:
exposes:
- type: mcp
namespace: apm
port: 8080
tools:
- name: get-app-performance
description: "Check New Relic APM metrics."
inputParameters:
- name: app_id
in: body
type: string
description: "The New Relic application ID."
call: "newrelic.get-app"
with:
app_id: "{{app_id}}"
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
method: GET
Retrieves onboard activity schedule data from the Royal Caribbean cruise line and hospitality systems.
naftiko: "0.5"
info:
label: "Onboard Activity Schedule"
description: "Retrieves onboard activity schedule data from the Royal Caribbean cruise line and hospitality systems."
tags:
- onboard
- royal-caribbean
- schedule
capability:
exposes:
- type: mcp
namespace: onboard
port: 8080
tools:
- name: onboard-activity-schedule
description: "Retrieves onboard activity schedule data from the Royal Caribbean cruise line and hospitality systems."
inputParameters:
- name: input_id
in: body
type: string
description: "The input id."
call: "royal-caribbean.onboard-activity-schedule"
with:
input_id: "{{input_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: resource
path: "/onboard/activity/schedule/{{input_id}}"
inputParameters:
- name: input_id
in: path
operations:
- name: onboard-activity-schedule
method: GET
Checks SAP MM inventory levels for food and beverage items on a ship, compares against sailing passenger count, and alerts the F&B manager via Microsoft Teams when stock is below threshold.
naftiko: "0.5"
info:
label: "Onboard Food and Beverage Inventory Alert"
description: "Checks SAP MM inventory levels for food and beverage items on a ship, compares against sailing passenger count, and alerts the F&B manager via Microsoft Teams when stock is below threshold."
tags:
- supply-chain
- inventory
- food-beverage
- sap
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fb-inventory
port: 8080
tools:
- name: check-fb-inventory
description: "Given a ship code and material category, check SAP inventory levels and alert if below threshold."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: material_category
in: body
type: string
description: "The F&B material category (e.g., beverages, proteins, produce)."
- name: passenger_count
in: body
type: number
description: "The total passenger count for the sailing."
steps:
- name: get-inventory
type: call
call: "sap.get-inventory"
with:
plant: "{{ship_code}}"
material_group: "{{material_category}}"
- name: alert-fb-manager
type: call
call: "msteams.send-message"
with:
channel_id: "fb_operations_{{ship_code}}"
text: "F&B Inventory Alert for {{ship_code}}: {{material_category}} stock: {{get-inventory.available_quantity}} units. Passengers: {{passenger_count}}. Per-guest ratio: {{get-inventory.per_guest_ratio}}."
consumes:
- type: http
namespace: sap
baseUri: "https://royalcaribbean-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: inventory
path: "/A_MatlStkInAcctMod?$filter=Plant eq '{{plant}}' and MaterialGroup eq '{{material_group}}'"
inputParameters:
- name: plant
in: path
- name: material_group
in: path
operations:
- name: get-inventory
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates onboard inventory replenishment pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Onboard Inventory Replenishment Pipeline"
description: "Orchestrates onboard inventory replenishment pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- onboard
- royal-caribbean
- snowflake
- slack
- jira
capability:
exposes:
- type: mcp
namespace: onboard
port: 8080
tools:
- name: onboard-inventory-replenishment-pipeline
description: "Orchestrates onboard inventory replenishment pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "snowflake.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "slack.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "jira.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://royalcaribbean.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: snowflake-resource
path: "/api/onboard"
operations:
- name: execute-1
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: slack-resource
path: "/api/onboard"
operations:
- name: execute-2
method: POST
- type: http
namespace: jira
baseUri: "https://royalcaribbean.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: jira-resource
path: "/api/onboard"
operations:
- name: execute-3
method: POST
Orchestrates onboard kids club management pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Onboard Kids Club Management Pipeline"
description: "Orchestrates onboard kids club management pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- onboard
- royal-caribbean
- salesforce
- servicenow
- snowflake
capability:
exposes:
- type: mcp
namespace: onboard
port: 8080
tools:
- name: onboard-kids-club-management-pipeline
description: "Orchestrates onboard kids club management pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "salesforce.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "servicenow.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "snowflake.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_access_token"
resources:
- name: salesforce-resource
path: "/api/onboard"
operations:
- name: execute-1
method: POST
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: servicenow-resource
path: "/api/onboard"
operations:
- name: execute-2
method: POST
- type: http
namespace: snowflake
baseUri: "https://royalcaribbean.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: snowflake-resource
path: "/api/onboard"
operations:
- name: execute-3
method: POST
Orchestrates onboard retail merchandising pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Onboard Retail Merchandising Pipeline"
description: "Orchestrates onboard retail merchandising pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- onboard
- royal-caribbean
- jira
- teams
- sap
capability:
exposes:
- type: mcp
namespace: onboard
port: 8080
tools:
- name: onboard-retail-merchandising-pipeline
description: "Orchestrates onboard retail merchandising pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "jira.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "teams.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "sap.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: jira
baseUri: "https://royalcaribbean.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: jira-resource
path: "/api/onboard"
operations:
- name: execute-1
method: POST
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: teams-resource
path: "/api/onboard"
operations:
- name: execute-2
method: POST
- type: http
namespace: sap
baseUri: "https://rc-erp.s4hana.ondemand.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: sap-resource
path: "/api/onboard"
operations:
- name: execute-3
method: POST
Orchestrates onboard revenue maximization pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Onboard Revenue Maximization Pipeline"
description: "Orchestrates onboard revenue maximization pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- onboard
- royal-caribbean
- slack
- jira
- teams
capability:
exposes:
- type: mcp
namespace: onboard
port: 8080
tools:
- name: onboard-revenue-maximization-pipeline
description: "Orchestrates onboard revenue maximization pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "slack.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "jira.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "teams.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: slack-resource
path: "/api/onboard"
operations:
- name: execute-1
method: POST
- type: http
namespace: jira
baseUri: "https://royalcaribbean.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: jira-resource
path: "/api/onboard"
operations:
- name: execute-2
method: POST
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: teams-resource
path: "/api/onboard"
operations:
- name: execute-3
method: POST
When a high-value guest boards, enriches their Salesforce profile with spend history, checks for upsell opportunities, and notifies the onboard revenue team via Microsoft Teams with personalized recommendations.
naftiko: "0.5"
info:
label: "Onboard Revenue Opportunity Alert"
description: "When a high-value guest boards, enriches their Salesforce profile with spend history, checks for upsell opportunities, and notifies the onboard revenue team via Microsoft Teams with personalized recommendations."
tags:
- revenue
- guest-services
- salesforce
- microsoft-teams
- personalization
capability:
exposes:
- type: mcp
namespace: onboard-revenue
port: 8080
tools:
- name: trigger-upsell-alert
description: "Given a guest ID and ship code, enrich profile and notify the revenue team with upsell opportunities."
inputParameters:
- name: guest_id
in: body
type: string
description: "The Salesforce guest record ID."
- name: ship_code
in: body
type: string
description: "The ship identifier code."
steps:
- name: get-guest
type: call
call: "salesforce.get-guest"
with:
guest_id: "{{guest_id}}"
- name: get-spend-history
type: call
call: "salesforce.get-spend-history"
with:
guest_id: "{{guest_id}}"
- name: notify-revenue-team
type: call
call: "msteams.send-message"
with:
channel_id: "onboard_revenue_{{ship_code}}"
text: "VIP Guest Alert: {{get-guest.name}} ({{get-guest.loyalty_tier}}). Past spend avg: ${{get-spend-history.avg_spend}}. Top categories: {{get-spend-history.top_categories}}. Cabin: {{get-guest.current_cabin}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: guests
path: "/sobjects/Guest__c/{{guest_id}}"
inputParameters:
- name: guest_id
in: path
operations:
- name: get-guest
method: GET
- name: spend-history
path: "/sobjects/Guest__c/{{guest_id}}/Spend_History__r"
inputParameters:
- name: guest_id
in: path
operations:
- name: get-spend-history
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Orchestrates onboard spa appointment pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Onboard Spa Appointment Pipeline"
description: "Orchestrates onboard spa appointment pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- onboard
- royal-caribbean
- datadog
- royal-caribbean
- salesforce
capability:
exposes:
- type: mcp
namespace: onboard
port: 8080
tools:
- name: onboard-spa-appointment-pipeline
description: "Orchestrates onboard spa appointment pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "datadog.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "royal-caribbean.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "salesforce.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: datadog-resource
path: "/api/onboard"
operations:
- name: execute-1
method: POST
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: royal-caribbean-resource
path: "/api/onboard"
operations:
- name: execute-2
method: POST
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_access_token"
resources:
- name: salesforce-resource
path: "/api/onboard"
operations:
- name: execute-3
method: POST
Retrieves firewall rule configurations from Palo Alto Networks for security auditing.
naftiko: "0.5"
info:
label: "Palo Alto Firewall Rule Audit"
description: "Retrieves firewall rule configurations from Palo Alto Networks for security auditing."
tags:
- security
- firewall
- palo-alto-networks
capability:
exposes:
- type: mcp
namespace: security-audit
port: 8080
tools:
- name: audit-firewall-rules
description: "Query Palo Alto for firewall rules."
inputParameters:
- name: device_group
in: body
type: string
description: "The device group name."
call: "paloalto.get-security-rules"
with:
device_group: "{{device_group}}"
consumes:
- type: http
namespace: paloalto
baseUri: "https://panorama.royalcaribbean.com/restapi/v10.2"
authentication:
type: apiKey
key: "$secrets.paloalto_api_key"
resources:
- name: security-rules
path: "/Policies/SecurityRules?location=device-group&device-group={{device_group}}"
inputParameters:
- name: device_group
in: path
operations:
- name: get-security-rules
method: GET
Orchestrates port agent coordination pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Port Agent Coordination Pipeline"
description: "Orchestrates port agent coordination pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- port
- royal-caribbean
- datadog
- royal-caribbean
- salesforce
capability:
exposes:
- type: mcp
namespace: port
port: 8080
tools:
- name: port-agent-coordination-pipeline
description: "Orchestrates port agent coordination pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "datadog.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "royal-caribbean.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "salesforce.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: datadog-resource
path: "/api/port"
operations:
- name: execute-1
method: POST
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: royal-caribbean-resource
path: "/api/port"
operations:
- name: execute-2
method: POST
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_access_token"
resources:
- name: salesforce-resource
path: "/api/port"
operations:
- name: execute-3
method: POST
Retrieves port clearance status data from the Royal Caribbean cruise line and hospitality systems.
naftiko: "0.5"
info:
label: "Port Clearance Status"
description: "Retrieves port clearance status data from the Royal Caribbean cruise line and hospitality systems."
tags:
- port
- royal-caribbean
- status
capability:
exposes:
- type: mcp
namespace: port
port: 8080
tools:
- name: port-clearance-status
description: "Retrieves port clearance status data from the Royal Caribbean cruise line and hospitality systems."
inputParameters:
- name: input_id
in: body
type: string
description: "The input id."
call: "royal-caribbean.port-clearance-status"
with:
input_id: "{{input_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: resource
path: "/port/clearance/status/{{input_id}}"
inputParameters:
- name: input_id
in: path
operations:
- name: port-clearance-status
method: GET
When a ship is approaching a port, creates a SAP purchase requisition for provisions, opens a ServiceNow logistics task, and notifies the supply chain team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Port Provisioning Request Pipeline"
description: "When a ship is approaching a port, creates a SAP purchase requisition for provisions, opens a ServiceNow logistics task, and notifies the supply chain team via Microsoft Teams."
tags:
- supply-chain
- provisioning
- sap
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: port-provisioning
port: 8080
tools:
- name: request-port-provisions
description: "Given a ship code and port, create a SAP requisition, open a logistics task, and notify supply chain."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: port_name
in: body
type: string
description: "The provisioning port name."
- name: provision_category
in: body
type: string
description: "The provision category."
- name: arrival_date
in: body
type: string
description: "Port arrival date."
steps:
- name: create-requisition
type: call
call: "sap.create-requisition"
with:
plant: "{{ship_code}}"
material_group: "{{provision_category}}"
delivery_date: "{{arrival_date}}"
description: "Port provisioning for {{ship_code}} at {{port_name}}"
- name: create-logistics-task
type: call
call: "servicenow.create-task"
with:
short_description: "Port provisioning: {{ship_code}} at {{port_name}} — {{arrival_date}}"
assigned_group: "Supply_Chain_Logistics"
description: "SAP requisition {{create-requisition.req_number}} for {{provision_category}} at {{port_name}}."
- name: notify-supply-chain
type: call
call: "msteams.send-message"
with:
channel_id: "supply_chain_ops"
text: "Port Provisioning: {{ship_code}} at {{port_name}} ({{arrival_date}}). SAP Req: {{create-requisition.req_number}}. Task: {{create-logistics-task.number}}."
consumes:
- type: http
namespace: sap
baseUri: "https://royalcaribbean-s4.sap.com/sap/opu/odata/sap/MM_PUR_REQUISITION_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: requisitions
path: "/A_PurchaseRequisition"
operations:
- name: create-requisition
method: POST
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
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 fleet revenue management dashboard and returns the refresh status.
naftiko: "0.5"
info:
label: "Revenue Management Dashboard Refresh"
description: "Triggers a Power BI dataset refresh for the fleet revenue management dashboard and returns the refresh status."
tags:
- revenue
- analytics
- power-bi
capability:
exposes:
- type: mcp
namespace: revenue-analytics
port: 8080
tools:
- name: refresh-revenue-dashboard
description: "Trigger a dataset refresh for a Power BI revenue management dashboard."
inputParameters:
- name: dataset_id
in: body
type: string
description: "The Power BI dataset ID."
call: "powerbi.refresh-dataset"
with:
dataset_id: "{{dataset_id}}"
consumes:
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0/myorg"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets/{{dataset_id}}/refreshes"
inputParameters:
- name: dataset_id
in: path
operations:
- name: refresh-dataset
method: POST
Tracks crew safety drill completion by querying Workday training records, verifies against regulatory requirements, and opens a ServiceNow task for any compliance gaps before sailing.
naftiko: "0.5"
info:
label: "Safety Drill Compliance Tracker"
description: "Tracks crew safety drill completion by querying Workday training records, verifies against regulatory requirements, and opens a ServiceNow task for any compliance gaps before sailing."
tags:
- safety
- compliance
- workday
- servicenow
capability:
exposes:
- type: mcp
namespace: safety-compliance
port: 8080
tools:
- name: check-safety-drill-compliance
description: "Given a ship code and sailing date, check crew drill completion in Workday and flag gaps in ServiceNow."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: sailing_date
in: body
type: string
description: "The sailing departure date."
steps:
- name: get-crew-training
type: call
call: "workday.get-crew-training"
with:
ship_code: "{{ship_code}}"
training_type: "safety_drill"
- name: open-gap-task
type: call
call: "servicenow.create-task"
with:
short_description: "Safety drill compliance gaps: {{ship_code}} — {{sailing_date}}"
description: "Ship {{ship_code}} sailing {{sailing_date}}. Crew completed: {{get-crew-training.completed_count}}/{{get-crew-training.total_crew}}. Non-compliant: {{get-crew-training.non_compliant_list}}."
assigned_group: "Safety_Compliance_{{ship_code}}"
category: "safety_compliance"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: training
path: "/workers?training_type={{training_type}}&location={{ship_code}}"
inputParameters:
- name: training_type
in: path
- name: ship_code
in: path
operations:
- name: get-crew-training
method: GET
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: tasks
path: "/table/task"
operations:
- name: create-task
method: POST
Retrieves a guest profile from Salesforce by guest ID, returning loyalty tier, sailing history count, dietary preferences, and contact information.
naftiko: "0.5"
info:
label: "Salesforce Guest Profile Lookup"
description: "Retrieves a guest profile from Salesforce by guest ID, returning loyalty tier, sailing history count, dietary preferences, and contact information."
tags:
- guest-services
- crm
- salesforce
capability:
exposes:
- type: mcp
namespace: guest-crm
port: 8080
tools:
- name: get-guest-profile
description: "Look up a guest profile in Salesforce by guest ID."
inputParameters:
- name: guest_id
in: body
type: string
description: "The Salesforce guest record ID."
call: "salesforce.get-guest"
with:
guest_id: "{{guest_id}}"
outputParameters:
- name: loyalty_tier
type: string
mapping: "$.Loyalty_Tier__c"
- name: sailing_count
type: number
mapping: "$.Total_Sailings__c"
- name: dietary_preferences
type: string
mapping: "$.Dietary_Preferences__c"
- name: email
type: string
mapping: "$.Email"
consumes:
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: guests
path: "/sobjects/Guest__c/{{guest_id}}"
inputParameters:
- name: guest_id
in: path
operations:
- name: get-guest
method: GET
Creates a marketing campaign in Salesforce Marketing Cloud, sets up Google Analytics tracking, and notifies the marketing team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Salesforce Marketing Campaign Launcher"
description: "Creates a marketing campaign in Salesforce Marketing Cloud, sets up Google Analytics tracking, and notifies the marketing team via Microsoft Teams."
tags:
- marketing
- campaigns
- salesforce-marketing-cloud
- google-analytics
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: marketing-campaigns
port: 8080
tools:
- name: launch-campaign
description: "Given campaign details, create in Salesforce Marketing Cloud, set up GA tracking, and notify the team."
inputParameters:
- name: campaign_name
in: body
type: string
description: "The marketing campaign name."
- name: target_segment
in: body
type: string
description: "The target audience segment."
- name: launch_date
in: body
type: string
description: "The campaign launch date."
steps:
- name: create-campaign
type: call
call: "sfmc.create-campaign"
with:
name: "{{campaign_name}}"
segment: "{{target_segment}}"
launch_date: "{{launch_date}}"
- name: notify-marketing
type: call
call: "msteams.send-message"
with:
channel_id: "marketing_campaigns"
text: "Campaign Launched: {{campaign_name}} targeting {{target_segment}}. Launch: {{launch_date}}. SFMC ID: {{create-campaign.campaign_id}}."
consumes:
- type: http
namespace: sfmc
baseUri: "https://royalcaribbean.rest.marketingcloudapis.com/v1"
authentication:
type: bearer
token: "$secrets.sfmc_token"
resources:
- name: campaigns
path: "/campaigns"
operations:
- name: create-campaign
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a Salesforce opportunity by ID for the corporate sales team.
naftiko: "0.5"
info:
label: "Salesforce Opportunity Lookup"
description: "Retrieves a Salesforce opportunity by ID for the corporate sales team."
tags:
- sales
- crm
- salesforce
capability:
exposes:
- type: mcp
namespace: sales-crm
port: 8080
tools:
- name: get-opportunity
description: "Look up a Salesforce opportunity."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "The opportunity ID."
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.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
Retrieves a SAP Concur expense report by ID and returns total amount, approval status, and expense entries.
naftiko: "0.5"
info:
label: "SAP Concur Expense Report Lookup"
description: "Retrieves a SAP Concur expense report by ID and returns total amount, approval status, and expense entries."
tags:
- finance
- expense
- sap-concur
capability:
exposes:
- type: mcp
namespace: finance-expense
port: 8080
tools:
- name: get-expense-report
description: "Look up a SAP Concur expense report by ID."
inputParameters:
- name: report_id
in: body
type: string
description: "The SAP Concur expense report ID."
call: "concur.get-expense-report"
with:
report_id: "{{report_id}}"
outputParameters:
- name: report_name
type: string
mapping: "$.Name"
- name: total_amount
type: number
mapping: "$.Total"
- name: approval_status
type: string
mapping: "$.ApprovalStatusName"
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/{{report_id}}"
inputParameters:
- name: report_id
in: path
operations:
- name: get-expense-report
method: GET
Looks up a SAP S/4HANA purchase order by number and returns header status, vendor, total value, and delivery date.
naftiko: "0.5"
info:
label: "SAP Purchase Order Status"
description: "Looks up a SAP S/4HANA purchase order by number and returns header status, vendor, total value, and delivery date."
tags:
- procurement
- erp
- sap-s4hana
capability:
exposes:
- type: mcp
namespace: procurement
port: 8080
tools:
- name: get-purchase-order
description: "Look up a SAP purchase order by PO number."
inputParameters:
- name: po_number
in: body
type: string
description: "The SAP purchase order number."
call: "sap.get-po"
with:
po_number: "{{po_number}}"
outputParameters:
- name: status
type: string
mapping: "$.d.OverallStatus"
- name: vendor
type: string
mapping: "$.d.Supplier.CompanyName"
- name: total_value
type: string
mapping: "$.d.TotalAmount"
consumes:
- type: http
namespace: sap
baseUri: "https://royalcaribbean-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: purchase-orders
path: "/A_PurchaseOrder('{{po_number}}')"
inputParameters:
- name: po_number
in: path
operations:
- name: get-po
method: GET
Retrieves a ServiceNow incident by number and returns its state, priority, assigned group, and short description for IT operations teams.
naftiko: "0.5"
info:
label: "ServiceNow Incident Lookup"
description: "Retrieves a ServiceNow incident by number and returns its state, priority, assigned group, and short description for IT operations teams."
tags:
- it-operations
- itsm
- servicenow
capability:
exposes:
- type: mcp
namespace: itsm
port: 8080
tools:
- name: get-incident
description: "Look up a ServiceNow incident by number and return its current state and assignment."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number."
call: "servicenow.get-incident"
with:
incident_number: "{{incident_number}}"
outputParameters:
- name: state
type: string
mapping: "$.result.state"
- name: priority
type: string
mapping: "$.result.priority"
- name: assigned_group
type: string
mapping: "$.result.assignment_group.display_value"
consumes:
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident?sysparm_query=number={{incident_number}}"
inputParameters:
- name: incident_number
in: path
operations:
- name: get-incident
method: GET
Searches a SharePoint site for operational documents by keyword and returns matching file names and URLs.
naftiko: "0.5"
info:
label: "SharePoint Document Search"
description: "Searches a SharePoint site for operational documents by keyword and returns matching file names and URLs."
tags:
- documentation
- sharepoint
capability:
exposes:
- type: mcp
namespace: doc-search
port: 8080
tools:
- name: search-documents
description: "Search SharePoint for documents by keyword."
inputParameters:
- name: site_id
in: body
type: string
description: "The SharePoint site ID."
- name: query
in: body
type: string
description: "The search keyword."
call: "sharepoint.search"
with:
site_id: "{{site_id}}"
query: "{{query}}"
consumes:
- type: http
namespace: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: search
path: "/{{site_id}}/drive/root/search(q='{{query}}')"
inputParameters:
- name: site_id
in: path
- name: query
in: path
operations:
- name: search
method: GET
Orchestrates ship cyber security monitoring pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Ship Cyber Security Monitoring Pipeline"
description: "Orchestrates ship cyber security monitoring pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- ship
- royal-caribbean
- royal-caribbean
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: ship
port: 8080
tools:
- name: ship-cyber-security-monitoring-pipeline
description: "Orchestrates ship cyber security monitoring pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "royal-caribbean.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "salesforce.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "servicenow.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: royal-caribbean-resource
path: "/api/ship"
operations:
- name: execute-1
method: POST
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_access_token"
resources:
- name: salesforce-resource
path: "/api/ship"
operations:
- name: execute-2
method: POST
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: servicenow-resource
path: "/api/ship"
operations:
- name: execute-3
method: POST
Orchestrates ship drydock planning pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Ship Drydock Planning Pipeline"
description: "Orchestrates ship drydock planning pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- ship
- royal-caribbean
- slack
- jira
- teams
capability:
exposes:
- type: mcp
namespace: ship
port: 8080
tools:
- name: ship-drydock-planning-pipeline
description: "Orchestrates ship drydock planning pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "slack.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "jira.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "teams.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: slack-resource
path: "/api/ship"
operations:
- name: execute-1
method: POST
- type: http
namespace: jira
baseUri: "https://royalcaribbean.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: jira-resource
path: "/api/ship"
operations:
- name: execute-2
method: POST
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: teams-resource
path: "/api/ship"
operations:
- name: execute-3
method: POST
Orchestrates ship environmental compliance pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Ship Environmental Compliance Pipeline"
description: "Orchestrates ship environmental compliance pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- ship
- royal-caribbean
- salesforce
- servicenow
- snowflake
capability:
exposes:
- type: mcp
namespace: ship
port: 8080
tools:
- name: ship-environmental-compliance-pipeline
description: "Orchestrates ship environmental compliance pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "salesforce.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "servicenow.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "snowflake.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_access_token"
resources:
- name: salesforce-resource
path: "/api/ship"
operations:
- name: execute-1
method: POST
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: servicenow-resource
path: "/api/ship"
operations:
- name: execute-2
method: POST
- type: http
namespace: snowflake
baseUri: "https://royalcaribbean.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: snowflake-resource
path: "/api/ship"
operations:
- name: execute-3
method: POST
Retrieves ship fuel consumption report data from the Royal Caribbean cruise line and hospitality systems.
naftiko: "0.5"
info:
label: "Ship Fuel Consumption Report"
description: "Retrieves ship fuel consumption report data from the Royal Caribbean cruise line and hospitality systems."
tags:
- ship
- royal-caribbean
- report
capability:
exposes:
- type: mcp
namespace: ship
port: 8080
tools:
- name: ship-fuel-consumption-report
description: "Retrieves ship fuel consumption report data from the Royal Caribbean cruise line and hospitality systems."
inputParameters:
- name: input_id
in: body
type: string
description: "The input id."
call: "royal-caribbean.ship-fuel-consumption-report"
with:
input_id: "{{input_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: resource
path: "/ship/fuel/consumption/report/{{input_id}}"
inputParameters:
- name: input_id
in: path
operations:
- name: ship-fuel-consumption-report
method: GET
Orchestrates ship fuel optimization pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Ship Fuel Optimization Pipeline"
description: "Orchestrates ship fuel optimization pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- ship
- royal-caribbean
- royal-caribbean
- salesforce
- servicenow
capability:
exposes:
- type: mcp
namespace: ship
port: 8080
tools:
- name: ship-fuel-optimization-pipeline
description: "Orchestrates ship fuel optimization pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "royal-caribbean.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "salesforce.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "servicenow.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: royal-caribbean-resource
path: "/api/ship"
operations:
- name: execute-1
method: POST
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_access_token"
resources:
- name: salesforce-resource
path: "/api/ship"
operations:
- name: execute-2
method: POST
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: servicenow-resource
path: "/api/ship"
operations:
- name: execute-3
method: POST
Provisions ship inventory by calculating needs based on guest count, ordering from suppliers, and coordinating port delivery.
naftiko: "0.5"
info:
label: "Ship Inventory Provisioning Pipeline"
description: "Provisions ship inventory by calculating needs based on guest count, ordering from suppliers, and coordinating port delivery."
tags:
- provisioning
- royal-caribbean
- sap
- slack
capability:
exposes:
- type: mcp
namespace: provisioning
port: 8080
tools:
- name: ship-inventory-provisioning-pipeline
description: "Provisions ship inventory by calculating needs based on guest count, ordering from suppliers, and coordinating port delivery."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: calculate-needs
type: call
call: "snowflake.run-query"
with:
input: "{{input_id}}"
- name: create-orders
type: call
call: "sap.create-po"
with:
input: "{{input_id}}"
- name: notify-ops
type: call
call: "slack.post-message"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://royalcaribbean.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: snowflake-resource
path: "/statements"
operations:
- name: run-query
method: POST
- type: http
namespace: sap
baseUri: "https://rc-erp.s4hana.ondemand.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: sap-resource
path: "/purchase-orders"
operations:
- name: create-po
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: slack-resource
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves ship maintenance log lookup data from the Royal Caribbean cruise line and hospitality systems.
naftiko: "0.5"
info:
label: "Ship Maintenance Log Lookup"
description: "Retrieves ship maintenance log lookup data from the Royal Caribbean cruise line and hospitality systems."
tags:
- ship
- royal-caribbean
- lookup
capability:
exposes:
- type: mcp
namespace: ship
port: 8080
tools:
- name: ship-maintenance-log-lookup
description: "Retrieves ship maintenance log lookup data from the Royal Caribbean cruise line and hospitality systems."
inputParameters:
- name: input_id
in: body
type: string
description: "The input id."
call: "royal-caribbean.ship-maintenance-log-lookup"
with:
input_id: "{{input_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: resource
path: "/ship/maintenance/log/lookup/{{input_id}}"
inputParameters:
- name: input_id
in: path
operations:
- name: ship-maintenance-log-lookup
method: GET
Orchestrates ship paint maintenance pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Ship Paint Maintenance Pipeline"
description: "Orchestrates ship paint maintenance pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- ship
- royal-caribbean
- snowflake
- slack
- jira
capability:
exposes:
- type: mcp
namespace: ship
port: 8080
tools:
- name: ship-paint-maintenance-pipeline
description: "Orchestrates ship paint maintenance pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "snowflake.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "slack.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "jira.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://royalcaribbean.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: snowflake-resource
path: "/api/ship"
operations:
- name: execute-1
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: slack-resource
path: "/api/ship"
operations:
- name: execute-2
method: POST
- type: http
namespace: jira
baseUri: "https://royalcaribbean.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: jira-resource
path: "/api/ship"
operations:
- name: execute-3
method: POST
Retrieves ship position tracking data from the Royal Caribbean cruise line and hospitality systems.
naftiko: "0.5"
info:
label: "Ship Position Tracking"
description: "Retrieves ship position tracking data from the Royal Caribbean cruise line and hospitality systems."
tags:
- ship
- royal-caribbean
- tracking
capability:
exposes:
- type: mcp
namespace: ship
port: 8080
tools:
- name: ship-position-tracking
description: "Retrieves ship position tracking data from the Royal Caribbean cruise line and hospitality systems."
inputParameters:
- name: input_id
in: body
type: string
description: "The input id."
call: "royal-caribbean.ship-position-tracking"
with:
input_id: "{{input_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: resource
path: "/ship/position/tracking/{{input_id}}"
inputParameters:
- name: input_id
in: path
operations:
- name: ship-position-tracking
method: GET
Orchestrates ship provisioning pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Ship Provisioning Pipeline"
description: "Orchestrates ship provisioning pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- ship
- royal-caribbean
- servicenow
- snowflake
- slack
capability:
exposes:
- type: mcp
namespace: ship
port: 8080
tools:
- name: ship-provisioning-pipeline
description: "Orchestrates ship provisioning pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "servicenow.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "snowflake.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "slack.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://royalcaribbean.service-now.com/api/now"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: servicenow-resource
path: "/api/ship"
operations:
- name: execute-1
method: POST
- type: http
namespace: snowflake
baseUri: "https://royalcaribbean.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: snowflake-resource
path: "/api/ship"
operations:
- name: execute-2
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: slack-resource
path: "/api/ship"
operations:
- name: execute-3
method: POST
Orchestrates ship safety drill compliance pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Ship Safety Drill Compliance Pipeline"
description: "Orchestrates ship safety drill compliance pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- ship
- royal-caribbean
- teams
- sap
- sendgrid
capability:
exposes:
- type: mcp
namespace: ship
port: 8080
tools:
- name: ship-safety-drill-compliance-pipeline
description: "Orchestrates ship safety drill compliance pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "teams.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "sap.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "sendgrid.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: teams-resource
path: "/api/ship"
operations:
- name: execute-1
method: POST
- type: http
namespace: sap
baseUri: "https://rc-erp.s4hana.ondemand.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: sap-resource
path: "/api/ship"
operations:
- name: execute-2
method: POST
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: sendgrid-resource
path: "/api/ship"
operations:
- name: execute-3
method: POST
Orchestrates ship technical maintenance pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Ship Technical Maintenance Pipeline"
description: "Orchestrates ship technical maintenance pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- ship
- royal-caribbean
- teams
- sap
- sendgrid
capability:
exposes:
- type: mcp
namespace: ship
port: 8080
tools:
- name: ship-technical-maintenance-pipeline
description: "Orchestrates ship technical maintenance pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "teams.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "sap.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "sendgrid.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: teams-resource
path: "/api/ship"
operations:
- name: execute-1
method: POST
- type: http
namespace: sap
baseUri: "https://rc-erp.s4hana.ondemand.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: sap-resource
path: "/api/ship"
operations:
- name: execute-2
method: POST
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: sendgrid-resource
path: "/api/ship"
operations:
- name: execute-3
method: POST
Orchestrates ship waste management pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Ship Waste Management Pipeline"
description: "Orchestrates ship waste management pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- ship
- royal-caribbean
- sap
- sendgrid
- datadog
capability:
exposes:
- type: mcp
namespace: ship
port: 8080
tools:
- name: ship-waste-management-pipeline
description: "Orchestrates ship waste management pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "sap.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "sendgrid.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "datadog.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://rc-erp.s4hana.ondemand.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: sap-resource
path: "/api/ship"
operations:
- name: execute-1
method: POST
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: sendgrid-resource
path: "/api/ship"
operations:
- name: execute-2
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: datadog-resource
path: "/api/ship"
operations:
- name: execute-3
method: POST
Retrieves shore excursion availability data from the Royal Caribbean cruise line and hospitality systems.
naftiko: "0.5"
info:
label: "Shore Excursion Availability"
description: "Retrieves shore excursion availability data from the Royal Caribbean cruise line and hospitality systems."
tags:
- shore
- royal-caribbean
- availability
capability:
exposes:
- type: mcp
namespace: shore
port: 8080
tools:
- name: shore-excursion-availability
description: "Retrieves shore excursion availability data from the Royal Caribbean cruise line and hospitality systems."
inputParameters:
- name: input_id
in: body
type: string
description: "The input id."
call: "royal-caribbean.shore-excursion-availability"
with:
input_id: "{{input_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: resource
path: "/shore/excursion/availability/{{input_id}}"
inputParameters:
- name: input_id
in: path
operations:
- name: shore-excursion-availability
method: GET
When a shore excursion is booked in the reservation system, updates the guest itinerary in Salesforce, confirms the booking with the Amadeus excursion provider, and sends a confirmation to the guest via MailChimp.
naftiko: "0.5"
info:
label: "Shore Excursion Booking Sync"
description: "When a shore excursion is booked in the reservation system, updates the guest itinerary in Salesforce, confirms the booking with the Amadeus excursion provider, and sends a confirmation to the guest via MailChimp."
tags:
- excursions
- reservations
- salesforce
- amadeus
- mailchimp
capability:
exposes:
- type: mcp
namespace: excursion-booking
port: 8080
tools:
- name: sync-excursion-booking
description: "Given a guest ID and excursion ID, update Salesforce itinerary, confirm with Amadeus, and send guest confirmation."
inputParameters:
- name: guest_id
in: body
type: string
description: "The Salesforce guest record ID."
- name: excursion_id
in: body
type: string
description: "The shore excursion product ID."
- name: port_date
in: body
type: string
description: "The port date in YYYY-MM-DD format."
steps:
- name: get-excursion
type: call
call: "amadeus.get-excursion"
with:
excursion_id: "{{excursion_id}}"
- name: update-itinerary
type: call
call: "salesforce.update-itinerary"
with:
guest_id: "{{guest_id}}"
activity_name: "{{get-excursion.name}}"
activity_date: "{{port_date}}"
activity_type: "shore_excursion"
- name: confirm-booking
type: call
call: "amadeus.confirm-booking"
with:
excursion_id: "{{excursion_id}}"
guest_id: "{{guest_id}}"
date: "{{port_date}}"
- name: send-confirmation
type: call
call: "mailchimp.send-transactional"
with:
template_id: "excursion_confirmation"
recipient_email: "{{update-itinerary.guest_email}}"
merge_vars: "excursion_name={{get-excursion.name}},date={{port_date}},confirmation={{confirm-booking.confirmation_code}}"
consumes:
- type: http
namespace: amadeus
baseUri: "https://api.amadeus.com/v1"
authentication:
type: bearer
token: "$secrets.amadeus_token"
resources:
- name: excursions
path: "/shopping/activities/{{excursion_id}}"
inputParameters:
- name: excursion_id
in: path
operations:
- name: get-excursion
method: GET
- name: bookings
path: "/booking/activities"
operations:
- name: confirm-booking
method: POST
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: itinerary
path: "/sobjects/Guest_Itinerary__c"
operations:
- name: update-itinerary
method: POST
- type: http
namespace: mailchimp
baseUri: "https://mandrillapp.com/api/1.0"
authentication:
type: apiKey
key: "$secrets.mailchimp_api_key"
resources:
- name: transactional
path: "/messages/send-template"
operations:
- name: send-transactional
method: POST
Orchestrates shore excursion vendor pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders.
naftiko: "0.5"
info:
label: "Shore Excursion Vendor Pipeline"
description: "Orchestrates shore excursion vendor pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
tags:
- shore
- royal-caribbean
- sap
- sendgrid
- datadog
capability:
exposes:
- type: mcp
namespace: shore
port: 8080
tools:
- name: shore-excursion-vendor-pipeline
description: "Orchestrates shore excursion vendor pipeline across cruise line and hospitality systems, coordinating multiple services and notifying stakeholders."
inputParameters:
- name: input_id
in: body
type: string
description: "The primary input identifier."
steps:
- name: step-1
type: call
call: "sap.execute-1"
with:
input: "{{input_id}}"
- name: step-2
type: call
call: "sendgrid.execute-2"
with:
input: "{{input_id}}"
- name: step-3
type: call
call: "datadog.execute-3"
with:
input: "{{input_id}}"
consumes:
- type: http
namespace: sap
baseUri: "https://rc-erp.s4hana.ondemand.com/api/v1"
authentication:
type: bearer
token: "$secrets.sap_token"
resources:
- name: sap-resource
path: "/api/shore"
operations:
- name: execute-1
method: POST
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: sendgrid-resource
path: "/api/shore"
operations:
- name: execute-2
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
resources:
- name: datadog-resource
path: "/api/shore"
operations:
- name: execute-3
method: POST
Queries SolarWinds for network node health at a ship or shore facility.
naftiko: "0.5"
info:
label: "SolarWinds Network Health Check"
description: "Queries SolarWinds for network node health at a ship or shore facility."
tags:
- networking
- infrastructure
- solarwinds
capability:
exposes:
- type: mcp
namespace: network-health
port: 8080
tools:
- name: get-network-health
description: "Query SolarWinds for network node health."
inputParameters:
- name: location
in: body
type: string
description: "The location name."
call: "solarwinds.query-nodes"
with:
location: "{{location}}"
consumes:
- type: http
namespace: solarwinds
baseUri: "https://solarwinds.royalcaribbean.com:17778/SolarWinds/InformationService/v3/Json"
authentication:
type: basic
username: "$secrets.solarwinds_user"
password: "$secrets.solarwinds_password"
resources:
- name: nodes
path: "/Query?query=SELECT+NodeID,Caption,Status+FROM+Orion.Nodes+WHERE+Location='{{location}}'"
inputParameters:
- name: location
in: path
operations:
- name: query-nodes
method: GET
Queries the onboard point-of-sale data in Salesforce for spa and wellness revenue by ship and date range, returning total revenue, service counts, and average transaction value.
naftiko: "0.5"
info:
label: "Spa and Wellness Revenue Tracker"
description: "Queries the onboard point-of-sale data in Salesforce for spa and wellness revenue by ship and date range, returning total revenue, service counts, and average transaction value."
tags:
- revenue
- onboard-operations
- spa
- salesforce
capability:
exposes:
- type: mcp
namespace: spa-revenue
port: 8080
tools:
- name: get-spa-revenue
description: "Query spa and wellness revenue for a ship and date range."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: start_date
in: body
type: string
description: "Start date."
- name: end_date
in: body
type: string
description: "End date."
call: "salesforce.get-spa-revenue"
with:
ship_code: "{{ship_code}}"
start_date: "{{start_date}}"
end_date: "{{end_date}}"
outputParameters:
- name: total_revenue
type: number
mapping: "$.Total_Revenue__c"
- name: service_count
type: number
mapping: "$.Service_Count__c"
- name: avg_transaction
type: number
mapping: "$.Avg_Transaction__c"
consumes:
- type: http
namespace: salesforce
baseUri: "https://royalcaribbean.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: spa-revenue
path: "/query?q=SELECT+Total_Revenue__c,Service_Count__c,Avg_Transaction__c+FROM+Spa_Revenue__c+WHERE+Ship__c='{{ship_code}}'+AND+Date__c>={{start_date}}+AND+Date__c<={{end_date}}"
inputParameters:
- name: ship_code
in: path
- name: start_date
in: path
- name: end_date
in: path
operations:
- name: get-spa-revenue
method: GET
Retrieves stateroom availability lookup data from the Royal Caribbean cruise line and hospitality systems.
naftiko: "0.5"
info:
label: "Stateroom Availability Lookup"
description: "Retrieves stateroom availability lookup data from the Royal Caribbean cruise line and hospitality systems."
tags:
- stateroom
- royal-caribbean
- lookup
capability:
exposes:
- type: mcp
namespace: stateroom
port: 8080
tools:
- name: stateroom-availability-lookup
description: "Retrieves stateroom availability lookup data from the Royal Caribbean cruise line and hospitality systems."
inputParameters:
- name: input_id
in: body
type: string
description: "The input id."
call: "royal-caribbean.stateroom-availability-lookup"
with:
input_id: "{{input_id}}"
outputParameters:
- name: result
type: string
mapping: "$.data"
- name: status
type: string
mapping: "$.status"
consumes:
- type: http
namespace: royal-caribbean
baseUri: "https://api.royalcaribbean.com/v2"
authentication:
type: bearer
token: "$secrets.rc_api_token"
resources:
- name: resource
path: "/stateroom/availability/lookup/{{input_id}}"
inputParameters:
- name: input_id
in: path
operations:
- name: stateroom-availability-lookup
method: GET
Aggregates fuel consumption data from SAP PM, emissions calculations, and waste management metrics, then publishes a weekly sustainability report to Confluence and notifies the sustainability team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Sustainability Metrics Reporter"
description: "Aggregates fuel consumption data from SAP PM, emissions calculations, and waste management metrics, then publishes a weekly sustainability report to Confluence and notifies the sustainability team via Microsoft Teams."
tags:
- sustainability
- reporting
- sap
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: sustainability
port: 8080
tools:
- name: generate-sustainability-report
description: "Given a ship code and reporting period, aggregate sustainability metrics, publish to Confluence, and notify the team."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: period
in: body
type: string
description: "The reporting period (e.g., 2026-W12)."
steps:
- name: get-fuel-data
type: call
call: "sap.get-fuel-consumption"
with:
plant: "{{ship_code}}"
period: "{{period}}"
- name: publish-report
type: call
call: "confluence.create-page"
with:
space_key: "SUSTAIN"
title: "Sustainability Report: {{ship_code}} — {{period}}"
body: "Ship {{ship_code}} ({{period}}): Fuel consumed: {{get-fuel-data.total_fuel}} MT. CO2 emissions: {{get-fuel-data.co2_emissions}} MT. Efficiency: {{get-fuel-data.efficiency_rating}}."
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "sustainability"
text: "Sustainability Report Published: {{ship_code}} — {{period}}. Fuel: {{get-fuel-data.total_fuel}} MT. CO2: {{get-fuel-data.co2_emissions}} MT. Report: {{publish-report.url}}."
consumes:
- type: http
namespace: sap
baseUri: "https://royalcaribbean-s4.sap.com/sap/opu/odata/sap/PM_FUEL_SRV"
authentication:
type: basic
username: "$secrets.sap_user"
password: "$secrets.sap_password"
resources:
- name: fuel
path: "/FuelConsumption?$filter=Plant eq '{{plant}}' and Period eq '{{period}}'"
inputParameters:
- name: plant
in: path
- name: period
in: path
operations:
- name: get-fuel-consumption
method: GET
- type: http
namespace: confluence
baseUri: "https://royalcaribbean.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_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: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves a Tableau view for fleet performance KPIs and posts the dashboard link to Microsoft Teams for the executive daily briefing.
naftiko: "0.5"
info:
label: "Tableau Fleet Performance Dashboard"
description: "Retrieves a Tableau view for fleet performance KPIs and posts the dashboard link to Microsoft Teams for the executive daily briefing."
tags:
- analytics
- fleet-management
- tableau
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: fleet-analytics
port: 8080
tools:
- name: share-fleet-dashboard
description: "Fetch a Tableau fleet performance view and share to Microsoft Teams."
inputParameters:
- name: workbook_id
in: body
type: string
description: "The Tableau workbook ID."
- name: view_id
in: body
type: string
description: "The Tableau view ID."
steps:
- name: get-view
type: call
call: "tableau.get-view"
with:
workbook_id: "{{workbook_id}}"
view_id: "{{view_id}}"
- name: post-to-teams
type: call
call: "msteams.send-message"
with:
channel_id: "executive_briefing"
text: "Fleet Performance Dashboard: {{get-view.url}}"
consumes:
- type: http
namespace: tableau
baseUri: "https://tableau.royalcaribbean.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: views
path: "/sites/$secrets.tableau_site_id/workbooks/{{workbook_id}}/views/{{view_id}}"
inputParameters:
- name: workbook_id
in: path
- name: view_id
in: path
operations:
- name: get-view
method: GET
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Retrieves employee compensation data from Workday and sends a review to the manager via Microsoft Outlook.
naftiko: "0.5"
info:
label: "Workday Compensation Review Pipeline"
description: "Retrieves employee compensation data from Workday and sends a review to the manager via Microsoft Outlook."
tags:
- hr
- compensation
- workday
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: hr-compensation
port: 8080
tools:
- name: generate-comp-review
description: "Generate a compensation review for an employee."
inputParameters:
- name: employee_id
in: body
type: string
description: "Workday employee ID."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
- name: get-compensation
type: call
call: "workday.get-compensation"
with:
worker_id: "{{employee_id}}"
- name: send-review
type: call
call: "outlook.send-mail"
with:
recipient: "{{get-employee.manager_email}}"
subject: "Compensation Review: {{get-employee.full_name}}"
body: "Employee: {{get-employee.full_name}}. Base: {{get-compensation.base_pay}}. Performance: {{get-compensation.performance_rating}}."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- name: compensation
path: "/workers/{{worker_id}}/compensation"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-compensation
method: GET
- type: http
namespace: outlook
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/me/sendMail"
operations:
- name: send-mail
method: POST
Retrieves a Workday worker profile by employee ID and returns name, department, position, and manager for HR and operations teams.
naftiko: "0.5"
info:
label: "Workday Employee Profile Lookup"
description: "Retrieves a Workday worker profile by employee ID and returns name, department, position, and manager for HR and operations teams."
tags:
- hr
- employee-data
- workday
capability:
exposes:
- type: mcp
namespace: hr-data
port: 8080
tools:
- name: get-employee-profile
description: "Look up a Workday employee by ID and return their profile details."
inputParameters:
- name: employee_id
in: body
type: string
description: "The Workday worker ID."
call: "workday.get-worker"
with:
worker_id: "{{employee_id}}"
outputParameters:
- name: full_name
type: string
mapping: "$.descriptor"
- name: department
type: string
mapping: "$.primaryPosition.department"
- name: position
type: string
mapping: "$.primaryPosition.jobTitle"
- name: manager
type: string
mapping: "$.primaryPosition.manager.descriptor"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
Creates a Zoom meeting and sends the join link to participants via Microsoft Teams.
naftiko: "0.5"
info:
label: "Zoom Meeting Scheduler"
description: "Creates a Zoom meeting and sends the join link to participants via Microsoft Teams."
tags:
- collaboration
- meetings
- zoom
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: collaboration
port: 8080
tools:
- name: schedule-zoom-meeting
description: "Create a Zoom meeting and notify participants via Microsoft Teams."
inputParameters:
- name: topic
in: body
type: string
description: "The meeting topic."
- name: start_time
in: body
type: string
description: "Meeting start time in ISO 8601."
- name: duration
in: body
type: number
description: "Meeting duration in minutes."
- name: teams_channel_id
in: body
type: string
description: "The Teams channel to notify."
steps:
- name: create-meeting
type: call
call: "zoom.create-meeting"
with:
topic: "{{topic}}"
start_time: "{{start_time}}"
duration: "{{duration}}"
- name: notify-teams
type: call
call: "msteams.send-message"
with:
channel_id: "{{teams_channel_id}}"
text: "Zoom meeting scheduled: {{topic}} at {{start_time}}. Join: {{create-meeting.join_url}}"
consumes:
- type: http
namespace: zoom
baseUri: "https://api.zoom.us/v2"
authentication:
type: bearer
token: "$secrets.zoom_token"
resources:
- name: meetings
path: "/users/me/meetings"
operations:
- name: create-meeting
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST