Zoom Capabilities

Naftiko 0.5 capability definitions for Zoom - 100 capabilities showing integration workflows and service orchestrations.

Sort
Expand

Retrieves the Zoom AI Companion meeting summary for a completed meeting, including key topics, action items, and next steps.

naftiko: "0.5"
info:
  label: "AI Companion Meeting Summary"
  description: "Retrieves the Zoom AI Companion meeting summary for a completed meeting, including key topics, action items, and next steps."
  tags:
    - communications
    - meetings
    - ai-companion
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-ai
      port: 8080
      tools:
        - name: get-meeting-summary
          description: "Fetch the AI Companion-generated summary for a completed Zoom meeting."
          inputParameters:
            - name: meeting_id
              in: body
              type: string
              description: "The Zoom meeting UUID."
          call: "zoom.get-ai-summary"
          with:
            meeting_id: "{{meeting_id}}"
          outputParameters:
            - name: summary_text
              type: string
              mapping: "$.meeting_summary.summary_details.summary_overview"
            - name: action_items
              type: array
              mapping: "$.meeting_summary.summary_details.next_steps"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: meeting-summaries
          path: "/meetings/{{meeting_id}}/meeting_summary"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: get-ai-summary
              method: GET

Manages annual compliance certifications by distributing attestations, tracking completion, and filing results.

naftiko: "0.5"
info:
  label: "Annual Compliance Certification Orchestrator"
  description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
  tags:
    - compliance
    - hr
    - legal
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: run-annual-compliance-certification-orchestrator
          description: "Manages annual compliance certifications by distributing attestations, tracking completion, and filing results."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Annual Compliance Certification Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation.

naftiko: "0.5"
info:
  label: "API Lifecycle Management Orchestrator"
  description: "Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation."
  tags:
    - engineering
    - api
    - operations
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: run-api-lifecycle-management-orchestrator
          description: "Manages API lifecycle by versioning, deprecating old endpoints, notifying consumers, and updating documentation."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed API Lifecycle Management Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Sends a text message to a Zoom Team Chat channel on behalf of a user or chatbot.

naftiko: "0.5"
info:
  label: "Chat Channel Message Sender"
  description: "Sends a text message to a Zoom Team Chat channel on behalf of a user or chatbot."
  tags:
    - communications
    - team-chat
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-chat
      port: 8080
      tools:
        - name: send-channel-message
          description: "Post a text message to a Zoom Team Chat channel."
          inputParameters:
            - name: channel_id
              in: body
              type: string
              description: "The Zoom Team Chat channel ID."
            - name: message
              in: body
              type: string
              description: "The message text to send."
          call: "zoom.post-channel-message"
          with:
            to_channel: "{{channel_id}}"
            message: "{{message}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: chat-messages
          path: "/chat/users/me/messages"
          operations:
            - name: post-channel-message
              method: POST

Retrieves a Confluence wiki page.

naftiko: "0.5"
info:
  label: "Confluence Page Viewer"
  description: "Retrieves a Confluence wiki page."
  tags:
    - collaboration
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: collaboration
      port: 8080
      tools:
        - name: get-confluence
          description: "Retrieves a Confluence wiki page."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The confluence page viewer identifier."
          call: "collaboration-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: collaboration-api
      baseUri: "https://api.zoom.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: confluence
          path: "/confluence/page/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-confluence
              method: GET

Pulls Zoom Contact Center agent metrics, enriches with HR data from Workday, and pushes a summary to a Google Sheets dashboard.

naftiko: "0.5"
info:
  label: "Contact Center Agent Performance Dashboard"
  description: "Pulls Zoom Contact Center agent metrics, enriches with HR data from Workday, and pushes a summary to a Google Sheets dashboard."
  tags:
    - communications
    - contact-center
    - workday
    - google-sheets
    - reporting
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-cc-reporting
      port: 8080
      tools:
        - name: generate-agent-performance-report
          description: "Given a Zoom Contact Center queue ID and Google Sheet ID, pull agent metrics, enrich from Workday, and update the spreadsheet."
          inputParameters:
            - name: queue_id
              in: body
              type: string
              description: "The Zoom Contact Center queue ID."
            - name: spreadsheet_id
              in: body
              type: string
              description: "The Google Sheets spreadsheet ID."
          steps:
            - name: get-agent-metrics
              type: call
              call: "zoom.get-queue-agents"
              with:
                queue_id: "{{queue_id}}"
            - name: get-employee-data
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{get-agent-metrics.agents[0].user_id}}"
            - name: update-sheet
              type: call
              call: "gsheets.append-rows"
              with:
                spreadsheet_id: "{{spreadsheet_id}}"
                range: "AgentMetrics!A1"
                values:
                  - "{{get-employee-data.full_name}}"
                  - "{{get-employee-data.department}}"
                  - "{{get-agent-metrics.agents[0].calls_handled}}"
                  - "{{get-agent-metrics.agents[0].avg_handle_time}}"
                  - "{{get-agent-metrics.agents[0].avg_wait_time}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: queue-agents
          path: "/contact_center/queues/{{queue_id}}/agents"
          inputParameters:
            - name: queue_id
              in: path
          operations:
            - name: get-queue-agents
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/{{spreadsheet_id}}/values/{{range}}:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: append-rows
              method: POST

After a Zoom Contact Center engagement, sends a CSAT survey link via Zoom Team Chat to the customer and logs the survey send event to Salesforce as an activity.

naftiko: "0.5"
info:
  label: "Contact Center CSAT Survey via Zoom"
  description: "After a Zoom Contact Center engagement, sends a CSAT survey link via Zoom Team Chat to the customer and logs the survey send event to Salesforce as an activity."
  tags:
    - communications
    - contact-center
    - team-chat
    - salesforce
    - customer-satisfaction
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-cc-csat
      port: 8080
      tools:
        - name: send-csat-survey
          description: "Given a Contact Center engagement ID, customer email, and survey URL, send the survey and log to Salesforce."
          inputParameters:
            - name: engagement_id
              in: body
              type: string
              description: "The Zoom Contact Center engagement ID."
            - name: customer_email
              in: body
              type: string
              description: "The customer email address."
            - name: survey_url
              in: body
              type: string
              description: "The CSAT survey URL."
          steps:
            - name: get-engagement
              type: call
              call: "zoom.get-engagement-details"
              with:
                engagement_id: "{{engagement_id}}"
            - name: send-survey
              type: call
              call: "zoom.post-chat-message"
              with:
                to_contact: "{{customer_email}}"
                message: "Thank you for contacting us. Please take a moment to rate your experience: {{survey_url}}"
            - name: log-salesforce
              type: call
              call: "salesforce.create-task"
              with:
                subject: "CSAT survey sent - Engagement {{engagement_id}}"
                description: "Survey sent to {{customer_email}} after engagement with agent {{get-engagement.agent_name}}. Channel: {{get-engagement.channel}}."
                status: "Completed"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: engagements
          path: "/contact_center/engagements/{{engagement_id}}"
          inputParameters:
            - name: engagement_id
              in: path
          operations:
            - name: get-engagement-details
              method: GET
        - name: chat-messages
          path: "/chat/users/me/messages"
          operations:
            - name: post-chat-message
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://your-instance.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: tasks
          path: "/sobjects/Task"
          operations:
            - name: create-task
              method: POST

When a Zoom Contact Center engagement concludes, retrieves the engagement details, creates a ServiceNow incident with the interaction summary, and sends a follow-up message to the customer via Zoom Team Chat.

naftiko: "0.5"
info:
  label: "Contact Center Engagement to ServiceNow Ticket"
  description: "When a Zoom Contact Center engagement concludes, retrieves the engagement details, creates a ServiceNow incident with the interaction summary, and sends a follow-up message to the customer via Zoom Team Chat."
  tags:
    - communications
    - contact-center
    - servicenow
    - team-chat
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-contact-center-ops
      port: 8080
      tools:
        - name: create-ticket-from-engagement
          description: "Given a Zoom Contact Center engagement ID, create a ServiceNow incident and notify the customer."
          inputParameters:
            - name: engagement_id
              in: body
              type: string
              description: "The Zoom Contact Center engagement ID."
            - name: customer_email
              in: body
              type: string
              description: "The customer email for follow-up notification."
          steps:
            - name: get-engagement
              type: call
              call: "zoom.get-engagement"
              with:
                engagement_id: "{{engagement_id}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Contact Center Engagement {{engagement_id}}"
                category: "customer_support"
                description: "Channel: {{get-engagement.channel}}\nAgent: {{get-engagement.agent_name}}\nDuration: {{get-engagement.duration}}\nDisposition: {{get-engagement.disposition}}"
            - name: notify-customer
              type: call
              call: "zoom.post-chat-message"
              with:
                to_contact: "{{customer_email}}"
                message: "Thank you for contacting support. Your ticket number is {{create-incident.number}}. We will follow up shortly."
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: engagements
          path: "/contact_center/engagements/{{engagement_id}}"
          inputParameters:
            - name: engagement_id
              in: path
          operations:
            - name: get-engagement
              method: GET
        - name: chat-messages
          path: "/chat/users/me/messages"
          operations:
            - name: post-chat-message
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://your-instance.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

Fetches the current queue status for a Zoom Contact Center queue, including agents online, calls waiting, and average wait time.

naftiko: "0.5"
info:
  label: "Contact Center Queue Status"
  description: "Fetches the current queue status for a Zoom Contact Center queue, including agents online, calls waiting, and average wait time."
  tags:
    - communications
    - contact-center
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-contact-center
      port: 8080
      tools:
        - name: get-queue-status
          description: "Retrieve real-time queue metrics for a Zoom Contact Center queue."
          inputParameters:
            - name: queue_id
              in: body
              type: string
              description: "The Zoom Contact Center queue ID."
          call: "zoom.get-queue-metrics"
          with:
            queue_id: "{{queue_id}}"
          outputParameters:
            - name: agents_online
              type: number
              mapping: "$.agents_online"
            - name: calls_in_queue
              type: number
              mapping: "$.calls_in_queue"
            - name: avg_wait_time
              type: number
              mapping: "$.avg_wait_time_seconds"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: contact-center-queues
          path: "/contact_center/queues/{{queue_id}}/metrics"
          inputParameters:
            - name: queue_id
              in: path
          operations:
            - name: get-queue-metrics
              method: GET

Monitors Zoom Contact Center queue wait times. When average wait time exceeds the SLA threshold, creates a PagerDuty incident, sends a Slack alert, and logs the breach to ServiceNow.

naftiko: "0.5"
info:
  label: "Contact Center SLA Breach Escalation"
  description: "Monitors Zoom Contact Center queue wait times. When average wait time exceeds the SLA threshold, creates a PagerDuty incident, sends a Slack alert, and logs the breach to ServiceNow."
  tags:
    - communications
    - contact-center
    - pagerduty
    - slack
    - servicenow
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-cc-sla
      port: 8080
      tools:
        - name: escalate-sla-breach
          description: "Given a Zoom Contact Center queue ID and SLA threshold, check wait times and escalate if breached."
          inputParameters:
            - name: queue_id
              in: body
              type: string
              description: "The Zoom Contact Center queue ID."
            - name: sla_threshold_seconds
              in: body
              type: number
              description: "SLA threshold in seconds."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel for alerts."
          steps:
            - name: get-queue-metrics
              type: call
              call: "zoom.get-queue-status"
              with:
                queue_id: "{{queue_id}}"
            - name: create-pagerduty
              type: call
              call: "pagerduty.create-incident"
              with:
                service_id: "ZOOM_CC_SVC"
                title: "SLA Breach: Queue {{queue_id}} avg wait {{get-queue-metrics.avg_wait_time_seconds}}s"
                body: "Queue: {{queue_id}}\nAvg Wait: {{get-queue-metrics.avg_wait_time_seconds}}s\nThreshold: {{sla_threshold_seconds}}s\nCalls Waiting: {{get-queue-metrics.calls_in_queue}}\nAgents Online: {{get-queue-metrics.agents_online}}"
            - name: alert-slack
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "SLA BREACH: Zoom Contact Center queue {{queue_id}} - avg wait time {{get-queue-metrics.avg_wait_time_seconds}}s exceeds {{sla_threshold_seconds}}s threshold. {{get-queue-metrics.calls_in_queue}} calls waiting."
            - name: log-servicenow
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Contact Center SLA breach - Queue {{queue_id}}"
                category: "contact_center"
                priority: "2"
                description: "Average wait time {{get-queue-metrics.avg_wait_time_seconds}}s exceeded SLA of {{sla_threshold_seconds}}s."
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: queue-metrics
          path: "/contact_center/queues/{{queue_id}}/metrics"
          inputParameters:
            - name: queue_id
              in: path
          operations:
            - name: get-queue-status
              method: GET
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_token"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://your-instance.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

Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters.

naftiko: "0.5"
info:
  label: "Cross-Functional Project Kickoff Orchestrator"
  description: "Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters."
  tags:
    - project-management
    - collaboration
    - operations
capability:
  exposes:
    - type: mcp
      namespace: project-management
      port: 8080
      tools:
        - name: run-cross-functional-project-kickoff-orchestrator
          description: "Kicks off cross-functional projects by creating workspaces, scheduling meetings, and distributing project charters."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Cross-Functional Project Kickoff Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Handles customer data privacy requests by locating records, processing deletions, and confirming compliance.

