McKinsey & Company Capabilities
Naftiko 0.5 capability definitions for McKinsey & Company - 100 capabilities showing integration workflows and service orchestrations.
Pulls Adobe Analytics report data for McKinsey.com, ingests it into Databricks for processing, and notifies the analytics team via Slack when the pipeline completes.
naftiko: "0.5"
info:
label: "Adobe Analytics to Databricks Data Pipeline"
description: "Pulls Adobe Analytics report data for McKinsey.com, ingests it into Databricks for processing, and notifies the analytics team via Slack when the pipeline completes."
tags:
- analytics
- data-engineering
- adobe-analytics
- databricks
- slack
capability:
exposes:
- type: mcp
namespace: adobe-databricks-pipeline
port: 8080
tools:
- name: run-adobe-pipeline
description: "Pull Adobe Analytics data, ingest into Databricks, and notify via Slack."
inputParameters:
- name: report_suite_id
in: body
type: string
description: "Adobe Analytics report suite ID."
- name: start_date
in: body
type: string
description: "Start date in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "End date in YYYY-MM-DD format."
steps:
- name: get-report
type: call
call: "adobe.get-report"
with:
rsid: "{{report_suite_id}}"
dateFrom: "{{start_date}}"
dateTo: "{{end_date}}"
metrics: "pageviews,visits,uniqueVisitors"
- name: ingest-data
type: call
call: "databricks.run-job"
with:
job_id: "adobe-analytics-ingestion"
notebook_params: "{\"rsid\": \"{{report_suite_id}}\", \"start\": \"{{start_date}}\", \"end\": \"{{end_date}}\"}"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "analytics-engineering"
text: "Adobe Analytics data pipeline complete for {{report_suite_id}} ({{start_date}} to {{end_date}}). Databricks run: {{ingest-data.run_id}}."
consumes:
- type: http
namespace: adobe
baseUri: "https://analytics.adobe.io/api"
authentication:
type: bearer
token: "$secrets.adobe_analytics_token"
inputParameters:
- name: x-api-key
in: header
value: "$secrets.adobe_api_key"
resources:
- name: reports
path: "/{{rsid}}/reports"
inputParameters:
- name: rsid
in: path
operations:
- name: get-report
method: POST
- type: http
namespace: databricks
baseUri: "https://mckinsey.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Archives engagement documents by moving files to a Box archive folder, creating an index page in Confluence, and notifying the document management team via Slack.
naftiko: "0.5"
info:
label: "Box Document Archive with Confluence Index"
description: "Archives engagement documents by moving files to a Box archive folder, creating an index page in Confluence, and notifying the document management team via Slack."
tags:
- document-management
- archiving
- box
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: doc-archive
port: 8080
tools:
- name: archive-documents
description: "Archive Box files, create Confluence index, and notify via Slack."
inputParameters:
- name: source_folder_id
in: body
type: string
description: "Box source folder ID."
- name: archive_folder_id
in: body
type: string
description: "Box archive folder ID."
- name: engagement_name
in: body
type: string
description: "Engagement name for indexing."
- name: space_key
in: body
type: string
description: "Confluence space key."
steps:
- name: list-files
type: call
call: "box.list-folder"
with:
folder_id: "{{source_folder_id}}"
- name: move-files
type: call
call: "box.move-folder"
with:
folder_id: "{{source_folder_id}}"
parent_id: "{{archive_folder_id}}"
- name: create-index
type: call
call: "confluence.create-page"
with:
space_key: "{{space_key}}"
title: "Document Archive: {{engagement_name}}"
body: "<h2>Archived Documents</h2><p>{{list-files.total_count}} files archived from engagement {{engagement_name}}.</p>"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "document-management"
text: "{{list-files.total_count}} documents archived for {{engagement_name}}. Index: {{create-index.url}}"
consumes:
- type: http
namespace: box
baseUri: "https://api.box.com/2.0"
authentication:
type: bearer
token: "$secrets.box_token"
resources:
- name: folders
path: "/folders/{{folder_id}}/items"
inputParameters:
- name: folder_id
in: path
operations:
- name: list-folder
method: GET
- name: folder-ops
path: "/folders/{{folder_id}}"
inputParameters:
- name: folder_id
in: path
operations:
- name: move-folder
method: PUT
- type: http
namespace: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: 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
Runs client due diligence by pulling company data from ZoomInfo, financial data from Bloomberg, checking internal conflicts in Salesforce, and generating a due diligence report in Confluence.
naftiko: "0.5"
info:
label: "Client Due Diligence Orchestrator"
description: "Runs client due diligence by pulling company data from ZoomInfo, financial data from Bloomberg, checking internal conflicts in Salesforce, and generating a due diligence report in Confluence."
tags:
- consulting
- due-diligence
- zoominfo
- bloomberg
- salesforce
- confluence
capability:
exposes:
- type: mcp
namespace: due-diligence
port: 8080
tools:
- name: run-due-diligence
description: "Run client due diligence across ZoomInfo, Bloomberg, Salesforce, and Confluence."
inputParameters:
- name: company_domain
in: body
type: string
description: "Company website domain."
- name: company_ticker
in: body
type: string
description: "Bloomberg ticker symbol."
- name: engagement_space_key
in: body
type: string
description: "Confluence space key for the engagement."
steps:
- name: enrich-company
type: call
call: "zoominfo.enrich-company"
with:
companyWebsite: "{{company_domain}}"
- name: get-financials
type: call
call: "bloomberg.get-company-data"
with:
ticker: "{{company_ticker}}"
fields: "REVENUE,NET_INCOME,TOTAL_DEBT,MARKET_CAP"
- name: check-conflicts
type: call
call: "salesforce.query-accounts"
with:
q: "SELECT Id, Name, Conflict_Status__c FROM Account WHERE Website='{{company_domain}}'"
- name: generate-report
type: call
call: "confluence.create-page"
with:
space_key: "{{engagement_space_key}}"
title: "Due Diligence: {{enrich-company.company_name}}"
body: "<h2>Company Profile</h2><p>Revenue: {{get-financials.REVENUE}}</p><p>Employees: {{enrich-company.employee_count}}</p><p>Industry: {{enrich-company.industry}}</p><h2>Conflict Check</h2><p>{{check-conflicts.totalSize}} existing accounts found.</p>"
consumes:
- type: http
namespace: zoominfo
baseUri: "https://api.zoominfo.com"
authentication:
type: bearer
token: "$secrets.zoominfo_token"
resources:
- name: enrich
path: "/enrich/company"
operations:
- name: enrich-company
method: POST
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: companies
path: "/company/{{ticker}}"
inputParameters:
- name: ticker
in: path
- name: fields
in: query
operations:
- name: get-company-data
method: GET
- type: http
namespace: salesforce
baseUri: "https://mckinsey.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
inputParameters:
- name: q
in: query
operations:
- name: query-accounts
method: GET
- type: http
namespace: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
When a new client engagement is created in Salesforce, provisions a SharePoint site, creates a Slack channel, sets up a Confluence project space, and notifies the engagement team via Microsoft Teams.
naftiko: "0.5"
info:
label: "Client Engagement Kickoff Orchestrator"
description: "When a new client engagement is created in Salesforce, provisions a SharePoint site, creates a Slack channel, sets up a Confluence project space, and notifies the engagement team via Microsoft Teams."
tags:
- consulting
- client-engagement
- salesforce
- sharepoint
- slack
- confluence
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: engagement-kickoff
port: 8080
tools:
- name: kickoff-engagement
description: "Given a Salesforce opportunity ID, orchestrate the full engagement kickoff across SharePoint, Slack, Confluence, and Microsoft Teams."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "The Salesforce opportunity ID for the new engagement."
- name: engagement_name
in: body
type: string
description: "Human-readable name for the engagement."
- name: partner_email
in: body
type: string
description: "Email of the lead engagement partner."
steps:
- name: get-opportunity
type: call
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
- name: create-site
type: call
call: "sharepoint.create-site"
with:
site_name: "ENG-{{engagement_name}}"
owner_email: "{{partner_email}}"
- name: create-channel
type: call
call: "slack.create-channel"
with:
channel_name: "eng-{{engagement_name}}"
purpose: "Engagement: {{get-opportunity.account_name}} - {{engagement_name}}"
- name: create-space
type: call
call: "confluence.create-space"
with:
space_key: "ENG{{opportunity_id}}"
space_name: "{{engagement_name}}"
- name: notify-team
type: call
call: "msteams.send-message"
with:
channel_id: "engagement-managers"
text: "New engagement launched: {{engagement_name}} for {{get-opportunity.account_name}}. SharePoint: {{create-site.url}} | Slack: #{{create-channel.name}} | Confluence: {{create-space.url}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://mckinsey.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: sharepoint
baseUri: "https://graph.microsoft.com/v1.0/sites"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: sites
path: "/"
operations:
- name: create-site
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: channels
path: "/conversations.create"
operations:
- name: create-channel
method: POST
- type: http
namespace: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: spaces
path: "/space"
operations:
- name: create-space
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
When a Google Form client feedback submission arrives, parses the response, logs it in Salesforce as a survey record, generates a summary in Confluence, and alerts the engagement partner via Slack.
naftiko: "0.5"
info:
label: "Client Feedback Intake Pipeline"
description: "When a Google Form client feedback submission arrives, parses the response, logs it in Salesforce as a survey record, generates a summary in Confluence, and alerts the engagement partner via Slack."
tags:
- client-experience
- feedback
- google-forms
- salesforce
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: feedback-intake
port: 8080
tools:
- name: process-feedback
description: "Process a client feedback form submission: log in Salesforce, summarize in Confluence, alert via Slack."
inputParameters:
- name: form_response_id
in: body
type: string
description: "Google Form response ID."
- name: form_id
in: body
type: string
description: "Google Form ID."
- name: engagement_id
in: body
type: string
description: "Associated engagement ID."
- name: partner_channel
in: body
type: string
description: "Slack channel for the engagement partner."
steps:
- name: get-response
type: call
call: "gforms.get-response"
with:
form_id: "{{form_id}}"
response_id: "{{form_response_id}}"
- name: log-feedback
type: call
call: "salesforce.create-survey"
with:
Engagement__c: "{{engagement_id}}"
Overall_Rating__c: "{{get-response.answers.rating}}"
Comments__c: "{{get-response.answers.comments}}"
- name: create-summary
type: call
call: "confluence.create-page"
with:
space_key: "FEEDBACK"
title: "Client Feedback - {{engagement_id}} - {{get-response.respondentEmail}}"
body: "Rating: {{get-response.answers.rating}}. Comments: {{get-response.answers.comments}}"
- name: alert-partner
type: call
call: "slack.post-message"
with:
channel: "{{partner_channel}}"
text: "New client feedback for engagement {{engagement_id}}: Rating {{get-response.answers.rating}}/5. Details: {{create-summary.url}}"
consumes:
- type: http
namespace: gforms
baseUri: "https://forms.googleapis.com/v1"
authentication:
type: bearer
token: "$secrets.google_oauth_token"
resources:
- name: responses
path: "/forms/{{form_id}}/responses/{{response_id}}"
inputParameters:
- name: form_id
in: path
- name: response_id
in: path
operations:
- name: get-response
method: GET
- type: http
namespace: salesforce
baseUri: "https://mckinsey.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: surveys
path: "/sobjects/Survey_Response__c"
operations:
- name: create-survey
method: POST
- type: http
namespace: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: 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
Assembles a client proposal by pulling the opportunity from Salesforce, retrieving relevant case studies from Confluence, generating a slide deck outline in Google Slides, and notifying the proposal team via Slack.
naftiko: "0.5"
info:
label: "Client Proposal Generation Pipeline"
description: "Assembles a client proposal by pulling the opportunity from Salesforce, retrieving relevant case studies from Confluence, generating a slide deck outline in Google Slides, and notifying the proposal team via Slack."
tags:
- consulting
- proposals
- salesforce
- confluence
- google-slides
- slack
capability:
exposes:
- type: mcp
namespace: proposal-pipeline
port: 8080
tools:
- name: generate-proposal
description: "Given a Salesforce opportunity ID and industry, assemble a proposal pulling case studies and creating a slide deck."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "Salesforce opportunity ID."
- name: industry
in: body
type: string
description: "Industry vertical for case study matching."
- name: proposal_lead
in: body
type: string
description: "Email of the proposal lead."
steps:
- name: get-opp
type: call
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
- name: find-cases
type: call
call: "confluence.search-content"
with:
cql: "type=page AND label=\"case-study\" AND label=\"{{industry}}\""
limit: "5"
- name: create-deck
type: call
call: "gslides.create-presentation"
with:
title: "Proposal: {{get-opp.account_name}} - {{get-opp.stage}}"
- name: notify-lead
type: call
call: "slack.post-message"
with:
channel: "proposals"
text: "Proposal deck created for {{get-opp.account_name}}: {{create-deck.url}}. {{find-cases.totalSize}} case studies found for {{industry}}. Lead: {{proposal_lead}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://mckinsey.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: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: search
path: "/search"
inputParameters:
- name: cql
in: query
- name: limit
in: query
operations:
- name: search-content
method: GET
- type: http
namespace: gslides
baseUri: "https://slides.googleapis.com/v1"
authentication:
type: bearer
token: "$secrets.google_oauth_token"
resources:
- name: presentations
path: "/presentations"
operations:
- name: create-presentation
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Prepares a client workshop by scheduling a Zoom meeting, creating a shared Google Drive folder, uploading pre-read materials, creating a Confluence agenda page, and sending invitations via Microsoft Outlook.
naftiko: "0.5"
info:
label: "Client Workshop Orchestrator"
description: "Prepares a client workshop by scheduling a Zoom meeting, creating a shared Google Drive folder, uploading pre-read materials, creating a Confluence agenda page, and sending invitations via Microsoft Outlook."
tags:
- consulting
- workshops
- zoom
- google-drive
- confluence
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: workshop-prep
port: 8080
tools:
- name: prepare-workshop
description: "Prepare a client workshop: schedule Zoom, create Drive folder, set up Confluence agenda, and send invitations."
inputParameters:
- name: workshop_title
in: body
type: string
description: "Title of the workshop."
- name: date_time
in: body
type: string
description: "Workshop date and time in ISO 8601 format."
- name: duration_minutes
in: body
type: integer
description: "Duration in minutes."
- name: attendee_emails
in: body
type: string
description: "Comma-separated attendee emails."
- name: engagement_space_key
in: body
type: string
description: "Confluence space key for the engagement."
steps:
- name: create-meeting
type: call
call: "zoom.create-meeting"
with:
topic: "{{workshop_title}}"
start_time: "{{date_time}}"
duration: "{{duration_minutes}}"
- name: create-folder
type: call
call: "gdrive.create-folder"
with:
parent_id: "workshops-root"
name: "{{workshop_title}}"
- name: create-agenda
type: call
call: "confluence.create-page"
with:
space_key: "{{engagement_space_key}}"
title: "Workshop Agenda: {{workshop_title}}"
body: "<h2>Workshop: {{workshop_title}}</h2><p>Zoom: {{create-meeting.join_url}}</p><p>Materials: {{create-folder.webViewLink}}</p>"
- name: send-invites
type: call
call: "msgraph.send-mail"
with:
sender: "workshops@mckinsey.com"
to: "{{attendee_emails}}"
subject: "Workshop Invitation: {{workshop_title}}"
body: "You are invited to {{workshop_title}} on {{date_time}}. Zoom: {{create-meeting.join_url}}. Agenda: {{create-agenda.url}}. Materials: {{create-folder.webViewLink}}"
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: gdrive
baseUri: "https://www.googleapis.com/drive/v3"
authentication:
type: bearer
token: "$secrets.google_oauth_token"
resources:
- name: files
path: "/files"
operations:
- name: create-folder
method: POST
- type: http
namespace: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: msgraph
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/{{sender}}/sendMail"
inputParameters:
- name: sender
in: path
operations:
- name: send-mail
method: POST
Aggregates competitive intelligence by searching Bloomberg for financial data, querying LinkedIn for organizational changes, checking Confluence for internal analysis, and consolidating findings in a Google Sheets tracker.
naftiko: "0.5"
info:
label: "Competitive Intelligence Aggregator"
description: "Aggregates competitive intelligence by searching Bloomberg for financial data, querying LinkedIn for organizational changes, checking Confluence for internal analysis, and consolidating findings in a Google Sheets tracker."
tags:
- research
- competitive-intelligence
- bloomberg
- linkedin
- confluence
- google-sheets
capability:
exposes:
- type: mcp
namespace: competitive-intel
port: 8080
tools:
- name: aggregate-intel
description: "Aggregate competitive intelligence from Bloomberg, LinkedIn, and Confluence into a Google Sheets tracker."
inputParameters:
- name: company_ticker
in: body
type: string
description: "Bloomberg ticker symbol for the target company."
- name: linkedin_org_id
in: body
type: string
description: "LinkedIn organization ID."
- name: tracker_spreadsheet_id
in: body
type: string
description: "Google Sheets tracker spreadsheet ID."
steps:
- name: get-financials
type: call
call: "bloomberg.get-company-data"
with:
ticker: "{{company_ticker}}"
fields: "REVENUE,NET_INCOME,MARKET_CAP,EBITDA"
- name: get-org-updates
type: call
call: "linkedin.get-organization"
with:
organization_id: "{{linkedin_org_id}}"
- name: get-internal-analysis
type: call
call: "confluence.search-content"
with:
cql: "type=page AND label=\"competitive-analysis\" AND text~\"{{company_ticker}}\""
limit: "10"
- name: update-tracker
type: call
call: "gsheets.append-values"
with:
spreadsheet_id: "{{tracker_spreadsheet_id}}"
range: "CompetitiveIntel!A1"
values: "[\"{{company_ticker}}\", \"{{get-financials.REVENUE}}\", \"{{get-financials.MARKET_CAP}}\", \"{{get-org-updates.staffCount}}\", \"{{get-internal-analysis.totalSize}} internal articles\"]"
consumes:
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: companies
path: "/company/{{ticker}}"
inputParameters:
- name: ticker
in: path
- name: fields
in: query
operations:
- name: get-company-data
method: GET
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: organizations
path: "/organizations/{{organization_id}}"
inputParameters:
- name: organization_id
in: path
operations:
- name: get-organization
method: GET
- type: http
namespace: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: search
path: "/search"
inputParameters:
- name: cql
in: query
- name: limit
in: query
operations:
- name: search-content
method: GET
- type: http
namespace: gsheets
baseUri: "https://sheets.googleapis.com/v4"
authentication:
type: bearer
token: "$secrets.google_oauth_token"
resources:
- name: values
path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}:append"
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: append-values
method: POST
When a staffing request is submitted, searches Workday for available consultants by skill and office, creates a staffing ticket in ServiceNow, and posts the opportunity to the internal Slack staffing channel.
naftiko: "0.5"
info:
label: "Consultant Staffing Request Pipeline"
description: "When a staffing request is submitted, searches Workday for available consultants by skill and office, creates a staffing ticket in ServiceNow, and posts the opportunity to the internal Slack staffing channel."
tags:
- talent
- staffing
- workday
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: staffing-request
port: 8080
tools:
- name: submit-staffing-request
description: "Submit a staffing request by skill set and office. Searches Workday, creates a ServiceNow ticket, and posts to Slack."
inputParameters:
- name: engagement_id
in: body
type: string
description: "The engagement identifier."
- name: required_skills
in: body
type: string
description: "Comma-separated list of required skills."
- name: office
in: body
type: string
description: "Preferred office location."
- name: start_date
in: body
type: string
description: "Required start date in YYYY-MM-DD format."
steps:
- name: search-consultants
type: call
call: "workday.search-workers"
with:
skills: "{{required_skills}}"
location: "{{office}}"
availability_date: "{{start_date}}"
- name: create-ticket
type: call
call: "servicenow.create-request"
with:
short_description: "Staffing request for engagement {{engagement_id}}"
description: "Skills: {{required_skills}}. Office: {{office}}. Start: {{start_date}}. Candidates found: {{search-consultants.total}}."
category: "staffing"
- name: post-opportunity
type: call
call: "slack.post-message"
with:
channel: "staffing-opportunities"
text: "Staffing need for engagement {{engagement_id}}: {{required_skills}} in {{office}} starting {{start_date}}. Ticket: {{create-ticket.number}}. {{search-consultants.total}} candidates identified."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/mckinsey"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers"
inputParameters:
- name: skills
in: query
- name: location
in: query
- name: availability_date
in: query
operations:
- name: search-workers
method: GET
- type: http
namespace: servicenow
baseUri: "https://mckinsey.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: 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
Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 1"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-1
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-1"
with:
identifier: "{{identifier}}"
- name: create
type: call
call: "salesforce.create-account"
with:
data: "{{process.result}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-1
method: POST
- type: http
namespace: salesforce
baseUri: "https://mckinsey.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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 10"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-10
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-10"
with:
identifier: "{{identifier}}"
- name: upload
type: call
call: "sharepoint.upload-document"
with:
content: "{{process.document}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-10
method: POST
- type: http
namespace: sharepoint
baseUri: "https://mckinsey.sharepoint.com/_api/v2.0"
authentication:
type: bearer
token: "$secrets.sharepoint_token"
resources:
- name: documents
path: "/documents"
operations:
- name: upload-document
method: POST
Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 11"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-11
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-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: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 12"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-12
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-12"
with:
identifier: "{{identifier}}"
- name: push
type: call
call: "datadog.submit-metrics"
with:
metric_name: "consulting.workflow_12"
data: "{{process.metrics}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 13"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-13
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-13"
with:
identifier: "{{identifier}}"
- name: create
type: call
call: "salesforce.create-account"
with:
data: "{{process.result}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-13
method: POST
- type: http
namespace: salesforce
baseUri: "https://mckinsey.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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 14"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-14
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-14"
with:
identifier: "{{identifier}}"
- name: create
type: call
call: "servicenow.create-incident"
with:
data: "{{process.result}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-14
method: POST
- type: http
namespace: servicenow
baseUri: "https://mckinsey.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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 15"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- slack
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-15
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-15"
with:
identifier: "{{identifier}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#consulting"
text: "Completed workflow 15: {{process.summary}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 16"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-16
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-16"
with:
identifier: "{{identifier}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space: "CONSUL"
title: "Report 16"
content: "{{process.report}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-16
method: POST
- type: http
namespace: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: pages
path: "/pages"
operations:
- name: create-page
method: POST
Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 17"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-17
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-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: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 18"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- jira
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-18
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-18"
with:
identifier: "{{identifier}}"
- name: create-ticket
type: call
call: "jira.create-issue"
with:
project: "CONS"
summary: "Task from workflow 18"
description: "{{process.details}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-18
method: POST
- type: http
namespace: jira
baseUri: "https://mckinsey.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issues"
operations:
- name: create-issue
method: POST
Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 19"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- teams
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-19
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-19"
with:
identifier: "{{identifier}}"
- name: notify
type: call
call: "teams.send-message"
with:
channel_id: "consulting"
message: "Workflow 19 complete: {{process.summary}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 2"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-2
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-2"
with:
identifier: "{{identifier}}"
- name: create
type: call
call: "servicenow.create-incident"
with:
data: "{{process.result}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-2
method: POST
- type: http
namespace: servicenow
baseUri: "https://mckinsey.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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 20"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-20
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-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: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-20
method: POST
- type: http
namespace: tableau
baseUri: "https://mckinsey-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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 21"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- box
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-21
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-21"
with:
identifier: "{{identifier}}"
- name: upload
type: call
call: "box.upload-file"
with:
content: "{{process.document}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 22"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-22
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-22"
with:
identifier: "{{identifier}}"
- name: upload
type: call
call: "sharepoint.upload-document"
with:
content: "{{process.document}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-22
method: POST
- type: http
namespace: sharepoint
baseUri: "https://mckinsey.sharepoint.com/_api/v2.0"
authentication:
type: bearer
token: "$secrets.sharepoint_token"
resources:
- name: documents
path: "/documents"
operations:
- name: upload-document
method: POST
Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 23"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-23
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-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: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 24"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- datadog
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-24
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-24"
with:
identifier: "{{identifier}}"
- name: push
type: call
call: "datadog.submit-metrics"
with:
metric_name: "consulting.workflow_24"
data: "{{process.metrics}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 25"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- salesforce
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-25
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-25"
with:
identifier: "{{identifier}}"
- name: create
type: call
call: "salesforce.create-account"
with:
data: "{{process.result}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-25
method: POST
- type: http
namespace: salesforce
baseUri: "https://mckinsey.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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 26"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- servicenow
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-26
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-26"
with:
identifier: "{{identifier}}"
- name: create
type: call
call: "servicenow.create-incident"
with:
data: "{{process.result}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-26
method: POST
- type: http
namespace: servicenow
baseUri: "https://mckinsey.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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 27"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- slack
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-27
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-27"
with:
identifier: "{{identifier}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#consulting"
text: "Completed workflow 27: {{process.summary}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 28"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-28
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-28"
with:
identifier: "{{identifier}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space: "CONSUL"
title: "Report 28"
content: "{{process.report}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-28
method: POST
- type: http
namespace: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: pages
path: "/pages"
operations:
- name: create-page
method: POST
Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 29"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-29
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-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: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 3"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- slack
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-3
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-3"
with:
identifier: "{{identifier}}"
- name: notify
type: call
call: "slack.post-message"
with:
channel: "#consulting"
text: "Completed workflow 3: {{process.summary}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 30"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- jira
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-30
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-30"
with:
identifier: "{{identifier}}"
- name: create-ticket
type: call
call: "jira.create-issue"
with:
project: "CONS"
summary: "Task from workflow 30"
description: "{{process.details}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-30
method: POST
- type: http
namespace: jira
baseUri: "https://mckinsey.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issues"
operations:
- name: create-issue
method: POST
Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 31"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- teams
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-31
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-31"
with:
identifier: "{{identifier}}"
- name: notify
type: call
call: "teams.send-message"
with:
channel_id: "consulting"
message: "Workflow 31 complete: {{process.summary}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 32"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-32
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-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: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-32
method: POST
- type: http
namespace: tableau
baseUri: "https://mckinsey-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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 33"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- box
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-33
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-33"
with:
identifier: "{{identifier}}"
- name: upload
type: call
call: "box.upload-file"
with:
content: "{{process.document}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 34"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- sharepoint
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-34
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-34"
with:
identifier: "{{identifier}}"
- name: upload
type: call
call: "sharepoint.upload-document"
with:
content: "{{process.document}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-34
method: POST
- type: http
namespace: sharepoint
baseUri: "https://mckinsey.sharepoint.com/_api/v2.0"
authentication:
type: bearer
token: "$secrets.sharepoint_token"
resources:
- name: documents
path: "/documents"
operations:
- name: upload-document
method: POST
Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 35"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- hubspot
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-35
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-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: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 4"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- confluence
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-4
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-4"
with:
identifier: "{{identifier}}"
- name: publish
type: call
call: "confluence.create-page"
with:
space: "CONSUL"
title: "Report 4"
content: "{{process.report}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-4
method: POST
- type: http
namespace: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: pages
path: "/pages"
operations:
- name: create-page
method: POST
Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 5"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- powerbi
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-5
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-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: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 6"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- jira
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-6
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-6"
with:
identifier: "{{identifier}}"
- name: create-ticket
type: call
call: "jira.create-issue"
with:
project: "CONS"
summary: "Task from workflow 6"
description: "{{process.details}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-6
method: POST
- type: http
namespace: jira
baseUri: "https://mckinsey.atlassian.net/rest/api/3"
authentication:
type: bearer
token: "$secrets.jira_token"
resources:
- name: issues
path: "/issues"
operations:
- name: create-issue
method: POST
Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 7"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- teams
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-7
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-7"
with:
identifier: "{{identifier}}"
- name: notify
type: call
call: "teams.send-message"
with:
channel_id: "consulting"
message: "Workflow 7 complete: {{process.summary}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 8"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- tableau
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-8
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-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: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: operations
path: "/operations"
operations:
- name: run-workflow-8
method: POST
- type: http
namespace: tableau
baseUri: "https://mckinsey-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 consulting operations including data retrieval, processing, and automated notification for Mckinsey.
naftiko: "0.5"
info:
label: "Mckinsey Workflow 9"
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
tags:
- consulting
- operations
- box
capability:
exposes:
- type: mcp
namespace: consulting
port: 8080
tools:
- name: mckinsey-workflow-9
description: "Orchestrates consulting operations including data retrieval, processing, and automated notification for Mckinsey."
inputParameters:
- name: identifier
in: body
type: string
description: "Primary identifier for this workflow"
steps:
- name: process
type: call
call: "mckinsey-ops.run-workflow-9"
with:
identifier: "{{identifier}}"
- name: upload
type: call
call: "box.upload-file"
with:
content: "{{process.document}}"
consumes:
- type: http
namespace: mckinsey-ops
baseUri: "https://api.mckinsey.com/operations/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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
Retrieves operational data for Mckinsey consulting workflows.
naftiko: "0.5"
info:
label: "Mckinsey Data Lookup 1"
description: "Retrieves operational data for Mckinsey consulting workflows."
tags:
- consulting
- operations
capability:
exposes:
- type: mcp
namespace: mckinsey-data
port: 8080
tools:
- name: get-data-1
description: "Retrieves operational data for Mckinsey consulting workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "mckinsey-data.get-data-1"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: mckinsey-data
baseUri: "https://api.mckinsey.com/data/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 Mckinsey consulting workflows.
naftiko: "0.5"
info:
label: "Mckinsey Data Lookup 10"
description: "Retrieves operational data for Mckinsey consulting workflows."
tags:
- consulting
- operations
capability:
exposes:
- type: mcp
namespace: mckinsey-data
port: 8080
tools:
- name: get-data-10
description: "Retrieves operational data for Mckinsey consulting workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "mckinsey-data.get-data-10"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: mckinsey-data
baseUri: "https://api.mckinsey.com/data/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 Mckinsey consulting workflows.
naftiko: "0.5"
info:
label: "Mckinsey Data Lookup 11"
description: "Retrieves operational data for Mckinsey consulting workflows."
tags:
- consulting
- operations
capability:
exposes:
- type: mcp
namespace: mckinsey-data
port: 8080
tools:
- name: get-data-11
description: "Retrieves operational data for Mckinsey consulting workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "mckinsey-data.get-data-11"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: mckinsey-data
baseUri: "https://api.mckinsey.com/data/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 Mckinsey consulting workflows.
naftiko: "0.5"
info:
label: "Mckinsey Data Lookup 12"
description: "Retrieves operational data for Mckinsey consulting workflows."
tags:
- consulting
- operations
capability:
exposes:
- type: mcp
namespace: mckinsey-data
port: 8080
tools:
- name: get-data-12
description: "Retrieves operational data for Mckinsey consulting workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "mckinsey-data.get-data-12"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: mckinsey-data
baseUri: "https://api.mckinsey.com/data/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 Mckinsey consulting workflows.
naftiko: "0.5"
info:
label: "Mckinsey Data Lookup 13"
description: "Retrieves operational data for Mckinsey consulting workflows."
tags:
- consulting
- operations
capability:
exposes:
- type: mcp
namespace: mckinsey-data
port: 8080
tools:
- name: get-data-13
description: "Retrieves operational data for Mckinsey consulting workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "mckinsey-data.get-data-13"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: mckinsey-data
baseUri: "https://api.mckinsey.com/data/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 Mckinsey consulting workflows.
naftiko: "0.5"
info:
label: "Mckinsey Data Lookup 14"
description: "Retrieves operational data for Mckinsey consulting workflows."
tags:
- consulting
- operations
capability:
exposes:
- type: mcp
namespace: mckinsey-data
port: 8080
tools:
- name: get-data-14
description: "Retrieves operational data for Mckinsey consulting workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "mckinsey-data.get-data-14"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: mckinsey-data
baseUri: "https://api.mckinsey.com/data/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 Mckinsey consulting workflows.
naftiko: "0.5"
info:
label: "Mckinsey Data Lookup 15"
description: "Retrieves operational data for Mckinsey consulting workflows."
tags:
- consulting
- operations
capability:
exposes:
- type: mcp
namespace: mckinsey-data
port: 8080
tools:
- name: get-data-15
description: "Retrieves operational data for Mckinsey consulting workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "mckinsey-data.get-data-15"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: mckinsey-data
baseUri: "https://api.mckinsey.com/data/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 Mckinsey consulting workflows.
naftiko: "0.5"
info:
label: "Mckinsey Data Lookup 2"
description: "Retrieves operational data for Mckinsey consulting workflows."
tags:
- consulting
- operations
capability:
exposes:
- type: mcp
namespace: mckinsey-data
port: 8080
tools:
- name: get-data-2
description: "Retrieves operational data for Mckinsey consulting workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "mckinsey-data.get-data-2"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: mckinsey-data
baseUri: "https://api.mckinsey.com/data/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 Mckinsey consulting workflows.
naftiko: "0.5"
info:
label: "Mckinsey Data Lookup 3"
description: "Retrieves operational data for Mckinsey consulting workflows."
tags:
- consulting
- operations
capability:
exposes:
- type: mcp
namespace: mckinsey-data
port: 8080
tools:
- name: get-data-3
description: "Retrieves operational data for Mckinsey consulting workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "mckinsey-data.get-data-3"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: mckinsey-data
baseUri: "https://api.mckinsey.com/data/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 Mckinsey consulting workflows.
naftiko: "0.5"
info:
label: "Mckinsey Data Lookup 4"
description: "Retrieves operational data for Mckinsey consulting workflows."
tags:
- consulting
- operations
capability:
exposes:
- type: mcp
namespace: mckinsey-data
port: 8080
tools:
- name: get-data-4
description: "Retrieves operational data for Mckinsey consulting workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "mckinsey-data.get-data-4"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: mckinsey-data
baseUri: "https://api.mckinsey.com/data/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 Mckinsey consulting workflows.
naftiko: "0.5"
info:
label: "Mckinsey Data Lookup 5"
description: "Retrieves operational data for Mckinsey consulting workflows."
tags:
- consulting
- operations
capability:
exposes:
- type: mcp
namespace: mckinsey-data
port: 8080
tools:
- name: get-data-5
description: "Retrieves operational data for Mckinsey consulting workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "mckinsey-data.get-data-5"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: mckinsey-data
baseUri: "https://api.mckinsey.com/data/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 Mckinsey consulting workflows.
naftiko: "0.5"
info:
label: "Mckinsey Data Lookup 6"
description: "Retrieves operational data for Mckinsey consulting workflows."
tags:
- consulting
- operations
capability:
exposes:
- type: mcp
namespace: mckinsey-data
port: 8080
tools:
- name: get-data-6
description: "Retrieves operational data for Mckinsey consulting workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "mckinsey-data.get-data-6"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: mckinsey-data
baseUri: "https://api.mckinsey.com/data/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 Mckinsey consulting workflows.
naftiko: "0.5"
info:
label: "Mckinsey Data Lookup 7"
description: "Retrieves operational data for Mckinsey consulting workflows."
tags:
- consulting
- operations
capability:
exposes:
- type: mcp
namespace: mckinsey-data
port: 8080
tools:
- name: get-data-7
description: "Retrieves operational data for Mckinsey consulting workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "mckinsey-data.get-data-7"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: mckinsey-data
baseUri: "https://api.mckinsey.com/data/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 Mckinsey consulting workflows.
naftiko: "0.5"
info:
label: "Mckinsey Data Lookup 8"
description: "Retrieves operational data for Mckinsey consulting workflows."
tags:
- consulting
- operations
capability:
exposes:
- type: mcp
namespace: mckinsey-data
port: 8080
tools:
- name: get-data-8
description: "Retrieves operational data for Mckinsey consulting workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "mckinsey-data.get-data-8"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: mckinsey-data
baseUri: "https://api.mckinsey.com/data/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_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 Mckinsey consulting workflows.
naftiko: "0.5"
info:
label: "Mckinsey Data Lookup 9"
description: "Retrieves operational data for Mckinsey consulting workflows."
tags:
- consulting
- operations
capability:
exposes:
- type: mcp
namespace: mckinsey-data
port: 8080
tools:
- name: get-data-9
description: "Retrieves operational data for Mckinsey consulting workflows."
inputParameters:
- name: identifier
in: body
type: string
description: "Resource identifier"
call: "mckinsey-data.get-data-9"
with:
identifier: "{{identifier}}"
consumes:
- type: http
namespace: mckinsey-data
baseUri: "https://api.mckinsey.com/data/v1"
authentication:
type: bearer
token: "$secrets.mckinsey_api_token"
resources:
- name: data-9
path: "/data-9/{{identifier}}"
inputParameters:
- name: identifier
in: path
operations:
- name: get-data-9
method: GET
Sets up a McKinsey event by creating the event in Cvent, generating a Confluence event page, scheduling reminders via Microsoft Teams, and posting the announcement to Slack.
naftiko: "0.5"
info:
label: "Cvent Event Setup Pipeline"
description: "Sets up a McKinsey event by creating the event in Cvent, generating a Confluence event page, scheduling reminders via Microsoft Teams, and posting the announcement to Slack."
tags:
- events
- conferences
- cvent
- confluence
- microsoft-teams
- slack
capability:
exposes:
- type: mcp
namespace: event-setup
port: 8080
tools:
- name: setup-event
description: "Set up an event across Cvent, Confluence, Teams, and Slack."
inputParameters:
- name: event_name
in: body
type: string
description: "Name of the event."
- name: event_date
in: body
type: string
description: "Event date in ISO 8601 format."
- name: venue
in: body
type: string
description: "Event venue."
- name: organizer_email
in: body
type: string
description: "Organizer email."
steps:
- name: create-event
type: call
call: "cvent.create-event"
with:
name: "{{event_name}}"
date: "{{event_date}}"
venue: "{{venue}}"
- name: create-page
type: call
call: "confluence.create-page"
with:
space_key: "EVENTS"
title: "{{event_name}} - {{event_date}}"
body: "<h2>{{event_name}}</h2><p>Date: {{event_date}}</p><p>Venue: {{venue}}</p><p>Registration: {{create-event.registration_url}}</p>"
- name: schedule-reminder
type: call
call: "msgraph.create-event"
with:
organizer: "{{organizer_email}}"
subject: "Reminder: {{event_name}}"
start: "{{event_date}}"
end: "{{event_date}}"
attendees: "{{organizer_email}}"
- name: announce
type: call
call: "slack.post-message"
with:
channel: "events"
text: "New event: {{event_name}} on {{event_date}} at {{venue}}. Register: {{create-event.registration_url}}. Details: {{create-page.url}}"
consumes:
- type: http
namespace: cvent
baseUri: "https://api-platform.cvent.com/ea"
authentication:
type: bearer
token: "$secrets.cvent_token"
resources:
- name: events
path: "/events"
operations:
- name: create-event
method: POST
- type: http
namespace: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: msgraph
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: events
path: "/users/{{organizer}}/events"
inputParameters:
- name: organizer
in: path
operations:
- name: create-event
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Triggers a Databricks job run for a specified job ID. Used by data science teams to execute analytics pipelines for client engagements.
naftiko: "0.5"
info:
label: "Databricks Analytics Job Runner"
description: "Triggers a Databricks job run for a specified job ID. Used by data science teams to execute analytics pipelines for client engagements."
tags:
- analytics
- data-science
- databricks
capability:
exposes:
- type: mcp
namespace: databricks-jobs
port: 8080
tools:
- name: run-job
description: "Trigger a Databricks job run by job ID with optional parameters."
inputParameters:
- name: job_id
in: body
type: string
description: "Databricks job ID."
- name: notebook_params
in: body
type: string
description: "JSON string of notebook parameters."
call: "databricks.run-job"
with:
job_id: "{{job_id}}"
notebook_params: "{{notebook_params}}"
consumes:
- type: http
namespace: databricks
baseUri: "https://mckinsey.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
Triggers a Databricks analytics job, waits for completion, refreshes the associated Tableau dashboard, and shares the results in Slack.
naftiko: "0.5"
info:
label: "Databricks Pipeline with Tableau Visualization"
description: "Triggers a Databricks analytics job, waits for completion, refreshes the associated Tableau dashboard, and shares the results in Slack."
tags:
- analytics
- data-science
- databricks
- tableau
- slack
capability:
exposes:
- type: mcp
namespace: analytics-pipeline
port: 8080
tools:
- name: run-analytics-pipeline
description: "Run a Databricks job, refresh Tableau, and share results via Slack."
inputParameters:
- name: job_id
in: body
type: string
description: "Databricks job ID."
- name: workbook_id
in: body
type: string
description: "Tableau workbook ID to refresh."
- name: results_channel
in: body
type: string
description: "Slack channel for results."
steps:
- name: run-job
type: call
call: "databricks.run-job"
with:
job_id: "{{job_id}}"
- name: refresh-viz
type: call
call: "tableau.refresh-workbook"
with:
workbook_id: "{{workbook_id}}"
- name: share-results
type: call
call: "slack.post-message"
with:
channel: "{{results_channel}}"
text: "Analytics pipeline complete. Databricks run: {{run-job.run_id}}. Dashboard refreshed: {{refresh-viz.url}}"
consumes:
- type: http
namespace: databricks
baseUri: "https://mckinsey.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
- type: http
namespace: tableau
baseUri: "https://tableau.mckinsey.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: workbooks
path: "/sites/mckinsey-main/workbooks/{{workbook_id}}/refresh"
inputParameters:
- name: workbook_id
in: path
operations:
- name: refresh-workbook
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves the health status of a monitored service in Datadog by service name. Returns current status, uptime percentage, and active alerts. Used by engineering teams to monitor internal platforms.
naftiko: "0.5"
info:
label: "Datadog Service Health Check"
description: "Retrieves the health status of a monitored service in Datadog by service name. Returns current status, uptime percentage, and active alerts. Used by engineering teams to monitor internal platforms."
tags:
- monitoring
- devops
- datadog
capability:
exposes:
- type: mcp
namespace: service-health
port: 8080
tools:
- name: check-service-health
description: "Check Datadog health status for a service. Returns status, uptime, and active alerts."
inputParameters:
- name: service_name
in: body
type: string
description: "Name of the service to check."
call: "datadog.get-service-status"
with:
service: "{{service_name}}"
outputParameters:
- name: status
type: string
mapping: "$.overall_status"
- name: uptime
type: string
mapping: "$.uptime_percentage"
- name: active_alerts
type: integer
mapping: "$.alert_count"
consumes:
- type: http
namespace: datadog
baseUri: "https://api.datadoghq.com/api/v1"
authentication:
type: bearer
token: "$secrets.datadog_api_key"
inputParameters:
- name: DD-APPLICATION-KEY
in: header
value: "$secrets.datadog_app_key"
resources:
- name: synthetics
path: "/synthetics/tests"
inputParameters:
- name: service
in: query
operations:
- name: get-service-status
method: GET
Searches the McKinsey internal knowledge index in Elasticsearch by query string. Returns ranked results with titles, excerpts, and relevance scores.
naftiko: "0.5"
info:
label: "Elasticsearch Knowledge Search"
description: "Searches the McKinsey internal knowledge index in Elasticsearch by query string. Returns ranked results with titles, excerpts, and relevance scores."
tags:
- knowledge-management
- search
- elasticsearch
capability:
exposes:
- type: mcp
namespace: es-search
port: 8080
tools:
- name: search-knowledge-base
description: "Search the Elasticsearch knowledge index by query. Returns ranked results."
inputParameters:
- name: query
in: body
type: string
description: "Search query string."
- name: max_results
in: body
type: integer
description: "Maximum results to return."
call: "elasticsearch.search"
with:
index: "knowledge-base"
q: "{{query}}"
size: "{{max_results}}"
consumes:
- type: http
namespace: elasticsearch
baseUri: "https://es.mckinsey.com"
authentication:
type: bearer
token: "$secrets.elasticsearch_token"
resources:
- name: search
path: "/{{index}}/_search"
inputParameters:
- name: index
in: path
- name: q
in: query
- name: size
in: query
operations:
- name: search
method: GET
On engagement completion, updates the Salesforce opportunity to Closed Won, archives the Confluence space, sends a closeout summary to Slack, and triggers a client feedback survey via Microsoft Graph.
naftiko: "0.5"
info:
label: "Engagement Closeout Orchestrator"
description: "On engagement completion, updates the Salesforce opportunity to Closed Won, archives the Confluence space, sends a closeout summary to Slack, and triggers a client feedback survey via Microsoft Graph."
tags:
- consulting
- engagement-lifecycle
- salesforce
- confluence
- slack
- microsoft-outlook
capability:
exposes:
- type: mcp
namespace: engagement-closeout
port: 8080
tools:
- name: close-engagement
description: "Close an engagement by updating Salesforce, archiving Confluence, notifying Slack, and sending a feedback survey."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "Salesforce opportunity ID."
- name: space_key
in: body
type: string
description: "Confluence space key for the engagement."
- name: client_email
in: body
type: string
description: "Client contact email for the feedback survey."
- name: engagement_name
in: body
type: string
description: "Name of the engagement."
steps:
- name: update-opp
type: call
call: "salesforce.update-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
StageName: "Closed Won"
- name: archive-space
type: call
call: "confluence.archive-space"
with:
space_key: "{{space_key}}"
- name: send-survey
type: call
call: "msgraph.send-mail"
with:
to: "{{client_email}}"
subject: "McKinsey Engagement Feedback: {{engagement_name}}"
body: "Thank you for partnering with McKinsey on {{engagement_name}}. Please complete our brief feedback survey to help us improve."
- name: notify-closeout
type: call
call: "slack.post-message"
with:
channel: "engagement-closeouts"
text: "Engagement {{engagement_name}} ({{opportunity_id}}) closed. Confluence archived. Feedback survey sent to {{client_email}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://mckinsey.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: update-opportunity
method: PATCH
- type: http
namespace: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: spaces
path: "/space/{{space_key}}"
inputParameters:
- name: space_key
in: path
operations:
- name: archive-space
method: PUT
- type: http
namespace: msgraph
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/noreply@mckinsey.com/sendMail"
operations:
- name: send-mail
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Builds an engagement health dashboard by pulling active engagements from Salesforce, expenses from SAP Concur, time tracking from Workday, and rendering the dashboard in Tableau with a Slack notification.
naftiko: "0.5"
info:
label: "Engagement Health Dashboard Pipeline"
description: "Builds an engagement health dashboard by pulling active engagements from Salesforce, expenses from SAP Concur, time tracking from Workday, and rendering the dashboard in Tableau with a Slack notification."
tags:
- consulting
- reporting
- salesforce
- sap-concur
- workday
- tableau
- slack
capability:
exposes:
- type: mcp
namespace: engagement-health
port: 8080
tools:
- name: build-health-dashboard
description: "Build an engagement health dashboard from Salesforce, Concur, Workday, and Tableau."
inputParameters:
- name: practice_area
in: body
type: string
description: "Practice area to report on."
- name: reporting_period
in: body
type: string
description: "Reporting period (e.g., 2026-Q1)."
steps:
- name: get-engagements
type: call
call: "salesforce.query-opportunities"
with:
q: "SELECT Id, Name, Amount, StageName FROM Opportunity WHERE StageName='Active' AND Practice__c='{{practice_area}}'"
- name: get-expenses
type: call
call: "concur.list-reports"
with:
practice: "{{practice_area}}"
period: "{{reporting_period}}"
- name: get-utilization
type: call
call: "workday.get-time-entries"
with:
practice: "{{practice_area}}"
period: "{{reporting_period}}"
- name: refresh-dashboard
type: call
call: "tableau.refresh-workbook"
with:
workbook_id: "engagement-health"
- name: notify-leadership
type: call
call: "slack.post-message"
with:
channel: "practice-leadership"
text: "Engagement health dashboard updated for {{practice_area}} ({{reporting_period}}). {{get-engagements.totalSize}} active engagements. Dashboard: {{refresh-dashboard.url}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://mckinsey.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
inputParameters:
- name: q
in: query
operations:
- name: query-opportunities
method: GET
- type: http
namespace: concur
baseUri: "https://us.api.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: reports
path: "/expense/reports"
inputParameters:
- name: practice
in: query
- name: period
in: query
operations:
- name: list-reports
method: GET
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/mckinsey"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: time-entries
path: "/timeTracking/entries"
inputParameters:
- name: practice
in: query
- name: period
in: query
operations:
- name: get-time-entries
method: GET
- type: http
namespace: tableau
baseUri: "https://tableau.mckinsey.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: workbooks
path: "/sites/mckinsey-main/workbooks/{{workbook_id}}/refresh"
inputParameters:
- name: workbook_id
in: path
operations:
- name: refresh-workbook
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When an engagement risk flag is raised, creates a Salesforce case, escalates via ServiceNow priority ticket, alerts the risk committee in Microsoft Teams, and documents the issue in Confluence.
naftiko: "0.5"
info:
label: "Engagement Risk Escalation Pipeline"
description: "When an engagement risk flag is raised, creates a Salesforce case, escalates via ServiceNow priority ticket, alerts the risk committee in Microsoft Teams, and documents the issue in Confluence."
tags:
- risk-management
- consulting
- salesforce
- servicenow
- microsoft-teams
- confluence
capability:
exposes:
- type: mcp
namespace: risk-escalation
port: 8080
tools:
- name: escalate-risk
description: "Escalate an engagement risk across Salesforce, ServiceNow, Teams, and Confluence."
inputParameters:
- name: engagement_id
in: body
type: string
description: "Engagement identifier."
- name: risk_description
in: body
type: string
description: "Description of the risk."
- name: severity
in: body
type: string
description: "Risk severity (high, critical)."
- name: engagement_space_key
in: body
type: string
description: "Confluence space key."
steps:
- name: create-case
type: call
call: "salesforce.create-case"
with:
Subject: "Risk Escalation: {{engagement_id}}"
Description: "{{risk_description}}"
Priority: "{{severity}}"
- name: create-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Engagement risk: {{engagement_id}} - {{severity}}"
description: "{{risk_description}}"
priority: "1"
assigned_group: "Risk_Committee"
- name: alert-committee
type: call
call: "msteams.send-message"
with:
channel_id: "risk-committee"
text: "RISK ESCALATION [{{severity}}]: Engagement {{engagement_id}}. {{risk_description}}. Case: {{create-case.id}}. Ticket: {{create-ticket.number}}."
- name: document-risk
type: call
call: "confluence.create-page"
with:
space_key: "{{engagement_space_key}}"
title: "Risk Escalation: {{engagement_id}} - {{severity}}"
body: "<h2>Risk Details</h2><p>{{risk_description}}</p><p>Severity: {{severity}}</p><p>SF Case: {{create-case.id}}</p><p>SN Ticket: {{create-ticket.number}}</p>"
consumes:
- type: http
namespace: salesforce
baseUri: "https://mckinsey.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: cases
path: "/sobjects/Case"
operations:
- name: create-case
method: POST
- type: http
namespace: servicenow
baseUri: "https://mckinsey.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
- type: http
namespace: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
Retrieves an SAP Concur expense report, validates against Workday budget allocations, and sends an alert to the engagement manager via Slack if the expense exceeds thresholds.
naftiko: "0.5"
info:
label: "Expense Report with Budget Check Pipeline"
description: "Retrieves an SAP Concur expense report, validates against Workday budget allocations, and sends an alert to the engagement manager via Slack if the expense exceeds thresholds."
tags:
- finance
- expense-management
- sap-concur
- workday
- slack
capability:
exposes:
- type: mcp
namespace: expense-budget-check
port: 8080
tools:
- name: check-expense-budget
description: "Retrieve a Concur expense report, check budget in Workday, and alert via Slack."
inputParameters:
- name: report_id
in: body
type: string
description: "SAP Concur expense report ID."
- name: engagement_id
in: body
type: string
description: "Engagement ID for budget lookup."
- name: manager_channel
in: body
type: string
description: "Slack channel for the engagement manager."
steps:
- name: get-report
type: call
call: "concur.get-report"
with:
report_id: "{{report_id}}"
- name: check-budget
type: call
call: "workday.get-cost-center"
with:
engagement: "{{engagement_id}}"
- name: alert-manager
type: call
call: "slack.post-message"
with:
channel: "{{manager_channel}}"
text: "Expense report {{report_id}}: Total {{get-report.Total}} {{get-report.CurrencyCode}}. Budget remaining: {{check-budget.remaining_budget}}. Status: {{get-report.ApprovalStatusName}}."
consumes:
- type: http
namespace: concur
baseUri: "https://us.api.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: reports
path: "/expense/reports/{{report_id}}"
inputParameters:
- name: report_id
in: path
operations:
- name: get-report
method: GET
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/mckinsey"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: cost-centers
path: "/financialManagement/costCenters"
inputParameters:
- name: engagement
in: query
operations:
- name: get-cost-center
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Pulls Google Analytics page metrics for a date range, writes the results to a Google Sheets spreadsheet, and sends a summary to the marketing team via Slack.
naftiko: "0.5"
info:
label: "Google Analytics to Google Sheets Reporting"
description: "Pulls Google Analytics page metrics for a date range, writes the results to a Google Sheets spreadsheet, and sends a summary to the marketing team via Slack."
tags:
- analytics
- marketing
- google-analytics
- google-sheets
- slack
capability:
exposes:
- type: mcp
namespace: ga-sheets-report
port: 8080
tools:
- name: export-analytics-to-sheets
description: "Pull Google Analytics metrics, write to Google Sheets, and notify via Slack."
inputParameters:
- name: property_id
in: body
type: string
description: "Google Analytics property ID."
- name: start_date
in: body
type: string
description: "Start date in YYYY-MM-DD format."
- name: end_date
in: body
type: string
description: "End date in YYYY-MM-DD format."
- name: spreadsheet_id
in: body
type: string
description: "Destination Google Sheets spreadsheet ID."
steps:
- name: get-report
type: call
call: "ga.run-report"
with:
property_id: "{{property_id}}"
dateRangeStart: "{{start_date}}"
dateRangeEnd: "{{end_date}}"
- name: write-sheet
type: call
call: "gsheets.update-values"
with:
spreadsheet_id: "{{spreadsheet_id}}"
range: "Analytics!A1"
values: "{{get-report.rows}}"
- name: notify-marketing
type: call
call: "slack.post-message"
with:
channel: "marketing-analytics"
text: "Analytics export complete for {{start_date}} to {{end_date}}. Spreadsheet updated: {{write-sheet.spreadsheetUrl}}"
consumes:
- type: http
namespace: ga
baseUri: "https://analyticsdata.googleapis.com/v1beta"
authentication:
type: bearer
token: "$secrets.google_oauth_token"
resources:
- name: reports
path: "/properties/{{property_id}}:runReport"
inputParameters:
- name: property_id
in: path
operations:
- name: run-report
method: POST
- type: http
namespace: gsheets
baseUri: "https://sheets.googleapis.com/v4"
authentication:
type: bearer
token: "$secrets.google_oauth_token"
resources:
- name: values
path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}"
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: update-values
method: PUT
- 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
Uploads a document to a specified Google Drive folder. Used by research teams to share deliverables and working papers with engagement teams.
naftiko: "0.5"
info:
label: "Google Drive Document Upload"
description: "Uploads a document to a specified Google Drive folder. Used by research teams to share deliverables and working papers with engagement teams."
tags:
- document-management
- collaboration
- google-drive
capability:
exposes:
- type: mcp
namespace: drive-upload
port: 8080
tools:
- name: upload-document
description: "Upload a document to a Google Drive folder by folder ID."
inputParameters:
- name: folder_id
in: body
type: string
description: "The Google Drive folder ID."
- name: file_name
in: body
type: string
description: "Name of the file to upload."
- name: mime_type
in: body
type: string
description: "MIME type of the file."
call: "gdrive.upload-file"
with:
folder_id: "{{folder_id}}"
name: "{{file_name}}"
mimeType: "{{mime_type}}"
consumes:
- type: http
namespace: gdrive
baseUri: "https://www.googleapis.com/upload/drive/v3"
authentication:
type: bearer
token: "$secrets.google_oauth_token"
resources:
- name: files
path: "/files"
inputParameters:
- name: uploadType
in: query
value: "multipart"
operations:
- name: upload-file
method: POST
Reads data from a specified range in a Google Sheets spreadsheet. Used by analysts to pull engagement metrics, financial models, and tracking data.
naftiko: "0.5"
info:
label: "Google Sheets Data Reader"
description: "Reads data from a specified range in a Google Sheets spreadsheet. Used by analysts to pull engagement metrics, financial models, and tracking data."
tags:
- analytics
- data
- google-sheets
capability:
exposes:
- type: mcp
namespace: sheets-reader
port: 8080
tools:
- name: read-sheet-data
description: "Read data from a Google Sheets range."
inputParameters:
- name: spreadsheet_id
in: body
type: string
description: "Google Sheets spreadsheet ID."
- name: range
in: body
type: string
description: "A1 notation range (e.g., Sheet1!A1:D10)."
call: "gsheets.get-values"
with:
spreadsheet_id: "{{spreadsheet_id}}"
range: "{{range}}"
consumes:
- type: http
namespace: gsheets
baseUri: "https://sheets.googleapis.com/v4"
authentication:
type: bearer
token: "$secrets.google_oauth_token"
resources:
- name: values
path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}"
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: get-values
method: GET
Retrieves a HubSpot contact by email address. Returns name, company, lifecycle stage, and last activity date. Used by business development for lead qualification.
naftiko: "0.5"
info:
label: "HubSpot Contact Lookup"
description: "Retrieves a HubSpot contact by email address. Returns name, company, lifecycle stage, and last activity date. Used by business development for lead qualification."
tags:
- business-development
- crm
- hubspot
capability:
exposes:
- type: mcp
namespace: hubspot-contacts
port: 8080
tools:
- name: get-contact-by-email
description: "Look up a HubSpot contact by email. Returns name, company, lifecycle stage, and last activity."
inputParameters:
- name: email
in: body
type: string
description: "Contact email address."
call: "hubspot.get-contact"
with:
email: "{{email}}"
outputParameters:
- name: first_name
type: string
mapping: "$.properties.firstname"
- name: last_name
type: string
mapping: "$.properties.lastname"
- name: company
type: string
mapping: "$.properties.company"
- name: lifecycle_stage
type: string
mapping: "$.properties.lifecyclestage"
consumes:
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com/crm/v3"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: contacts
path: "/objects/contacts/{{email}}"
inputParameters:
- name: email
in: path
- name: idProperty
in: query
value: "email"
operations:
- name: get-contact
method: GET
Pulls industry benchmarking data from Bloomberg, enriches it with Tableau analytics, stores results in Databricks, and shares the dashboard link via Slack for the research team.
naftiko: "0.5"
info:
label: "Industry Benchmarking Data Pipeline"
description: "Pulls industry benchmarking data from Bloomberg, enriches it with Tableau analytics, stores results in Databricks, and shares the dashboard link via Slack for the research team."
tags:
- research
- benchmarking
- bloomberg
- tableau
- databricks
- slack
capability:
exposes:
- type: mcp
namespace: benchmarking-pipeline
port: 8080
tools:
- name: run-benchmark
description: "Execute an industry benchmarking pipeline across Bloomberg, Tableau, Databricks, and Slack."
inputParameters:
- name: industry_code
in: body
type: string
description: "Bloomberg industry classification code."
- name: metric_set
in: body
type: string
description: "Comma-separated financial metrics to benchmark."
- name: target_table
in: body
type: string
description: "Databricks target table for storing results."
steps:
- name: pull-data
type: call
call: "bloomberg.get-industry-data"
with:
industry: "{{industry_code}}"
fields: "{{metric_set}}"
- name: store-results
type: call
call: "databricks.run-job"
with:
job_id: "benchmark-ingestion"
notebook_params: "{\"industry\": \"{{industry_code}}\", \"table\": \"{{target_table}}\"}"
- name: refresh-dashboard
type: call
call: "tableau.refresh-workbook"
with:
workbook_id: "industry-benchmarks"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "research-analytics"
text: "Industry benchmark updated for {{industry_code}}. Data stored in {{target_table}}. Dashboard refreshed: {{refresh-dashboard.url}}"
consumes:
- type: http
namespace: bloomberg
baseUri: "https://api.bloomberg.com/eap/catalogs/bbg/datasets"
authentication:
type: bearer
token: "$secrets.bloomberg_token"
resources:
- name: industry
path: "/industry/{{industry}}"
inputParameters:
- name: industry
in: path
- name: fields
in: query
operations:
- name: get-industry-data
method: GET
- type: http
namespace: databricks
baseUri: "https://mckinsey.cloud.databricks.com/api/2.1"
authentication:
type: bearer
token: "$secrets.databricks_token"
resources:
- name: jobs
path: "/jobs/run-now"
operations:
- name: run-job
method: POST
- type: http
namespace: tableau
baseUri: "https://tableau.mckinsey.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: workbooks
path: "/sites/mckinsey-main/workbooks/{{workbook_id}}/refresh"
inputParameters:
- name: workbook_id
in: path
operations:
- name: refresh-workbook
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Searches the McKinsey Confluence knowledge base for articles matching a query string. Returns top results with titles, excerpts, and links for consultant self-service research.
naftiko: "0.5"
info:
label: "Knowledge Article Search"
description: "Searches the McKinsey Confluence knowledge base for articles matching a query string. Returns top results with titles, excerpts, and links for consultant self-service research."
tags:
- knowledge-management
- research
- confluence
capability:
exposes:
- type: mcp
namespace: knowledge-search
port: 8080
tools:
- name: search-articles
description: "Search Confluence knowledge base for articles matching a query. Returns titles, excerpts, and URLs."
inputParameters:
- name: query
in: body
type: string
description: "The search query string."
- name: max_results
in: body
type: integer
description: "Maximum number of results to return."
call: "confluence.search-content"
with:
cql: "type=page AND text~\"{{query}}\""
limit: "{{max_results}}"
consumes:
- type: http
namespace: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: search
path: "/search"
inputParameters:
- name: cql
in: query
- name: limit
in: query
operations:
- name: search-content
method: GET
On engagement closeout, extracts key lessons from the Confluence engagement space, tags and indexes them in Elasticsearch, and notifies the knowledge management team via Slack.
naftiko: "0.5"
info:
label: "Knowledge Capture from Engagement Closeout"
description: "On engagement closeout, extracts key lessons from the Confluence engagement space, tags and indexes them in Elasticsearch, and notifies the knowledge management team via Slack."
tags:
- knowledge-management
- search
- confluence
- elasticsearch
- slack
capability:
exposes:
- type: mcp
namespace: knowledge-capture
port: 8080
tools:
- name: capture-lessons
description: "Extract lessons learned from a Confluence engagement space, index in Elasticsearch, and notify the KM team."
inputParameters:
- name: space_key
in: body
type: string
description: "Confluence space key for the engagement."
- name: engagement_name
in: body
type: string
description: "Name of the engagement."
- name: industry
in: body
type: string
description: "Industry vertical."
- name: capability_area
in: body
type: string
description: "Capability area (e.g., digital, operations, strategy)."
steps:
- name: get-pages
type: call
call: "confluence.search-content"
with:
cql: "space={{space_key}} AND label=\"lessons-learned\""
limit: "50"
- name: index-lessons
type: call
call: "elasticsearch.bulk-index"
with:
index: "knowledge-base"
documents: "{{get-pages.results}}"
metadata: "{\"engagement\": \"{{engagement_name}}\", \"industry\": \"{{industry}}\", \"capability\": \"{{capability_area}}\"}"
- name: notify-km
type: call
call: "slack.post-message"
with:
channel: "knowledge-management"
text: "{{get-pages.totalSize}} lessons captured from {{engagement_name}} ({{industry}}/{{capability_area}}). Indexed in knowledge base."
consumes:
- type: http
namespace: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: search
path: "/search"
inputParameters:
- name: cql
in: query
- name: limit
in: query
operations:
- name: search-content
method: GET
- type: http
namespace: elasticsearch
baseUri: "https://es.mckinsey.com"
authentication:
type: bearer
token: "$secrets.elasticsearch_token"
resources:
- name: bulk
path: "/{{index}}/_bulk"
inputParameters:
- name: index
in: path
operations:
- name: bulk-index
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves LinkedIn company profile data including employee count, industry, headquarters, and recent updates. Used by research analysts for client due diligence.
naftiko: "0.5"
info:
label: "LinkedIn Company Insights Lookup"
description: "Retrieves LinkedIn company profile data including employee count, industry, headquarters, and recent updates. Used by research analysts for client due diligence."
tags:
- research
- market-intelligence
- linkedin
capability:
exposes:
- type: mcp
namespace: linkedin-research
port: 8080
tools:
- name: get-company-profile
description: "Retrieve LinkedIn company profile by organization ID. Returns employee count, industry, and headquarters."
inputParameters:
- name: organization_id
in: body
type: string
description: "LinkedIn organization ID."
call: "linkedin.get-organization"
with:
organization_id: "{{organization_id}}"
outputParameters:
- name: name
type: string
mapping: "$.localizedName"
- name: employee_count
type: integer
mapping: "$.staffCount"
- name: industry
type: string
mapping: "$.localizedIndustry"
- name: headquarters
type: string
mapping: "$.locations[0].city"
consumes:
- type: http
namespace: linkedin
baseUri: "https://api.linkedin.com/v2"
authentication:
type: bearer
token: "$secrets.linkedin_token"
resources:
- name: organizations
path: "/organizations/{{organization_id}}"
inputParameters:
- name: organization_id
in: path
operations:
- name: get-organization
method: GET
Retrieves campaign metrics from MailChimp after a newsletter send, logs engagement data in Salesforce, and posts a performance summary to Slack.
naftiko: "0.5"
info:
label: "MailChimp Newsletter with Salesforce Sync"
description: "Retrieves campaign metrics from MailChimp after a newsletter send, logs engagement data in Salesforce, and posts a performance summary to Slack."
tags:
- marketing
- email-campaigns
- mailchimp
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: newsletter-sync
port: 8080
tools:
- name: sync-newsletter-results
description: "Pull MailChimp campaign results, log in Salesforce, and notify via Slack."
inputParameters:
- name: campaign_id
in: body
type: string
description: "MailChimp campaign ID."
- name: campaign_name
in: body
type: string
description: "Campaign name for logging."
steps:
- name: get-metrics
type: call
call: "mailchimp.get-campaign-report"
with:
campaign_id: "{{campaign_id}}"
- name: log-results
type: call
call: "salesforce.create-campaign-result"
with:
Name: "{{campaign_name}}"
Open_Rate__c: "{{get-metrics.opens.open_rate}}"
Click_Rate__c: "{{get-metrics.clicks.click_rate}}"
Emails_Sent__c: "{{get-metrics.emails_sent}}"
- name: notify-marketing
type: call
call: "slack.post-message"
with:
channel: "marketing-campaigns"
text: "Newsletter {{campaign_name}} results: Open rate {{get-metrics.opens.open_rate}}%, Click rate {{get-metrics.clicks.click_rate}}%, Sent to {{get-metrics.emails_sent}} recipients."
consumes:
- type: http
namespace: mailchimp
baseUri: "https://us1.api.mailchimp.com/3.0"
authentication:
type: basic
username: "anystring"
password: "$secrets.mailchimp_api_key"
resources:
- name: reports
path: "/reports/{{campaign_id}}"
inputParameters:
- name: campaign_id
in: path
operations:
- name: get-campaign-report
method: GET
- type: http
namespace: salesforce
baseUri: "https://mckinsey.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: campaigns
path: "/sobjects/Campaign_Result__c"
operations:
- name: create-campaign-result
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Schedules a Microsoft Teams meeting for a client session, creates a Notion page for meeting notes, and posts the meeting link and notes page to Slack for the engagement team.
naftiko: "0.5"
info:
label: "Microsoft Teams Meeting with Notion Notes Pipeline"
description: "Schedules a Microsoft Teams meeting for a client session, creates a Notion page for meeting notes, and posts the meeting link and notes page to Slack for the engagement team."
tags:
- collaboration
- meetings
- microsoft-teams
- notion
- slack
capability:
exposes:
- type: mcp
namespace: meeting-notes-pipeline
port: 8080
tools:
- name: schedule-meeting-with-notes
description: "Schedule a Teams meeting, create a Notion notes page, and share via Slack."
inputParameters:
- name: organizer_email
in: body
type: string
description: "Organizer email address."
- name: subject
in: body
type: string
description: "Meeting subject."
- name: start_time
in: body
type: string
description: "Start time in ISO 8601 format."
- name: end_time
in: body
type: string
description: "End time in ISO 8601 format."
- name: attendees
in: body
type: string
description: "Comma-separated attendee emails."
- name: notification_channel
in: body
type: string
description: "Slack channel for the engagement."
steps:
- name: create-meeting
type: call
call: "msgraph.create-event"
with:
organizer: "{{organizer_email}}"
subject: "{{subject}}"
start: "{{start_time}}"
end: "{{end_time}}"
attendees: "{{attendees}}"
- name: create-notes
type: call
call: "notion.create-page"
with:
database_id: "meeting-notes-db"
title: "Notes: {{subject}}"
content: "## {{subject}}\n\n**Date:** {{start_time}}\n**Attendees:** {{attendees}}\n\n### Agenda\n\n### Notes\n\n### Action Items"
- name: share-details
type: call
call: "slack.post-message"
with:
channel: "{{notification_channel}}"
text: "Meeting scheduled: {{subject}} at {{start_time}}. Teams link: {{create-meeting.onlineMeeting.joinUrl}}. Notes: {{create-notes.url}}"
consumes:
- type: http
namespace: msgraph
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: events
path: "/users/{{organizer}}/events"
inputParameters:
- name: organizer
in: path
operations:
- name: create-event
method: POST
- type: http
namespace: notion
baseUri: "https://api.notion.com/v1"
authentication:
type: bearer
token: "$secrets.notion_token"
inputParameters:
- name: Notion-Version
in: header
value: "2022-06-28"
resources:
- name: pages
path: "/pages"
operations:
- name: create-page
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a Google Drive folder, sends a welcome email via Microsoft Graph, and posts an introduction to the Slack new-hires channel.
naftiko: "0.5"
info:
label: "New Hire Onboarding Orchestrator"
description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a Google Drive folder, sends a welcome email via Microsoft Graph, and posts an introduction to the Slack new-hires channel."
tags:
- hr
- onboarding
- workday
- servicenow
- google-drive
- slack
capability:
exposes:
- type: mcp
namespace: hr-onboarding
port: 8080
tools:
- name: trigger-onboarding
description: "Given a Workday worker ID, orchestrate new hire onboarding across ServiceNow, Google Drive, email, and Slack."
inputParameters:
- name: worker_id
in: body
type: string
description: "Workday worker ID for the new hire."
- name: start_date
in: body
type: string
description: "Start date in YYYY-MM-DD format."
- name: practice
in: body
type: string
description: "Practice area the new hire is joining."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{worker_id}}"
- name: open-ticket
type: call
call: "servicenow.create-incident"
with:
short_description: "Onboarding: {{get-employee.full_name}} - {{practice}}"
category: "hr_onboarding"
assigned_group: "IT_Onboarding"
- name: create-folder
type: call
call: "gdrive.create-folder"
with:
parent_id: "onboarding-root"
name: "{{get-employee.full_name}}_{{start_date}}"
- name: send-welcome
type: call
call: "msgraph.send-mail"
with:
to: "{{get-employee.work_email}}"
subject: "Welcome to McKinsey, {{get-employee.first_name}}!"
body: "Your onboarding ticket is {{open-ticket.number}}. Your document folder is at {{create-folder.webViewLink}}."
- name: announce-hire
type: call
call: "slack.post-message"
with:
channel: "new-hires"
text: "Welcome {{get-employee.full_name}} joining {{practice}} on {{start_date}}!"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/mckinsey"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: servicenow
baseUri: "https://mckinsey.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: gdrive
baseUri: "https://www.googleapis.com/drive/v3"
authentication:
type: bearer
token: "$secrets.google_oauth_token"
resources:
- name: files
path: "/files"
operations:
- name: create-folder
method: POST
- type: http
namespace: msgraph
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: mail
path: "/users/noreply@mckinsey.com/sendMail"
operations:
- name: send-mail
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Runs a skills assessment by assigning a Pluralsight skill path, tracking completion in Workday learning records, and notifying the consultant and their manager via Slack.
naftiko: "0.5"
info:
label: "Pluralsight Skills Assessment Pipeline"
description: "Runs a skills assessment by assigning a Pluralsight skill path, tracking completion in Workday learning records, and notifying the consultant and their manager via Slack."
tags:
- learning
- talent-development
- pluralsight
- workday
- slack
capability:
exposes:
- type: mcp
namespace: skills-assessment
port: 8080
tools:
- name: assign-skill-assessment
description: "Assign a Pluralsight skill assessment path and track results across Workday and Slack."
inputParameters:
- name: user_email
in: body
type: string
description: "Consultant email address."
- name: skill_path_id
in: body
type: string
description: "Pluralsight skill path ID."
- name: worker_id
in: body
type: string
description: "Workday worker ID."
steps:
- name: assign-path
type: call
call: "pluralsight.assign-channel"
with:
user_email: "{{user_email}}"
channel_id: "{{skill_path_id}}"
- name: log-learning
type: call
call: "workday.create-learning-record"
with:
worker_id: "{{worker_id}}"
course_name: "{{assign-path.channel_name}}"
provider: "Pluralsight"
status: "assigned"
- name: notify-consultant
type: call
call: "slack.post-message"
with:
channel: "{{user_email}}"
text: "You have been assigned the Pluralsight skill path: {{assign-path.channel_name}}. Complete it to update your skills profile."
consumes:
- type: http
namespace: pluralsight
baseUri: "https://api.pluralsight.com/api/v1"
authentication:
type: bearer
token: "$secrets.pluralsight_token"
resources:
- name: channels
path: "/channels/{{channel_id}}/assignments"
inputParameters:
- name: channel_id
in: path
operations:
- name: assign-channel
method: POST
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/mckinsey"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: learning
path: "/learning/records"
operations:
- name: create-learning-record
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Orchestrates the recruiting pipeline by posting a job on Indeed, creating a tracking board in Notion, scheduling screening slots via Microsoft Teams calendar, and notifying the recruiting team on Slack.
naftiko: "0.5"
info:
label: "Recruiting Pipeline Orchestrator"
description: "Orchestrates the recruiting pipeline by posting a job on Indeed, creating a tracking board in Notion, scheduling screening slots via Microsoft Teams calendar, and notifying the recruiting team on Slack."
tags:
- recruiting
- talent-acquisition
- indeed
- notion
- microsoft-teams
- slack
capability:
exposes:
- type: mcp
namespace: recruiting-pipeline
port: 8080
tools:
- name: launch-recruiting
description: "Launch a recruiting pipeline: post on Indeed, create tracking in Notion, schedule screenings, and notify the team."
inputParameters:
- name: job_title
in: body
type: string
description: "Job title."
- name: description
in: body
type: string
description: "Job description."
- name: location
in: body
type: string
description: "Job location."
- name: recruiter_email
in: body
type: string
description: "Lead recruiter email."
steps:
- name: post-job
type: call
call: "indeed.create-job"
with:
title: "{{job_title}}"
description: "{{description}}"
location: "{{location}}"
company: "McKinsey & Company"
- name: create-tracker
type: call
call: "notion.create-page"
with:
database_id: "recruiting-tracker-db"
title: "{{job_title}} - {{location}}"
content: "Indeed posting: {{post-job.url}}. Status: Active."
- name: create-screening-slots
type: call
call: "msgraph.create-event"
with:
organizer: "{{recruiter_email}}"
subject: "Screening Block: {{job_title}}"
start: "next-monday-09:00"
end: "next-monday-12:00"
attendees: "{{recruiter_email}}"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "recruiting"
text: "New recruiting pipeline launched: {{job_title}} in {{location}}. Indeed: {{post-job.url}}. Tracker: {{create-tracker.url}}."
consumes:
- type: http
namespace: indeed
baseUri: "https://apis.indeed.com/ads/v1"
authentication:
type: bearer
token: "$secrets.indeed_token"
resources:
- name: jobs
path: "/jobs"
operations:
- name: create-job
method: POST
- type: http
namespace: notion
baseUri: "https://api.notion.com/v1"
authentication:
type: bearer
token: "$secrets.notion_token"
inputParameters:
- name: Notion-Version
in: header
value: "2022-06-28"
resources:
- name: pages
path: "/pages"
operations:
- name: create-page
method: POST
- type: http
namespace: msgraph
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: events
path: "/users/{{organizer}}/events"
inputParameters:
- name: organizer
in: path
operations:
- name: create-event
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Publishes a research brief by creating a Confluence page with the content, uploading the PDF to Google Drive, sharing the link in Slack, and logging the publication in Salesforce as a content asset.
naftiko: "0.5"
info:
label: "Research Brief Publication Pipeline"
description: "Publishes a research brief by creating a Confluence page with the content, uploading the PDF to Google Drive, sharing the link in Slack, and logging the publication in Salesforce as a content asset."
tags:
- research
- publishing
- confluence
- google-drive
- slack
- salesforce
capability:
exposes:
- type: mcp
namespace: research-publishing
port: 8080
tools:
- name: publish-brief
description: "Publish a research brief across Confluence, Google Drive, Slack, and Salesforce."
inputParameters:
- name: title
in: body
type: string
description: "Title of the research brief."
- name: content_html
in: body
type: string
description: "HTML body content for the Confluence page."
- name: industry
in: body
type: string
description: "Industry tag for the brief."
- name: author_email
in: body
type: string
description: "Email of the author."
steps:
- name: create-page
type: call
call: "confluence.create-page"
with:
space_key: "RESEARCH"
title: "{{title}}"
body: "{{content_html}}"
labels: "research-brief,{{industry}}"
- name: upload-pdf
type: call
call: "gdrive.upload-file"
with:
folder_id: "research-briefs-folder"
name: "{{title}}.pdf"
mimeType: "application/pdf"
- name: share-brief
type: call
call: "slack.post-message"
with:
channel: "research-publications"
text: "New research brief published: {{title}} by {{author_email}}. Confluence: {{create-page.url}} | Drive: {{upload-pdf.webViewLink}}"
- name: log-asset
type: call
call: "salesforce.create-content-asset"
with:
Name: "{{title}}"
Type__c: "Research Brief"
Industry__c: "{{industry}}"
URL__c: "{{create-page.url}}"
consumes:
- type: http
namespace: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: gdrive
baseUri: "https://www.googleapis.com/upload/drive/v3"
authentication:
type: bearer
token: "$secrets.google_oauth_token"
resources:
- name: files
path: "/files"
inputParameters:
- name: uploadType
in: query
value: "multipart"
operations:
- name: upload-file
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
- type: http
namespace: salesforce
baseUri: "https://mckinsey.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: content-assets
path: "/sobjects/Content_Asset__c"
operations:
- name: create-content-asset
method: POST
Retrieves a Salesforce opportunity by ID, returning account name, stage, close date, and estimated value. Used by engagement managers to quickly check pipeline status.
naftiko: "0.5"
info:
label: "Salesforce Opportunity Lookup"
description: "Retrieves a Salesforce opportunity by ID, returning account name, stage, close date, and estimated value. Used by engagement managers to quickly check pipeline status."
tags:
- sales
- crm
- salesforce
capability:
exposes:
- type: mcp
namespace: crm-pipeline
port: 8080
tools:
- name: get-opportunity
description: "Look up a Salesforce opportunity by ID. Returns account name, stage, close date, and value."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "The Salesforce opportunity ID."
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
outputParameters:
- name: account_name
type: string
mapping: "$.Account.Name"
- name: stage
type: string
mapping: "$.StageName"
- name: close_date
type: string
mapping: "$.CloseDate"
- name: amount
type: string
mapping: "$.Amount"
consumes:
- type: http
namespace: salesforce
baseUri: "https://mckinsey.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
Updates a Salesforce opportunity stage and notifies the engagement team in Slack with the new status. Used by engagement managers to keep CRM and team communications in sync.
naftiko: "0.5"
info:
label: "Salesforce Opportunity Update with Slack Notification"
description: "Updates a Salesforce opportunity stage and notifies the engagement team in Slack with the new status. Used by engagement managers to keep CRM and team communications in sync."
tags:
- sales
- crm
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: opp-update-notify
port: 8080
tools:
- name: update-opportunity-notify
description: "Update a Salesforce opportunity stage and notify the team via Slack."
inputParameters:
- name: opportunity_id
in: body
type: string
description: "Salesforce opportunity ID."
- name: new_stage
in: body
type: string
description: "New opportunity stage name."
- name: notification_channel
in: body
type: string
description: "Slack channel for notification."
steps:
- name: update-opp
type: call
call: "salesforce.update-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
StageName: "{{new_stage}}"
- name: get-opp
type: call
call: "salesforce.get-opportunity"
with:
opportunity_id: "{{opportunity_id}}"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "{{notification_channel}}"
text: "Opportunity {{get-opp.Name}} moved to {{new_stage}}. Account: {{get-opp.Account.Name}}. Value: {{get-opp.Amount}}."
consumes:
- type: http
namespace: salesforce
baseUri: "https://mckinsey.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: update-opportunity
method: PATCH
- name: get-opportunity
method: GET
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
Retrieves an expense report from SAP Concur by report ID. Returns total amount, approval status, and currency. Used by finance teams for engagement cost tracking.
naftiko: "0.5"
info:
label: "SAP Concur Expense Report Lookup"
description: "Retrieves an expense report from SAP Concur by report ID. Returns total amount, approval status, and currency. Used by finance teams for engagement cost tracking."
tags:
- finance
- expense-management
- sap-concur
capability:
exposes:
- type: mcp
namespace: expense-tracking
port: 8080
tools:
- name: get-expense-report
description: "Look up an SAP Concur expense report by report ID."
inputParameters:
- name: report_id
in: body
type: string
description: "SAP Concur expense report ID."
call: "concur.get-report"
with:
report_id: "{{report_id}}"
outputParameters:
- name: total
type: string
mapping: "$.Total"
- name: status
type: string
mapping: "$.ApprovalStatusName"
- name: currency
type: string
mapping: "$.CurrencyCode"
- name: submit_date
type: string
mapping: "$.SubmitDate"
consumes:
- type: http
namespace: concur
baseUri: "https://us.api.concursolutions.com/api/v3.0"
authentication:
type: bearer
token: "$secrets.concur_token"
resources:
- name: reports
path: "/expense/reports/{{report_id}}"
inputParameters:
- name: report_id
in: path
operations:
- name: get-report
method: GET
Delivers sales enablement content by finding relevant materials in Seismic, generating a personalized share link, logging the interaction in Salesforce, and notifying the business development lead via Microsoft Teams.
naftiko: "0.5"
info:
label: "Seismic Content Delivery Pipeline"
description: "Delivers sales enablement content by finding relevant materials in Seismic, generating a personalized share link, logging the interaction in Salesforce, and notifying the business development lead via Microsoft Teams."
tags:
- business-development
- sales-enablement
- seismic
- salesforce
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: content-delivery
port: 8080
tools:
- name: deliver-content
description: "Find and deliver Seismic content to a prospect, log in Salesforce, and notify the BD lead."
inputParameters:
- name: content_query
in: body
type: string
description: "Search query for Seismic content."
- name: prospect_email
in: body
type: string
description: "Prospect email address."
- name: opportunity_id
in: body
type: string
description: "Salesforce opportunity ID."
- name: bd_lead_upn
in: body
type: string
description: "BD lead Microsoft Teams UPN."
steps:
- name: find-content
type: call
call: "seismic.search-content"
with:
query: "{{content_query}}"
- name: create-link
type: call
call: "seismic.create-share-link"
with:
content_id: "{{find-content.results[0].id}}"
recipient_email: "{{prospect_email}}"
- name: log-activity
type: call
call: "salesforce.create-task"
with:
WhatId: "{{opportunity_id}}"
Subject: "Content shared: {{find-content.results[0].title}}"
Description: "Shared {{find-content.results[0].title}} with {{prospect_email}} via Seismic: {{create-link.url}}"
- name: notify-bd
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{bd_lead_upn}}"
text: "Content shared with {{prospect_email}}: {{find-content.results[0].title}}. Link: {{create-link.url}}. Logged to opportunity {{opportunity_id}}."
consumes:
- type: http
namespace: seismic
baseUri: "https://api.seismic.com/integration/v2"
authentication:
type: bearer
token: "$secrets.seismic_token"
resources:
- name: content-search
path: "/content/search"
inputParameters:
- name: query
in: query
operations:
- name: search-content
method: GET
- name: share-links
path: "/content/shareLinks"
operations:
- name: create-share-link
method: POST
- type: http
namespace: salesforce
baseUri: "https://mckinsey.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: tasks
path: "/sobjects/Task"
operations:
- name: create-task
method: POST
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: chat-messages
path: "/users/{{recipient_upn}}/chats"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves a ServiceNow incident by number. Returns short description, state, priority, assigned group, and resolution notes. Used by IT support for quick incident triage.
naftiko: "0.5"
info:
label: "ServiceNow Incident Lookup"
description: "Retrieves a ServiceNow incident by number. Returns short description, state, priority, assigned group, and resolution notes. Used by IT support for quick incident triage."
tags:
- it-support
- incident-management
- servicenow
capability:
exposes:
- type: mcp
namespace: it-incidents
port: 8080
tools:
- name: get-incident
description: "Look up a ServiceNow incident by number. Returns description, state, priority, and assigned group."
inputParameters:
- name: incident_number
in: body
type: string
description: "The ServiceNow incident number (e.g., INC0012345)."
call: "servicenow.get-incident"
with:
number: "{{incident_number}}"
outputParameters:
- name: short_description
type: string
mapping: "$.result.short_description"
- name: state
type: string
mapping: "$.result.state"
- name: priority
type: string
mapping: "$.result.priority"
- name: assigned_group
type: string
mapping: "$.result.assignment_group.display_value"
consumes:
- type: http
namespace: servicenow
baseUri: "https://mckinsey.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
inputParameters:
- name: number
in: query
operations:
- name: get-incident
method: GET
Resolves a ServiceNow incident by updating its state and resolution notes, then documents the resolution in Confluence and notifies the team via Slack.
naftiko: "0.5"
info:
label: "ServiceNow Incident Resolution with Confluence Documentation"
description: "Resolves a ServiceNow incident by updating its state and resolution notes, then documents the resolution in Confluence and notifies the team via Slack."
tags:
- it-support
- incident-management
- servicenow
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: incident-resolution
port: 8080
tools:
- name: resolve-incident
description: "Resolve a ServiceNow incident, document in Confluence, and notify via Slack."
inputParameters:
- name: incident_number
in: body
type: string
description: "ServiceNow incident number."
- name: resolution_notes
in: body
type: string
description: "Resolution notes."
- name: space_key
in: body
type: string
description: "Confluence space key for documentation."
steps:
- name: resolve-ticket
type: call
call: "servicenow.update-incident"
with:
number: "{{incident_number}}"
state: "resolved"
close_notes: "{{resolution_notes}}"
- name: document-resolution
type: call
call: "confluence.create-page"
with:
space_key: "{{space_key}}"
title: "Resolution: {{incident_number}}"
body: "<h2>Incident {{incident_number}}</h2><p>{{resolution_notes}}</p>"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "it-operations"
text: "Incident {{incident_number}} resolved. Notes: {{resolution_notes}}. Documentation: {{document-resolution.url}}"
consumes:
- type: http
namespace: servicenow
baseUri: "https://mckinsey.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
inputParameters:
- name: number
in: query
operations:
- name: update-incident
method: PATCH
- type: http
namespace: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: 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
Posts a message to a specified Slack channel. Used across functions for notifications, alerts, and team communications.
naftiko: "0.5"
info:
label: "Slack Channel Message Post"
description: "Posts a message to a specified Slack channel. Used across functions for notifications, alerts, and team communications."
tags:
- communications
- notifications
- slack
capability:
exposes:
- type: mcp
namespace: slack-messaging
port: 8080
tools:
- name: post-channel-message
description: "Post a message to a Slack channel by channel name."
inputParameters:
- name: channel
in: body
type: string
description: "Slack channel name or ID."
- name: message_text
in: body
type: string
description: "The message text to post."
call: "slack.post-message"
with:
channel: "{{channel}}"
text: "{{message_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
Triggers a refresh of a Tableau workbook by workbook ID. Used by analytics teams to ensure client-facing dashboards reflect the latest data before presentations.
naftiko: "0.5"
info:
label: "Tableau Dashboard Refresh"
description: "Triggers a refresh of a Tableau workbook by workbook ID. Used by analytics teams to ensure client-facing dashboards reflect the latest data before presentations."
tags:
- analytics
- visualization
- tableau
capability:
exposes:
- type: mcp
namespace: analytics-refresh
port: 8080
tools:
- name: refresh-workbook
description: "Trigger a data refresh for a Tableau workbook by ID."
inputParameters:
- name: workbook_id
in: body
type: string
description: "The Tableau workbook ID."
call: "tableau.refresh-workbook"
with:
workbook_id: "{{workbook_id}}"
consumes:
- type: http
namespace: tableau
baseUri: "https://tableau.mckinsey.com/api/3.19"
authentication:
type: bearer
token: "$secrets.tableau_token"
resources:
- name: workbooks
path: "/sites/{{site_id}}/workbooks/{{workbook_id}}/refresh"
inputParameters:
- name: site_id
in: path
value: "mckinsey-main"
- name: workbook_id
in: path
operations:
- name: refresh-workbook
method: POST
Runs the semi-annual talent review by pulling performance data from Workday, aggregating feedback from Google Forms, generating a summary deck in Google Slides, and scheduling the review meeting via Microsoft Teams.
naftiko: "0.5"
info:
label: "Talent Review Pipeline"
description: "Runs the semi-annual talent review by pulling performance data from Workday, aggregating feedback from Google Forms, generating a summary deck in Google Slides, and scheduling the review meeting via Microsoft Teams."
tags:
- talent
- performance-management
- workday
- google-forms
- google-slides
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: talent-review
port: 8080
tools:
- name: prepare-talent-review
description: "Prepare talent review materials by pulling performance data, aggregating feedback, creating a deck, and scheduling the meeting."
inputParameters:
- name: practice_area
in: body
type: string
description: "Practice area for the review."
- name: review_period
in: body
type: string
description: "Review period (e.g., H1-2026)."
- name: review_panel_emails
in: body
type: string
description: "Comma-separated emails of review panel members."
steps:
- name: get-performance
type: call
call: "workday.get-performance-reviews"
with:
practice: "{{practice_area}}"
period: "{{review_period}}"
- name: get-feedback
type: call
call: "gforms.list-responses"
with:
form_id: "talent-feedback-form"
- name: create-deck
type: call
call: "gslides.create-presentation"
with:
title: "Talent Review: {{practice_area}} - {{review_period}}"
- name: schedule-review
type: call
call: "msgraph.create-event"
with:
organizer: "talent-ops@mckinsey.com"
subject: "Talent Review: {{practice_area}} {{review_period}}"
attendees: "{{review_panel_emails}}"
start: "{{review_period}}-review-start"
end: "{{review_period}}-review-end"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/mckinsey"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: performance
path: "/performanceManagement/reviews"
inputParameters:
- name: practice
in: query
- name: period
in: query
operations:
- name: get-performance-reviews
method: GET
- type: http
namespace: gforms
baseUri: "https://forms.googleapis.com/v1"
authentication:
type: bearer
token: "$secrets.google_oauth_token"
resources:
- name: responses
path: "/forms/{{form_id}}/responses"
inputParameters:
- name: form_id
in: path
operations:
- name: list-responses
method: GET
- type: http
namespace: gslides
baseUri: "https://slides.googleapis.com/v1"
authentication:
type: bearer
token: "$secrets.google_oauth_token"
resources:
- name: presentations
path: "/presentations"
operations:
- name: create-presentation
method: POST
- type: http
namespace: msgraph
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: events
path: "/users/{{organizer}}/events"
inputParameters:
- name: organizer
in: path
operations:
- name: create-event
method: POST
Publishes a McKinsey Insights article by creating the page in Confluence, scheduling social media posts via HubSpot to LinkedIn and Twitter, and notifying the editorial team via Slack.
naftiko: "0.5"
info:
label: "Thought Leadership Publishing Pipeline"
description: "Publishes a McKinsey Insights article by creating the page in Confluence, scheduling social media posts via HubSpot to LinkedIn and Twitter, and notifying the editorial team via Slack."
tags:
- marketing
- thought-leadership
- confluence
- hubspot
- slack
capability:
exposes:
- type: mcp
namespace: thought-leadership
port: 8080
tools:
- name: publish-article
description: "Publish a thought leadership article across Confluence, social channels, and Slack."
inputParameters:
- name: title
in: body
type: string
description: "Article title."
- name: content_html
in: body
type: string
description: "HTML article body."
- name: author_name
in: body
type: string
description: "Author display name."
- name: industry_tags
in: body
type: string
description: "Comma-separated industry tags."
steps:
- name: create-article
type: call
call: "confluence.create-page"
with:
space_key: "INSIGHTS"
title: "{{title}}"
body: "{{content_html}}"
labels: "insights,{{industry_tags}}"
- name: schedule-linkedin
type: call
call: "hubspot.create-social-post"
with:
network: "linkedin"
content: "New from McKinsey: {{title}} by {{author_name}}. Read more: {{create-article.url}}"
- name: schedule-twitter
type: call
call: "hubspot.create-social-post"
with:
network: "twitter"
content: "{{title}} by {{author_name}} - {{create-article.url}} #McKinseyInsights"
- name: notify-editorial
type: call
call: "slack.post-message"
with:
channel: "editorial-team"
text: "Article published: {{title}} by {{author_name}}. Social posts scheduled. Link: {{create-article.url}}"
consumes:
- type: http
namespace: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: hubspot
baseUri: "https://api.hubapi.com"
authentication:
type: bearer
token: "$secrets.hubspot_token"
resources:
- name: social
path: "/broadcast/v1/broadcasts"
operations:
- name: create-social-post
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
When a consultant submits a travel request, validates the budget against Workday cost center allocations, creates an approval task in ServiceNow, and notifies the manager via Microsoft Teams.
naftiko: "0.5"
info:
label: "Travel Booking Approval Pipeline"
description: "When a consultant submits a travel request, validates the budget against Workday cost center allocations, creates an approval task in ServiceNow, and notifies the manager via Microsoft Teams."
tags:
- travel
- finance
- workday
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: travel-approval
port: 8080
tools:
- name: submit-travel-request
description: "Submit a travel request for approval by validating budget, creating a ServiceNow task, and notifying the manager."
inputParameters:
- name: worker_id
in: body
type: string
description: "Workday worker ID of the requestor."
- name: engagement_id
in: body
type: string
description: "Engagement to charge travel to."
- name: destination
in: body
type: string
description: "Travel destination."
- name: estimated_cost
in: body
type: string
description: "Estimated travel cost."
- name: travel_dates
in: body
type: string
description: "Travel date range."
steps:
- name: check-budget
type: call
call: "workday.get-cost-center"
with:
worker_id: "{{worker_id}}"
engagement: "{{engagement_id}}"
- name: create-approval
type: call
call: "servicenow.create-request"
with:
short_description: "Travel approval: {{destination}} for {{worker_id}}"
description: "Destination: {{destination}}. Dates: {{travel_dates}}. Estimated cost: {{estimated_cost}}. Budget remaining: {{check-budget.remaining_budget}}."
category: "travel"
- name: notify-manager
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{check-budget.manager_email}}"
text: "Travel approval needed for {{destination}} ({{travel_dates}}). Cost: {{estimated_cost}}. Budget remaining: {{check-budget.remaining_budget}}. Ticket: {{create-approval.number}}"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/mckinsey"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: cost-centers
path: "/financialManagement/costCenters"
inputParameters:
- name: worker_id
in: query
- name: engagement
in: query
operations:
- name: get-cost-center
method: GET
- type: http
namespace: servicenow
baseUri: "https://mckinsey.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: chat-messages
path: "/users/{{recipient_upn}}/chats"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Generates a weekly status report by pulling active engagements from Salesforce, collecting time entries from Workday, building a summary in Google Sheets, and distributing via Microsoft Teams.
naftiko: "0.5"
info:
label: "Weekly Engagement Status Report Generator"
description: "Generates a weekly status report by pulling active engagements from Salesforce, collecting time entries from Workday, building a summary in Google Sheets, and distributing via Microsoft Teams."
tags:
- reporting
- engagement-management
- salesforce
- workday
- google-sheets
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: status-reporting
port: 8080
tools:
- name: generate-weekly-report
description: "Generate a weekly engagement status report pulling from Salesforce, Workday, and Google Sheets, then distribute via Teams."
inputParameters:
- name: report_week
in: body
type: string
description: "Week start date in YYYY-MM-DD format."
- name: practice_area
in: body
type: string
description: "Practice area to report on."
- name: distribution_channel
in: body
type: string
description: "Teams channel ID for distribution."
steps:
- name: get-engagements
type: call
call: "salesforce.query-opportunities"
with:
q: "SELECT Id, Name, Account.Name, StageName FROM Opportunity WHERE StageName='Active' AND Practice__c='{{practice_area}}'"
- name: get-hours
type: call
call: "workday.get-time-entries"
with:
practice: "{{practice_area}}"
week_start: "{{report_week}}"
- name: update-sheet
type: call
call: "gsheets.update-values"
with:
spreadsheet_id: "weekly-status-template"
range: "WeeklyData!A2"
values: "{{get-engagements.records}}"
- name: distribute-report
type: call
call: "msteams.send-message"
with:
channel_id: "{{distribution_channel}}"
text: "Weekly Status Report for {{practice_area}} (week of {{report_week}}): {{get-engagements.totalSize}} active engagements. Spreadsheet: {{update-sheet.spreadsheetUrl}}"
consumes:
- type: http
namespace: salesforce
baseUri: "https://mckinsey.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: query
path: "/query"
inputParameters:
- name: q
in: query
operations:
- name: query-opportunities
method: GET
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/mckinsey"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: time-entries
path: "/timeTracking/entries"
inputParameters:
- name: practice
in: query
- name: week_start
in: query
operations:
- name: get-time-entries
method: GET
- type: http
namespace: gsheets
baseUri: "https://sheets.googleapis.com/v4"
authentication:
type: bearer
token: "$secrets.google_oauth_token"
resources:
- name: values
path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}"
inputParameters:
- name: spreadsheet_id
in: path
- name: range
in: path
operations:
- name: update-values
method: PUT
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: messages
path: "/teams/{{channel_id}}/channels/General/messages"
inputParameters:
- name: channel_id
in: path
operations:
- name: send-message
method: POST
On employee departure, updates Workday status, revokes access via Azure Active Directory, closes open ServiceNow tickets, and notifies HR and IT via Microsoft Teams.
naftiko: "0.5"
info:
label: "Workday Employee Offboarding Pipeline"
description: "On employee departure, updates Workday status, revokes access via Azure Active Directory, closes open ServiceNow tickets, and notifies HR and IT via Microsoft Teams."
tags:
- hr
- offboarding
- workday
- azure-active-directory
- servicenow
- microsoft-teams
capability:
exposes:
- type: mcp
namespace: hr-offboarding
port: 8080
tools:
- name: process-offboarding
description: "Process employee offboarding across Workday, Azure AD, ServiceNow, and Teams."
inputParameters:
- name: worker_id
in: body
type: string
description: "Workday worker ID."
- name: last_day
in: body
type: string
description: "Last working day in YYYY-MM-DD format."
- name: manager_upn
in: body
type: string
description: "Manager UPN for notification."
steps:
- name: get-employee
type: call
call: "workday.get-worker"
with:
worker_id: "{{worker_id}}"
- name: disable-account
type: call
call: "azuread.disable-user"
with:
user_principal_name: "{{get-employee.work_email}}"
- name: close-tickets
type: call
call: "servicenow.close-user-tickets"
with:
caller_id: "{{get-employee.work_email}}"
- name: notify-teams
type: call
call: "msteams.send-message"
with:
recipient_upn: "{{manager_upn}}"
text: "Offboarding complete for {{get-employee.full_name}} (last day: {{last_day}}). AD account disabled. {{close-tickets.count}} tickets closed."
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/mckinsey"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
- type: http
namespace: azuread
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: users
path: "/users/{{user_principal_name}}"
inputParameters:
- name: user_principal_name
in: path
operations:
- name: disable-user
method: PATCH
- type: http
namespace: servicenow
baseUri: "https://mckinsey.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
inputParameters:
- name: caller_id
in: query
operations:
- name: close-user-tickets
method: PATCH
- type: http
namespace: msteams
baseUri: "https://graph.microsoft.com/v1.0"
authentication:
type: bearer
token: "$secrets.msgraph_token"
resources:
- name: chat-messages
path: "/users/{{recipient_upn}}/chats"
inputParameters:
- name: recipient_upn
in: path
operations:
- name: send-message
method: POST
Retrieves an employee profile from Workday by worker ID. Returns name, title, office location, practice area, and manager. Used for staffing and team assembly.
naftiko: "0.5"
info:
label: "Workday Employee Profile Lookup"
description: "Retrieves an employee profile from Workday by worker ID. Returns name, title, office location, practice area, and manager. Used for staffing and team assembly."
tags:
- hr
- talent
- workday
capability:
exposes:
- type: mcp
namespace: hr-directory
port: 8080
tools:
- name: get-employee-profile
description: "Look up a Workday employee profile by worker ID. Returns name, title, office, practice, and manager."
inputParameters:
- name: worker_id
in: body
type: string
description: "The Workday worker ID."
call: "workday.get-worker"
with:
worker_id: "{{worker_id}}"
outputParameters:
- name: full_name
type: string
mapping: "$.descriptor"
- name: title
type: string
mapping: "$.businessTitle"
- name: office
type: string
mapping: "$.primaryWorkLocation"
- name: practice
type: string
mapping: "$.supervisoryOrganization.name"
- name: manager
type: string
mapping: "$.manager.descriptor"
consumes:
- type: http
namespace: workday
baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1/mckinsey"
authentication:
type: bearer
token: "$secrets.workday_token"
resources:
- name: workers
path: "/workers/{{worker_id}}"
inputParameters:
- name: worker_id
in: path
operations:
- name: get-worker
method: GET
Escalates a Zendesk support ticket by updating its priority, creating a linked ServiceNow incident for IT tracking, and alerting the support lead via Slack.
naftiko: "0.5"
info:
label: "Zendesk Ticket Escalation Pipeline"
description: "Escalates a Zendesk support ticket by updating its priority, creating a linked ServiceNow incident for IT tracking, and alerting the support lead via Slack."
tags:
- it-support
- help-desk
- zendesk
- servicenow
- slack
capability:
exposes:
- type: mcp
namespace: ticket-escalation
port: 8080
tools:
- name: escalate-ticket
description: "Escalate a Zendesk ticket, create a ServiceNow incident, and alert via Slack."
inputParameters:
- name: ticket_id
in: body
type: string
description: "Zendesk ticket ID."
- name: new_priority
in: body
type: string
description: "New priority level (high, urgent)."
- name: escalation_reason
in: body
type: string
description: "Reason for escalation."
steps:
- name: update-ticket
type: call
call: "zendesk.update-ticket"
with:
ticket_id: "{{ticket_id}}"
priority: "{{new_priority}}"
- name: create-incident
type: call
call: "servicenow.create-incident"
with:
short_description: "Escalated from Zendesk #{{ticket_id}}"
description: "{{escalation_reason}}"
priority: "{{new_priority}}"
assigned_group: "IT_Escalations"
- name: alert-lead
type: call
call: "slack.post-message"
with:
channel: "support-escalations"
text: "Ticket #{{ticket_id}} escalated to {{new_priority}}. Reason: {{escalation_reason}}. ServiceNow: {{create-incident.number}}."
consumes:
- type: http
namespace: zendesk
baseUri: "https://mckinsey.zendesk.com/api/v2"
authentication:
type: bearer
token: "$secrets.zendesk_token"
resources:
- name: tickets
path: "/tickets/{{ticket_id}}"
inputParameters:
- name: ticket_id
in: path
operations:
- name: update-ticket
method: PUT
- type: http
namespace: servicenow
baseUri: "https://mckinsey.service-now.com/api/now"
authentication:
type: basic
username: "$secrets.servicenow_user"
password: "$secrets.servicenow_password"
resources:
- name: incidents
path: "/table/incident"
operations:
- name: create-incident
method: POST
- type: http
namespace: slack
baseUri: "https://slack.com/api"
authentication:
type: bearer
token: "$secrets.slack_bot_token"
resources:
- name: messages
path: "/chat.postMessage"
operations:
- name: post-message
method: POST
# --- SIMPLE CAPABILITIES (15) ---
Retrieves a Zoom meeting recording, uploads it to Google Drive for long-term storage, creates a Confluence page linking to the recording, and notifies the team via Slack.
naftiko: "0.5"
info:
label: "Zoom Recording Archive Pipeline"
description: "Retrieves a Zoom meeting recording, uploads it to Google Drive for long-term storage, creates a Confluence page linking to the recording, and notifies the team via Slack."
tags:
- collaboration
- archiving
- zoom
- google-drive
- confluence
- slack
capability:
exposes:
- type: mcp
namespace: recording-archive
port: 8080
tools:
- name: archive-recording
description: "Archive a Zoom recording to Google Drive, document in Confluence, and notify via Slack."
inputParameters:
- name: meeting_id
in: body
type: string
description: "Zoom meeting ID."
- name: drive_folder_id
in: body
type: string
description: "Google Drive folder ID for recordings."
- name: space_key
in: body
type: string
description: "Confluence space key."
steps:
- name: get-recording
type: call
call: "zoom.get-recordings"
with:
meeting_id: "{{meeting_id}}"
- name: upload-to-drive
type: call
call: "gdrive.upload-file"
with:
folder_id: "{{drive_folder_id}}"
name: "{{get-recording.topic}}_recording.mp4"
mimeType: "video/mp4"
- name: create-page
type: call
call: "confluence.create-page"
with:
space_key: "{{space_key}}"
title: "Recording: {{get-recording.topic}}"
body: "<p>Meeting: {{get-recording.topic}}</p><p>Duration: {{get-recording.duration}} minutes</p><p>Recording: {{upload-to-drive.webViewLink}}</p>"
- name: notify-team
type: call
call: "slack.post-message"
with:
channel: "recordings"
text: "Recording archived: {{get-recording.topic}}. Drive: {{upload-to-drive.webViewLink}}. Confluence: {{create-page.url}}"
consumes:
- type: http
namespace: zoom
baseUri: "https://api.zoom.us/v2"
authentication:
type: bearer
token: "$secrets.zoom_token"
resources:
- name: recordings
path: "/meetings/{{meeting_id}}/recordings"
inputParameters:
- name: meeting_id
in: path
operations:
- name: get-recordings
method: GET
- type: http
namespace: gdrive
baseUri: "https://www.googleapis.com/upload/drive/v3"
authentication:
type: bearer
token: "$secrets.google_oauth_token"
resources:
- name: files
path: "/files"
inputParameters:
- name: uploadType
in: query
value: "multipart"
operations:
- name: upload-file
method: POST
- type: http
namespace: confluence
baseUri: "https://mckinsey.atlassian.net/wiki/rest/api"
authentication:
type: bearer
token: "$secrets.confluence_token"
resources:
- name: content
path: "/content"
operations:
- name: create-page
method: POST
- type: http
namespace: 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
Enriches a company profile using ZoomInfo by company domain. Returns revenue, employee count, industry, and key contacts. Used for prospect research and lead qualification.
naftiko: "0.5"
info:
label: "ZoomInfo Company Enrichment"
description: "Enriches a company profile using ZoomInfo by company domain. Returns revenue, employee count, industry, and key contacts. Used for prospect research and lead qualification."
tags:
- research
- business-development
- zoominfo
capability:
exposes:
- type: mcp
namespace: company-enrichment
port: 8080
tools:
- name: enrich-company
description: "Enrich a company profile via ZoomInfo. Returns revenue, headcount, industry, and key contacts."
inputParameters:
- name: company_domain
in: body
type: string
description: "Company website domain."
call: "zoominfo.enrich-company"
with:
companyWebsite: "{{company_domain}}"
outputParameters:
- name: company_name
type: string
mapping: "$.data[0].name"
- name: revenue
type: string
mapping: "$.data[0].revenue"
- name: employee_count
type: integer
mapping: "$.data[0].employeeCount"
- name: industry
type: string
mapping: "$.data[0].industry"
consumes:
- type: http
namespace: zoominfo
baseUri: "https://api.zoominfo.com"
authentication:
type: bearer
token: "$secrets.zoominfo_token"
resources:
- name: enrich
path: "/enrich/company"
operations:
- name: enrich-company
method: POST
Enriches a lead via ZoomInfo by company domain, creates or updates the account in Salesforce, and notifies the business development team via Slack.
naftiko: "0.5"
info:
label: "ZoomInfo Lead Enrichment with Salesforce Sync"
description: "Enriches a lead via ZoomInfo by company domain, creates or updates the account in Salesforce, and notifies the business development team via Slack."
tags:
- business-development
- lead-enrichment
- zoominfo
- salesforce
- slack
capability:
exposes:
- type: mcp
namespace: lead-enrichment
port: 8080
tools:
- name: enrich-and-sync-lead
description: "Enrich a lead via ZoomInfo, sync to Salesforce, and notify BD team via Slack."
inputParameters:
- name: company_domain
in: body
type: string
description: "Company website domain."
- name: bd_channel
in: body
type: string
description: "Slack channel for BD team."
steps:
- name: enrich
type: call
call: "zoominfo.enrich-company"
with:
companyWebsite: "{{company_domain}}"
- name: upsert-account
type: call
call: "salesforce.upsert-account"
with:
Website: "{{company_domain}}"
Name: "{{enrich.company_name}}"
Industry: "{{enrich.industry}}"
NumberOfEmployees: "{{enrich.employee_count}}"
AnnualRevenue: "{{enrich.revenue}}"
- name: notify-bd
type: call
call: "slack.post-message"
with:
channel: "{{bd_channel}}"
text: "Lead enriched: {{enrich.company_name}} ({{company_domain}}). Revenue: {{enrich.revenue}}. Employees: {{enrich.employee_count}}. Synced to Salesforce."
consumes:
- type: http
namespace: zoominfo
baseUri: "https://api.zoominfo.com"
authentication:
type: bearer
token: "$secrets.zoominfo_token"
resources:
- name: enrich
path: "/enrich/company"
operations:
- name: enrich-company
method: POST
- type: http
namespace: salesforce
baseUri: "https://mckinsey.my.salesforce.com/services/data/v58.0"
authentication:
type: bearer
token: "$secrets.salesforce_token"
resources:
- name: accounts
path: "/sobjects/Account/Website/{{Website}}"
inputParameters:
- name: Website
in: path
operations:
- name: upsert-account
method: PATCH
- 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