Norwegian Cruise Line Holdings Capabilities
Naftiko 0.5 capability definitions for Norwegian Cruise Line Holdings - 100 capabilities showing integration workflows and service orchestrations.
Pulls crew payroll summary from ADP for a pay period, reconciles against the crew management system hours, and stores variances in Snowflake for finance review.
naftiko: "0.5"
info:
label: "ADP Payroll Data Sync"
description: "Pulls crew payroll summary from ADP for a pay period, reconciles against the crew management system hours, and stores variances in Snowflake for finance review."
tags:
- hr
- finance
- adp
- snowflake
capability:
exposes:
- type: mcp
namespace: payroll-ops
port: 8080
tools:
- name: sync-payroll-data
description: "Sync ADP payroll data and reconcile with crew management hours."
inputParameters:
- name: pay_period_end
in: body
type: string
description: "The pay period end date in YYYY-MM-DD format."
- name: ship_code
in: body
type: string
description: "The ship identifier code."
steps:
- name: get-payroll
type: call
call: "adp.get-payroll-summary"
with:
pay_period_end: "{{pay_period_end}}"
organization: "{{ship_code}}"
- name: get-crew-hours
type: call
call: "crew-api.get-hours-summary"
with:
ship_code: "{{ship_code}}"
period_end: "{{pay_period_end}}"
- name: store-reconciliation
type: call
call: "snowflake.execute-query"
with:
query: "CALL reconcile_payroll('{{ship_code}}', '{{pay_period_end}}')"
consumes:
- type: http
namespace: adp
baseUri: "https://api.adp.com/hr/v2"
authentication:
type: bearer
token: "$secrets.adp_token"
resources:
- name: payroll
path: "/payroll-summaries"
operations:
- name: get-payroll-summary
method: GET
- type: http
namespace: crew-api
baseUri: "https://api.ncl.com/crew/v1"
authentication:
type: bearer
token: "$secrets.ncl_crew_token"
resources:
- name: hours
path: "/ships/{{ship_code}}/hours"
inputParameters:
- name: ship_code
in: path
operations:
- name: get-hours-summary
method: GET
- type: http
namespace: snowflake
baseUri: "https://ncl.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
Queries Azure DevOps for the latest build status of a pipeline. Returns build number, status, and commit details.
naftiko: "0.5"
info:
label: "Azure DevOps Build Status Checker"
description: "Queries Azure DevOps for the latest build status of a pipeline. Returns build number, status, and commit details."
tags:
- development
- azure-devops
capability:
exposes:
- type: mcp
namespace: cicd-ops
port: 8080
tools:
- name: get-build-status
description: "Look up the latest build status for an Azure DevOps pipeline."
inputParameters:
- name: pipeline_id
in: body
type: string
description: "The Azure DevOps pipeline identifier."
call: "azdo.get-latest-build"
with:
pipeline_id: "{{pipeline_id}}"
outputParameters:
- name: build_number
type: string
mapping: "$.value[0].buildNumber"
- name: status
type: string
mapping: "$.value[0].status"
- name: result
type: string
mapping: "$.value[0].result"
consumes:
- type: http
namespace: azdo
baseUri: "https://dev.azure.com/ncl/ncl-digital/_apis/build"
authentication:
type: basic
username: ""
password: "$secrets.azdo_pat"
resources:
- name: builds
path: "/builds?definitions={{pipeline_id}}&$top=1&api-version=7.0"
inputParameters:
- name: pipeline_id
in: query
operations:
- name: get-latest-build
method: GET
Queries onboard POS data for beverage package usage by ship, aggregates in Snowflake, and generates a Tableau report for F&B management.
naftiko: "0.5"
info:
label: "Beverage Package Utilization Report"
description: "Queries onboard POS data for beverage package usage by ship, aggregates in Snowflake, and generates a Tableau report for F&B management."
tags:
- revenue
- onboard-ops
- snowflake
- tableau
capability:
exposes:
- type: mcp
namespace: fb-analytics
port: 8080
tools:
- name: generate-beverage-report
description: "Generate a beverage package utilization report 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: "Report start date in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "Report end date in YYYY-MM-DD format."
steps:
- name: pull-pos-data
type: call
call: "pos-system.get-beverage-data"
with:
ship_code: "{{ship_code}}"
start_date: "{{start_date}}"
end_date: "{{end_date}}"
- name: aggregate-data
type: call
call: "snowflake.execute-query"
with:
query: "CALL aggregate_beverage_usage('{{ship_code}}', '{{start_date}}', '{{end_date}}')"
- name: refresh-report
type: call
call: "tableau.refresh-extract"
with:
datasource_id: "beverage_utilization_ds"
consumes:
- type: http
namespace: pos-system
baseUri: "https://api.ncl.com/pos/v1"
authentication:
type: bearer
token: "$secrets.ncl_pos_token"
resources:
- name: beverages
path: "/ships/{{ship_code}}/beverages"
inputParameters:
- name: ship_code
in: path
operations:
- name: get-beverage-data
method: GET
- type: http
namespace: snowflake
baseUri: "https://ncl.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- type: http
namespace: tableau
baseUri: "https://tableau.ncl.com/api/3.21"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: datasources
path: "/sites/ncl/datasources/{{datasource_id}}/refresh"
inputParameters:
- name: datasource_id
in: path
operations:
- name: refresh-extract
method: POST
Uploads a document to a specific Box folder, creates a shared link, and posts the link to a Microsoft Teams channel for team access.
naftiko: "0.5"
info:
label: "Box File Upload Orchestrator"
description: "Uploads a document to a specific Box folder, creates a shared link, and posts the link to a Microsoft Teams channel for team access."
tags:
- document-management
- box
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: file-sharing
port: 8080
tools:
- name: upload-and-share
description: "Upload a file to Box and share the link in Microsoft Teams."
inputParameters:
- name: folder_id
in: body
type: string
description: "The Box folder identifier."
- name: file_name
in: body
type: string
description: "The name for the uploaded file."
- name: teams_channel_id
in: body
type: string
description: "The Microsoft Teams channel to share the link."
steps:
- name: upload-file
type: call
call: "box.upload-file"
with:
folder_id: "{{folder_id}}"
file_name: "{{file_name}}"
- name: create-link
type: call
call: "box.create-shared-link"
with:
file_id: "{{upload-file.id}}"
- name: share-in-teams
type: call
call: "msteams.send-message"
with:
channel_id: "{{teams_channel_id}}"
text: "New file uploaded: {{file_name}} - {{create-link.shared_link.url}}"
consumes:
- type: http
namespace: box
baseUri: "https://api.box.com/2.0"
authentication:
type: bearer
token: "$secrets.box_token"
resources:
- name: files
path: "/files/content"
operations:
- name: upload-file
method: POST
- name: shared-links
path: "/files/{{file_id}}?fields=shared_link"
inputParameters:
- name: file_id
in: path
operations:
- name: create-shared-link
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
Queries the reservation system for real-time cabin inventory counts by class and ship. Returns available, occupied, and blocked cabin counts.
naftiko: "0.5"
info:
label: "Cabin Inventory Status"
description: "Queries the reservation system for real-time cabin inventory counts by class and ship. Returns available, occupied, and blocked cabin counts."
tags:
- reservations
- revenue
- inventory
capability:
exposes:
- type: mcp
namespace: cabin-inventory
port: 8080
tools:
- name: get-cabin-inventory
description: "Get real-time cabin inventory counts for a ship by cabin class."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: sailing_date
in: body
type: string
description: "The sailing date in YYYY-MM-DD format."
call: "reservation-system.get-inventory"
with:
ship_code: "{{ship_code}}"
sailing_date: "{{sailing_date}}"
outputParameters:
- name: available_cabins
type: object
mapping: "$.data.available"
- name: total_capacity
type: integer
mapping: "$.data.total_capacity"
- name: occupancy_rate
type: number
mapping: "$.data.occupancy_rate"
consumes:
- type: http
namespace: reservation-system
baseUri: "https://api.ncl.com/reservations/v1"
authentication:
type: bearer
token: "$secrets.ncl_reservation_token"
resources:
- name: inventory
path: "/ships/{{ship_code}}/inventory?date={{sailing_date}}"
inputParameters:
- name: ship_code
in: path
- name: sailing_date
in: query
operations:
- name: get-inventory
method: GET
Searches Confluence for knowledge base articles matching a query. Returns article titles, URLs, and last updated dates.
naftiko: "0.5"
info:
label: "Confluence Knowledge Base Search"
description: "Searches Confluence for knowledge base articles matching a query. Returns article titles, URLs, and last updated dates."
tags:
- operations
- knowledge-management
- confluence
capability:
exposes:
- type: mcp
namespace: knowledge-base
port: 8080
tools:
- name: search-kb-articles
description: "Search Confluence for knowledge base articles matching a query."
inputParameters:
- name: search_query
in: body
type: string
description: "The search query string."
call: "confluence.search"
with:
query: "{{search_query}}"
outputParameters:
- name: results
type: array
mapping: "$.results"
- name: total_count
type: integer
mapping: "$.totalSize"
consumes:
- type: http
namespace: confluence
baseUri: "https://ncl.atlassian.net/wiki/rest/api"
authentication:
type: basic
username: "$secrets.confluence_user"
password: "$secrets.confluence_api_token"
resources:
- name: search
path: "/search?cql=text~'{{query}}'"
inputParameters:
- name: query
in: query
operations:
- name: search
method: GET
Queries the crew management system for scheduling conflicts on a given ship and date range, logs findings in ServiceNow, and notifies the HR manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Crew Scheduling Conflict Detector"
description: "Queries the crew management system for scheduling conflicts on a given ship and date range, logs findings in ServiceNow, and notifies the HR manager via Microsoft Teams."
tags:
- onboard-ops
- hr
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: crew-management
port: 8080
tools:
- name: detect-scheduling-conflicts
description: "Check crew schedules for conflicts on a ship within a date range and escalate issues."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: start_date
in: body
type: string
description: "Start of the date range in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "End of the date range in YYYY-MM-DD format."
steps:
- name: check-conflicts
type: call
call: "crew-api.get-conflicts"
with:
ship_code: "{{ship_code}}"
start_date: "{{start_date}}"
end_date: "{{end_date}}"
- name: log-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Crew scheduling conflicts on {{ship_code}}"
category: "crew_operations"
description: "Found {{check-conflicts.conflict_count}} conflicts between {{start_date}} and {{end_date}}."
- name: notify-manager
type: call
call: "msteams.send-message"
with:
channel_id: "crew-ops-alerts"
text: "Scheduling alert: {{check-conflicts.conflict_count}} conflicts found on {{ship_code}}. ServiceNow ticket: {{log-incident.number}}"
consumes:
- type: http
namespace: crew-api
baseUri: "https://api.ncl.com/crew/v1"
authentication:
type: bearer
token: "$secrets.ncl_crew_token"
resources:
- name: conflicts
path: "/ships/{{ship_code}}/conflicts"
inputParameters:
- name: ship_code
in: path
operations:
- name: get-conflicts
method: GET
- type: http
namespace: servicenow
baseUri: "https://ncl.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
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 1"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-1
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-1"
with:
identifier: "{{identifier}}"
- name: create
type: call
call: "salesforce.create-account"
with:
data: "{{process.result}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-1
method: POST
- type: http
namespace: salesforce
baseUri: "https://norwegiancruiseline.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/accounts"
operations:
- name: create-account
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 10"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-10
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-10"
with:
identifier: "{{identifier}}"
- name: upload
type: call
call: "sharepoint.upload-document"
with:
content: "{{process.document}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-10
method: POST
- type: http
namespace: sharepoint
baseUri: "https://norwegiancruiseline.sharepoint.com/_api/v2.0"
authentication:
type: bearer
token: "$secrets.sharepoint_token"
resources:
- name: documents
path: "/documents"
operations:
- name: upload-document
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 11"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-11
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-11"
with:
identifier: "{{identifier}}"
- name: notify
type: call
call: "hubspot.send-email"
with:
to: "{{process.email}}"
subject: "Workflow 11 Complete"
body: "{{process.summary}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-11
method: POST
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com/crm/v3"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: contacts
path: "/contacts"
operations:
- name: send-email
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 12"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-12
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-12"
with:
identifier: "{{identifier}}"
- name: push
type: call
call: "datadog.submit-metrics"
with:
metric_name: "cruise.workflow_12"
data: "{{process.metrics}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-12
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: bearer
token: "$secrets.datadog_token"
resources:
- name: metrics
path: "/metrics"
operations:
- name: submit-metrics
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 13"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-13
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-13"
with:
identifier: "{{identifier}}"
- name: create
type: call
call: "salesforce.create-account"
with:
data: "{{process.result}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-13
method: POST
- type: http
namespace: salesforce
baseUri: "https://norwegiancruiseline.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/accounts"
operations:
- name: create-account
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 14"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-14
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-14"
with:
identifier: "{{identifier}}"
- name: create
type: call
call: "servicenow.create-incident"
with:
data: "{{process.result}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-14
method: POST
- type: http
namespace: servicenow
baseUri: "https://norwegiancruiseline.service-now.com/api/now/v1"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: incidents
path: "/incidents"
operations:
- name: create-incident
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 15"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- slack
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-15
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-15"
with:
identifier: "{{identifier}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#cruise"
text: "Completed workflow 15: {{process.summary}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-15
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/messages"
operations:
- name: post-message
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 16"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-16
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-16"
with:
identifier: "{{identifier}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space: "CRUISE"
title: "Report 16"
content: "{{process.report}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-16
method: POST
- type: http
namespace: confluence
baseUri: "https://norwegiancruiseline.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: pages
path: "/pages"
operations:
- name: create-page
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 17"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-17
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-17"
with:
identifier: "{{identifier}}"
- name: refresh
type: call
call: "powerbi.refresh-dataset"
with:
dataset_id: "workflow_17"
data: "{{process.metrics}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-17
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: refresh-dataset
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 18"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- jira
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-18
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-18"
with:
identifier: "{{identifier}}"
- name: create-ticket
type: call
call: "jira.create-issue"
with:
project: "CRUI"
summary: "Task from workflow 18"
description: "{{process.details}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-18
method: POST
- type: http
namespace: jira
baseUri: "https://norwegiancruiseline.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issues"
operations:
- name: create-issue
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 19"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- teams
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-19
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-19"
with:
identifier: "{{identifier}}"
- name: notify
type: call
call: "teams.send-message"
with:
channel_id: "cruise"
message: "Workflow 19 complete: {{process.summary}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-19
method: POST
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: messages
path: "/messages"
operations:
- name: send-message
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 2"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-2
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-2"
with:
identifier: "{{identifier}}"
- name: create
type: call
call: "servicenow.create-incident"
with:
data: "{{process.result}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-2
method: POST
- type: http
namespace: servicenow
baseUri: "https://norwegiancruiseline.service-now.com/api/now/v1"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: incidents
path: "/incidents"
operations:
- name: create-incident
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 20"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-20
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-20"
with:
identifier: "{{identifier}}"
- name: refresh
type: call
call: "tableau.publish-datasource"
with:
dataset_id: "workflow_20"
data: "{{process.metrics}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-20
method: POST
- type: http
namespace: tableau
baseUri: "https://norwegiancruiseline-tableau.online.tableau.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: datasources
path: "/datasources"
operations:
- name: publish-datasource
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 21"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- box
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-21
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-21"
with:
identifier: "{{identifier}}"
- name: upload
type: call
call: "box.upload-file"
with:
content: "{{process.document}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-21
method: POST
- type: http
namespace: box
baseUri: "https://api.box.com/2.0"
authentication:
type: bearer
token: "$secrets.box_token"
resources:
- name: files
path: "/files"
operations:
- name: upload-file
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 22"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-22
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-22"
with:
identifier: "{{identifier}}"
- name: upload
type: call
call: "sharepoint.upload-document"
with:
content: "{{process.document}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-22
method: POST
- type: http
namespace: sharepoint
baseUri: "https://norwegiancruiseline.sharepoint.com/_api/v2.0"
authentication:
type: bearer
token: "$secrets.sharepoint_token"
resources:
- name: documents
path: "/documents"
operations:
- name: upload-document
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 23"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-23
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-23"
with:
identifier: "{{identifier}}"
- name: notify
type: call
call: "hubspot.send-email"
with:
to: "{{process.email}}"
subject: "Workflow 23 Complete"
body: "{{process.summary}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-23
method: POST
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com/crm/v3"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: contacts
path: "/contacts"
operations:
- name: send-email
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 24"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-24
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-24"
with:
identifier: "{{identifier}}"
- name: push
type: call
call: "datadog.submit-metrics"
with:
metric_name: "cruise.workflow_24"
data: "{{process.metrics}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-24
method: POST
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v2"
authentication:
type: bearer
token: "$secrets.datadog_token"
resources:
- name: metrics
path: "/metrics"
operations:
- name: submit-metrics
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 25"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-25
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-25"
with:
identifier: "{{identifier}}"
- name: create
type: call
call: "salesforce.create-account"
with:
data: "{{process.result}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-25
method: POST
- type: http
namespace: salesforce
baseUri: "https://norwegiancruiseline.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/accounts"
operations:
- name: create-account
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 26"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-26
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-26"
with:
identifier: "{{identifier}}"
- name: create
type: call
call: "servicenow.create-incident"
with:
data: "{{process.result}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-26
method: POST
- type: http
namespace: servicenow
baseUri: "https://norwegiancruiseline.service-now.com/api/now/v1"
authentication:
type: bearer
token: "$secrets.servicenow_token"
resources:
- name: incidents
path: "/incidents"
operations:
- name: create-incident
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 27"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- slack
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-27
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-27"
with:
identifier: "{{identifier}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#cruise"
text: "Completed workflow 27: {{process.summary}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-27
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/messages"
operations:
- name: post-message
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 28"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-28
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-28"
with:
identifier: "{{identifier}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space: "CRUISE"
title: "Report 28"
content: "{{process.report}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-28
method: POST
- type: http
namespace: confluence
baseUri: "https://norwegiancruiseline.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: pages
path: "/pages"
operations:
- name: create-page
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 29"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-29
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-29"
with:
identifier: "{{identifier}}"
- name: refresh
type: call
call: "powerbi.refresh-dataset"
with:
dataset_id: "workflow_29"
data: "{{process.metrics}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-29
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: refresh-dataset
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 3"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- slack
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-3
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-3"
with:
identifier: "{{identifier}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#cruise"
text: "Completed workflow 3: {{process.summary}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-3
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_token"
resources:
- name: messages
path: "/messages"
operations:
- name: post-message
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 30"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- jira
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-30
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-30"
with:
identifier: "{{identifier}}"
- name: create-ticket
type: call
call: "jira.create-issue"
with:
project: "CRUI"
summary: "Task from workflow 30"
description: "{{process.details}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-30
method: POST
- type: http
namespace: jira
baseUri: "https://norwegiancruiseline.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issues"
operations:
- name: create-issue
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 31"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- teams
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-31
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-31"
with:
identifier: "{{identifier}}"
- name: notify
type: call
call: "teams.send-message"
with:
channel_id: "cruise"
message: "Workflow 31 complete: {{process.summary}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-31
method: POST
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: messages
path: "/messages"
operations:
- name: send-message
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 32"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-32
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-32"
with:
identifier: "{{identifier}}"
- name: refresh
type: call
call: "tableau.publish-datasource"
with:
dataset_id: "workflow_32"
data: "{{process.metrics}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-32
method: POST
- type: http
namespace: tableau
baseUri: "https://norwegiancruiseline-tableau.online.tableau.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: datasources
path: "/datasources"
operations:
- name: publish-datasource
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 33"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- box
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-33
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-33"
with:
identifier: "{{identifier}}"
- name: upload
type: call
call: "box.upload-file"
with:
content: "{{process.document}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-33
method: POST
- type: http
namespace: box
baseUri: "https://api.box.com/2.0"
authentication:
type: bearer
token: "$secrets.box_token"
resources:
- name: files
path: "/files"
operations:
- name: upload-file
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 34"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-34
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-34"
with:
identifier: "{{identifier}}"
- name: upload
type: call
call: "sharepoint.upload-document"
with:
content: "{{process.document}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-34
method: POST
- type: http
namespace: sharepoint
baseUri: "https://norwegiancruiseline.sharepoint.com/_api/v2.0"
authentication:
type: bearer
token: "$secrets.sharepoint_token"
resources:
- name: documents
path: "/documents"
operations:
- name: upload-document
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 35"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-35
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-35"
with:
identifier: "{{identifier}}"
- name: notify
type: call
call: "hubspot.send-email"
with:
to: "{{process.email}}"
subject: "Workflow 35 Complete"
body: "{{process.summary}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-35
method: POST
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com/crm/v3"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: contacts
path: "/contacts"
operations:
- name: send-email
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 4"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-4
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-4"
with:
identifier: "{{identifier}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space: "CRUISE"
title: "Report 4"
content: "{{process.report}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-4
method: POST
- type: http
namespace: confluence
baseUri: "https://norwegiancruiseline.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: pages
path: "/pages"
operations:
- name: create-page
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 5"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-5
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-5"
with:
identifier: "{{identifier}}"
- name: refresh
type: call
call: "powerbi.refresh-dataset"
with:
dataset_id: "workflow_5"
data: "{{process.metrics}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-5
method: POST
- type: http
namespace: powerbi
baseUri: "https://api.powerbi.com/v1.0"
authentication:
type: bearer
token: "$secrets.powerbi_token"
resources:
- name: datasets
path: "/datasets"
operations:
- name: refresh-dataset
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 6"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- jira
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-6
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-6"
with:
identifier: "{{identifier}}"
- name: create-ticket
type: call
call: "jira.create-issue"
with:
project: "CRUI"
summary: "Task from workflow 6"
description: "{{process.details}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-6
method: POST
- type: http
namespace: jira
baseUri: "https://norwegiancruiseline.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issues"
operations:
- name: create-issue
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 7"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- teams
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-7
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-7"
with:
identifier: "{{identifier}}"
- name: notify
type: call
call: "teams.send-message"
with:
channel_id: "cruise"
message: "Workflow 7 complete: {{process.summary}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-7
method: POST
- type: http
namespace: teams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.teams_token"
resources:
- name: messages
path: "/messages"
operations:
- name: send-message
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 8"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-8
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-8"
with:
identifier: "{{identifier}}"
- name: refresh
type: call
call: "tableau.publish-datasource"
with:
dataset_id: "workflow_8"
data: "{{process.metrics}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-8
method: POST
- type: http
namespace: tableau
baseUri: "https://norwegiancruiseline-tableau.online.tableau.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: datasources
path: "/datasources"
operations:
- name: publish-datasource
method: POST
Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Workflow 9"
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
tags:
- cruise
- operations
- box
capability:
exposes:
- type: mcp
namespace: cruise
port: 8080
tools:
- name: norwegian-cruise-line-workflow-9
description: "Orchestrates cruise operations including data retrieval, processing, and automated notification for Norwegian Cruise Line."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "norwegiancruiseline-ops.run-workflow-9"
with:
identifier: "{{identifier}}"
- name: upload
type: call
call: "box.upload-file"
with:
content: "{{process.document}}"
consumes:
- type: http
namespace: norwegiancruiseline-ops
baseUri: "https://api.ncl.com/operations/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-9
method: POST
- type: http
namespace: box
baseUri: "https://api.box.com/2.0"
authentication:
type: bearer
token: "$secrets.box_token"
resources:
- name: files
path: "/files"
operations:
- name: upload-file
method: POST
When a new cruise booking is created in Salesforce, provisions a cabin assignment in the reservation system, sends a confirmation email via SendGrid, and logs the booking in Snowflake for revenue tracking.
naftiko: "0.5"
info:
label: "Cruise Reservation Orchestrator"
description: "When a new cruise booking is created in Salesforce, provisions a cabin assignment in the reservation system, sends a confirmation email via SendGrid, and logs the booking in Snowflake for revenue tracking."
tags:
- reservations
- revenue
- salesforce
- sendgrid
- snowflake
capability:
exposes:
- type: mcp
namespace: cruise-reservations
port: 8080
tools:
- name: process-new-booking
description: "Given a Salesforce opportunity ID, orchestrate cabin assignment, confirmation email, and revenue logging for a new cruise reservation."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "The Salesforce opportunity ID for the cruise booking."
- name: sailing_date
in: body
type: string
description: "The sailing departure date in YYYY-MM-DD format."
- name: cabin_class
in: body
type: string
description: "The cabin class requested (inside, oceanview, balcony, suite)."
steps:
- name: get-booking
type: call
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
- name: assign-cabin
type: call
call: "reservation-system.assign-cabin"
with:
sailing_date: "{{sailing_date}}"
cabin_class: "{{cabin_class}}"
guest_name: "{{get-booking.contact_name}}"
- name: send-confirmation
type: call
call: "sendgrid.send-email"
with:
to: "{{get-booking.contact_email}}"
subject: "Your NCL Cruise Confirmation - {{sailing_date}}"
body: "Dear {{get-booking.contact_name}}, your cabin {{assign-cabin.cabin_number}} is confirmed for {{sailing_date}}."
- name: log-revenue
type: call
call: "snowflake.insert-record"
with:
table: "cruise_bookings"
data:
booking_id: "{{get-booking.id}}"
cabin: "{{assign-cabin.cabin_number}}"
revenue: "{{get-booking.amount}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://ncl.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: opportunities
path: "/sobjects/Opportunity/{{opportunity_id}}"
inputParameters:
- name: opportunity_id
in: path
operations:
- name: get-opportunity
method: GET
- type: http
namespace: reservation-system
baseUri: "https://api.ncl.com/reservations/v1"
authentication:
type: bearer
token: "$secrets.ncl_reservation_token"
resources:
- name: cabins
path: "/cabins/assign"
operations:
- name: assign-cabin
method: POST
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: mail
path: "/mail/send"
operations:
- name: send-email
method: POST
- type: http
namespace: snowflake
baseUri: "https://ncl.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: insert-record
method: POST
Retrieves operational data for Norwegian Cruise Line cruise workflows.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Data Lookup 1"
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
tags:
- cruise
- operations
capability:
exposes:
- type: mcp
namespace: norwegiancruiseline-data
port: 8080
tools:
- name: get-data-1
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "norwegiancruiseline-data.get-data-1"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: norwegiancruiseline-data
baseUri: "https://api.ncl.com/data/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: data-1
path: "/data-1/{{identifier}}"
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-1
method: GET
Retrieves operational data for Norwegian Cruise Line cruise workflows.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Data Lookup 10"
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
tags:
- cruise
- operations
capability:
exposes:
- type: mcp
namespace: norwegiancruiseline-data
port: 8080
tools:
- name: get-data-10
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "norwegiancruiseline-data.get-data-10"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: norwegiancruiseline-data
baseUri: "https://api.ncl.com/data/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: data-10
path: "/data-10/{{identifier}}"
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-10
method: GET
Retrieves operational data for Norwegian Cruise Line cruise workflows.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Data Lookup 11"
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
tags:
- cruise
- operations
capability:
exposes:
- type: mcp
namespace: norwegiancruiseline-data
port: 8080
tools:
- name: get-data-11
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "norwegiancruiseline-data.get-data-11"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: norwegiancruiseline-data
baseUri: "https://api.ncl.com/data/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: data-11
path: "/data-11/{{identifier}}"
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-11
method: GET
Retrieves operational data for Norwegian Cruise Line cruise workflows.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Data Lookup 12"
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
tags:
- cruise
- operations
capability:
exposes:
- type: mcp
namespace: norwegiancruiseline-data
port: 8080
tools:
- name: get-data-12
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "norwegiancruiseline-data.get-data-12"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: norwegiancruiseline-data
baseUri: "https://api.ncl.com/data/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: data-12
path: "/data-12/{{identifier}}"
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-12
method: GET
Retrieves operational data for Norwegian Cruise Line cruise workflows.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Data Lookup 13"
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
tags:
- cruise
- operations
capability:
exposes:
- type: mcp
namespace: norwegiancruiseline-data
port: 8080
tools:
- name: get-data-13
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "norwegiancruiseline-data.get-data-13"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: norwegiancruiseline-data
baseUri: "https://api.ncl.com/data/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: data-13
path: "/data-13/{{identifier}}"
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-13
method: GET
Retrieves operational data for Norwegian Cruise Line cruise workflows.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Data Lookup 14"
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
tags:
- cruise
- operations
capability:
exposes:
- type: mcp
namespace: norwegiancruiseline-data
port: 8080
tools:
- name: get-data-14
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "norwegiancruiseline-data.get-data-14"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: norwegiancruiseline-data
baseUri: "https://api.ncl.com/data/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: data-14
path: "/data-14/{{identifier}}"
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-14
method: GET
Retrieves operational data for Norwegian Cruise Line cruise workflows.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Data Lookup 15"
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
tags:
- cruise
- operations
capability:
exposes:
- type: mcp
namespace: norwegiancruiseline-data
port: 8080
tools:
- name: get-data-15
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "norwegiancruiseline-data.get-data-15"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: norwegiancruiseline-data
baseUri: "https://api.ncl.com/data/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: data-15
path: "/data-15/{{identifier}}"
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-15
method: GET
Retrieves operational data for Norwegian Cruise Line cruise workflows.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Data Lookup 2"
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
tags:
- cruise
- operations
capability:
exposes:
- type: mcp
namespace: norwegiancruiseline-data
port: 8080
tools:
- name: get-data-2
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "norwegiancruiseline-data.get-data-2"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: norwegiancruiseline-data
baseUri: "https://api.ncl.com/data/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: data-2
path: "/data-2/{{identifier}}"
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-2
method: GET
Retrieves operational data for Norwegian Cruise Line cruise workflows.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Data Lookup 3"
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
tags:
- cruise
- operations
capability:
exposes:
- type: mcp
namespace: norwegiancruiseline-data
port: 8080
tools:
- name: get-data-3
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "norwegiancruiseline-data.get-data-3"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: norwegiancruiseline-data
baseUri: "https://api.ncl.com/data/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: data-3
path: "/data-3/{{identifier}}"
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-3
method: GET
Retrieves operational data for Norwegian Cruise Line cruise workflows.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Data Lookup 4"
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
tags:
- cruise
- operations
capability:
exposes:
- type: mcp
namespace: norwegiancruiseline-data
port: 8080
tools:
- name: get-data-4
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "norwegiancruiseline-data.get-data-4"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: norwegiancruiseline-data
baseUri: "https://api.ncl.com/data/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: data-4
path: "/data-4/{{identifier}}"
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-4
method: GET
Retrieves operational data for Norwegian Cruise Line cruise workflows.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Data Lookup 5"
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
tags:
- cruise
- operations
capability:
exposes:
- type: mcp
namespace: norwegiancruiseline-data
port: 8080
tools:
- name: get-data-5
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "norwegiancruiseline-data.get-data-5"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: norwegiancruiseline-data
baseUri: "https://api.ncl.com/data/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: data-5
path: "/data-5/{{identifier}}"
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-5
method: GET
Retrieves operational data for Norwegian Cruise Line cruise workflows.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Data Lookup 6"
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
tags:
- cruise
- operations
capability:
exposes:
- type: mcp
namespace: norwegiancruiseline-data
port: 8080
tools:
- name: get-data-6
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "norwegiancruiseline-data.get-data-6"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: norwegiancruiseline-data
baseUri: "https://api.ncl.com/data/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: data-6
path: "/data-6/{{identifier}}"
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-6
method: GET
Retrieves operational data for Norwegian Cruise Line cruise workflows.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Data Lookup 7"
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
tags:
- cruise
- operations
capability:
exposes:
- type: mcp
namespace: norwegiancruiseline-data
port: 8080
tools:
- name: get-data-7
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "norwegiancruiseline-data.get-data-7"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: norwegiancruiseline-data
baseUri: "https://api.ncl.com/data/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: data-7
path: "/data-7/{{identifier}}"
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-7
method: GET
Retrieves operational data for Norwegian Cruise Line cruise workflows.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Data Lookup 8"
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
tags:
- cruise
- operations
capability:
exposes:
- type: mcp
namespace: norwegiancruiseline-data
port: 8080
tools:
- name: get-data-8
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "norwegiancruiseline-data.get-data-8"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: norwegiancruiseline-data
baseUri: "https://api.ncl.com/data/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: data-8
path: "/data-8/{{identifier}}"
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-8
method: GET
Retrieves operational data for Norwegian Cruise Line cruise workflows.
naftiko: "0.5"
info:
label: "Norwegian Cruise Line Data Lookup 9"
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
tags:
- cruise
- operations
capability:
exposes:
- type: mcp
namespace: norwegiancruiseline-data
port: 8080
tools:
- name: get-data-9
description: "Retrieves operational data for Norwegian Cruise Line cruise workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "norwegiancruiseline-data.get-data-9"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: norwegiancruiseline-data
baseUri: "https://api.ncl.com/data/v1"
authentication:
type: bearer
token: "$secrets.ncl_api_token"
resources:
- name: data-9
path: "/data-9/{{identifier}}"
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-9
method: GET
Retrieves the current status of Datadog monitors for NCL's digital infrastructure. Returns monitor name, status, and last triggered time.
naftiko: "0.5"
info:
label: "Datadog Alert Status Lookup"
description: "Retrieves the current status of Datadog monitors for NCL's digital infrastructure. Returns monitor name, status, and last triggered time."
tags:
- operations
- monitoring
- datadog
capability:
exposes:
- type: mcp
namespace: infra-monitoring
port: 8080
tools:
- name: get-monitor-status
description: "Look up the current status of a Datadog monitor by ID."
inputParameters:
- name: monitor_id
in: body
type: string
description: "The Datadog monitor identifier."
call: "datadog.get-monitor"
with:
monitor_id: "{{monitor_id}}"
outputParameters:
- name: name
type: string
mapping: "$.name"
- name: status
type: string
mapping: "$.overall_state"
- name: last_triggered
type: string
mapping: "$.state.last_triggered_ts"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: apiKey
key: "$secrets.datadog_api_key"
header: "DD-API-KEY"
resources:
- name: monitors
path: "/monitor/{{monitor_id}}"
inputParameters:
- name: monitor_id
in: path
operations:
- name: get-monitor
method: GET
Looks up dining reservation availability for a guest on a specific ship and evening. Returns available restaurants, time slots, and party size capacity.
naftiko: "0.5"
info:
label: "Dining Reservation Lookup"
description: "Looks up dining reservation availability for a guest on a specific ship and evening. Returns available restaurants, time slots, and party size capacity."
tags:
- onboard-ops
- dining
- guest-services
capability:
exposes:
- type: mcp
namespace: dining-services
port: 8080
tools:
- name: get-dining-availability
description: "Check dining availability on a ship for a specific date and party size."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: date
in: body
type: string
description: "The dining date in YYYY-MM-DD format."
- name: party_size
in: body
type: integer
description: "Number of guests in the dining party."
call: "dining-api.get-availability"
with:
ship_code: "{{ship_code}}"
date: "{{date}}"
party_size: "{{party_size}}"
outputParameters:
- name: restaurants
type: array
mapping: "$.data.available_restaurants"
- name: time_slots
type: array
mapping: "$.data.time_slots"
consumes:
- type: http
namespace: dining-api
baseUri: "https://api.ncl.com/dining/v1"
authentication:
type: bearer
token: "$secrets.ncl_dining_token"
resources:
- name: availability
path: "/ships/{{ship_code}}/availability"
inputParameters:
- name: ship_code
in: path
operations:
- name: get-availability
method: GET
Retrieves a guest segment from Salesforce Marketing Cloud, personalizes content, and dispatches email campaigns via SendGrid with tracking enabled.
naftiko: "0.5"
info:
label: "Email Campaign Sender"
description: "Retrieves a guest segment from Salesforce Marketing Cloud, personalizes content, and dispatches email campaigns via SendGrid with tracking enabled."
tags:
- marketing
- email
- salesforce-marketing-cloud
- sendgrid
capability:
exposes:
- type: mcp
namespace: email-campaigns
port: 8080
tools:
- name: send-targeted-campaign
description: "Send a personalized email campaign to a specific guest segment."
inputParameters:
- name: segment_id
in: body
type: string
description: "The SFMC audience segment identifier."
- name: template_id
in: body
type: string
description: "The email template identifier."
- name: campaign_name
in: body
type: string
description: "Name of the campaign for tracking."
steps:
- name: get-segment
type: call
call: "sfmc.get-data-extension"
with:
data_extension: "{{segment_id}}"
- name: send-emails
type: call
call: "sendgrid.send-batch"
with:
recipients: "{{get-segment.rows}}"
template_id: "{{template_id}}"
campaign_name: "{{campaign_name}}"
consumes:
- type: http
namespace: sfmc
baseUri: "https://ncl.rest.marketingcloudapis.com/data/v1"
authentication:
type: bearer
token: "$secrets.sfmc_token"
resources:
- name: data-extensions
path: "/customobjectdata/key/{{data_extension}}/rowset"
inputParameters:
- name: data_extension
in: path
operations:
- name: get-data-extension
method: GET
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: mail
path: "/mail/send"
operations:
- name: send-batch
method: POST
Checks crew training completion in the LMS, flags overdue certifications in ServiceNow, and notifies department heads via Microsoft Teams.
naftiko: "0.5"
info:
label: "Employee Training Compliance Tracker"
description: "Checks crew training completion in the LMS, flags overdue certifications in ServiceNow, and notifies department heads via Microsoft Teams."
tags:
- hr
- onboard-ops
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: training-compliance
port: 8080
tools:
- name: check-training-compliance
description: "Check crew training status and escalate overdue certifications."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: department
in: body
type: string
description: "The department to check compliance for."
steps:
- name: get-training-status
type: call
call: "lms-api.get-compliance-report"
with:
ship_code: "{{ship_code}}"
department: "{{department}}"
- name: create-overdue-tickets
type: call
call: "servicenow.create-incident"
with:
short_description: "Overdue training: {{department}} on {{ship_code}}"
category: "training_compliance"
description: "{{get-training-status.overdue_count}} crew members have overdue certifications."
- name: notify-dept-head
type: call
call: "msteams.send-message"
with:
channel_id: "training-alerts"
text: "Training alert: {{get-training-status.overdue_count}} overdue in {{department}} on {{ship_code}}. Ticket: {{create-overdue-tickets.number}}"
consumes:
- type: http
namespace: lms-api
baseUri: "https://api.ncl.com/lms/v1"
authentication:
type: bearer
token: "$secrets.ncl_lms_token"
resources:
- name: compliance
path: "/ships/{{ship_code}}/departments/{{department}}/compliance"
inputParameters:
- name: ship_code
in: path
- name: department
in: path
operations:
- name: get-compliance-report
method: GET
- type: http
namespace: servicenow
baseUri: "https://ncl.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
Records ship environmental metrics (fuel consumption, waste, emissions) from onboard sensors, stores in Snowflake for sustainability reporting, and generates compliance reports in SharePoint.
naftiko: "0.5"
info:
label: "Environmental Compliance Logger"
description: "Records ship environmental metrics (fuel consumption, waste, emissions) from onboard sensors, stores in Snowflake for sustainability reporting, and generates compliance reports in SharePoint."
tags:
- onboard-ops
- compliance
- sustainability
- snowflake
- sharepoint
capability:
exposes:
- type: mcp
namespace: environmental-ops
port: 8080
tools:
- name: log-environmental-metrics
description: "Log ship environmental metrics and generate sustainability compliance reports."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: date
in: body
type: string
description: "The reporting date in YYYY-MM-DD format."
steps:
- name: get-sensor-data
type: call
call: "iot-platform.get-environmental-data"
with:
ship_code: "{{ship_code}}"
date: "{{date}}"
- name: store-metrics
type: call
call: "snowflake.insert-record"
with:
table: "environmental_metrics"
data:
ship_code: "{{ship_code}}"
date: "{{date}}"
fuel_consumption: "{{get-sensor-data.fuel_consumption}}"
emissions: "{{get-sensor-data.co2_emissions}}"
waste_volume: "{{get-sensor-data.waste_volume}}"
- name: generate-report
type: call
call: "sharepoint.upload-file"
with:
site_id: "sustainability-reports"
file_path: "Environmental/{{ship_code}}_{{date}}.pdf"
consumes:
- type: http
namespace: iot-platform
baseUri: "https://api.ncl.com/iot/v1"
authentication:
type: bearer
token: "$secrets.ncl_iot_token"
resources:
- name: environmental
path: "/ships/{{ship_code}}/environmental/{{date}}"
inputParameters:
- name: ship_code
in: path
- name: date
in: path
operations:
- name: get-environmental-data
method: GET
- type: http
namespace: snowflake
baseUri: "https://ncl.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: insert-record
method: POST
- 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}}:/content"
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: upload-file
method: PUT
Records food safety inspection results from the galley management system, creates compliance records in ServiceNow, and notifies the F&B director via Microsoft Teams if violations are found.
naftiko: "0.5"
info:
label: "Food Safety Inspection Tracker"
description: "Records food safety inspection results from the galley management system, creates compliance records in ServiceNow, and notifies the F&B director via Microsoft Teams if violations are found."
tags:
- onboard-ops
- safety
- compliance
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: food-safety
port: 8080
tools:
- name: record-inspection
description: "Record a food safety inspection and escalate violations."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: inspection_area
in: body
type: string
description: "The galley or food service area inspected."
- name: score
in: body
type: integer
description: "The inspection score (0-100)."
- name: violations
in: body
type: array
description: "List of violation descriptions."
steps:
- name: log-inspection
type: call
call: "galley-api.record-inspection"
with:
ship_code: "{{ship_code}}"
area: "{{inspection_area}}"
score: "{{score}}"
violations: "{{violations}}"
- name: create-compliance-record
type: call
call: "servicenow.create-record"
with:
table: "food_safety_inspections"
data:
ship: "{{ship_code}}"
area: "{{inspection_area}}"
score: "{{score}}"
- name: alert-if-violations
type: call
call: "msteams.send-message"
with:
channel_id: "food-safety-alerts"
text: "Food safety inspection on {{ship_code}} ({{inspection_area}}): Score {{score}}/100. Violations: {{violations}}"
consumes:
- type: http
namespace: galley-api
baseUri: "https://api.ncl.com/galley/v1"
authentication:
type: bearer
token: "$secrets.ncl_galley_token"
resources:
- name: inspections
path: "/inspections"
operations:
- name: record-inspection
method: POST
- type: http
namespace: servicenow
baseUri: "https://ncl.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
- 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 Google Ads campaign spending and performance data by campaign ID. Returns total spend, impressions, clicks, and cost-per-click.
naftiko: "0.5"
info:
label: "Google Ads Campaign Spend Lookup"
description: "Retrieves Google Ads campaign spending and performance data by campaign ID. Returns total spend, impressions, clicks, and cost-per-click."
tags:
- marketing
- google-ads
capability:
exposes:
- type: mcp
namespace: ad-spending
port: 8080
tools:
- name: get-campaign-spend
description: "Look up Google Ads campaign spend metrics."
inputParameters:
- name: campaign_id
in: body
type: string
description: "The Google Ads campaign identifier."
call: "google-ads.get-spend"
with:
campaign_id: "{{campaign_id}}"
outputParameters:
- name: total_spend
type: number
mapping: "$.data.cost_micros"
- name: impressions
type: integer
mapping: "$.data.impressions"
- name: clicks
type: integer
mapping: "$.data.clicks"
consumes:
- type: http
namespace: google-ads
baseUri: "https://googleads.googleapis.com/v14"
authentication:
type: bearer
token: "$secrets.google_ads_token"
resources:
- name: campaigns
path: "/customers/ncl/campaigns/{{campaign_id}}/metrics"
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-spend
method: GET
Pulls website session and conversion data from Google Analytics for a date range. Returns sessions, bounce rate, and booking conversion rate for the NCL website.
naftiko: "0.5"
info:
label: "Google Analytics Session Report"
description: "Pulls website session and conversion data from Google Analytics for a date range. Returns sessions, bounce rate, and booking conversion rate for the NCL website."
tags:
- marketing
- analytics
- google-analytics
capability:
exposes:
- type: mcp
namespace: web-analytics
port: 8080
tools:
- name: get-session-report
description: "Get Google Analytics session and conversion metrics for the NCL website."
inputParameters:
- name: start_date
in: body
type: string
description: "Report start date in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "Report end date in YYYY-MM-DD format."
call: "google-analytics.run-report"
with:
start_date: "{{start_date}}"
end_date: "{{end_date}}"
outputParameters:
- name: sessions
type: integer
mapping: "$.rows[0].metricValues[0].value"
- name: bounce_rate
type: number
mapping: "$.rows[0].metricValues[1].value"
- name: conversion_rate
type: number
mapping: "$.rows[0].metricValues[2].value"
consumes:
- type: http
namespace: google-analytics
baseUri: "https://analyticsdata.googleapis.com/v1beta"
authentication:
type: bearer
token: "$secrets.google_analytics_token"
resources:
- name: reports
path: "/properties/ncl/runReport"
operations:
- name: run-report
method: POST
Retrieves tag configuration and firing rules from Google Tag Manager for the NCL website container. Used by the marketing ops team to audit tracking pixels.
naftiko: "0.5"
info:
label: "Google Tag Manager Event Lookup"
description: "Retrieves tag configuration and firing rules from Google Tag Manager for the NCL website container. Used by the marketing ops team to audit tracking pixels."
tags:
- marketing
- google-tag-manager
capability:
exposes:
- type: mcp
namespace: gtm-ops
port: 8080
tools:
- name: get-tag-config
description: "Look up a GTM tag configuration and its firing triggers."
inputParameters:
- name: tag_id
in: body
type: string
description: "The GTM tag identifier."
call: "gtm.get-tag"
with:
tag_id: "{{tag_id}}"
outputParameters:
- name: tag_name
type: string
mapping: "$.tag.name"
- name: firing_triggers
type: array
mapping: "$.tag.firingTriggerId"
- name: tag_type
type: string
mapping: "$.tag.type"
consumes:
- type: http
namespace: gtm
baseUri: "https://www.googleapis.com/tagmanager/v2"
authentication:
type: bearer
token: "$secrets.google_tagmanager_token"
resources:
- name: tags
path: "/accounts/ncl/containers/web/workspaces/default/tags/{{tag_id}}"
inputParameters:
- name: tag_id
in: path
operations:
- name: get-tag
method: GET
Pulls group booking records from Salesforce, reconciles payments against Oracle financials, and generates a variance report in Snowflake for the revenue management team.
naftiko: "0.5"
info:
label: "Group Booking Revenue Reconciler"
description: "Pulls group booking records from Salesforce, reconciles payments against Oracle financials, and generates a variance report in Snowflake for the revenue management team."
tags:
- revenue
- finance
- salesforce
- oracle
- snowflake
capability:
exposes:
- type: mcp
namespace: revenue-reconciliation
port: 8080
tools:
- name: reconcile-group-bookings
description: "Reconcile group booking revenue between Salesforce and Oracle financials."
inputParameters:
- name: period_start
in: body
type: string
description: "Reconciliation period start date in YYYY-MM-DD format."
- name: period_end
in: body
type: string
description: "Reconciliation period end date in YYYY-MM-DD format."
steps:
- name: get-sf-bookings
type: call
call: "salesforce.query-group-bookings"
with:
start_date: "{{period_start}}"
end_date: "{{period_end}}"
- name: get-oracle-payments
type: call
call: "oracle.get-receivables"
with:
start_date: "{{period_start}}"
end_date: "{{period_end}}"
- name: store-variance
type: call
call: "snowflake.execute-query"
with:
query: "CALL reconcile_group_revenue('{{period_start}}', '{{period_end}}')"
consumes:
- type: http
namespace: salesforce
baseUri: "https://ncl.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: group-bookings
path: "/query?q=SELECT+Id,Amount,CloseDate+FROM+Opportunity+WHERE+Type='Group'+AND+CloseDate>=CAST('{{start_date}}'+AS+DATE)"
inputParameters:
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: query-group-bookings
method: GET
- type: http
namespace: oracle
baseUri: "https://ncl.oraclecloud.com/fscmRestApi/resources/v1"
authentication:
type: bearer
token: "$secrets.oracle_token"
resources:
- name: receivables
path: "/receivablesInvoices"
operations:
- name: get-receivables
method: GET
- type: http
namespace: snowflake
baseUri: "https://ncl.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
Looks up a guest check-in status by reservation ID from the NCL reservation system. Returns embarkation status, cabin assignment, and muster drill completion.
naftiko: "0.5"
info:
label: "Guest Check-In Status Lookup"
description: "Looks up a guest check-in status by reservation ID from the NCL reservation system. Returns embarkation status, cabin assignment, and muster drill completion."
tags:
- reservations
- onboard-ops
- guest-services
capability:
exposes:
- type: mcp
namespace: guest-services
port: 8080
tools:
- name: get-checkin-status
description: "Look up guest check-in and embarkation status by reservation ID."
inputParameters:
- name: reservation_id
in: body
type: string
description: "The NCL reservation confirmation number."
call: "reservation-system.get-checkin"
with:
reservation_id: "{{reservation_id}}"
outputParameters:
- name: embarkation_status
type: string
mapping: "$.data.embarkation_status"
- name: cabin_number
type: string
mapping: "$.data.cabin_number"
- name: muster_complete
type: boolean
mapping: "$.data.muster_drill_complete"
consumes:
- type: http
namespace: reservation-system
baseUri: "https://api.ncl.com/reservations/v1"
authentication:
type: bearer
token: "$secrets.ncl_reservation_token"
resources:
- name: checkin
path: "/guests/{{reservation_id}}/checkin"
inputParameters:
- name: reservation_id
in: path
operations:
- name: get-checkin
method: GET
Collects post-cruise survey responses, stores them in Snowflake, runs sentiment analysis, and creates a Salesforce case if the satisfaction score falls below threshold.
naftiko: "0.5"
info:
label: "Guest Feedback Aggregator"
description: "Collects post-cruise survey responses, stores them in Snowflake, runs sentiment analysis, and creates a Salesforce case if the satisfaction score falls below threshold."
tags:
- marketing
- guest-services
- snowflake
- salesforce
capability:
exposes:
- type: mcp
namespace: guest-feedback
port: 8080
tools:
- name: process-survey-response
description: "Process a post-cruise survey, run sentiment analysis, and escalate poor feedback to Salesforce."
inputParameters:
- name: reservation_id
in: body
type: string
description: "The reservation ID associated with the survey."
- name: survey_data
in: body
type: object
description: "The survey response payload."
steps:
- name: store-survey
type: call
call: "snowflake.insert-record"
with:
table: "guest_surveys"
data:
reservation_id: "{{reservation_id}}"
responses: "{{survey_data}}"
- name: analyze-sentiment
type: call
call: "snowflake.execute-query"
with:
query: "SELECT sentiment_score FROM TABLE(analyze_sentiment('{{reservation_id}}'))"
- name: escalate-if-needed
type: call
call: "salesforce.create-case"
with:
subject: "Low satisfaction: Reservation {{reservation_id}}"
description: "Sentiment score: {{analyze-sentiment.sentiment_score}}. Requires follow-up."
priority: "High"
consumes:
- type: http
namespace: snowflake
baseUri: "https://ncl.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: insert-record
method: POST
- name: execute-query
method: POST
- type: http
namespace: salesforce
baseUri: "https://ncl.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: cases
path: "/sobjects/Case"
operations:
- name: create-case
method: POST
When a cruise is completed, pulls the guest folio from the reservation system, calculates loyalty points in Snowflake, updates the Salesforce contact with new tier status, and sends a thank-you email via SendGrid.
naftiko: "0.5"
info:
label: "Guest Loyalty Program Sync"
description: "When a cruise is completed, pulls the guest folio from the reservation system, calculates loyalty points in Snowflake, updates the Salesforce contact with new tier status, and sends a thank-you email via SendGrid."
tags:
- marketing
- loyalty
- salesforce
- snowflake
- sendgrid
capability:
exposes:
- type: mcp
namespace: loyalty-program
port: 8080
tools:
- name: process-post-cruise-loyalty
description: "After a cruise completes, calculate loyalty points and update guest tier status across systems."
inputParameters:
- name: reservation_id
in: body
type: string
description: "The reservation ID for the completed cruise."
- name: guest_email
in: body
type: string
description: "The guest email address."
steps:
- name: get-folio
type: call
call: "reservation-system.get-folio"
with:
reservation_id: "{{reservation_id}}"
- name: calculate-points
type: call
call: "snowflake.execute-query"
with:
query: "CALL calculate_loyalty_points('{{reservation_id}}', {{get-folio.total_spend}})"
- name: update-salesforce
type: call
call: "salesforce.update-contact"
with:
email: "{{guest_email}}"
loyalty_points: "{{calculate-points.new_balance}}"
tier: "{{calculate-points.new_tier}}"
- name: send-thankyou
type: call
call: "sendgrid.send-email"
with:
to: "{{guest_email}}"
subject: "Thank You for Sailing with NCL!"
body: "You earned {{calculate-points.points_earned}} points! Your new tier: {{calculate-points.new_tier}}."
consumes:
- type: http
namespace: reservation-system
baseUri: "https://api.ncl.com/reservations/v1"
authentication:
type: bearer
token: "$secrets.ncl_reservation_token"
resources:
- name: folios
path: "/reservations/{{reservation_id}}/folio"
inputParameters:
- name: reservation_id
in: path
operations:
- name: get-folio
method: GET
- type: http
namespace: snowflake
baseUri: "https://ncl.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- type: http
namespace: salesforce
baseUri: "https://ncl.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: contacts
path: "/sobjects/Contact"
operations:
- name: update-contact
method: PATCH
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: mail
path: "/mail/send"
operations:
- name: send-email
method: POST
When a medical incident occurs onboard, creates an incident in ServiceNow, logs the event in the ship safety database, and notifies the ship doctor and captain via Microsoft Teams.
naftiko: "0.5"
info:
label: "Guest Medical Incident Logger"
description: "When a medical incident occurs onboard, creates an incident in ServiceNow, logs the event in the ship safety database, and notifies the ship doctor and captain via Microsoft Teams."
tags:
- onboard-ops
- safety
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: medical-ops
port: 8080
tools:
- name: log-medical-incident
description: "Log a medical incident with proper escalation and notification."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: incident_type
in: body
type: string
description: "Type of medical incident."
- name: severity
in: body
type: string
description: "Severity level (low, medium, high, critical)."
- name: description
in: body
type: string
description: "Description of the medical incident."
steps:
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Medical: {{incident_type}} on {{ship_code}}"
category: "medical"
priority: "{{severity}}"
description: "{{description}}"
- name: log-safety-event
type: call
call: "safety-api.log-event"
with:
ship_code: "{{ship_code}}"
event_type: "medical"
description: "{{description}}"
- name: notify-bridge
type: call
call: "msteams.send-message"
with:
channel_id: "bridge-medical-alerts"
text: "MEDICAL ALERT on {{ship_code}}: {{incident_type}} ({{severity}}). Incident: {{create-incident.number}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://ncl.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: safety-api
baseUri: "https://api.ncl.com/safety/v1"
authentication:
type: bearer
token: "$secrets.ncl_safety_token"
resources:
- name: events
path: "/ships/{{ship_code}}/events"
inputParameters:
- name: ship_code
in: path
operations:
- name: log-event
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
Syncs new travel agent contacts from HubSpot to Salesforce when they reach the marketing qualified stage. Creates the contact in Salesforce and notifies the sales team in Microsoft Teams.
naftiko: "0.5"
info:
label: "HubSpot Contact Sync"
description: "Syncs new travel agent contacts from HubSpot to Salesforce when they reach the marketing qualified stage. Creates the contact in Salesforce and notifies the sales team in Microsoft Teams."
tags:
- sales
- marketing
- hubspot
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: lead-sync
port: 8080
tools:
- name: sync-hubspot-to-salesforce
description: "Sync a marketing qualified HubSpot contact to Salesforce and notify sales."
inputParameters:
- name: hubspot_contact_id
in: body
type: string
description: "The HubSpot contact identifier."
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}}"
lead_source: "HubSpot"
- name: notify-sales
type: call
call: "msteams.send-message"
with:
channel_id: "sales-leads"
text: "New MQL from HubSpot: {{get-hubspot-contact.firstname}} {{get-hubspot-contact.lastname}} at {{get-hubspot-contact.company}}. SF Lead: {{create-sf-lead.id}}"
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://ncl.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
- 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
When a sailing itinerary is modified, retrieves affected bookings from Salesforce, sends change notification emails via SendGrid, and updates the guest app via push notification API.
naftiko: "0.5"
info:
label: "Itinerary Change Notifier"
description: "When a sailing itinerary is modified, retrieves affected bookings from Salesforce, sends change notification emails via SendGrid, and updates the guest app via push notification API."
tags:
- reservations
- marketing
- salesforce
- sendgrid
capability:
exposes:
- type: mcp
namespace: itinerary-ops
port: 8080
tools:
- name: notify-itinerary-change
description: "Notify all affected guests when a sailing itinerary changes."
inputParameters:
- name: sailing_id
in: body
type: string
description: "The sailing identifier."
- name: change_summary
in: body
type: string
description: "Summary of the itinerary change."
steps:
- name: get-affected-guests
type: call
call: "salesforce.query-bookings"
with:
sailing_id: "{{sailing_id}}"
- name: send-notifications
type: call
call: "sendgrid.send-batch"
with:
recipients: "{{get-affected-guests.emails}}"
subject: "Itinerary Update for Your NCL Cruise"
body: "{{change_summary}}"
- name: push-app-notification
type: call
call: "guest-app.send-push"
with:
sailing_id: "{{sailing_id}}"
message: "{{change_summary}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://ncl.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: bookings
path: "/query?q=SELECT+Email+FROM+Booking__c+WHERE+Sailing__c='{{sailing_id}}'"
inputParameters:
- name: sailing_id
in: query
operations:
- name: query-bookings
method: GET
- type: http
namespace: sendgrid
baseUri: "https://api.sendgrid.com/v3"
authentication:
type: bearer
token: "$secrets.sendgrid_api_key"
resources:
- name: mail
path: "/mail/send"
operations:
- name: send-batch
method: POST
- type: http
namespace: guest-app
baseUri: "https://api.ncl.com/mobile/v1"
authentication:
type: bearer
token: "$secrets.ncl_mobile_token"
resources:
- name: push
path: "/notifications/push"
operations:
- name: send-push
method: POST
Pulls current sprint metrics from Jira, formats a summary, and posts the daily standup report to a Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Jira Sprint Progress Reporter"
description: "Pulls current sprint metrics from Jira, formats a summary, and posts the daily standup report to a Microsoft Teams channel."
tags:
- development
- jira
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: dev-reporting
port: 8080
tools:
- name: report-sprint-progress
description: "Generate and post a sprint progress summary from Jira to Microsoft Teams."
inputParameters:
- name: board_id
in: body
type: string
description: "The Jira board identifier."
- name: teams_channel_id
in: body
type: string
description: "The Microsoft Teams channel to post to."
steps:
- name: get-sprint
type: call
call: "jira.get-active-sprint"
with:
board_id: "{{board_id}}"
- name: get-sprint-issues
type: call
call: "jira.get-sprint-issues"
with:
sprint_id: "{{get-sprint.id}}"
- name: post-report
type: call
call: "msteams.send-message"
with:
channel_id: "{{teams_channel_id}}"
text: "Sprint {{get-sprint.name}}: {{get-sprint-issues.done_count}}/{{get-sprint-issues.total_count}} done. {{get-sprint-issues.in_progress_count}} in progress."
consumes:
- type: http
namespace: jira
baseUri: "https://ncl.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
- name: sprint-issues
path: "/sprint/{{sprint_id}}/issue"
inputParameters:
- name: sprint_id
in: path
operations:
- name: get-sprint-issues
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
Pulls LinkedIn advertising campaign metrics, joins with Salesforce lead attribution data, and stores the combined report in Snowflake for B2B marketing analysis.
naftiko: "0.5"
info:
label: "LinkedIn Ad Campaign Reporter"
description: "Pulls LinkedIn advertising campaign metrics, joins with Salesforce lead attribution data, and stores the combined report in Snowflake for B2B marketing analysis."
tags:
- marketing
- linkedin
- salesforce
- snowflake
capability:
exposes:
- type: mcp
namespace: b2b-marketing
port: 8080
tools:
- name: report-linkedin-performance
description: "Generate a LinkedIn ad campaign performance report with Salesforce lead attribution."
inputParameters:
- name: campaign_id
in: body
type: string
description: "The LinkedIn campaign identifier."
- name: date_start
in: body
type: string
description: "Report start date."
- name: date_end
in: body
type: string
description: "Report end date."
steps:
- name: get-linkedin-metrics
type: call
call: "linkedin.get-campaign-analytics"
with:
campaign_id: "{{campaign_id}}"
start_date: "{{date_start}}"
end_date: "{{date_end}}"
- name: get-lead-attribution
type: call
call: "salesforce.query-linkedin-leads"
with:
campaign_id: "{{campaign_id}}"
- name: store-report
type: call
call: "snowflake.insert-record"
with:
table: "linkedin_campaign_reports"
data:
campaign_id: "{{campaign_id}}"
impressions: "{{get-linkedin-metrics.impressions}}"
clicks: "{{get-linkedin-metrics.clicks}}"
leads: "{{get-lead-attribution.total}}"
consumes:
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: analytics
path: "/adAnalyticsV2?q=analytics&campaigns=urn:li:sponsoredCampaign:{{campaign_id}}"
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-analytics
method: GET
- type: http
namespace: salesforce
baseUri: "https://ncl.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: leads
path: "/query?q=SELECT+COUNT(Id)+FROM+Lead+WHERE+LinkedIn_Campaign__c='{{campaign_id}}'"
inputParameters:
- name: campaign_id
in: query
operations:
- name: query-linkedin-leads
method: GET
- type: http
namespace: snowflake
baseUri: "https://ncl.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: insert-record
method: POST
Retrieves newsletter subscriber data from MailChimp by audience segment and syncs it to the Salesforce Marketing Cloud data extension for unified campaign targeting.
naftiko: "0.5"
info:
label: "MailChimp Subscriber Sync"
description: "Retrieves newsletter subscriber data from MailChimp by audience segment and syncs it to the Salesforce Marketing Cloud data extension for unified campaign targeting."
tags:
- marketing
- mailchimp
- salesforce-marketing-cloud
capability:
exposes:
- type: mcp
namespace: subscriber-sync
port: 8080
tools:
- name: sync-mailchimp-to-sfmc
description: "Sync MailChimp subscribers to Salesforce Marketing Cloud."
inputParameters:
- name: list_id
in: body
type: string
description: "The MailChimp audience list identifier."
- name: segment_id
in: body
type: string
description: "The MailChimp segment identifier."
steps:
- name: get-subscribers
type: call
call: "mailchimp.get-segment-members"
with:
list_id: "{{list_id}}"
segment_id: "{{segment_id}}"
- name: upsert-to-sfmc
type: call
call: "sfmc.upsert-data-extension"
with:
data_extension: "mailchimp_subscribers"
rows: "{{get-subscribers.members}}"
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: segments
path: "/lists/{{list_id}}/segments/{{segment_id}}/members"
inputParameters:
- name: list_id
in: path
- name: segment_id
in: path
operations:
- name: get-segment-members
method: GET
- type: http
namespace: sfmc
baseUri: "https://ncl.rest.marketingcloudapis.com/data/v1"
authentication:
type: bearer
token: "$secrets.sfmc_token"
resources:
- name: data-extensions
path: "/customobjectdata/key/{{data_extension}}/rowset"
inputParameters:
- name: data_extension
in: path
operations:
- name: upsert-data-extension
method: POST
Pulls campaign metrics from Google Analytics and Google Ads, joins with booking conversions from Salesforce, and stores the unified report in Snowflake for marketing analytics.
naftiko: "0.5"
info:
label: "Marketing Campaign Performance Tracker"
description: "Pulls campaign metrics from Google Analytics and Google Ads, joins with booking conversions from Salesforce, and stores the unified report in Snowflake for marketing analytics."
tags:
- marketing
- google-analytics
- google-ads
- salesforce
- snowflake
capability:
exposes:
- type: mcp
namespace: marketing-analytics
port: 8080
tools:
- name: track-campaign-performance
description: "Aggregate marketing campaign data from Google Analytics, Google Ads, and Salesforce into a unified Snowflake report."
inputParameters:
- name: campaign_id
in: body
type: string
description: "The marketing campaign identifier."
- name: date_range_start
in: body
type: string
description: "Report start date in YYYY-MM-DD format."
- name: date_range_end
in: body
type: string
description: "Report end date in YYYY-MM-DD format."
steps:
- name: get-ga-metrics
type: call
call: "google-analytics.get-report"
with:
campaign_id: "{{campaign_id}}"
start_date: "{{date_range_start}}"
end_date: "{{date_range_end}}"
- name: get-ads-metrics
type: call
call: "google-ads.get-campaign-stats"
with:
campaign_id: "{{campaign_id}}"
start_date: "{{date_range_start}}"
end_date: "{{date_range_end}}"
- name: get-conversions
type: call
call: "salesforce.get-campaign-conversions"
with:
campaign_id: "{{campaign_id}}"
- name: store-report
type: call
call: "snowflake.insert-record"
with:
table: "campaign_performance"
data:
campaign_id: "{{campaign_id}}"
impressions: "{{get-ads-metrics.impressions}}"
clicks: "{{get-ads-metrics.clicks}}"
sessions: "{{get-ga-metrics.sessions}}"
bookings: "{{get-conversions.total_conversions}}"
consumes:
- type: http
namespace: google-analytics
baseUri: "https://analyticsdata.googleapis.com/v1beta"
authentication:
type: bearer
token: "$secrets.google_analytics_token"
resources:
- name: reports
path: "/properties/ncl/runReport"
operations:
- name: get-report
method: POST
- type: http
namespace: google-ads
baseUri: "https://googleads.googleapis.com/v14"
authentication:
type: bearer
token: "$secrets.google_ads_token"
resources:
- name: campaigns
path: "/customers/ncl/campaigns/{{campaign_id}}/stats"
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-stats
method: GET
- type: http
namespace: salesforce
baseUri: "https://ncl.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: campaigns
path: "/sobjects/Campaign/{{campaign_id}}/conversions"
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-conversions
method: GET
- type: http
namespace: snowflake
baseUri: "https://ncl.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: insert-record
method: POST
Sends a formatted message to a specified Microsoft Teams channel. Used as a reusable notification primitive across NCL workflows.
naftiko: "0.5"
info:
label: "Microsoft Teams Channel Notifier"
description: "Sends a formatted message to a specified Microsoft Teams channel. Used as a reusable notification primitive across NCL workflows."
tags:
- communications
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: team-notifications
port: 8080
tools:
- name: send-teams-notification
description: "Send a message to a Microsoft Teams channel."
inputParameters:
- name: channel_id
in: body
type: string
description: "The Teams channel identifier."
- name: message
in: body
type: string
description: "The message text to send."
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
Retrieves application performance metrics from New Relic for NCL's booking platform. Returns response time, throughput, and error rate.
naftiko: "0.5"
info:
label: "New Relic Performance Snapshot"
description: "Retrieves application performance metrics from New Relic for NCL's booking platform. Returns response time, throughput, and error rate."
tags:
- operations
- monitoring
- new-relic
capability:
exposes:
- type: mcp
namespace: apm-monitoring
port: 8080
tools:
- name: get-app-performance
description: "Get current performance metrics for an application from New Relic."
inputParameters:
- name: app_id
in: body
type: string
description: "The New Relic application identifier."
call: "newrelic.get-app-metrics"
with:
app_id: "{{app_id}}"
outputParameters:
- name: response_time
type: number
mapping: "$.application.application_summary.response_time"
- name: throughput
type: number
mapping: "$.application.application_summary.throughput"
- name: error_rate
type: number
mapping: "$.application.application_summary.error_rate"
consumes:
- type: http
namespace: newrelic
baseUri: "https://api.newrelic.com/v2"
authentication:
type: apiKey
key: "$secrets.newrelic_api_key"
header: "X-Api-Key"
resources:
- name: applications
path: "/applications/{{app_id}}.json"
inputParameters:
- name: app_id
in: path
operations:
- name: get-app-metrics
method: GET
Pulls the entertainment schedule from the event management system, formats it for the guest app, and publishes updates via the mobile API and digital signage system.
naftiko: "0.5"
info:
label: "Onboard Entertainment Schedule Publisher"
description: "Pulls the entertainment schedule from the event management system, formats it for the guest app, and publishes updates via the mobile API and digital signage system."
tags:
- onboard-ops
- entertainment
- guest-services
capability:
exposes:
- type: mcp
namespace: entertainment-ops
port: 8080
tools:
- name: publish-entertainment-schedule
description: "Publish the daily entertainment schedule to the guest app and digital signage."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: date
in: body
type: string
description: "The schedule date in YYYY-MM-DD format."
steps:
- name: get-schedule
type: call
call: "events-api.get-daily-schedule"
with:
ship_code: "{{ship_code}}"
date: "{{date}}"
- name: publish-to-app
type: call
call: "guest-app.update-schedule"
with:
ship_code: "{{ship_code}}"
schedule: "{{get-schedule.events}}"
- name: update-signage
type: call
call: "signage-api.update-display"
with:
ship_code: "{{ship_code}}"
content: "{{get-schedule.events}}"
consumes:
- type: http
namespace: events-api
baseUri: "https://api.ncl.com/events/v1"
authentication:
type: bearer
token: "$secrets.ncl_events_token"
resources:
- name: schedules
path: "/ships/{{ship_code}}/schedule/{{date}}"
inputParameters:
- name: ship_code
in: path
- name: date
in: path
operations:
- name: get-daily-schedule
method: GET
- type: http
namespace: guest-app
baseUri: "https://api.ncl.com/mobile/v1"
authentication:
type: bearer
token: "$secrets.ncl_mobile_token"
resources:
- name: schedules
path: "/ships/{{ship_code}}/entertainment"
inputParameters:
- name: ship_code
in: path
operations:
- name: update-schedule
method: PUT
- type: http
namespace: signage-api
baseUri: "https://api.ncl.com/signage/v1"
authentication:
type: bearer
token: "$secrets.ncl_signage_token"
resources:
- name: displays
path: "/ships/{{ship_code}}/displays"
inputParameters:
- name: ship_code
in: path
operations:
- name: update-display
method: PUT
Pulls daily onboard spend data from the POS system, aggregates by category in Snowflake, and pushes a summary dashboard update to Tableau for ship management review.
naftiko: "0.5"
info:
label: "Onboard Revenue Dashboard Sync"
description: "Pulls daily onboard spend data from the POS system, aggregates by category in Snowflake, and pushes a summary dashboard update to Tableau for ship management review."
tags:
- revenue
- onboard-ops
- snowflake
- tableau
capability:
exposes:
- type: mcp
namespace: revenue-analytics
port: 8080
tools:
- name: sync-onboard-revenue
description: "Pull daily onboard revenue from POS, aggregate in Snowflake, and refresh the Tableau dashboard."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: report_date
in: body
type: string
description: "The date to pull revenue data for in YYYY-MM-DD format."
steps:
- name: pull-pos-data
type: call
call: "pos-system.get-daily-revenue"
with:
ship_code: "{{ship_code}}"
date: "{{report_date}}"
- name: aggregate-revenue
type: call
call: "snowflake.execute-query"
with:
query: "INSERT INTO onboard_revenue SELECT * FROM staging WHERE ship_code='{{ship_code}}' AND date='{{report_date}}'"
- name: refresh-dashboard
type: call
call: "tableau.refresh-extract"
with:
datasource_id: "onboard_revenue_ds"
consumes:
- type: http
namespace: pos-system
baseUri: "https://api.ncl.com/pos/v1"
authentication:
type: bearer
token: "$secrets.ncl_pos_token"
resources:
- name: revenue
path: "/ships/{{ship_code}}/revenue/{{date}}"
inputParameters:
- name: ship_code
in: path
- name: date
in: path
operations:
- name: get-daily-revenue
method: GET
- type: http
namespace: snowflake
baseUri: "https://ncl.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- type: http
namespace: tableau
baseUri: "https://tableau.ncl.com/api/3.21"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: datasources
path: "/sites/ncl/datasources/{{datasource_id}}/refresh"
inputParameters:
- name: datasource_id
in: path
operations:
- name: refresh-extract
method: POST
On approach to a port, pulls manifest data from the reservation system, submits customs declarations via the port authority API, and notifies shore operations via Microsoft Teams.
naftiko: "0.5"
info:
label: "Port Arrival Logistics Coordinator"
description: "On approach to a port, pulls manifest data from the reservation system, submits customs declarations via the port authority API, and notifies shore operations via Microsoft Teams."
tags:
- onboard-ops
- logistics
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: port-logistics
port: 8080
tools:
- name: coordinate-port-arrival
description: "Coordinate port arrival logistics including manifest submission and customs clearance."
inputParameters:
- name: sailing_id
in: body
type: string
description: "The sailing identifier."
- name: port_code
in: body
type: string
description: "The destination port code."
steps:
- name: get-manifest
type: call
call: "reservation-system.get-manifest"
with:
sailing_id: "{{sailing_id}}"
- name: submit-customs
type: call
call: "port-authority.submit-declaration"
with:
port_code: "{{port_code}}"
passenger_count: "{{get-manifest.passenger_count}}"
crew_count: "{{get-manifest.crew_count}}"
- name: notify-shore-ops
type: call
call: "msteams.send-message"
with:
channel_id: "shore-operations"
text: "Arrival at {{port_code}}: {{get-manifest.passenger_count}} pax, customs ref {{submit-customs.reference_number}}"
consumes:
- type: http
namespace: reservation-system
baseUri: "https://api.ncl.com/reservations/v1"
authentication:
type: bearer
token: "$secrets.ncl_reservation_token"
resources:
- name: manifests
path: "/sailings/{{sailing_id}}/manifest"
inputParameters:
- name: sailing_id
in: path
operations:
- name: get-manifest
method: GET
- type: http
namespace: port-authority
baseUri: "https://api.ncl.com/ports/v1"
authentication:
type: bearer
token: "$secrets.ncl_port_token"
resources:
- name: declarations
path: "/ports/{{port_code}}/customs"
inputParameters:
- name: port_code
in: path
operations:
- name: submit-declaration
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
When a procurement request is submitted in SAP Ariba, validates budget in Oracle, creates a ServiceNow approval ticket, and notifies the procurement manager in Microsoft Teams.
naftiko: "0.5"
info:
label: "Procurement Request Workflow"
description: "When a procurement request is submitted in SAP Ariba, validates budget in Oracle, creates a ServiceNow approval ticket, and notifies the procurement manager in Microsoft Teams."
tags:
- procurement
- sap-ariba
- oracle
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: procurement-ops
port: 8080
tools:
- name: process-procurement-request
description: "Process a procurement request with budget validation, approval, and notification."
inputParameters:
- name: requisition_id
in: body
type: string
description: "The SAP Ariba requisition identifier."
- name: amount
in: body
type: number
description: "The total requisition amount."
- name: cost_center
in: body
type: string
description: "The cost center for budget validation."
steps:
- name: get-requisition
type: call
call: "ariba.get-requisition"
with:
requisition_id: "{{requisition_id}}"
- name: validate-budget
type: call
call: "oracle.check-budget"
with:
cost_center: "{{cost_center}}"
amount: "{{amount}}"
- name: create-approval
type: call
call: "servicenow.create-request"
with:
short_description: "Procurement approval: {{requisition_id}}"
description: "Amount: ${{amount}}. Budget status: {{validate-budget.status}}. Vendor: {{get-requisition.vendor_name}}"
- name: notify-manager
type: call
call: "msteams.send-message"
with:
channel_id: "procurement-approvals"
text: "New procurement request {{requisition_id}} for ${{amount}}. Budget: {{validate-budget.status}}. Approval: {{create-approval.number}}"
consumes:
- type: http
namespace: ariba
baseUri: "https://openapi.ariba.com/api/procurement/v1"
authentication:
type: bearer
token: "$secrets.ariba_token"
resources:
- name: requisitions
path: "/requisitions/{{requisition_id}}"
inputParameters:
- name: requisition_id
in: path
operations:
- name: get-requisition
method: GET
- type: http
namespace: oracle
baseUri: "https://ncl.oraclecloud.com/fscmRestApi/resources/v1"
authentication:
type: bearer
token: "$secrets.oracle_token"
resources:
- name: budgets
path: "/budgets/{{cost_center}}/check"
inputParameters:
- name: cost_center
in: path
operations:
- name: check-budget
method: GET
- type: http
namespace: servicenow
baseUri: "https://ncl.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: requests
path: "/table/sc_request"
operations:
- name: create-request
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: channel-messages
path: "/teams/{{channel_id}}/channels/general/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
Pulls current booking pace from Snowflake, compares against historical yield curves, adjusts dynamic pricing in the reservation system, and logs pricing changes for audit in ServiceNow.
naftiko: "0.5"
info:
label: "Revenue Yield Optimizer"
description: "Pulls current booking pace from Snowflake, compares against historical yield curves, adjusts dynamic pricing in the reservation system, and logs pricing changes for audit in ServiceNow."
tags:
- revenue
- pricing
- snowflake
- servicenow
capability:
exposes:
- type: mcp
namespace: yield-management
port: 8080
tools:
- name: optimize-cabin-pricing
description: "Adjust cabin pricing based on booking pace and yield optimization models."
inputParameters:
- name: sailing_id
in: body
type: string
description: "The sailing identifier."
- name: cabin_class
in: body
type: string
description: "The cabin class to optimize pricing for."
steps:
- name: get-booking-pace
type: call
call: "snowflake.execute-query"
with:
query: "SELECT * FROM booking_pace WHERE sailing_id='{{sailing_id}}' AND cabin_class='{{cabin_class}}'"
- name: calculate-optimal-price
type: call
call: "snowflake.execute-query"
with:
query: "CALL yield_optimizer('{{sailing_id}}', '{{cabin_class}}', {{get-booking-pace.current_pace}})"
- name: update-pricing
type: call
call: "reservation-system.update-pricing"
with:
sailing_id: "{{sailing_id}}"
cabin_class: "{{cabin_class}}"
new_price: "{{calculate-optimal-price.recommended_price}}"
- name: log-change
type: call
call: "servicenow.create-record"
with:
table: "pricing_audit"
data:
sailing_id: "{{sailing_id}}"
old_price: "{{get-booking-pace.current_price}}"
new_price: "{{calculate-optimal-price.recommended_price}}"
consumes:
- type: http
namespace: snowflake
baseUri: "https://ncl.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- type: http
namespace: reservation-system
baseUri: "https://api.ncl.com/reservations/v1"
authentication:
type: bearer
token: "$secrets.ncl_reservation_token"
resources:
- name: pricing
path: "/sailings/{{sailing_id}}/pricing"
inputParameters:
- name: sailing_id
in: path
operations:
- name: update-pricing
method: PUT
- type: http
namespace: servicenow
baseUri: "https://ncl.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: records
path: "/table/{{table}}"
inputParameters:
- name: table
in: path
operations:
- name: create-record
method: POST
Queries the safety management system for muster drill completion rates by ship, and pushes the data to a Tableau dashboard for USCG compliance reporting.
naftiko: "0.5"
info:
label: "Safety Drill Completion Tracker"
description: "Queries the safety management system for muster drill completion rates by ship, and pushes the data to a Tableau dashboard for USCG compliance reporting."
tags:
- onboard-ops
- safety
- compliance
- tableau
capability:
exposes:
- type: mcp
namespace: safety-compliance
port: 8080
tools:
- name: track-muster-completion
description: "Track muster drill completion rates and update compliance dashboard."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: sailing_date
in: body
type: string
description: "The sailing date in YYYY-MM-DD format."
steps:
- name: get-drill-data
type: call
call: "safety-api.get-muster-status"
with:
ship_code: "{{ship_code}}"
date: "{{sailing_date}}"
- name: store-compliance
type: call
call: "snowflake.insert-record"
with:
table: "muster_compliance"
data:
ship_code: "{{ship_code}}"
date: "{{sailing_date}}"
completion_rate: "{{get-drill-data.completion_rate}}"
- name: refresh-dashboard
type: call
call: "tableau.refresh-extract"
with:
datasource_id: "safety_compliance_ds"
consumes:
- type: http
namespace: safety-api
baseUri: "https://api.ncl.com/safety/v1"
authentication:
type: bearer
token: "$secrets.ncl_safety_token"
resources:
- name: muster
path: "/ships/{{ship_code}}/muster"
inputParameters:
- name: ship_code
in: path
operations:
- name: get-muster-status
method: GET
- type: http
namespace: snowflake
baseUri: "https://ncl.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: insert-record
method: POST
- type: http
namespace: tableau
baseUri: "https://tableau.ncl.com/api/3.21"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: datasources
path: "/sites/ncl/datasources/{{datasource_id}}/refresh"
inputParameters:
- name: datasource_id
in: path
operations:
- name: refresh-extract
method: POST
Looks up a Salesforce lead by email address. Returns lead status, source, and assigned owner for the NCL sales team.
naftiko: "0.5"
info:
label: "Salesforce Lead Lookup"
description: "Looks up a Salesforce lead by email address. Returns lead status, source, and assigned owner for the NCL sales team."
tags:
- sales
- salesforce
capability:
exposes:
- type: mcp
namespace: sales-ops
port: 8080
tools:
- name: get-lead-by-email
description: "Look up a Salesforce lead by email address."
inputParameters:
- name: email
in: body
type: string
description: "The lead email address to look up."
call: "salesforce.query-lead"
with:
email: "{{email}}"
outputParameters:
- name: lead_status
type: string
mapping: "$.records[0].Status"
- name: lead_source
type: string
mapping: "$.records[0].LeadSource"
- name: owner_name
type: string
mapping: "$.records[0].Owner.Name"
consumes:
- type: http
namespace: salesforce
baseUri: "https://ncl.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: leads
path: "/query?q=SELECT+Id,Status,LeadSource,Owner.Name+FROM+Lead+WHERE+Email='{{email}}'"
inputParameters:
- name: email
in: query
operations:
- name: query-lead
method: GET
Looks up a ServiceNow incident by number. Returns incident state, priority, assigned group, and short description.
naftiko: "0.5"
info:
label: "ServiceNow Incident Lookup"
description: "Looks up a ServiceNow incident by number. Returns incident state, priority, assigned group, and short description."
tags:
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: itsm-ops
port: 8080
tools:
- name: get-incident
description: "Look up a ServiceNow incident by number."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number (e.g., INC0012345)."
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"
- name: description
type: string
mapping: "$.result.short_description"
consumes:
- type: http
namespace: servicenow
baseUri: "https://ncl.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: query
operations:
- name: get-incident
method: GET
Retrieves a document from SharePoint by site and file path. Returns the document URL, last modified date, and author.
naftiko: "0.5"
info:
label: "SharePoint Document Retrieval"
description: "Retrieves a document from SharePoint by site and file path. Returns the document URL, last modified date, and author."
tags:
- operations
- document-management
- sharepoint
capability:
exposes:
- type: mcp
namespace: doc-management
port: 8080
tools:
- name: get-sharepoint-document
description: "Retrieve a document's metadata and download URL from SharePoint."
inputParameters:
- name: site_id
in: body
type: string
description: "The SharePoint site identifier."
- name: file_path
in: body
type: string
description: "The path to the file within the document library."
call: "sharepoint.get-file"
with:
site_id: "{{site_id}}"
file_path: "{{file_path}}"
outputParameters:
- name: download_url
type: string
mapping: "$.@microsoft.graph.downloadUrl"
- name: last_modified
type: string
mapping: "$.lastModifiedDateTime"
- name: author
type: string
mapping: "$.lastModifiedBy.user.displayName"
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
Creates a maintenance work order in ServiceNow for a ship system issue, attaches diagnostic data from the IoT monitoring platform, and notifies the chief engineer via Microsoft Teams.
naftiko: "0.5"
info:
label: "Ship Maintenance Work Order Creator"
description: "Creates a maintenance work order in ServiceNow for a ship system issue, attaches diagnostic data from the IoT monitoring platform, and notifies the chief engineer via Microsoft Teams."
tags:
- onboard-ops
- maintenance
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: ship-maintenance
port: 8080
tools:
- name: create-maintenance-order
description: "Create a maintenance work order with IoT diagnostics and engineer notification."
inputParameters:
- name: ship_code
in: body
type: string
description: "The ship identifier code."
- name: system_id
in: body
type: string
description: "The ship system or equipment identifier."
- name: issue_description
in: body
type: string
description: "Description of the maintenance issue."
steps:
- name: get-diagnostics
type: call
call: "iot-platform.get-system-status"
with:
ship_code: "{{ship_code}}"
system_id: "{{system_id}}"
- name: create-work-order
type: call
call: "servicenow.create-incident"
with:
short_description: "Maintenance: {{system_id}} on {{ship_code}}"
category: "ship_maintenance"
description: "{{issue_description}}. Diagnostics: {{get-diagnostics.summary}}"
priority: "{{get-diagnostics.severity}}"
- name: notify-engineer
type: call
call: "msteams.send-message"
with:
channel_id: "engineering-alerts"
text: "Maintenance order {{create-work-order.number}} created for {{system_id}} on {{ship_code}}. Severity: {{get-diagnostics.severity}}"
consumes:
- type: http
namespace: iot-platform
baseUri: "https://api.ncl.com/iot/v1"
authentication:
type: bearer
token: "$secrets.ncl_iot_token"
resources:
- name: systems
path: "/ships/{{ship_code}}/systems/{{system_id}}/status"
inputParameters:
- name: ship_code
in: path
- name: system_id
in: path
operations:
- name: get-system-status
method: GET
- type: http
namespace: servicenow
baseUri: "https://ncl.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
Queries the shore excursion catalog for available tours at a given port on a specific date. Returns tour name, available spots, and pricing.
naftiko: "0.5"
info:
label: "Shore Excursion Availability Lookup"
description: "Queries the shore excursion catalog for available tours at a given port on a specific date. Returns tour name, available spots, and pricing."
tags:
- reservations
- shore-excursions
- guest-services
capability:
exposes:
- type: mcp
namespace: excursions
port: 8080
tools:
- name: get-excursion-availability
description: "Look up available shore excursions by port code and date."
inputParameters:
- name: port_code
in: body
type: string
description: "The port of call code."
- name: date
in: body
type: string
description: "The port visit date in YYYY-MM-DD format."
call: "excursion-api.list-available"
with:
port_code: "{{port_code}}"
date: "{{date}}"
outputParameters:
- name: excursions
type: array
mapping: "$.data.tours"
- name: total_available
type: integer
mapping: "$.data.total_count"
consumes:
- type: http
namespace: excursion-api
baseUri: "https://api.ncl.com/excursions/v1"
authentication:
type: bearer
token: "$secrets.ncl_excursion_token"
resources:
- name: tours
path: "/ports/{{port_code}}/tours?date={{date}}"
inputParameters:
- name: port_code
in: path
- name: date
in: query
operations:
- name: list-available
method: GET
Posts a message to a specified Slack channel. Used for cross-platform notifications when teams use both Slack and Teams.
naftiko: "0.5"
info:
label: "Slack Channel Message Poster"
description: "Posts a message to a specified Slack channel. Used for cross-platform notifications when teams use both Slack and Teams."
tags:
- communications
- slack
capability:
exposes:
- type: mcp
namespace: slack-notifications
port: 8080
tools:
- name: post-slack-message
description: "Post a message to a Slack channel."
inputParameters:
- name: channel
in: body
type: string
description: "The Slack channel name or ID."
- name: text
in: body
type: string
description: "The message text to post."
call: "slack.post-message"
with:
channel: "{{channel}}"
text: "{{text}}"
consumes:
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Executes an arbitrary SQL query against NCL's Snowflake data warehouse and returns results. Used by analysts and downstream capabilities.
naftiko: "0.5"
info:
label: "Snowflake Query Runner"
description: "Executes an arbitrary SQL query against NCL's Snowflake data warehouse and returns results. Used by analysts and downstream capabilities."
tags:
- analytics
- snowflake
capability:
exposes:
- type: mcp
namespace: data-warehouse
port: 8080
tools:
- name: run-snowflake-query
description: "Execute a SQL query against the NCL Snowflake warehouse."
inputParameters:
- name: query
in: body
type: string
description: "The SQL query to execute."
- name: warehouse
in: body
type: string
description: "The Snowflake warehouse to use."
call: "snowflake.execute-query"
with:
statement: "{{query}}"
warehouse: "{{warehouse}}"
outputParameters:
- name: rows
type: array
mapping: "$.data"
- name: row_count
type: integer
mapping: "$.resultSetMetaData.numRows"
consumes:
- type: http
namespace: snowflake
baseUri: "https://ncl.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
Pulls brand mentions from Instagram and Facebook via Meta APIs, scores sentiment, and logs high-engagement posts in Salesforce Marketing Cloud for follow-up.
naftiko: "0.5"
info:
label: "Social Media Engagement Monitor"
description: "Pulls brand mentions from Instagram and Facebook via Meta APIs, scores sentiment, and logs high-engagement posts in Salesforce Marketing Cloud for follow-up."
tags:
- marketing
- social-media
- instagram
- facebook
- salesforce-marketing-cloud
capability:
exposes:
- type: mcp
namespace: social-monitoring
port: 8080
tools:
- name: monitor-social-engagement
description: "Monitor brand mentions across Instagram and Facebook and log high-engagement posts."
inputParameters:
- name: date
in: body
type: string
description: "The date to monitor in YYYY-MM-DD format."
- name: engagement_threshold
in: body
type: integer
description: "Minimum engagement count to trigger logging."
steps:
- name: get-instagram-mentions
type: call
call: "meta-api.get-mentions"
with:
platform: "instagram"
date: "{{date}}"
- name: get-facebook-mentions
type: call
call: "meta-api.get-mentions"
with:
platform: "facebook"
date: "{{date}}"
- name: log-high-engagement
type: call
call: "sfmc.create-data-extension-row"
with:
data_extension: "social_mentions"
data:
date: "{{date}}"
instagram_count: "{{get-instagram-mentions.total}}"
facebook_count: "{{get-facebook-mentions.total}}"
consumes:
- type: http
namespace: meta-api
baseUri: "https://graph.facebook.com/v18.0"
authentication:
type: bearer
token: "$secrets.meta_access_token"
resources:
- name: mentions
path: "/ncl/mentions"
operations:
- name: get-mentions
method: GET
- type: http
namespace: sfmc
baseUri: "https://ncl.rest.marketingcloudapis.com/data/v1"
authentication:
type: bearer
token: "$secrets.sfmc_token"
resources:
- name: data-extensions
path: "/customobjectdata/key/{{data_extension}}/rowset"
inputParameters:
- name: data_extension
in: path
operations:
- name: create-data-extension-row
method: POST
Books a spa appointment for a guest on a specific ship. Checks availability, creates the booking, and adds a charge to the guest folio.
naftiko: "0.5"
info:
label: "Spa Appointment Booking"
description: "Books a spa appointment for a guest on a specific ship. Checks availability, creates the booking, and adds a charge to the guest folio."
tags:
- onboard-ops
- spa
- revenue
capability:
exposes:
- type: mcp
namespace: spa-services
port: 8080
tools:
- name: book-spa-appointment
description: "Book a spa service for a guest, checking availability and charging the folio."
inputParameters:
- name: reservation_id
in: body
type: string
description: "The guest reservation ID."
- name: service_type
in: body
type: string
description: "The spa service type (massage, facial, etc.)."
- name: preferred_time
in: body
type: string
description: "Preferred appointment time in HH:MM format."
steps:
- name: check-availability
type: call
call: "spa-api.get-availability"
with:
reservation_id: "{{reservation_id}}"
service_type: "{{service_type}}"
time: "{{preferred_time}}"
- name: create-booking
type: call
call: "spa-api.book-appointment"
with:
reservation_id: "{{reservation_id}}"
slot_id: "{{check-availability.slot_id}}"
- name: charge-folio
type: call
call: "reservation-system.add-folio-charge"
with:
reservation_id: "{{reservation_id}}"
amount: "{{check-availability.price}}"
description: "Spa: {{service_type}}"
consumes:
- type: http
namespace: spa-api
baseUri: "https://api.ncl.com/spa/v1"
authentication:
type: bearer
token: "$secrets.ncl_spa_token"
resources:
- name: availability
path: "/availability"
operations:
- name: get-availability
method: GET
- name: bookings
path: "/bookings"
operations:
- name: book-appointment
method: POST
- type: http
namespace: reservation-system
baseUri: "https://api.ncl.com/reservations/v1"
authentication:
type: bearer
token: "$secrets.ncl_reservation_token"
resources:
- name: folio
path: "/reservations/{{reservation_id}}/folio/charges"
inputParameters:
- name: reservation_id
in: path
operations:
- name: add-folio-charge
method: POST
Queries SAP for a supply chain purchase order status for ship provisioning. Returns delivery status, expected arrival, and vendor details.
naftiko: "0.5"
info:
label: "Supply Chain Order Status Checker"
description: "Queries SAP for a supply chain purchase order status for ship provisioning. Returns delivery status, expected arrival, and vendor details."
tags:
- procurement
- supply-chain
- sap
capability:
exposes:
- type: mcp
namespace: supply-chain
port: 8080
tools:
- name: get-supply-order-status
description: "Check the status of a supply chain order for ship provisioning."
inputParameters:
- name: po_number
in: body
type: string
description: "The SAP purchase order number."
call: "sap.get-po-status"
with:
po_number: "{{po_number}}"
outputParameters:
- name: status
type: string
mapping: "$.d.OverallStatus"
- name: expected_delivery
type: string
mapping: "$.d.DeliveryDate"
- name: vendor_name
type: string
mapping: "$.d.Supplier.Name"
- name: ship_destination
type: string
mapping: "$.d.DeliveryAddress"
consumes:
- type: http
namespace: sap
baseUri: "https://ncl.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-status
method: GET
Pulls completed bookings from Salesforce for a travel agency, calculates commissions in Snowflake, and generates a payout report stored in SharePoint.
naftiko: "0.5"
info:
label: "Travel Agent Commission Calculator"
description: "Pulls completed bookings from Salesforce for a travel agency, calculates commissions in Snowflake, and generates a payout report stored in SharePoint."
tags:
- revenue
- sales
- salesforce
- snowflake
- sharepoint
capability:
exposes:
- type: mcp
namespace: agent-commissions
port: 8080
tools:
- name: calculate-agent-commissions
description: "Calculate travel agent commissions for a period and generate the payout report."
inputParameters:
- name: agency_id
in: body
type: string
description: "The travel agency Salesforce account ID."
- name: period_start
in: body
type: string
description: "Commission period start date."
- name: period_end
in: body
type: string
description: "Commission period end date."
steps:
- name: get-bookings
type: call
call: "salesforce.query-agency-bookings"
with:
agency_id: "{{agency_id}}"
start_date: "{{period_start}}"
end_date: "{{period_end}}"
- name: calculate-commissions
type: call
call: "snowflake.execute-query"
with:
query: "CALL calculate_commissions('{{agency_id}}', '{{period_start}}', '{{period_end}}')"
- name: store-report
type: call
call: "sharepoint.upload-file"
with:
site_id: "finance-reports"
file_path: "Commissions/{{agency_id}}_{{period_end}}.xlsx"
consumes:
- type: http
namespace: salesforce
baseUri: "https://ncl.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: agency-bookings
path: "/query?q=SELECT+Id,Amount+FROM+Opportunity+WHERE+AccountId='{{agency_id}}'"
inputParameters:
- name: agency_id
in: query
- name: start_date
in: query
- name: end_date
in: query
operations:
- name: query-agency-bookings
method: GET
- type: http
namespace: snowflake
baseUri: "https://ncl.snowflakecomputing.com/api/v2"
authentication:
type: bearer
token: "$secrets.snowflake_token"
resources:
- name: statements
path: "/statements"
operations:
- name: execute-query
method: POST
- 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}}:/content"
inputParameters:
- name: site_id
in: path
- name: file_path
in: path
operations:
- name: upload-file
method: PUT
When a vendor invoice arrives, validates it against the SAP purchase order, creates a payment request in Oracle, and notifies the finance team in Microsoft Teams.
naftiko: "0.5"
info:
label: "Vendor Invoice Processor"
description: "When a vendor invoice arrives, validates it against the SAP purchase order, creates a payment request in Oracle, and notifies the finance team in Microsoft Teams."
tags:
- procurement
- finance
- sap
- oracle
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: vendor-payments
port: 8080
tools:
- name: process-vendor-invoice
description: "Validate a vendor invoice against the PO and create a payment request."
inputParameters:
- name: invoice_number
in: body
type: string
description: "The vendor invoice number."
- name: po_number
in: body
type: string
description: "The associated SAP purchase order number."
- name: amount
in: body
type: number
description: "The invoice amount."
steps:
- name: validate-po
type: call
call: "sap.get-po"
with:
po_number: "{{po_number}}"
- name: create-payment
type: call
call: "oracle.create-payment-request"
with:
invoice_number: "{{invoice_number}}"
po_number: "{{po_number}}"
amount: "{{amount}}"
vendor: "{{validate-po.vendor_name}}"
- name: notify-finance
type: call
call: "msteams.send-message"
with:
channel_id: "finance-approvals"
text: "Payment request {{create-payment.request_id}} for ${{amount}} from {{validate-po.vendor_name}}. PO: {{po_number}}"
consumes:
- type: http
namespace: sap
baseUri: "https://ncl.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
- type: http
namespace: oracle
baseUri: "https://ncl.oraclecloud.com/fscmRestApi/resources/v1"
authentication:
type: bearer
token: "$secrets.oracle_token"
resources:
- name: payments
path: "/payablesInvoices"
operations:
- name: create-payment-request
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
Processes onboard WiFi package purchases by creating the charge on the guest folio and provisioning network access via the connectivity API.
naftiko: "0.5"
info:
label: "WiFi Package Purchase Processor"
description: "Processes onboard WiFi package purchases by creating the charge on the guest folio and provisioning network access via the connectivity API."
tags:
- onboard-ops
- revenue
- connectivity
capability:
exposes:
- type: mcp
namespace: wifi-services
port: 8080
tools:
- name: purchase-wifi-package
description: "Process a WiFi package purchase and provision network access for a guest."
inputParameters:
- name: reservation_id
in: body
type: string
description: "The guest reservation ID."
- name: package_type
in: body
type: string
description: "WiFi package tier (basic, premium, unlimited)."
steps:
- name: get-package-pricing
type: call
call: "wifi-api.get-packages"
with:
package_type: "{{package_type}}"
- name: charge-folio
type: call
call: "reservation-system.add-folio-charge"
with:
reservation_id: "{{reservation_id}}"
amount: "{{get-package-pricing.price}}"
description: "WiFi: {{package_type}}"
- name: provision-access
type: call
call: "wifi-api.provision-access"
with:
reservation_id: "{{reservation_id}}"
package_id: "{{get-package-pricing.package_id}}"
consumes:
- type: http
namespace: wifi-api
baseUri: "https://api.ncl.com/connectivity/v1"
authentication:
type: bearer
token: "$secrets.ncl_wifi_token"
resources:
- name: packages
path: "/packages"
operations:
- name: get-packages
method: GET
- name: provisioning
path: "/access/provision"
operations:
- name: provision-access
method: POST
- type: http
namespace: reservation-system
baseUri: "https://api.ncl.com/reservations/v1"
authentication:
type: bearer
token: "$secrets.ncl_reservation_token"
resources:
- name: folio
path: "/reservations/{{reservation_id}}/folio/charges"
inputParameters:
- name: reservation_id
in: path
operations:
- name: add-folio-charge
method: POST
Creates a Zoom meeting for NCL's shore-side team meetings and posts the join link to a Microsoft Teams channel.
naftiko: "0.5"
info:
label: "Zoom Meeting Scheduler"
description: "Creates a Zoom meeting for NCL's shore-side team meetings and posts the join link to a Microsoft Teams channel."
tags:
- communications
- zoom
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: meeting-ops
port: 8080
tools:
- name: schedule-zoom-meeting
description: "Schedule a Zoom meeting and share the link in 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 format."
- name: duration
in: body
type: integer
description: "Meeting duration in minutes."
- name: teams_channel_id
in: body
type: string
description: "The Teams channel to post the meeting link."
steps:
- name: create-meeting
type: call
call: "zoom.create-meeting"
with:
topic: "{{topic}}"
start_time: "{{start_time}}"
duration: "{{duration}}"
- name: post-link
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