naftiko: "0.5"
info:
  label: "Customer Data Privacy Request Handler"
  description: "Handles customer data privacy requests by locating records, processing deletions, and confirming compliance."
  tags:
    - compliance
    - privacy
    - customer-service
capability:
  exposes:
    - type: mcp
      namespace: compliance
      port: 8080
      tools:
        - name: run-customer-data-privacy-request-handler
          description: "Handles customer data privacy requests by locating records, processing deletions, and confirming compliance."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Customer Data Privacy Request Handler for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations.

naftiko: "0.5"
info:
  label: "Customer Journey Mapping Orchestrator"
  description: "Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations."
  tags:
    - customer-experience
    - analytics
    - product-management
capability:
  exposes:
    - type: mcp
      namespace: customer-experience
      port: 8080
      tools:
        - name: run-customer-journey-mapping-orchestrator
          description: "Maps customer journeys by aggregating touchpoint data, identifying friction points, and generating improvement recommendations."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Customer Journey Mapping Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

After a Zoom webinar, fetches the Q&A report, creates a Salesforce case for each unanswered question, and notifies the sales team via Microsoft Teams.

naftiko: "0.5"
info:
  label: "Customer Webinar Follow-Up Pipeline"
  description: "After a Zoom webinar, fetches the Q&A report, creates a Salesforce case for each unanswered question, and notifies the sales team via Microsoft Teams."
  tags:
    - communications
    - webinars
    - salesforce
    - microsoft-teams
    - customer-service
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-webinar-followup
      port: 8080
      tools:
        - name: process-webinar-questions
          description: "Given a Zoom webinar ID, fetch unanswered Q&A, create Salesforce cases, and notify the sales team in Teams."
          inputParameters:
            - name: webinar_id
              in: body
              type: string
              description: "The Zoom webinar ID."
            - name: teams_channel_webhook
              in: body
              type: string
              description: "Microsoft Teams incoming webhook URL."
          steps:
            - name: get-qa-report
              type: call
              call: "zoom.get-webinar-qa"
              with:
                webinar_id: "{{webinar_id}}"
            - name: get-webinar
              type: call
              call: "zoom.get-webinar-info"
              with:
                webinar_id: "{{webinar_id}}"
            - name: create-case
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Unanswered webinar question from {{get-qa-report.questions[0].email}}"
                description: "Question: {{get-qa-report.questions[0].question}}\nWebinar: {{get-webinar.topic}}\nAsked by: {{get-qa-report.questions[0].name}}"
                origin: "Zoom Webinar"
            - name: notify-teams
              type: call
              call: "msteams.send-webhook"
              with:
                webhook_url: "{{teams_channel_webhook}}"
                text: "New unanswered webinar question from {{get-qa-report.questions[0].name}}: '{{get-qa-report.questions[0].question}}'. Salesforce case: {{create-case.id}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: webinar-qa
          path: "/report/webinars/{{webinar_id}}/qa"
          inputParameters:
            - name: webinar_id
              in: path
          operations:
            - name: get-webinar-qa
              method: GET
        - name: webinars
          path: "/webinars/{{webinar_id}}"
          inputParameters:
            - name: webinar_id
              in: path
          operations:
            - name: get-webinar-info
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://your-instance.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: msteams
      baseUri: "{{teams_channel_webhook}}"
      authentication:
        type: none
      resources:
        - name: webhook
          path: ""
          operations:
            - name: send-webhook
              method: POST

For a Zoom user, lists all meetings from the previous day, retrieves AI Companion summaries for each, and compiles them into a single email sent via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Daily Meeting Summary Digest"
  description: "For a Zoom user, lists all meetings from the previous day, retrieves AI Companion summaries for each, and compiles them into a single email sent via Microsoft Outlook."
  tags:
    - communications
    - meetings
    - ai-companion
    - microsoft-outlook
    - productivity
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-daily-digest
      port: 8080
      tools:
        - name: send-daily-meeting-digest
          description: "Given a Zoom user email and date, compile AI summaries for all meetings that day and email the digest."
          inputParameters:
            - name: user_email
              in: body
              type: string
              description: "The Zoom user email."
            - name: date
              in: body
              type: string
              description: "The date to summarize in YYYY-MM-DD format."
          steps:
            - name: list-meetings
              type: call
              call: "zoom.list-user-meetings"
              with:
                user_id: "{{user_email}}"
                type: "previous_meetings"
                from: "{{date}}"
                to: "{{date}}"
            - name: get-summary
              type: call
              call: "zoom.get-ai-summary"
              with:
                meeting_id: "{{list-meetings.meetings[0].uuid}}"
            - name: send-digest
              type: call
              call: "outlook.send-mail"
              with:
                user_upn: "{{user_email}}"
                to: "{{user_email}}"
                subject: "Your Zoom Meeting Digest for {{date}}"
                body: "Meetings attended: {{list-meetings.total_records}}\n\n1. {{list-meetings.meetings[0].topic}}\nSummary: {{get-summary.summary_text}}\nAction Items: {{get-summary.action_items}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: user-meetings
          path: "/users/{{user_id}}/meetings"
          inputParameters:
            - name: user_id
              in: path
            - name: type
              in: query
            - name: from
              in: query
            - name: to
              in: query
          operations:
            - name: list-user-meetings
              method: GET
        - name: meeting-summaries
          path: "/meetings/{{meeting_id}}/meeting_summary"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: get-ai-summary
              method: GET
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/users/{{user_upn}}/sendMail"
          inputParameters:
            - name: user_upn
              in: path
          operations:
            - name: send-mail
              method: POST

Pulls meeting quality-of-service data from the Zoom Dashboard API, including audio/video bitrate, latency, jitter, and packet loss for diagnostics.

naftiko: "0.5"
info:
  label: "Dashboard Meeting Quality"
  description: "Pulls meeting quality-of-service data from the Zoom Dashboard API, including audio/video bitrate, latency, jitter, and packet loss for diagnostics."
  tags:
    - communications
    - meetings
    - monitoring
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-dashboard
      port: 8080
      tools:
        - name: get-meeting-quality
          description: "Fetch QoS metrics for a Zoom meeting from the Dashboard API."
          inputParameters:
            - name: meeting_id
              in: body
              type: string
              description: "The Zoom meeting UUID."
          call: "zoom.get-meeting-qos"
          with:
            meeting_id: "{{meeting_id}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: dashboard-meeting-qos
          path: "/metrics/meetings/{{meeting_id}}/participants/qos"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: get-meeting-qos
              method: GET

Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports.

naftiko: "0.5"
info:
  label: "Data Governance Review Orchestrator"
  description: "Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports."
  tags:
    - data-governance
    - compliance
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: data-governance
      port: 8080
      tools:
        - name: run-data-governance-review-orchestrator
          description: "Reviews data governance compliance by auditing access controls, classifying data, and generating compliance reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Data Governance Review Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks.

naftiko: "0.5"
info:
  label: "Digital Transformation Progress Orchestrator"
  description: "Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks."
  tags:
    - strategy
    - analytics
    - project-management
capability:
  exposes:
    - type: mcp
      namespace: strategy
      port: 8080
      tools:
        - name: run-digital-transformation-progress-orchestrator
          description: "Tracks digital transformation progress by aggregating initiative metrics, reporting milestones, and alerting on risks."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Digital Transformation Progress Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Executes disaster recovery tests by failing over systems, validating recovery, and documenting results.

naftiko: "0.5"
info:
  label: "Disaster Recovery Test Orchestrator"
  description: "Executes disaster recovery tests by failing over systems, validating recovery, and documenting results."
  tags:
    - infrastructure
    - operations
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: infrastructure
      port: 8080
      tools:
        - name: run-disaster-recovery-test-orchestrator
          description: "Executes disaster recovery tests by failing over systems, validating recovery, and documenting results."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Disaster Recovery Test Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews.

naftiko: "0.5"
info:
  label: "Employee Offboarding Orchestrator"
  description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
  tags:
    - hr
    - identity
    - operations
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: run-employee-offboarding-orchestrator
          description: "Processes employee offboarding by revoking access, returning equipment, and conducting exit interviews."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Employee Offboarding Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI.

naftiko: "0.5"
info:
  label: "Executive Dashboard Refresh Orchestrator"
  description: "Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI."
  tags:
    - analytics
    - power-bi
    - business
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: run-executive-dashboard-refresh-orchestrator
          description: "Refreshes executive dashboards by pulling data from multiple sources, transforming metrics, and updating Power BI."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Executive Dashboard Refresh Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves a file from Google Drive.

naftiko: "0.5"
info:
  label: "Google Drive File Viewer"
  description: "Retrieves a file from Google Drive."
  tags:
    - collaboration
    - google-drive
capability:
  exposes:
    - type: mcp
      namespace: collaboration
      port: 8080
      tools:
        - name: get-google
          description: "Retrieves a file from Google Drive."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The google drive file viewer identifier."
          call: "collaboration-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: collaboration-api
      baseUri: "https://api.zoom.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: google
          path: "/google/drive/file/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-google
              method: GET

Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests.

naftiko: "0.5"
info:
  label: "Infrastructure Capacity Planning Orchestrator"
  description: "Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests."
  tags:
    - infrastructure
    - planning
    - finance
capability:
  exposes:
    - type: mcp
      namespace: infrastructure
      port: 8080
      tools:
        - name: run-infrastructure-capacity-planning-orchestrator
          description: "Plans infrastructure capacity by analyzing utilization trends, modeling growth, and generating procurement requests."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Infrastructure Capacity Planning Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams.

naftiko: "0.5"
info:
  label: "IT Change Management Orchestrator"
  description: "Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams."
  tags:
    - it
    - servicenow
    - operations
capability:
  exposes:
    - type: mcp
      namespace: it
      port: 8080
      tools:
        - name: run-it-change-management-orchestrator
          description: "Manages IT changes by reviewing requests, scheduling implementation windows, and notifying affected teams."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed IT Change Management Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves a Jira ticket by issue key.

naftiko: "0.5"
info:
  label: "Jira Ticket Viewer"
  description: "Retrieves a Jira ticket by issue key."
  tags:
    - engineering
    - jira
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: get-jira
          description: "Retrieves a Jira ticket by issue key."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The jira ticket viewer identifier."
          call: "engineering-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: engineering-api
      baseUri: "https://api.zoom.com/engineering/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: jira
          path: "/jira/ticket/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-jira
              method: GET

Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates.

naftiko: "0.5"
info:
  label: "Knowledge Base Refresh Orchestrator"
  description: "Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates."
  tags:
    - knowledge-management
    - collaboration
    - operations
capability:
  exposes:
    - type: mcp
      namespace: knowledge-management
      port: 8080
      tools:
        - name: run-knowledge-base-refresh-orchestrator
          description: "Refreshes the knowledge base by identifying outdated articles, routing for review, and publishing updates."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Knowledge Base Refresh Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Fetches cloud recording files for a given Zoom user within a date range. Returns recording topic, file type, size, and download URL for compliance and content review.

naftiko: "0.5"
info:
  label: "List User Recordings"
  description: "Fetches cloud recording files for a given Zoom user within a date range. Returns recording topic, file type, size, and download URL for compliance and content review."
  tags:
    - communications
    - recordings
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-recordings
      port: 8080
      tools:
        - name: list-user-recordings
          description: "Retrieve all cloud recordings for a Zoom user between two dates."
          inputParameters:
            - name: user_id
              in: body
              type: string
              description: "The Zoom user ID or email."
            - name: from_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
            - name: to_date
              in: body
              type: string
              description: "End date in YYYY-MM-DD format."
          call: "zoom.get-recordings"
          with:
            user_id: "{{user_id}}"
            from: "{{from_date}}"
            to: "{{to_date}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: recordings
          path: "/users/{{user_id}}/recordings"
          inputParameters:
            - name: user_id
              in: path
            - name: from
              in: query
            - name: to
              in: query
          operations:
            - name: get-recordings
              method: GET

Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports.

naftiko: "0.5"
info:
  label: "Marketing Campaign Performance Orchestrator"
  description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
  tags:
    - marketing
    - analytics
    - finance
capability:
  exposes:
    - type: mcp
      namespace: marketing
      port: 8080
      tools:
        - name: run-marketing-campaign-performance-orchestrator
          description: "Evaluates marketing campaign performance by aggregating metrics across channels and generating ROI reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Marketing Campaign Performance Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves full details for a Zoom meeting by meeting ID, including topic, start time, duration, host, and join URL. Used by scheduling and operations teams to verify meeting configuration.

naftiko: "0.5"
info:
  label: "Meeting Details Lookup"
  description: "Retrieves full details for a Zoom meeting by meeting ID, including topic, start time, duration, host, and join URL. Used by scheduling and operations teams to verify meeting configuration."
  tags:
    - communications
    - meetings
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-meetings
      port: 8080
      tools:
        - name: get-meeting-details
          description: "Look up a Zoom meeting by ID and return its topic, host, start time, duration, timezone, and join URL."
          inputParameters:
            - name: meeting_id
              in: body
              type: string
              description: "The Zoom meeting ID."
          call: "zoom.get-meeting"
          with:
            meeting_id: "{{meeting_id}}"
          outputParameters:
            - name: topic
              type: string
              mapping: "$.topic"
            - name: host_email
              type: string
              mapping: "$.host_email"
            - name: start_time
              type: string
              mapping: "$.start_time"
            - name: duration
              type: number
              mapping: "$.duration"
            - name: join_url
              type: string
              mapping: "$.join_url"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: meetings
          path: "/meetings/{{meeting_id}}"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: get-meeting
              method: GET

After a Zoom meeting ends, compares invited attendees against actual participants. For each no-show, sends a follow-up email via Microsoft Outlook and logs to a Salesforce activity.

naftiko: "0.5"
info:
  label: "Meeting No-Show Follow-Up"
  description: "After a Zoom meeting ends, compares invited attendees against actual participants. For each no-show, sends a follow-up email via Microsoft Outlook and logs to a Salesforce activity."
  tags:
    - communications
    - meetings
    - microsoft-outlook
    - salesforce
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-meeting-followup
      port: 8080
      tools:
        - name: follow-up-no-shows
          description: "Given a Zoom meeting ID and host email, identify attendees who did not join and send follow-up emails plus log in Salesforce."
          inputParameters:
            - name: meeting_id
              in: body
              type: string
              description: "The Zoom meeting UUID."
            - name: host_email
              in: body
              type: string
              description: "The meeting host email."
          steps:
            - name: get-meeting
              type: call
              call: "zoom.get-meeting-details"
              with:
                meeting_id: "{{meeting_id}}"
            - name: get-participants
              type: call
              call: "zoom.get-participant-report"
              with:
                meeting_id: "{{meeting_id}}"
            - name: send-followup
              type: call
              call: "outlook.send-mail"
              with:
                user_upn: "{{host_email}}"
                to: "{{get-meeting.settings.alternative_hosts}}"
                subject: "Missed: {{get-meeting.topic}}"
                body: "You were invited to '{{get-meeting.topic}}' but were not detected among attendees. Would you like to reschedule? Meeting recording may be available."
            - name: log-activity
              type: call
              call: "salesforce.create-task"
              with:
                subject: "Zoom meeting no-show follow-up: {{get-meeting.topic}}"
                description: "Meeting {{meeting_id}} on {{get-meeting.start_time}}. Participants: {{get-participants.total_records}}. Follow-up sent."
                status: "Completed"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: meetings
          path: "/meetings/{{meeting_id}}"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: get-meeting-details
              method: GET
        - name: participant-report
          path: "/report/meetings/{{meeting_id}}/participants"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: get-participant-report
              method: GET
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/users/{{user_upn}}/sendMail"
          inputParameters:
            - name: user_upn
              in: path
          operations:
            - name: send-mail
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://your-instance.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: tasks
          path: "/sobjects/Task"
          operations:
            - name: create-task
              method: POST

Retrieves the participant report for a past Zoom meeting, returning each attendee name, join time, leave time, and duration. Used for attendance tracking and compliance.

naftiko: "0.5"
info:
  label: "Meeting Participant Report"
  description: "Retrieves the participant report for a past Zoom meeting, returning each attendee name, join time, leave time, and duration. Used for attendance tracking and compliance."
  tags:
    - communications
    - meetings
    - reporting
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-reports
      port: 8080
      tools:
        - name: get-meeting-participants
          description: "Fetch the participant report for a completed Zoom meeting by meeting ID."
          inputParameters:
            - name: meeting_id
              in: body
              type: string
              description: "The Zoom meeting UUID or meeting ID."
          call: "zoom.get-participant-report"
          with:
            meeting_id: "{{meeting_id}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: participant-report
          path: "/report/meetings/{{meeting_id}}/participants"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: get-participant-report
              method: GET

Pulls Zoom Dashboard QoS metrics for a meeting and pushes custom metrics to Datadog for monitoring. If latency exceeds threshold, sends a Slack alert.

naftiko: "0.5"
info:
  label: "Meeting Quality Alert to Datadog"
  description: "Pulls Zoom Dashboard QoS metrics for a meeting and pushes custom metrics to Datadog for monitoring. If latency exceeds threshold, sends a Slack alert."
  tags:
    - communications
    - meetings
    - monitoring
    - datadog
    - slack
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-quality-monitoring
      port: 8080
      tools:
        - name: report-meeting-quality
          description: "Given a Zoom meeting UUID and latency threshold, push QoS metrics to Datadog and alert Slack if degraded."
          inputParameters:
            - name: meeting_id
              in: body
              type: string
              description: "The Zoom meeting UUID."
            - name: latency_threshold_ms
              in: body
              type: number
              description: "Latency threshold in milliseconds for alerting."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel for quality alerts."
          steps:
            - name: get-qos
              type: call
              call: "zoom.get-meeting-qos"
              with:
                meeting_id: "{{meeting_id}}"
            - name: push-metrics
              type: call
              call: "datadog.submit-metrics"
              with:
                series:
                  metric: "zoom.meeting.latency"
                  points: "{{get-qos.audio_input.latency}}"
                  tags:
                    - "meeting_id:{{meeting_id}}"
            - name: alert-slack
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Zoom Quality Alert: Meeting {{meeting_id}} audio latency is {{get-qos.audio_input.latency}}ms (threshold: {{latency_threshold_ms}}ms). Jitter: {{get-qos.audio_input.jitter}}ms, Packet Loss: {{get-qos.audio_input.avg_loss}}%"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: meeting-qos
          path: "/metrics/meetings/{{meeting_id}}/participants/qos"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: get-meeting-qos
              method: GET
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: metrics
          path: "/series"
          operations:
            - name: submit-metrics
              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

Pulls Zoom operation log entries for recording access events and forwards them to Splunk for security audit and compliance monitoring.

naftiko: "0.5"
info:
  label: "Meeting Recording Access Audit to Splunk"
  description: "Pulls Zoom operation log entries for recording access events and forwards them to Splunk for security audit and compliance monitoring."
  tags:
    - communications
    - recordings
    - splunk
    - security
    - compliance
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-recording-audit
      port: 8080
      tools:
        - name: audit-recording-access
          description: "Given a date range, pull Zoom recording access logs and forward to Splunk."
          inputParameters:
            - name: from_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
            - name: to_date
              in: body
              type: string
              description: "End date in YYYY-MM-DD format."
          steps:
            - name: get-operation-logs
              type: call
              call: "zoom.get-operation-logs"
              with:
                from: "{{from_date}}"
                to: "{{to_date}}"
                category_type: "recording"
            - name: send-to-splunk
              type: call
              call: "splunk.send-event"
              with:
                index: "zoom_audit"
                sourcetype: "zoom:recording:access"
                event: "{{get-operation-logs.operation_logs}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: operation-logs
          path: "/report/operationlogs"
          inputParameters:
            - name: from
              in: query
            - name: to
              in: query
            - name: category_type
              in: query
          operations:
            - name: get-operation-logs
              method: GET
    - type: http
      namespace: splunk
      baseUri: "https://your-instance.splunkcloud.com:8088"
      authentication:
        type: bearer
        token: "$secrets.splunk_hec_token"
      resources:
        - name: events
          path: "/services/collector/event"
          operations:
            - name: send-event
              method: POST

Retrieves the status and URL of a meeting recording.

naftiko: "0.5"
info:
  label: "Meeting Recording Status"
  description: "Retrieves the status and URL of a meeting recording."
  tags:
    - meetings
    - content-management
capability:
  exposes:
    - type: mcp
      namespace: meetings
      port: 8080
      tools:
        - name: get-meeting
          description: "Retrieves the status and URL of a meeting recording."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The meeting recording status identifier."
          call: "meetings-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: meetings-api
      baseUri: "https://api.zoom.com/meetings/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: meeting
          path: "/meeting/recording/status/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-meeting
              method: GET

After a Zoom meeting recording completes, downloads the recording metadata and uploads a reference document to Google Drive with a link, then notifies the host in Zoom Team Chat.

naftiko: "0.5"
info:
  label: "Meeting Recording to Google Drive Archiver"
  description: "After a Zoom meeting recording completes, downloads the recording metadata and uploads a reference document to Google Drive with a link, then notifies the host in Zoom Team Chat."
  tags:
    - communications
    - recordings
    - google-drive
    - team-chat
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-recording-archive
      port: 8080
      tools:
        - name: archive-recording-to-drive
          description: "Given a Zoom meeting UUID and Google Drive folder ID, fetch recording metadata, create a reference doc in Drive, and notify the meeting host via Team Chat."
          inputParameters:
            - name: meeting_id
              in: body
              type: string
              description: "The Zoom meeting UUID."
            - name: drive_folder_id
              in: body
              type: string
              description: "The Google Drive folder ID for archiving."
          steps:
            - name: get-recordings
              type: call
              call: "zoom.get-meeting-recordings"
              with:
                meeting_id: "{{meeting_id}}"
            - name: upload-doc
              type: call
              call: "gdrive.create-file"
              with:
                folder_id: "{{drive_folder_id}}"
                name: "Zoom Recording - {{get-recordings.topic}} - {{get-recordings.start_time}}"
                content: "Recording download: {{get-recordings.recording_files[0].download_url}}\nDuration: {{get-recordings.duration}} minutes\nHost: {{get-recordings.host_email}}"
            - name: notify-host
              type: call
              call: "zoom.post-chat-message"
              with:
                to_contact: "{{get-recordings.host_email}}"
                message: "Your Zoom recording for '{{get-recordings.topic}}' has been archived to Google Drive: {{upload-doc.webViewLink}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: recordings
          path: "/meetings/{{meeting_id}}/recordings"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: get-meeting-recordings
              method: GET
        - name: chat-messages
          path: "/chat/users/me/messages"
          operations:
            - name: post-chat-message
              method: POST
    - type: http
      namespace: gdrive
      baseUri: "https://www.googleapis.com/upload/drive/v3"
      authentication:
        type: bearer
        token: "$secrets.google_drive_token"
      resources:
        - name: files
          path: "/files"
          inputParameters:
            - name: uploadType
              in: query
              value: "multipart"
          operations:
            - name: create-file
              method: POST

Creates a Zoom meeting for a user, then adds it as a calendar event in Microsoft Outlook with the join URL and dial-in numbers.

naftiko: "0.5"
info:
  label: "Meeting Scheduling via Microsoft Outlook"
  description: "Creates a Zoom meeting for a user, then adds it as a calendar event in Microsoft Outlook with the join URL and dial-in numbers."
  tags:
    - communications
    - meetings
    - microsoft-outlook
    - scheduling
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-outlook-scheduling
      port: 8080
      tools:
        - name: schedule-meeting-with-calendar
          description: "Create a Zoom meeting and synchronize it to a Microsoft Outlook calendar event."
          inputParameters:
            - name: host_email
              in: body
              type: string
              description: "The Zoom host user email."
            - name: topic
              in: body
              type: string
              description: "Meeting topic."
            - name: start_time
              in: body
              type: string
              description: "Start time in ISO 8601 format."
            - name: duration
              in: body
              type: number
              description: "Duration in minutes."
            - name: attendees
              in: body
              type: string
              description: "Comma-separated attendee emails."
          steps:
            - name: create-meeting
              type: call
              call: "zoom.create-meeting"
              with:
                user_id: "{{host_email}}"
                topic: "{{topic}}"
                start_time: "{{start_time}}"
                duration: "{{duration}}"
                type: 2
            - name: create-calendar-event
              type: call
              call: "outlook.create-event"
              with:
                user_upn: "{{host_email}}"
                subject: "{{topic}}"
                start: "{{start_time}}"
                duration_minutes: "{{duration}}"
                attendees: "{{attendees}}"
                body: "Join Zoom Meeting: {{create-meeting.join_url}}\nMeeting ID: {{create-meeting.id}}\nPasscode: {{create-meeting.password}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: meetings
          path: "/users/{{user_id}}/meetings"
          inputParameters:
            - name: user_id
              in: path
          operations:
            - name: create-meeting
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: events
          path: "/users/{{user_upn}}/events"
          inputParameters:
            - name: user_upn
              in: path
          operations:
            - name: create-event
              method: POST

Retrieves the Zoom AI Companion meeting summary, analyzes overall sentiment from the summary text, and posts a sentiment report to a Slack channel for leadership visibility.

naftiko: "0.5"
info:
  label: "Meeting Sentiment Analysis to Slack"
  description: "Retrieves the Zoom AI Companion meeting summary, analyzes overall sentiment from the summary text, and posts a sentiment report to a Slack channel for leadership visibility."
  tags:
    - communications
    - meetings
    - ai-companion
    - slack
    - analytics
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-sentiment
      port: 8080
      tools:
        - name: analyze-meeting-sentiment
          description: "Given a Zoom meeting UUID and Slack channel, retrieve the AI summary and post a sentiment analysis to Slack."
          inputParameters:
            - name: meeting_id
              in: body
              type: string
              description: "The Zoom meeting UUID."
            - name: slack_channel
              in: body
              type: string
              description: "The Slack channel for sentiment reports."
          steps:
            - name: get-summary
              type: call
              call: "zoom.get-ai-summary"
              with:
                meeting_id: "{{meeting_id}}"
            - name: get-meeting
              type: call
              call: "zoom.get-meeting-info"
              with:
                meeting_id: "{{meeting_id}}"
            - name: post-sentiment
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Meeting Sentiment Report: '{{get-meeting.topic}}'\n\nSummary: {{get-summary.summary_text}}\nAction Items: {{get-summary.action_items}}\nParticipants: {{get-meeting.participants_count}}\nDuration: {{get-meeting.duration}} minutes"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: meeting-summaries
          path: "/meetings/{{meeting_id}}/meeting_summary"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: get-ai-summary
              method: GET
        - name: meetings
          path: "/meetings/{{meeting_id}}"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: get-meeting-info
              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

Downloads the audio transcript for a recorded Zoom meeting, returning full text with speaker labels and timestamps.

naftiko: "0.5"
info:
  label: "Meeting Transcript Retrieval"
  description: "Downloads the audio transcript for a recorded Zoom meeting, returning full text with speaker labels and timestamps."
  tags:
    - communications
    - recordings
    - ai-companion
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-recordings
      port: 8080
      tools:
        - name: get-meeting-transcript
          description: "Fetch the transcript for a Zoom cloud recording by meeting UUID."
          inputParameters:
            - name: meeting_id
              in: body
              type: string
              description: "The Zoom meeting UUID."
          call: "zoom.get-transcript"
          with:
            meeting_id: "{{meeting_id}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: transcripts
          path: "/meetings/{{meeting_id}}/recordings"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: get-transcript
              method: GET

# --- Orchestrated Capabilities (multi-step workflows) ---

Sends a message to a Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Microsoft Teams Message Sender"
  description: "Sends a message to a Microsoft Teams channel."
  tags:
    - communications
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: communications
      port: 8080
      tools:
        - name: get-microsoft
          description: "Sends a message to a Microsoft Teams channel."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The microsoft teams message sender identifier."
          call: "communications-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: communications-api
      baseUri: "https://api.zoom.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: microsoft
          path: "/microsoft/teams/message/sender/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-microsoft
              method: GET

On new hire detection in Workday, provisions a Zoom user account with the correct license type and adds the user to the appropriate Zoom Team Chat channels based on department.

naftiko: "0.5"
info:
  label: "New Employee Zoom Provisioning"
  description: "On new hire detection in Workday, provisions a Zoom user account with the correct license type and adds the user to the appropriate Zoom Team Chat channels based on department."
  tags:
    - communications
    - administration
    - workday
    - team-chat
    - onboarding
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-user-provisioning
      port: 8080
      tools:
        - name: provision-new-zoom-user
          description: "Given a Workday employee ID and department, create a Zoom account and add to department chat channels."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "The Workday worker ID for the new hire."
            - name: department
              in: body
              type: string
              description: "The department name for channel assignment."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{workday_employee_id}}"
            - name: create-zoom-user
              type: call
              call: "zoom.create-user"
              with:
                email: "{{get-employee.work_email}}"
                first_name: "{{get-employee.first_name}}"
                last_name: "{{get-employee.last_name}}"
                type: 2
            - name: add-to-channel
              type: call
              call: "zoom.add-channel-member"
              with:
                channel_name: "{{department}}-general"
                member_email: "{{get-employee.work_email}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: users
          path: "/users"
          operations:
            - name: create-user
              method: POST
        - name: chat-channels
          path: "/chat/channels/{{channel_name}}/members"
          inputParameters:
            - name: channel_name
              in: path
          operations:
            - name: add-channel-member
              method: POST

Fetches the call log history for a Zoom Phone user within a date range, including caller, callee, direction, duration, and result.

naftiko: "0.5"
info:
  label: "Phone Call Log Retrieval"
  description: "Fetches the call log history for a Zoom Phone user within a date range, including caller, callee, direction, duration, and result."
  tags:
    - communications
    - zoom-phone
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-phone
      port: 8080
      tools:
        - name: get-call-logs
          description: "Retrieve Zoom Phone call log entries for a user within a date range."
          inputParameters:
            - name: user_id
              in: body
              type: string
              description: "The Zoom user ID or email."
            - name: from_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
            - name: to_date
              in: body
              type: string
              description: "End date in YYYY-MM-DD format."
          call: "zoom.list-call-logs"
          with:
            user_id: "{{user_id}}"
            from: "{{from_date}}"
            to: "{{to_date}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: call-logs
          path: "/phone/users/{{user_id}}/call_logs"
          inputParameters:
            - name: user_id
              in: path
            - name: from
              in: query
            - name: to
              in: query
          operations:
            - name: list-call-logs
              method: GET

Retrieves call queue status for the phone system.

naftiko: "0.5"
info:
  label: "Phone System Call Queue"
  description: "Retrieves call queue status for the phone system."
  tags:
    - phone
    - operations
capability:
  exposes:
    - type: mcp
      namespace: phone
      port: 8080
      tools:
        - name: get-phone
          description: "Retrieves call queue status for the phone system."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The phone system call queue identifier."
          call: "phone-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: phone-api
      baseUri: "https://api.zoom.com/phone/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: phone
          path: "/phone/system/call/queue/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-phone
              method: GET

Retrieves Zoom Phone voicemail recordings, fetches the AI transcription, and forwards the transcript as an email via Microsoft Outlook to the user.

naftiko: "0.5"
info:
  label: "Phone Voicemail Transcription to Email"
  description: "Retrieves Zoom Phone voicemail recordings, fetches the AI transcription, and forwards the transcript as an email via Microsoft Outlook to the user."
  tags:
    - communications
    - zoom-phone
    - ai-companion
    - microsoft-outlook
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-phone-voicemail
      port: 8080
      tools:
        - name: forward-voicemail-transcript
          description: "Given a Zoom Phone user and voicemail ID, transcribe and email the voicemail content via Outlook."
          inputParameters:
            - name: user_id
              in: body
              type: string
              description: "The Zoom user ID or email."
            - name: voicemail_id
              in: body
              type: string
              description: "The voicemail message ID."
          steps:
            - name: get-voicemail
              type: call
              call: "zoom.get-voicemail"
              with:
                user_id: "{{user_id}}"
                voicemail_id: "{{voicemail_id}}"
            - name: send-email
              type: call
              call: "outlook.send-mail"
              with:
                user_upn: "{{user_id}}"
                to: "{{user_id}}"
                subject: "Voicemail from {{get-voicemail.caller_number}} at {{get-voicemail.date_time}}"
                body: "Transcription:\n{{get-voicemail.transcript}}\n\nCaller: {{get-voicemail.caller_name}} ({{get-voicemail.caller_number}})\nDuration: {{get-voicemail.duration}} seconds"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: voicemails
          path: "/phone/users/{{user_id}}/voice_mails/{{voicemail_id}}"
          inputParameters:
            - name: user_id
              in: path
            - name: voicemail_id
              in: path
          operations:
            - name: get-voicemail
              method: GET
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/users/{{user_upn}}/sendMail"
          inputParameters:
            - name: user_upn
              in: path
          operations:
            - name: send-mail
              method: POST

After a Zoom meeting ends, retrieves the AI Companion summary, extracts action items, creates Jira tickets for each, and posts a recap to a Slack channel.

naftiko: "0.5"
info:
  label: "Post-Meeting Action Item Dispatcher"
  description: "After a Zoom meeting ends, retrieves the AI Companion summary, extracts action items, creates Jira tickets for each, and posts a recap to a Slack channel."
  tags:
    - communications
    - meetings
    - ai-companion
    - jira
    - slack
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-post-meeting
      port: 8080
      tools:
        - name: dispatch-action-items
          description: "Given a completed Zoom meeting ID and target Jira project key and Slack channel, extract AI Companion action items, create Jira issues, and post a summary to Slack."
          inputParameters:
            - name: meeting_id
              in: body
              type: string
              description: "The Zoom meeting UUID."
            - name: jira_project_key
              in: body
              type: string
              description: "The Jira project key for new tickets."
            - name: slack_channel
              in: body
              type: string
              description: "The Slack channel ID for the recap."
          steps:
            - name: get-summary
              type: call
              call: "zoom.get-ai-summary"
              with:
                meeting_id: "{{meeting_id}}"
            - name: create-jira-tickets
              type: call
              call: "jira.create-issue"
              with:
                project_key: "{{jira_project_key}}"
                summary: "Action item from Zoom meeting {{meeting_id}}"
                description: "{{get-summary.action_items}}"
                issue_type: "Task"
            - name: post-slack-recap
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Meeting Recap for {{meeting_id}}:\n\nSummary: {{get-summary.summary_text}}\n\nAction items tracked in Jira: {{create-jira-tickets.key}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: meeting-summaries
          path: "/meetings/{{meeting_id}}/meeting_summary"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: get-ai-summary
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://your-domain.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_api_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - 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 Power BI dataset refresh.

naftiko: "0.5"
info:
  label: "Power BI Dashboard Refresher"
  description: "Triggers a Power BI dataset refresh."
  tags:
    - analytics
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: get-power
          description: "Triggers a Power BI dataset refresh."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The power bi dashboard refresher identifier."
          call: "analytics-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: analytics-api
      baseUri: "https://api.zoom.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: power
          path: "/power/bi/dashboard/refresher/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-power
              method: GET

Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports.

naftiko: "0.5"
info:
  label: "Procurement Spend Analysis Orchestrator"
  description: "Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports."
  tags:
    - procurement
    - analytics
    - finance
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: run-procurement-spend-analysis-orchestrator
          description: "Analyzes procurement spend by categorizing purchases, identifying savings opportunities, and generating reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Procurement Spend Analysis Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders.

naftiko: "0.5"
info:
  label: "Quarterly Business Review Orchestrator"
  description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
  tags:
    - analytics
    - business
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: run-quarterly-business-review-orchestrator
          description: "Generates quarterly business reviews by aggregating KPIs from multiple systems, creating presentations, and distributing to stakeholders."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Quarterly Business Review Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves Zoom cloud recordings for a user, checks file age against a retention policy, and deletes recordings older than the threshold. Logs each deletion to a Confluence audit page.

naftiko: "0.5"
info:
  label: "Recording Compliance Checker"
  description: "Retrieves Zoom cloud recordings for a user, checks file age against a retention policy, and deletes recordings older than the threshold. Logs each deletion to a Confluence audit page."
  tags:
    - communications
    - recordings
    - compliance
    - confluence
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-recording-compliance
      port: 8080
      tools:
        - name: enforce-recording-retention
          description: "Given a Zoom user and retention period in days, list recordings, identify expired ones, delete them, and log to Confluence."
          inputParameters:
            - name: user_id
              in: body
              type: string
              description: "The Zoom user ID or email."
            - name: retention_days
              in: body
              type: number
              description: "Maximum age in days for recordings."
            - name: confluence_page_id
              in: body
              type: string
              description: "Confluence page ID for the audit log."
          steps:
            - name: list-recordings
              type: call
              call: "zoom.list-recordings"
              with:
                user_id: "{{user_id}}"
            - name: delete-expired
              type: call
              call: "zoom.delete-recording"
              with:
                meeting_id: "{{list-recordings.meetings[0].uuid}}"
            - name: log-to-confluence
              type: call
              call: "confluence.append-page"
              with:
                page_id: "{{confluence_page_id}}"
                content: "Recording deleted for user {{user_id}}: meeting {{list-recordings.meetings[0].topic}} from {{list-recordings.meetings[0].start_time}}. Retention policy: {{retention_days}} days."
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: recordings
          path: "/users/{{user_id}}/recordings"
          inputParameters:
            - name: user_id
              in: path
          operations:
            - name: list-recordings
              method: GET
        - name: recording-files
          path: "/meetings/{{meeting_id}}/recordings"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: delete-recording
              method: DELETE
    - type: http
      namespace: confluence
      baseUri: "https://your-domain.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: pages
          path: "/content/{{page_id}}"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: append-page
              method: PUT

Lists all recurring Zoom meetings for a user, pulls participant reports for each occurrence, and writes utilization data to a Google Sheet for capacity planning.

naftiko: "0.5"
info:
  label: "Recurring Meeting Utilization Audit"
  description: "Lists all recurring Zoom meetings for a user, pulls participant reports for each occurrence, and writes utilization data to a Google Sheet for capacity planning."
  tags:
    - communications
    - meetings
    - reporting
    - google-sheets
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-meeting-audit
      port: 8080
      tools:
        - name: audit-recurring-meetings
          description: "Given a Zoom user and Google Sheet ID, analyze recurring meeting utilization and write results to the spreadsheet."
          inputParameters:
            - name: user_id
              in: body
              type: string
              description: "The Zoom user ID or email."
            - name: spreadsheet_id
              in: body
              type: string
              description: "The Google Sheets spreadsheet ID."
          steps:
            - name: list-meetings
              type: call
              call: "zoom.list-user-meetings"
              with:
                user_id: "{{user_id}}"
                type: "scheduled"
            - name: get-report
              type: call
              call: "zoom.get-meeting-report"
              with:
                meeting_id: "{{list-meetings.meetings[0].id}}"
            - name: write-sheet
              type: call
              call: "gsheets.append-rows"
              with:
                spreadsheet_id: "{{spreadsheet_id}}"
                range: "MeetingAudit!A1"
                values:
                  - "{{list-meetings.meetings[0].topic}}"
                  - "{{list-meetings.meetings[0].start_time}}"
                  - "{{get-report.total_records}}"
                  - "{{list-meetings.meetings[0].duration}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: user-meetings
          path: "/users/{{user_id}}/meetings"
          inputParameters:
            - name: user_id
              in: path
            - name: type
              in: query
          operations:
            - name: list-user-meetings
              method: GET
        - name: meeting-report
          path: "/report/meetings/{{meeting_id}}/participants"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: get-meeting-report
              method: GET
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/{{spreadsheet_id}}/values/{{range}}:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: append-rows
              method: POST

Checks the health status of a room connector.

naftiko: "0.5"
info:
  label: "Room Connector Health"
  description: "Checks the health status of a room connector."
  tags:
    - infrastructure
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: infrastructure
      port: 8080
      tools:
        - name: get-room
          description: "Checks the health status of a room connector."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The room connector health identifier."
          call: "infrastructure-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: infrastructure-api
      baseUri: "https://api.zoom.com/infrastructure/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: room
          path: "/room/connector/health/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-room
              method: GET

Retrieves a Salesforce account by account ID.

naftiko: "0.5"
info:
  label: "Salesforce Account Viewer"
  description: "Retrieves a Salesforce account by account ID."
  tags:
    - sales
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: sales
      port: 8080
      tools:
        - name: get-salesforce
          description: "Retrieves a Salesforce account by account ID."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The salesforce account viewer identifier."
          call: "sales-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: sales-api
      baseUri: "https://api.zoom.com/sales/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: salesforce
          path: "/salesforce/account/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-salesforce
              method: GET

Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation.

naftiko: "0.5"
info:
  label: "Security Audit Orchestrator"
  description: "Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation."
  tags:
    - security
    - servicenow
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: security
      port: 8080
      tools:
        - name: run-security-audit-orchestrator
          description: "Conducts security audits by scanning systems, documenting findings in ServiceNow, and tracking remediation."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Security Audit Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Creates a new incident in ServiceNow.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Creator"
  description: "Creates a new incident in ServiceNow."
  tags:
    - it
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: it
      port: 8080
      tools:
        - name: get-servicenow
          description: "Creates a new incident in ServiceNow."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The servicenow incident creator identifier."
          call: "it-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: it-api
      baseUri: "https://api.zoom.com/it/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: servicenow
          path: "/servicenow/incident/creator/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-servicenow
              method: GET

Sends a notification to a Slack channel.

naftiko: "0.5"
info:
  label: "Slack Notification Publisher"
  description: "Sends a notification to a Slack channel."
  tags:
    - communications
    - slack
capability:
  exposes:
    - type: mcp
      namespace: communications
      port: 8080
      tools:
        - name: get-slack
          description: "Sends a notification to a Slack channel."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The slack notification publisher identifier."
          call: "communications-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: communications-api
      baseUri: "https://api.zoom.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: slack
          path: "/slack/notification/publisher/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-slack
              method: GET

Runs an analytics query against the Snowflake data warehouse.

naftiko: "0.5"
info:
  label: "Snowflake Analytics Query"
  description: "Runs an analytics query against the Snowflake data warehouse."
  tags:
    - analytics
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: analytics
      port: 8080
      tools:
        - name: get-snowflake
          description: "Runs an analytics query against the Snowflake data warehouse."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The snowflake analytics query identifier."
          call: "analytics-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: analytics-api
      baseUri: "https://api.zoom.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: snowflake
          path: "/snowflake/analytics/query/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-snowflake
              method: GET

Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports.

naftiko: "0.5"
info:
  label: "Sustainability Metrics Collection Orchestrator"
  description: "Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports."
  tags:
    - sustainability
    - analytics
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: sustainability
      port: 8080
      tools:
        - name: run-sustainability-metrics-collection-orchestrator
          description: "Collects sustainability metrics by gathering environmental data, calculating carbon footprint, and publishing ESG reports."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Sustainability Metrics Collection Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves statistics for a team chat channel.

naftiko: "0.5"
info:
  label: "Team Chat Channel Stats"
  description: "Retrieves statistics for a team chat channel."
  tags:
    - collaboration
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: collaboration
      port: 8080
      tools:
        - name: get-team
          description: "Retrieves statistics for a team chat channel."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The team chat channel stats identifier."
          call: "collaboration-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: collaboration-api
      baseUri: "https://api.zoom.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: team
          path: "/team/chat/channel/stats/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-team
              method: GET

Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans.

naftiko: "0.5"
info:
  label: "Third Party Risk Assessment Orchestrator"
  description: "Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans."
  tags:
    - risk
    - procurement
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: risk
      port: 8080
      tools:
        - name: run-third-party-risk-assessment-orchestrator
          description: "Assesses third-party risks by collecting vendor questionnaires, scoring responses, and tracking remediation plans."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Third Party Risk Assessment Orchestrator for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves a Zoom user profile by user ID or email, returning display name, email, role, plan type, and account status.

naftiko: "0.5"
info:
  label: "User Account Profile"
  description: "Retrieves a Zoom user profile by user ID or email, returning display name, email, role, plan type, and account status."
  tags:
    - communications
    - administration
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-admin
      port: 8080
      tools:
        - name: get-user-profile
          description: "Look up a Zoom user profile by user ID or email."
          inputParameters:
            - name: user_id
              in: body
              type: string
              description: "The Zoom user ID or email address."
          call: "zoom.get-user"
          with:
            user_id: "{{user_id}}"
          outputParameters:
            - name: display_name
              type: string
              mapping: "$.display_name"
            - name: email
              type: string
              mapping: "$.email"
            - name: role_name
              type: string
              mapping: "$.role_name"
            - name: plan_type
              type: number
              mapping: "$.type"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: users
          path: "/users/{{user_id}}"
          inputParameters:
            - name: user_id
              in: path
          operations:
            - name: get-user
              method: GET

Retrieves Zoom Phone settings for a specific user, including calling plan, extension number, and voicemail status.

naftiko: "0.5"
info:
  label: "User Phone Settings"
  description: "Retrieves Zoom Phone settings for a specific user, including calling plan, extension number, and voicemail status."
  tags:
    - communications
    - zoom-phone
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-phone
      port: 8080
      tools:
        - name: get-user-phone-settings
          description: "Look up Zoom Phone configuration for a user by user ID."
          inputParameters:
            - name: user_id
              in: body
              type: string
              description: "The Zoom user ID or email."
          call: "zoom.get-phone-settings"
          with:
            user_id: "{{user_id}}"
          outputParameters:
            - name: extension_number
              type: string
              mapping: "$.extension.extension_number"
            - name: calling_plan
              type: string
              mapping: "$.calling_plans[0].name"
            - name: voicemail_enabled
              type: boolean
              mapping: "$.voicemail.status"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: phone-user
          path: "/phone/users/{{user_id}}/settings"
          inputParameters:
            - name: user_id
              in: path
          operations:
            - name: get-phone-settings
              method: GET

Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign.

naftiko: "0.5"
info:
  label: "Vendor Contract Renewal Pipeline"
  description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
  tags:
    - procurement
    - legal
    - docusign
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: run-vendor-contract-renewal-pipeline
          description: "Manages vendor contract renewals by reviewing terms, routing for legal approval, and executing via DocuSign."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Vendor Contract Renewal Pipeline for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Orchestrates video conferencing workflow 1 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Video Conferencing Workflow 1"
  description: "Orchestrates video conferencing workflow 1 by coordinating across systems, validating data, and sending notifications."
  tags:
    - video
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: video
      port: 8080
      tools:
        - name: run-video-conferencing-workflow-001
          description: "Orchestrates video conferencing workflow 1 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Video Conferencing Workflow 1 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Orchestrates video conferencing workflow 2 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Video Conferencing Workflow 2"
  description: "Orchestrates video conferencing workflow 2 by coordinating across systems, validating data, and sending notifications."
  tags:
    - video
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: video
      port: 8080
      tools:
        - name: run-video-conferencing-workflow-002
          description: "Orchestrates video conferencing workflow 2 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Video Conferencing Workflow 2 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves video conferencing operational data for workflow 3.

naftiko: "0.5"
info:
  label: "Video Conferencing Data Query 3"
  description: "Retrieves video conferencing operational data for workflow 3."
  tags:
    - video
    - operations
capability:
  exposes:
    - type: mcp
      namespace: video
      port: 8080
      tools:
        - name: get-data-3
          description: "Query video conferencing data for workflow 3."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "video-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: video-api
      baseUri: "https://api.zoom.com/video-conferencing/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-3
              method: GET

Orchestrates video conferencing workflow 4 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Video Conferencing Workflow 4"
  description: "Orchestrates video conferencing workflow 4 by coordinating across systems, validating data, and sending notifications."
  tags:
    - video
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: video
      port: 8080
      tools:
        - name: run-video-conferencing-workflow-004
          description: "Orchestrates video conferencing workflow 4 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Video Conferencing Workflow 4 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Orchestrates video conferencing workflow 5 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Video Conferencing Workflow 5"
  description: "Orchestrates video conferencing workflow 5 by coordinating across systems, validating data, and sending notifications."
  tags:
    - video
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: video
      port: 8080
      tools:
        - name: run-video-conferencing-workflow-005
          description: "Orchestrates video conferencing workflow 5 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Video Conferencing Workflow 5 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves video conferencing operational data for workflow 6.

naftiko: "0.5"
info:
  label: "Video Conferencing Data Query 6"
  description: "Retrieves video conferencing operational data for workflow 6."
  tags:
    - video
    - operations
capability:
  exposes:
    - type: mcp
      namespace: video
      port: 8080
      tools:
        - name: get-data-6
          description: "Query video conferencing data for workflow 6."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "video-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: video-api
      baseUri: "https://api.zoom.com/video-conferencing/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-6
              method: GET

Orchestrates video conferencing workflow 7 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Video Conferencing Workflow 7"
  description: "Orchestrates video conferencing workflow 7 by coordinating across systems, validating data, and sending notifications."
  tags:
    - video
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: video
      port: 8080
      tools:
        - name: run-video-conferencing-workflow-007
          description: "Orchestrates video conferencing workflow 7 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Video Conferencing Workflow 7 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Orchestrates video conferencing workflow 8 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Video Conferencing Workflow 8"
  description: "Orchestrates video conferencing workflow 8 by coordinating across systems, validating data, and sending notifications."
  tags:
    - video
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: video
      port: 8080
      tools:
        - name: run-video-conferencing-workflow-008
          description: "Orchestrates video conferencing workflow 8 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Video Conferencing Workflow 8 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves video conferencing operational data for workflow 9.

naftiko: "0.5"
info:
  label: "Video Conferencing Data Query 9"
  description: "Retrieves video conferencing operational data for workflow 9."
  tags:
    - video
    - operations
capability:
  exposes:
    - type: mcp
      namespace: video
      port: 8080
      tools:
        - name: get-data-9
          description: "Query video conferencing data for workflow 9."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "video-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: video-api
      baseUri: "https://api.zoom.com/video-conferencing/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-9
              method: GET

Orchestrates video conferencing workflow 10 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Video Conferencing Workflow 10"
  description: "Orchestrates video conferencing workflow 10 by coordinating across systems, validating data, and sending notifications."
  tags:
    - video
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: video
      port: 8080
      tools:
        - name: run-video-conferencing-workflow-010
          description: "Orchestrates video conferencing workflow 10 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Video Conferencing Workflow 10 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Orchestrates video conferencing workflow 11 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Video Conferencing Workflow 11"
  description: "Orchestrates video conferencing workflow 11 by coordinating across systems, validating data, and sending notifications."
  tags:
    - video
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: video
      port: 8080
      tools:
        - name: run-video-conferencing-workflow-011
          description: "Orchestrates video conferencing workflow 11 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Video Conferencing Workflow 11 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves video conferencing operational data for workflow 12.

naftiko: "0.5"
info:
  label: "Video Conferencing Data Query 12"
  description: "Retrieves video conferencing operational data for workflow 12."
  tags:
    - video
    - operations
capability:
  exposes:
    - type: mcp
      namespace: video
      port: 8080
      tools:
        - name: get-data-12
          description: "Query video conferencing data for workflow 12."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "video-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: video-api
      baseUri: "https://api.zoom.com/video-conferencing/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-12
              method: GET

Orchestrates video conferencing workflow 13 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Video Conferencing Workflow 13"
  description: "Orchestrates video conferencing workflow 13 by coordinating across systems, validating data, and sending notifications."
  tags:
    - video
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: video
      port: 8080
      tools:
        - name: run-video-conferencing-workflow-013
          description: "Orchestrates video conferencing workflow 13 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Video Conferencing Workflow 13 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Orchestrates video conferencing workflow 14 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Video Conferencing Workflow 14"
  description: "Orchestrates video conferencing workflow 14 by coordinating across systems, validating data, and sending notifications."
  tags:
    - video
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: video
      port: 8080
      tools:
        - name: run-video-conferencing-workflow-014
          description: "Orchestrates video conferencing workflow 14 by coordinating across systems, validating data, and sending notifications."
          inputParameters:
            - name: request_id
              in: body
              type: string
              description: "The unique request identifier."
          steps:
            - name: step-1
              type: call
              call: "primary-api.initiate"
              with:
                request_id: "{{request_id}}"
            - name: step-2
              type: call
              call: "secondary-api.process"
              with:
                request_id: "{{request_id}}"
                data: "{{step-1.result}}"
            - name: notify
              type: call
              call: "notification-api.send"
              with:
                channel: "operations"
                message: "Completed Video Conferencing Workflow 14 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoom.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoom.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: secondary
          path: "/execute"
          operations:
            - name: process
              method: POST
    - type: http
      namespace: notification-api
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/teams/notifications"
          operations:
            - name: send
              method: POST

Retrieves video conferencing operational data for workflow 15.

naftiko: "0.5"
info:
  label: "Video Conferencing Data Query 15"
  description: "Retrieves video conferencing operational data for workflow 15."
  tags:
    - video
    - operations
capability:
  exposes:
    - type: mcp
      namespace: video
      port: 8080
      tools:
        - name: get-data-15
          description: "Query video conferencing data for workflow 15."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The entity identifier."
          call: "video-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: video-api
      baseUri: "https://api.zoom.com/video-conferencing/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: data
          path: "/data/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-data-15
              method: GET

After a Zoom webinar, identifies registrants who did not attend, sends them the recording link via Zoom Team Chat, and updates their engagement status in HubSpot.

naftiko: "0.5"
info:
  label: "Webinar Absentee Re-Engagement"
  description: "After a Zoom webinar, identifies registrants who did not attend, sends them the recording link via Zoom Team Chat, and updates their engagement status in HubSpot."
  tags:
    - communications
    - webinars
    - team-chat
    - hubspot
    - marketing
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-webinar-reengagement
      port: 8080
      tools:
        - name: reengage-webinar-absentees
          description: "Given a Zoom webinar ID, identify no-shows, send them the recording, and update HubSpot."
          inputParameters:
            - name: webinar_id
              in: body
              type: string
              description: "The Zoom webinar ID."
          steps:
            - name: get-registrants
              type: call
              call: "zoom.list-registrants"
              with:
                webinar_id: "{{webinar_id}}"
                status: "approved"
            - name: get-absentees
              type: call
              call: "zoom.list-absentees"
              with:
                webinar_id: "{{webinar_id}}"
            - name: get-recording
              type: call
              call: "zoom.get-webinar-recordings"
              with:
                webinar_id: "{{webinar_id}}"
            - name: send-recording-link
              type: call
              call: "zoom.post-chat-message"
              with:
                to_contact: "{{get-absentees.registrants[0].email}}"
                message: "We missed you at our webinar! Watch the recording here: {{get-recording.share_url}}"
            - name: update-hubspot
              type: call
              call: "hubspot.update-contact"
              with:
                email: "{{get-absentees.registrants[0].email}}"
                properties:
                  webinar_status: "no_show"
                  webinar_recording_sent: "true"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: registrants
          path: "/webinars/{{webinar_id}}/registrants"
          inputParameters:
            - name: webinar_id
              in: path
            - name: status
              in: query
          operations:
            - name: list-registrants
              method: GET
        - name: absentees
          path: "/past_webinars/{{webinar_id}}/absentees"
          inputParameters:
            - name: webinar_id
              in: path
          operations:
            - name: list-absentees
              method: GET
        - name: webinar-recordings
          path: "/meetings/{{webinar_id}}/recordings"
          inputParameters:
            - name: webinar_id
              in: path
          operations:
            - name: get-webinar-recordings
              method: GET
        - name: chat-messages
          path: "/chat/users/me/messages"
          operations:
            - name: post-chat-message
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/crm/v3/objects/contacts"
          operations:
            - name: update-contact
              method: PATCH

After a Zoom webinar ends, retrieves the attendee list, updates each contact's engagement in HubSpot, and sends a follow-up email via HubSpot transactional email.

naftiko: "0.5"
info:
  label: "Webinar Attendance Report to HubSpot"
  description: "After a Zoom webinar ends, retrieves the attendee list, updates each contact's engagement in HubSpot, and sends a follow-up email via HubSpot transactional email."
  tags:
    - communications
    - webinars
    - hubspot
    - marketing
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-webinar-marketing
      port: 8080
      tools:
        - name: sync-webinar-attendance
          description: "Given a Zoom webinar ID and HubSpot list ID, fetch attendees, update HubSpot contacts, and trigger follow-up emails."
          inputParameters:
            - name: webinar_id
              in: body
              type: string
              description: "The Zoom webinar ID."
            - name: hubspot_list_id
              in: body
              type: string
              description: "The HubSpot contact list ID for attendees."
          steps:
            - name: get-attendees
              type: call
              call: "zoom.list-webinar-attendees"
              with:
                webinar_id: "{{webinar_id}}"
            - name: get-webinar-details
              type: call
              call: "zoom.get-webinar-info"
              with:
                webinar_id: "{{webinar_id}}"
            - name: update-hubspot
              type: call
              call: "hubspot.update-contact"
              with:
                email: "{{get-attendees.participants[0].user_email}}"
                properties:
                  last_webinar_attended: "{{get-webinar-details.topic}}"
                  webinar_attendance_date: "{{get-webinar-details.start_time}}"
            - name: send-followup
              type: call
              call: "hubspot.send-transactional-email"
              with:
                email_id: "webinar_followup_template"
                to: "{{get-attendees.participants[0].user_email}}"
                custom_properties:
                  webinar_name: "{{get-webinar-details.topic}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: webinar-attendees
          path: "/report/webinars/{{webinar_id}}/participants"
          inputParameters:
            - name: webinar_id
              in: path
          operations:
            - name: list-webinar-attendees
              method: GET
        - name: webinars
          path: "/webinars/{{webinar_id}}"
          inputParameters:
            - name: webinar_id
              in: path
          operations:
            - name: get-webinar-info
              method: GET
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/crm/v3/objects/contacts"
          operations:
            - name: update-contact
              method: PATCH
        - name: transactional-email
          path: "/marketing/v3/transactional/single-email/send"
          operations:
            - name: send-transactional-email
              method: POST

Retrieves engagement metrics for a webinar.

naftiko: "0.5"
info:
  label: "Webinar Engagement Metrics"
  description: "Retrieves engagement metrics for a webinar."
  tags:
    - webinars
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: webinars
      port: 8080
      tools:
        - name: get-webinar
          description: "Retrieves engagement metrics for a webinar."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The webinar engagement metrics identifier."
          call: "webinars-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: webinars-api
      baseUri: "https://api.zoom.com/webinars/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: webinar
          path: "/webinar/engagement/metrics/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-webinar
              method: GET

Lists all registered panelists for a Zoom webinar, returning name, email, and join URL for each.

naftiko: "0.5"
info:
  label: "Webinar Panelist Lookup"
  description: "Lists all registered panelists for a Zoom webinar, returning name, email, and join URL for each."
  tags:
    - communications
    - webinars
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-webinars
      port: 8080
      tools:
        - name: list-webinar-panelists
          description: "Get all panelists for a Zoom webinar by webinar ID."
          inputParameters:
            - name: webinar_id
              in: body
              type: string
              description: "The Zoom webinar ID."
          call: "zoom.get-panelists"
          with:
            webinar_id: "{{webinar_id}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: panelists
          path: "/webinars/{{webinar_id}}/panelists"
          inputParameters:
            - name: webinar_id
              in: path
          operations:
            - name: get-panelists
              method: GET

After a Zoom webinar ends, retrieves poll results and posts a formatted summary to a Slack channel for the marketing team to review.

naftiko: "0.5"
info:
  label: "Webinar Poll Results to Slack"
  description: "After a Zoom webinar ends, retrieves poll results and posts a formatted summary to a Slack channel for the marketing team to review."
  tags:
    - communications
    - webinars
    - slack
    - marketing
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-webinar-polls
      port: 8080
      tools:
        - name: share-poll-results
          description: "Given a Zoom webinar ID and Slack channel, fetch poll results and post a summary."
          inputParameters:
            - name: webinar_id
              in: body
              type: string
              description: "The Zoom webinar ID."
            - name: slack_channel
              in: body
              type: string
              description: "The Slack channel ID for results."
          steps:
            - name: get-polls
              type: call
              call: "zoom.get-webinar-polls"
              with:
                webinar_id: "{{webinar_id}}"
            - name: get-webinar
              type: call
              call: "zoom.get-webinar-details"
              with:
                webinar_id: "{{webinar_id}}"
            - name: post-results
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Poll Results for '{{get-webinar.topic}}':\n\nTotal Responses: {{get-polls.total_records}}\nQuestions: {{get-polls.questions[0].name}}\nTop Answer: {{get-polls.questions[0].question_details[0].answer}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: webinar-polls
          path: "/report/webinars/{{webinar_id}}/polls"
          inputParameters:
            - name: webinar_id
              in: path
          operations:
            - name: get-webinar-polls
              method: GET
        - name: webinars
          path: "/webinars/{{webinar_id}}"
          inputParameters:
            - name: webinar_id
              in: path
          operations:
            - name: get-webinar-details
              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

Looks up the total number of registrants for a Zoom webinar by webinar ID. Used by marketing teams to track registration performance.

naftiko: "0.5"
info:
  label: "Webinar Registrant Count"
  description: "Looks up the total number of registrants for a Zoom webinar by webinar ID. Used by marketing teams to track registration performance."
  tags:
    - communications
    - webinars
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-webinars
      port: 8080
      tools:
        - name: get-webinar-registrant-count
          description: "Return the total registrant count for a Zoom webinar."
          inputParameters:
            - name: webinar_id
              in: body
              type: string
              description: "The Zoom webinar ID."
          call: "zoom.list-webinar-registrants"
          with:
            webinar_id: "{{webinar_id}}"
          outputParameters:
            - name: total_records
              type: number
              mapping: "$.total_records"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: webinar-registrants
          path: "/webinars/{{webinar_id}}/registrants"
          inputParameters:
            - name: webinar_id
              in: path
          operations:
            - name: list-webinar-registrants
              method: GET

When a new registrant signs up for a Zoom webinar, creates or updates a lead in Salesforce and sends a confirmation message to the registrant via Zoom Team Chat.

naftiko: "0.5"
info:
  label: "Webinar Registration to CRM Sync"
  description: "When a new registrant signs up for a Zoom webinar, creates or updates a lead in Salesforce and sends a confirmation message to the registrant via Zoom Team Chat."
  tags:
    - communications
    - webinars
    - salesforce
    - team-chat
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-webinar-crm
      port: 8080
      tools:
        - name: sync-registrant-to-crm
          description: "Given a Zoom webinar registrant email and webinar ID, upsert the lead in Salesforce and send a Team Chat confirmation."
          inputParameters:
            - name: webinar_id
              in: body
              type: string
              description: "The Zoom webinar ID."
            - name: registrant_email
              in: body
              type: string
              description: "The registrant email address."
            - name: registrant_name
              in: body
              type: string
              description: "The registrant full name."
          steps:
            - name: get-webinar
              type: call
              call: "zoom.get-webinar"
              with:
                webinar_id: "{{webinar_id}}"
            - name: upsert-lead
              type: call
              call: "salesforce.upsert-lead"
              with:
                email: "{{registrant_email}}"
                first_name: "{{registrant_name}}"
                lead_source: "Zoom Webinar"
                description: "Registered for webinar: {{get-webinar.topic}}"
            - name: notify-registrant
              type: call
              call: "zoom.post-chat-message"
              with:
                to_contact: "{{registrant_email}}"
                message: "Thanks for registering for {{get-webinar.topic}} on {{get-webinar.start_time}}. Your Zoom join link will be emailed shortly."
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: webinars
          path: "/webinars/{{webinar_id}}"
          inputParameters:
            - name: webinar_id
              in: path
          operations:
            - name: get-webinar
              method: GET
        - name: chat-messages
          path: "/chat/users/me/messages"
          operations:
            - name: post-chat-message
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://your-instance.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leads
          path: "/sobjects/Lead"
          operations:
            - name: upsert-lead
              method: POST

Retrieves employee profile from Workday.

naftiko: "0.5"
info:
  label: "Workday Employee Profile"
  description: "Retrieves employee profile from Workday."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr
      port: 8080
      tools:
        - name: get-workday
          description: "Retrieves employee profile from Workday."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The workday employee profile identifier."
          call: "hr-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: hr-api
      baseUri: "https://api.zoom.com/hr/v1"
      authentication:
        type: bearer
        token: "$secrets.zoom_api_token"
      resources:
        - name: workday
          path: "/workday/employee/profile/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-workday
              method: GET

Generates a Zoom account daily usage report including total meetings, participants, and meeting minutes, then emails the summary to an administrator via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Zoom Account Usage Report to Email"
  description: "Generates a Zoom account daily usage report including total meetings, participants, and meeting minutes, then emails the summary to an administrator via Microsoft Outlook."
  tags:
    - communications
    - reporting
    - administration
    - microsoft-outlook
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-usage-report
      port: 8080
      tools:
        - name: send-usage-report
          description: "Generate a Zoom usage report for a date and email it to the admin."
          inputParameters:
            - name: report_date
              in: body
              type: string
              description: "The report date in YYYY-MM-DD format."
            - name: admin_email
              in: body
              type: string
              description: "The administrator email."
          steps:
            - name: get-daily-report
              type: call
              call: "zoom.get-daily-report"
              with:
                year: "{{report_date}}"
                month: "{{report_date}}"
            - name: send-report
              type: call
              call: "outlook.send-mail"
              with:
                user_upn: "{{admin_email}}"
                to: "{{admin_email}}"
                subject: "Zoom Daily Usage Report - {{report_date}}"
                body: "Total Meetings: {{get-daily-report.dates[0].meetings}}\nTotal Participants: {{get-daily-report.dates[0].participants}}\nTotal Meeting Minutes: {{get-daily-report.dates[0].meeting_minutes}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: daily-report
          path: "/report/daily"
          inputParameters:
            - name: year
              in: query
            - name: month
              in: query
          operations:
            - name: get-daily-report
              method: GET
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/users/{{user_upn}}/sendMail"
          inputParameters:
            - name: user_upn
              in: path
          operations:
            - name: send-mail
              method: POST

Receives Zoom webhook events for meeting started and ended, logs them to Datadog, and posts real-time notifications to a Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Zoom App Marketplace Webhook Router"
  description: "Receives Zoom webhook events for meeting started and ended, logs them to Datadog, and posts real-time notifications to a Microsoft Teams channel."
  tags:
    - communications
    - platform-engineering
    - datadog
    - microsoft-teams
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-webhook-router
      port: 8080
      tools:
        - name: route-meeting-webhook
          description: "Given a Zoom webhook event payload, log to Datadog and notify Microsoft Teams."
          inputParameters:
            - name: event_type
              in: body
              type: string
              description: "The Zoom webhook event type (e.g. meeting.started, meeting.ended)."
            - name: meeting_id
              in: body
              type: string
              description: "The Zoom meeting ID from the webhook payload."
            - name: host_email
              in: body
              type: string
              description: "The meeting host email."
            - name: teams_webhook_url
              in: body
              type: string
              description: "The Microsoft Teams incoming webhook URL."
          steps:
            - name: log-to-datadog
              type: call
              call: "datadog.send-log"
              with:
                source: "zoom-webhooks"
                service: "zoom-integration"
                message: "Zoom event: {{event_type}} for meeting {{meeting_id}} hosted by {{host_email}}"
                tags:
                  - "event_type:{{event_type}}"
                  - "meeting_id:{{meeting_id}}"
            - name: notify-teams
              type: call
              call: "msteams.send-webhook"
              with:
                webhook_url: "{{teams_webhook_url}}"
                text: "Zoom Meeting {{event_type}}: Meeting {{meeting_id}} by {{host_email}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://http-intake.logs.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: logs
          path: "/logs"
          operations:
            - name: send-log
              method: POST
    - type: http
      namespace: msteams
      baseUri: "{{teams_webhook_url}}"
      authentication:
        type: none
      resources:
        - name: webhook
          path: ""
          operations:
            - name: send-webhook
              method: POST

Receives a Zoom Team Chat chatbot message, identifies customer intent, looks up the customer in Salesforce, and creates a Salesforce case or returns account info based on the request.

naftiko: "0.5"
info:
  label: "Zoom Chatbot Intent Router to Salesforce"
  description: "Receives a Zoom Team Chat chatbot message, identifies customer intent, looks up the customer in Salesforce, and creates a Salesforce case or returns account info based on the request."
  tags:
    - communications
    - team-chat
    - salesforce
    - customer-service
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-chatbot-crm
      port: 8080
      tools:
        - name: route-chatbot-to-crm
          description: "Given a Zoom chatbot message, customer email, and intent, look up or create records in Salesforce."
          inputParameters:
            - name: customer_email
              in: body
              type: string
              description: "The customer email address."
            - name: intent
              in: body
              type: string
              description: "The detected intent (e.g. support_request, account_info)."
            - name: message_text
              in: body
              type: string
              description: "The original chatbot message."
          steps:
            - name: lookup-contact
              type: call
              call: "salesforce.get-contact"
              with:
                email: "{{customer_email}}"
            - name: create-case
              type: call
              call: "salesforce.create-case"
              with:
                contact_id: "{{lookup-contact.Id}}"
                subject: "Zoom Chatbot: {{intent}}"
                description: "Customer message: {{message_text}}\nAccount: {{lookup-contact.Account.Name}}"
                origin: "Zoom Team Chat"
            - name: respond-chat
              type: call
              call: "zoom.post-chat-message"
              with:
                to_contact: "{{customer_email}}"
                message: "Your request has been logged as case {{create-case.id}}. Account: {{lookup-contact.Account.Name}}. Our team will follow up shortly."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://your-instance.salesforce.com/services/data/v59.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/sobjects/Contact/Email__c/{{email}}"
          inputParameters:
            - name: email
              in: path
          operations:
            - name: get-contact
              method: GET
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: chat-messages
          path: "/chat/users/me/messages"
          operations:
            - name: post-chat-message
              method: POST

When a user registers for a Zoom Events session, creates or updates a lead in Marketo and adds them to a nurture campaign for post-event follow-up.

naftiko: "0.5"
info:
  label: "Zoom Events Registration to Marketo"
  description: "When a user registers for a Zoom Events session, creates or updates a lead in Marketo and adds them to a nurture campaign for post-event follow-up."
  tags:
    - communications
    - webinars
    - marketo
    - marketing
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-events-marketo
      port: 8080
      tools:
        - name: sync-event-registration
          description: "Given a Zoom Events session ID and registrant details, upsert a Marketo lead and add to a campaign."
          inputParameters:
            - name: session_id
              in: body
              type: string
              description: "The Zoom Events session ID."
            - name: registrant_email
              in: body
              type: string
              description: "The registrant email."
            - name: registrant_name
              in: body
              type: string
              description: "The registrant name."
            - name: marketo_campaign_id
              in: body
              type: string
              description: "The Marketo campaign ID for nurture."
          steps:
            - name: get-session
              type: call
              call: "zoom.get-event-session"
              with:
                session_id: "{{session_id}}"
            - name: upsert-lead
              type: call
              call: "marketo.upsert-lead"
              with:
                email: "{{registrant_email}}"
                firstName: "{{registrant_name}}"
                leadSource: "Zoom Events"
                zoomEventName: "{{get-session.topic}}"
            - name: add-to-campaign
              type: call
              call: "marketo.add-to-campaign"
              with:
                campaign_id: "{{marketo_campaign_id}}"
                lead_email: "{{registrant_email}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: event-sessions
          path: "/events/sessions/{{session_id}}"
          inputParameters:
            - name: session_id
              in: path
          operations:
            - name: get-event-session
              method: GET
    - type: http
      namespace: marketo
      baseUri: "https://your-instance.mktorest.com/rest/v1"
      authentication:
        type: bearer
        token: "$secrets.marketo_token"
      resources:
        - name: leads
          path: "/leads.json"
          operations:
            - name: upsert-lead
              method: POST
        - name: campaigns
          path: "/campaigns/{{campaign_id}}/trigger.json"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: add-to-campaign
              method: POST

Pulls Zoom account user license utilization data, calculates usage percentages, and posts a weekly summary to a Slack channel for IT governance.

naftiko: "0.5"
info:
  label: "Zoom License Usage Report to Slack"
  description: "Pulls Zoom account user license utilization data, calculates usage percentages, and posts a weekly summary to a Slack channel for IT governance."
  tags:
    - communications
    - administration
    - slack
    - governance
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-license-governance
      port: 8080
      tools:
        - name: report-license-usage
          description: "Retrieve Zoom account plan usage and post a summary to Slack."
          inputParameters:
            - name: slack_channel
              in: body
              type: string
              description: "The Slack channel ID for the report."
          steps:
            - name: get-plan-usage
              type: call
              call: "zoom.get-plan-usage"
              with: {}
            - name: post-report
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Zoom License Report:\n\nPlan: {{get-plan-usage.plan_base.type}}\nHosts Used: {{get-plan-usage.plan_base.hosts}} / {{get-plan-usage.plan_base.usage}}\nWebinar Add-on: {{get-plan-usage.plan_webinar.hosts}} / {{get-plan-usage.plan_webinar.usage}}\nZoom Phone: {{get-plan-usage.plan_phone.hosts}} / {{get-plan-usage.plan_phone.usage}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: plan-usage
          path: "/accounts/me/plan/usage"
          operations:
            - name: get-plan-usage
              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

When a participant registers for a Zoom meeting, creates a Google Calendar event for the registrant with the meeting join URL and details, then confirms via Zoom Team Chat.

naftiko: "0.5"
info:
  label: "Zoom Meeting Registrant to Google Calendar"
  description: "When a participant registers for a Zoom meeting, creates a Google Calendar event for the registrant with the meeting join URL and details, then confirms via Zoom Team Chat."
  tags:
    - communications
    - meetings
    - google-calendar
    - team-chat
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-gcal-registration
      port: 8080
      tools:
        - name: sync-registration-to-gcal
          description: "Given a Zoom meeting ID and registrant email, create a Google Calendar event with meeting details and notify via Team Chat."
          inputParameters:
            - name: meeting_id
              in: body
              type: string
              description: "The Zoom meeting ID."
            - name: registrant_email
              in: body
              type: string
              description: "The registrant email address."
          steps:
            - name: get-meeting
              type: call
              call: "zoom.get-meeting-details"
              with:
                meeting_id: "{{meeting_id}}"
            - name: create-event
              type: call
              call: "gcal.create-event"
              with:
                calendar_id: "{{registrant_email}}"
                summary: "{{get-meeting.topic}}"
                start: "{{get-meeting.start_time}}"
                duration_minutes: "{{get-meeting.duration}}"
                description: "Join Zoom Meeting: {{get-meeting.join_url}}\nMeeting ID: {{get-meeting.id}}\nPasscode: {{get-meeting.password}}"
            - name: confirm-chat
              type: call
              call: "zoom.post-chat-message"
              with:
                to_contact: "{{registrant_email}}"
                message: "You are registered for '{{get-meeting.topic}}' on {{get-meeting.start_time}}. A calendar event has been created. Join link: {{get-meeting.join_url}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: meetings
          path: "/meetings/{{meeting_id}}"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: get-meeting-details
              method: GET
        - name: chat-messages
          path: "/chat/users/me/messages"
          operations:
            - name: post-chat-message
              method: POST
    - type: http
      namespace: gcal
      baseUri: "https://www.googleapis.com/calendar/v3"
      authentication:
        type: bearer
        token: "$secrets.google_calendar_token"
      resources:
        - name: events
          path: "/calendars/{{calendar_id}}/events"
          inputParameters:
            - name: calendar_id
              in: path
          operations:
            - name: create-event
              method: POST

After a Zoom meeting, retrieves the AI Companion action items and creates corresponding tasks in an Asana project, then notifies the host via Zoom Team Chat.

naftiko: "0.5"
info:
  label: "Zoom Meeting to Asana Task Creator"
  description: "After a Zoom meeting, retrieves the AI Companion action items and creates corresponding tasks in an Asana project, then notifies the host via Zoom Team Chat."
  tags:
    - communications
    - meetings
    - ai-companion
    - asana
    - team-chat
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-asana-tasks
      port: 8080
      tools:
        - name: create-tasks-from-meeting
          description: "Given a Zoom meeting UUID and Asana project ID, extract AI action items and create Asana tasks."
          inputParameters:
            - name: meeting_id
              in: body
              type: string
              description: "The Zoom meeting UUID."
            - name: asana_project_id
              in: body
              type: string
              description: "The Asana project GID."
          steps:
            - name: get-summary
              type: call
              call: "zoom.get-ai-summary"
              with:
                meeting_id: "{{meeting_id}}"
            - name: get-meeting
              type: call
              call: "zoom.get-meeting-info"
              with:
                meeting_id: "{{meeting_id}}"
            - name: create-task
              type: call
              call: "asana.create-task"
              with:
                project_id: "{{asana_project_id}}"
                name: "Action item from: {{get-meeting.topic}}"
                notes: "{{get-summary.action_items}}"
            - name: notify-host
              type: call
              call: "zoom.post-chat-message"
              with:
                to_contact: "{{get-meeting.host_email}}"
                message: "Action items from '{{get-meeting.topic}}' have been added to Asana: {{create-task.permalink_url}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: meeting-summaries
          path: "/meetings/{{meeting_id}}/meeting_summary"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: get-ai-summary
              method: GET
        - name: meetings
          path: "/meetings/{{meeting_id}}"
          inputParameters:
            - name: meeting_id
              in: path
          operations:
            - name: get-meeting-info
              method: GET
        - name: chat-messages
          path: "/chat/users/me/messages"
          operations:
            - name: post-chat-message
              method: POST
    - type: http
      namespace: asana
      baseUri: "https://app.asana.com/api/1.0"
      authentication:
        type: bearer
        token: "$secrets.asana_token"
      resources:
        - name: tasks
          path: "/tasks"
          operations:
            - name: create-task
              method: POST

Reads auto-attendant IVR configuration from Zoom Phone and backs up the settings as a JSON document in an Amazon S3 bucket for disaster recovery.

naftiko: "0.5"
info:
  label: "Zoom Phone Auto-Attendant Config Sync"
  description: "Reads auto-attendant IVR configuration from Zoom Phone and backs up the settings as a JSON document in an Amazon S3 bucket for disaster recovery."
  tags:
    - communications
    - zoom-phone
    - amazon-s3
    - disaster-recovery
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-phone-backup
      port: 8080
      tools:
        - name: backup-auto-attendant
          description: "Given a Zoom Phone auto-attendant ID and S3 bucket, export the configuration to S3."
          inputParameters:
            - name: auto_attendant_id
              in: body
              type: string
              description: "The Zoom Phone auto-attendant ID."
            - name: s3_bucket
              in: body
              type: string
              description: "The S3 bucket name for backup."
          steps:
            - name: get-config
              type: call
              call: "zoom.get-auto-attendant"
              with:
                auto_attendant_id: "{{auto_attendant_id}}"
            - name: upload-backup
              type: call
              call: "s3.put-object"
              with:
                bucket: "{{s3_bucket}}"
                key: "zoom-phone-backups/auto-attendant-{{auto_attendant_id}}.json"
                body: "{{get-config}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: auto-attendants
          path: "/phone/auto_receptionists/{{auto_attendant_id}}"
          inputParameters:
            - name: auto_attendant_id
              in: path
          operations:
            - name: get-auto-attendant
              method: GET
    - type: http
      namespace: s3
      baseUri: "https://{{s3_bucket}}.s3.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_s3_token"
      resources:
        - name: objects
          path: "/{{key}}"
          inputParameters:
            - name: key
              in: path
          operations:
            - name: put-object
              method: PUT

Retrieves the full inventory of Zoom Phone numbers for the account, including assignment status and site, and writes the inventory to a Google Sheet for telecom management.

naftiko: "0.5"
info:
  label: "Zoom Phone Number Inventory Report"
  description: "Retrieves the full inventory of Zoom Phone numbers for the account, including assignment status and site, and writes the inventory to a Google Sheet for telecom management."
  tags:
    - communications
    - zoom-phone
    - google-sheets
    - administration
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-phone-inventory
      port: 8080
      tools:
        - name: export-phone-inventory
          description: "Export Zoom Phone number inventory to a Google Sheet."
          inputParameters:
            - name: spreadsheet_id
              in: body
              type: string
              description: "The Google Sheets spreadsheet ID."
          steps:
            - name: list-numbers
              type: call
              call: "zoom.list-phone-numbers"
              with: {}
            - name: write-sheet
              type: call
              call: "gsheets.update-values"
              with:
                spreadsheet_id: "{{spreadsheet_id}}"
                range: "PhoneInventory!A1"
                values:
                  - "{{list-numbers.phone_numbers[0].number}}"
                  - "{{list-numbers.phone_numbers[0].assignee.name}}"
                  - "{{list-numbers.phone_numbers[0].site.name}}"
                  - "{{list-numbers.phone_numbers[0].status}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: phone-numbers
          path: "/phone/numbers"
          operations:
            - name: list-phone-numbers
              method: GET
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4/spreadsheets"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/{{spreadsheet_id}}/values/{{range}}"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: update-values
              method: PUT

Updates the digital signage content displayed on a Zoom Room by pushing a new banner message and content URL, then confirms the update in a Slack channel.

naftiko: "0.5"
info:
  label: "Zoom Room Digital Signage Updater"
  description: "Updates the digital signage content displayed on a Zoom Room by pushing a new banner message and content URL, then confirms the update in a Slack channel."
  tags:
    - communications
    - zoom-rooms
    - slack
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-room-signage
      port: 8080
      tools:
        - name: update-room-signage
          description: "Given a Zoom Room ID, update its digital signage content and confirm in Slack."
          inputParameters:
            - name: room_id
              in: body
              type: string
              description: "The Zoom Room ID."
            - name: banner_message
              in: body
              type: string
              description: "The banner text to display."
            - name: content_url
              in: body
              type: string
              description: "The URL for signage content."
            - name: slack_channel
              in: body
              type: string
              description: "The Slack channel for confirmation."
          steps:
            - name: update-signage
              type: call
              call: "zoom.update-room-signage"
              with:
                room_id: "{{room_id}}"
                banner: "{{banner_message}}"
                content_url: "{{content_url}}"
            - name: confirm-slack
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Zoom Room {{room_id}} digital signage updated. Banner: '{{banner_message}}'. Content: {{content_url}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: room-signage
          path: "/rooms/{{room_id}}/settings"
          inputParameters:
            - name: room_id
              in: path
          operations:
            - name: update-room-signage
              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

Checks Zoom Room health status. If a room reports issues, creates a PagerDuty incident and alerts the facilities team in a Slack channel.

naftiko: "0.5"
info:
  label: "Zoom Room Health Monitor to PagerDuty"
  description: "Checks Zoom Room health status. If a room reports issues, creates a PagerDuty incident and alerts the facilities team in a Slack channel."
  tags:
    - communications
    - zoom-rooms
    - pagerduty
    - slack
    - monitoring
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-room-monitoring
      port: 8080
      tools:
        - name: monitor-room-health
          description: "Given a Zoom Room ID, check its health and escalate to PagerDuty and Slack if degraded."
          inputParameters:
            - name: room_id
              in: body
              type: string
              description: "The Zoom Room ID."
            - name: slack_channel
              in: body
              type: string
              description: "The Slack channel for facility alerts."
          steps:
            - name: check-room
              type: call
              call: "zoom.get-room-health"
              with:
                room_id: "{{room_id}}"
            - name: create-pagerduty-incident
              type: call
              call: "pagerduty.create-incident"
              with:
                service_id: "ZOOM_ROOMS_SVC"
                title: "Zoom Room Degraded: {{check-room.room_name}}"
                body: "Room {{check-room.room_name}} status: {{check-room.health}}. Issues: {{check-room.issues}}"
            - name: alert-facilities
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Zoom Room Alert: {{check-room.room_name}} is reporting {{check-room.health}} status. PagerDuty incident created: {{create-pagerduty-incident.incident_key}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: rooms
          path: "/rooms/{{room_id}}"
          inputParameters:
            - name: room_id
              in: path
          operations:
            - name: get-room-health
              method: GET
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_token"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Returns the current status of a Zoom Room device, including online/offline state, health, and active meeting info.

naftiko: "0.5"
info:
  label: "Zoom Room Status"
  description: "Returns the current status of a Zoom Room device, including online/offline state, health, and active meeting info."
  tags:
    - communications
    - zoom-rooms
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-rooms
      port: 8080
      tools:
        - name: get-room-status
          description: "Check a Zoom Room's online status, health, and current meeting info."
          inputParameters:
            - name: room_id
              in: body
              type: string
              description: "The Zoom Room ID."
          call: "zoom.get-room"
          with:
            room_id: "{{room_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: health
              type: string
              mapping: "$.health"
            - name: room_name
              type: string
              mapping: "$.room_name"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: rooms
          path: "/rooms/{{room_id}}"
          inputParameters:
            - name: room_id
              in: path
          operations:
            - name: get-room
              method: GET

Retrieves the status and configuration of a Zoom Phone SIP trunk, including registration state, codec settings, and associated phone numbers.

naftiko: "0.5"
info:
  label: "Zoom SIP Trunk Status Check"
  description: "Retrieves the status and configuration of a Zoom Phone SIP trunk, including registration state, codec settings, and associated phone numbers."
  tags:
    - communications
    - zoom-phone
    - telephony
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-sip
      port: 8080
      tools:
        - name: get-sip-trunk-status
          description: "Look up SIP trunk registration status and configuration by trunk ID."
          inputParameters:
            - name: trunk_id
              in: body
              type: string
              description: "The Zoom Phone SIP trunk ID."
          call: "zoom.get-sip-trunk"
          with:
            trunk_id: "{{trunk_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.name"
            - name: status
              type: string
              mapping: "$.status"
            - name: registration_state
              type: string
              mapping: "$.registration.state"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: sip-trunks
          path: "/phone/sip_trunk/trunks/{{trunk_id}}"
          inputParameters:
            - name: trunk_id
              in: path
          operations:
            - name: get-sip-trunk
              method: GET

When an employee is terminated in Workday, deactivates their Zoom account, removes them from all Zoom Team Chat channels, and logs the action in ServiceNow.

naftiko: "0.5"
info:
  label: "Zoom SSO User Deprovisioning"
  description: "When an employee is terminated in Workday, deactivates their Zoom account, removes them from all Zoom Team Chat channels, and logs the action in ServiceNow."
  tags:
    - communications
    - administration
    - workday
    - servicenow
    - security
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-user-offboarding
      port: 8080
      tools:
        - name: deprovision-zoom-user
          description: "Given a Workday employee ID, deactivate their Zoom account, remove from channels, and log to ServiceNow."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "The Workday worker ID for the terminated employee."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{workday_employee_id}}"
            - name: deactivate-zoom
              type: call
              call: "zoom.update-user-status"
              with:
                user_id: "{{get-employee.work_email}}"
                action: "deactivate"
            - name: log-offboarding
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Zoom account deactivated: {{get-employee.full_name}}"
                category: "it_offboarding"
                description: "Zoom account for {{get-employee.work_email}} deactivated following Workday termination. Employee ID: {{workday_employee_id}}."
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: user-status
          path: "/users/{{user_id}}/status"
          inputParameters:
            - name: user_id
              in: path
          operations:
            - name: update-user-status
              method: PUT
    - type: http
      namespace: servicenow
      baseUri: "https://your-instance.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

When a file is shared in a Zoom Team Chat channel, downloads the file metadata and uploads a copy to a Box folder for enterprise content management.

naftiko: "0.5"
info:
  label: "Zoom Team Chat File Share to Box"
  description: "When a file is shared in a Zoom Team Chat channel, downloads the file metadata and uploads a copy to a Box folder for enterprise content management."
  tags:
    - communications
    - team-chat
    - box
    - content-management
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-chat-box
      port: 8080
      tools:
        - name: sync-chat-file-to-box
          description: "Given a Zoom Team Chat file ID and Box folder ID, fetch file metadata and upload to Box."
          inputParameters:
            - name: file_id
              in: body
              type: string
              description: "The Zoom Team Chat file ID."
            - name: box_folder_id
              in: body
              type: string
              description: "The Box folder ID."
          steps:
            - name: get-file
              type: call
              call: "zoom.get-chat-file"
              with:
                file_id: "{{file_id}}"
            - name: upload-to-box
              type: call
              call: "box.upload-file"
              with:
                folder_id: "{{box_folder_id}}"
                file_name: "{{get-file.file_name}}"
                download_url: "{{get-file.download_url}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: chat-files
          path: "/chat/files/{{file_id}}"
          inputParameters:
            - name: file_id
              in: path
          operations:
            - name: get-chat-file
              method: GET
    - type: http
      namespace: box
      baseUri: "https://upload.box.com/api/2.0"
      authentication:
        type: bearer
        token: "$secrets.box_token"
      resources:
        - name: files
          path: "/files/content"
          operations:
            - name: upload-file
              method: POST

Exports a Zoom Whiteboard as an image, uploads it to a Confluence page, and notifies the board owner in Zoom Team Chat.

naftiko: "0.5"
info:
  label: "Zoom Whiteboard Export to Confluence"
  description: "Exports a Zoom Whiteboard as an image, uploads it to a Confluence page, and notifies the board owner in Zoom Team Chat."
  tags:
    - communications
    - whiteboards
    - confluence
    - team-chat
    - zoom
capability:
  exposes:
    - type: mcp
      namespace: zoom-whiteboard-export
      port: 8080
      tools:
        - name: export-whiteboard-to-confluence
          description: "Given a Zoom Whiteboard ID and Confluence space, export the board and attach it to a Confluence page."
          inputParameters:
            - name: whiteboard_id
              in: body
              type: string
              description: "The Zoom Whiteboard ID."
            - name: confluence_page_id
              in: body
              type: string
              description: "The Confluence page ID to attach the export."
          steps:
            - name: get-whiteboard
              type: call
              call: "zoom.get-whiteboard"
              with:
                whiteboard_id: "{{whiteboard_id}}"
            - name: attach-to-confluence
              type: call
              call: "confluence.create-attachment"
              with:
                page_id: "{{confluence_page_id}}"
                file_name: "whiteboard_{{whiteboard_id}}.png"
                content_url: "{{get-whiteboard.export_url}}"
            - name: notify-owner
              type: call
              call: "zoom.post-chat-message"
              with:
                to_contact: "{{get-whiteboard.owner_email}}"
                message: "Your whiteboard '{{get-whiteboard.name}}' has been exported to Confluence: {{attach-to-confluence.page_url}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_oauth_token"
      resources:
        - name: whiteboards
          path: "/whiteboards/{{whiteboard_id}}"
          inputParameters:
            - name: whiteboard_id
              in: path
          operations:
            - name: get-whiteboard
              method: GET
        - name: chat-messages
          path: "/chat/users/me/messages"
          operations:
            - name: post-chat-message
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://your-domain.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_api_token"
      resources:
        - name: attachments
          path: "/content/{{page_id}}/child/attachment"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: create-attachment
              method: POST