Zoetis Capabilities

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

Sort
Expand

When an adverse event is reported for an animal health product, creates a case in Salesforce, logs it in the pharmacovigilance system, opens a ServiceNow incident, and alerts the safety team in Slack.

naftiko: "0.5"
info:
  label: "Adverse Event Reporting Pipeline"
  description: "When an adverse event is reported for an animal health product, creates a case in Salesforce, logs it in the pharmacovigilance system, opens a ServiceNow incident, and alerts the safety team in Slack."
  tags:
    - regulatory
    - pharmacovigilance
    - salesforce
    - servicenow
    - slack
    - animal-health
capability:
  exposes:
    - type: mcp
      namespace: pharmacovigilance
      port: 8080
      tools:
        - name: report-adverse-event
          description: "Given adverse event details, create Salesforce case, log in PV system, open ServiceNow ticket, and alert team."
          inputParameters:
            - name: product_name
              in: body
              type: string
              description: "The product involved."
            - name: species
              in: body
              type: string
              description: "The animal species affected."
            - name: event_description
              in: body
              type: string
              description: "Description of the adverse event."
            - name: severity
              in: body
              type: string
              description: "Severity (mild, moderate, severe, fatal)."
            - name: reporter_email
              in: body
              type: string
              description: "The reporter's email address."
          steps:
            - name: create-case
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Adverse Event: {{product_name}} - {{species}}"
                priority: "{{severity}}"
                description: "{{event_description}}"
                type: "Pharmacovigilance"
            - name: log-pv-event
              type: call
              call: "pharmacovigilance.create-report"
              with:
                product_name: "{{product_name}}"
                species: "{{species}}"
                description: "{{event_description}}"
                severity: "{{severity}}"
                reporter: "{{reporter_email}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "AE Report: {{product_name}} - {{species}} ({{severity}})"
                category: "pharmacovigilance"
                priority: "{{severity}}"
            - name: alert-safety-team
              type: call
              call: "slack.post-message"
              with:
                channel: "pharmacovigilance-alerts"
                text: "ADVERSE EVENT: {{severity}} - {{product_name}} in {{species}}. {{event_description}}. Case: {{create-case.id}}. PV Report: {{log-pv-event.report_id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://zoetis.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: pharmacovigilance
      baseUri: "https://api.zoetis.com/pv/v1"
      authentication:
        type: bearer
        token: "$secrets.pv_api_token"
      resources:
        - name: reports
          path: "/adverse-events"
          operations:
            - name: create-report
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://zoetis.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Orchestrates animal health workflow 1 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 1"
  description: "Orchestrates animal health workflow 1 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-001
          description: "Orchestrates animal health 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 Animal Health Workflow 1 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 animal health workflow 2 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 2"
  description: "Orchestrates animal health workflow 2 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-002
          description: "Orchestrates animal health 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 Animal Health Workflow 2 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 animal health operational data for workflow 3.

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

Orchestrates animal health workflow 4 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 4"
  description: "Orchestrates animal health workflow 4 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-004
          description: "Orchestrates animal health 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 Animal Health Workflow 4 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 animal health workflow 5 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 5"
  description: "Orchestrates animal health workflow 5 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-005
          description: "Orchestrates animal health 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 Animal Health Workflow 5 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 animal health operational data for workflow 6.

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

Orchestrates animal health workflow 7 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 7"
  description: "Orchestrates animal health workflow 7 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-007
          description: "Orchestrates animal health 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 Animal Health Workflow 7 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 animal health workflow 8 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 8"
  description: "Orchestrates animal health workflow 8 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-008
          description: "Orchestrates animal health 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 Animal Health Workflow 8 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 animal health operational data for workflow 9.

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

Orchestrates animal health workflow 10 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 10"
  description: "Orchestrates animal health workflow 10 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-010
          description: "Orchestrates animal health 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 Animal Health Workflow 10 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 animal health workflow 11 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 11"
  description: "Orchestrates animal health workflow 11 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-011
          description: "Orchestrates animal health 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 Animal Health Workflow 11 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 animal health operational data for workflow 12.

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

Orchestrates animal health workflow 13 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 13"
  description: "Orchestrates animal health workflow 13 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-013
          description: "Orchestrates animal health 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 Animal Health Workflow 13 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 animal health workflow 14 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 14"
  description: "Orchestrates animal health workflow 14 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-014
          description: "Orchestrates animal health 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 Animal Health Workflow 14 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 animal health operational data for workflow 15.

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

Orchestrates animal health workflow 16 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 16"
  description: "Orchestrates animal health workflow 16 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-016
          description: "Orchestrates animal health workflow 16 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 Animal Health Workflow 16 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 animal health workflow 17 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 17"
  description: "Orchestrates animal health workflow 17 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-017
          description: "Orchestrates animal health workflow 17 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 Animal Health Workflow 17 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 animal health operational data for workflow 18.

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

Orchestrates animal health workflow 19 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 19"
  description: "Orchestrates animal health workflow 19 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-019
          description: "Orchestrates animal health workflow 19 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 Animal Health Workflow 19 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 animal health workflow 20 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 20"
  description: "Orchestrates animal health workflow 20 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-020
          description: "Orchestrates animal health workflow 20 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 Animal Health Workflow 20 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 animal health operational data for workflow 21.

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

Orchestrates animal health workflow 22 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 22"
  description: "Orchestrates animal health workflow 22 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-022
          description: "Orchestrates animal health workflow 22 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 Animal Health Workflow 22 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 animal health workflow 23 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 23"
  description: "Orchestrates animal health workflow 23 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-023
          description: "Orchestrates animal health workflow 23 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 Animal Health Workflow 23 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 animal health operational data for workflow 24.

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

Orchestrates animal health workflow 25 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 25"
  description: "Orchestrates animal health workflow 25 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-025
          description: "Orchestrates animal health workflow 25 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 Animal Health Workflow 25 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 animal health workflow 26 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 26"
  description: "Orchestrates animal health workflow 26 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-026
          description: "Orchestrates animal health workflow 26 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 Animal Health Workflow 26 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 animal health operational data for workflow 27.

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

Orchestrates animal health workflow 28 by coordinating across systems, validating data, and sending notifications.

naftiko: "0.5"
info:
  label: "Animal Health Workflow 28"
  description: "Orchestrates animal health workflow 28 by coordinating across systems, validating data, and sending notifications."
  tags:
    - animal
    - operations
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: animal
      port: 8080
      tools:
        - name: run-animal-health-workflow-028
          description: "Orchestrates animal health workflow 28 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 Animal Health Workflow 28 for request {{request_id}}."
  consumes:
    - type: http
      namespace: primary-api
      baseUri: "https://api.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 Azure DevOps pipeline status.

naftiko: "0.5"
info:
  label: "Azure DevOps Pipeline Viewer"
  description: "Retrieves Azure DevOps pipeline status."
  tags:
    - engineering
    - azure-devops
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: get-azure
          description: "Retrieves Azure DevOps pipeline status."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The azure devops pipeline viewer identifier."
          call: "engineering-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: engineering-api
      baseUri: "https://api.zoetis.com/engineering/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: azure
          path: "/azure/devops/pipeline/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-azure
              method: GET

Retrieves the quality certificate for a manufacturing batch.

naftiko: "0.5"
info:
  label: "Batch Quality Certificate"
  description: "Retrieves the quality certificate for a manufacturing batch."
  tags:
    - quality
    - manufacturing
capability:
  exposes:
    - type: mcp
      namespace: quality
      port: 8080
      tools:
        - name: get-batch
          description: "Retrieves the quality certificate for a manufacturing batch."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The batch quality certificate identifier."
          call: "quality-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: quality-api
      baseUri: "https://api.zoetis.com/quality/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: batch
          path: "/batch/quality/certificate/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-batch
              method: GET

Retrieves results from a veterinary clinical study.

naftiko: "0.5"
info:
  label: "Clinical Study Results Lookup"
  description: "Retrieves results from a veterinary clinical study."
  tags:
    - research
    - clinical
capability:
  exposes:
    - type: mcp
      namespace: research
      port: 8080
      tools:
        - name: get-clinical
          description: "Retrieves results from a veterinary clinical study."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The clinical study results lookup identifier."
          call: "research-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: research-api
      baseUri: "https://api.zoetis.com/research/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: clinical
          path: "/clinical/study/results/lookup/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-clinical
              method: GET

Retrieves the current status of an animal health clinical trial from the R&D management system.

naftiko: "0.5"
info:
  label: "Clinical Trial Status Lookup"
  description: "Retrieves the current status of an animal health clinical trial from the R&D management system."
  tags:
    - r-and-d
    - clinical-trials
    - animal-health
capability:
  exposes:
    - type: mcp
      namespace: clinical-trials
      port: 8080
      tools:
        - name: get-trial-status
          description: "Look up a clinical trial by ID. Returns phase, species, enrollment, and status."
          inputParameters:
            - name: trial_id
              in: body
              type: string
              description: "The clinical trial identifier."
          call: "rnd.get-trial"
          with:
            trial_id: "{{trial_id}}"
          outputParameters:
            - name: phase
              type: string
              mapping: "$.trial.phase"
            - name: species
              type: string
              mapping: "$.trial.target_species"
            - name: enrollment
              type: integer
              mapping: "$.trial.subjects_enrolled"
            - name: status
              type: string
              mapping: "$.trial.status"
            - name: principal_investigator
              type: string
              mapping: "$.trial.pi_name"
  consumes:
    - type: http
      namespace: rnd
      baseUri: "https://api.zoetis.com/rnd/v2"
      authentication:
        type: bearer
        token: "$secrets.rnd_api_token"
      resources:
        - name: trials
          path: "/trials/{{trial_id}}"
          inputParameters:
            - name: trial_id
              in: path
          operations:
            - name: get-trial
              method: GET

Retrieves diagnostic test results for a companion animal from the diagnostics platform by sample ID.

naftiko: "0.5"
info:
  label: "Companion Animal Diagnostics Result Lookup"
  description: "Retrieves diagnostic test results for a companion animal from the diagnostics platform by sample ID."
  tags:
    - animal-health
    - diagnostics
    - laboratory
capability:
  exposes:
    - type: mcp
      namespace: diagnostics
      port: 8080
      tools:
        - name: get-diagnostic-results
          description: "Look up diagnostic test results by sample ID."
          inputParameters:
            - name: sample_id
              in: body
              type: string
              description: "The diagnostic sample identifier."
          call: "diagnostics.get-results"
          with:
            sample_id: "{{sample_id}}"
          outputParameters:
            - name: test_type
              type: string
              mapping: "$.results.test_type"
            - name: species
              type: string
              mapping: "$.results.species"
            - name: result
              type: string
              mapping: "$.results.outcome"
            - name: reported_date
              type: string
              mapping: "$.results.reported_date"
  consumes:
    - type: http
      namespace: diagnostics
      baseUri: "https://api.zoetis.com/diagnostics/v1"
      authentication:
        type: bearer
        token: "$secrets.diagnostics_api_token"
      resources:
        - name: results
          path: "/samples/{{sample_id}}/results"
          inputParameters:
            - name: sample_id
              in: path
          operations:
            - name: get-results
              method: GET

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.zoetis.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: confluence
          path: "/confluence/page/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-confluence
              method: GET

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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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

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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 Datadog monitor status.

naftiko: "0.5"
info:
  label: "Datadog Monitor Viewer"
  description: "Retrieves a Datadog monitor status."
  tags:
    - monitoring
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: monitoring
      port: 8080
      tools:
        - name: get-datadog
          description: "Retrieves a Datadog monitor status."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The datadog monitor viewer identifier."
          call: "monitoring-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: monitoring-api
      baseUri: "https://api.zoetis.com/monitoring/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: datadog
          path: "/datadog/monitor/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-datadog
              method: GET

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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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

When a disease outbreak is detected, aggregates surveillance data from Snowflake, creates an alert in Salesforce, notifies the epidemiology team in Slack, and updates the outbreak tracking dashboard in Power BI.

naftiko: "0.5"
info:
  label: "Disease Outbreak Monitoring Pipeline"
  description: "When a disease outbreak is detected, aggregates surveillance data from Snowflake, creates an alert in Salesforce, notifies the epidemiology team in Slack, and updates the outbreak tracking dashboard in Power BI."
  tags:
    - animal-health
    - epidemiology
    - snowflake
    - salesforce
    - slack
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: disease-surveillance
      port: 8080
      tools:
        - name: process-outbreak-alert
          description: "Given outbreak details, aggregate data, create alert, notify team, and update dashboard."
          inputParameters:
            - name: disease_name
              in: body
              type: string
              description: "The disease name."
            - name: species
              in: body
              type: string
              description: "Affected species."
            - name: region
              in: body
              type: string
              description: "Geographic region of the outbreak."
            - name: severity
              in: body
              type: string
              description: "Outbreak severity (low, moderate, high, critical)."
          steps:
            - name: aggregate-data
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "SELECT region, species, COUNT(*) as cases, MAX(report_date) as latest_report FROM surveillance.outbreak_reports WHERE disease = '{{disease_name}}' AND species = '{{species}}' AND region = '{{region}}' GROUP BY region, species"
                database: "ZOETIS_SURVEILLANCE"
            - name: create-alert
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Outbreak Alert: {{disease_name}} in {{species}} - {{region}}"
                priority: "{{severity}}"
                type: "Disease_Surveillance"
            - name: notify-team
              type: call
              call: "slack.post-message"
              with:
                channel: "epidemiology-alerts"
                text: "OUTBREAK ALERT: {{disease_name}} in {{species}} ({{region}}). Severity: {{severity}}. Case: {{create-alert.id}}. Review surveillance data."
            - name: refresh-dashboard
              type: call
              call: "powerbi.trigger-refresh"
              with:
                group_id: "surveillance_workspace"
                dataset_id: "outbreak_tracking"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://zoetis.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://zoetis.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: 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: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/groups/{{group_id}}/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: group_id
              in: path
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              method: POST

Retrieves account balance for a distributor.

naftiko: "0.5"
info:
  label: "Distributor Account Balance"
  description: "Retrieves account balance for a distributor."
  tags:
    - finance
    - distribution
capability:
  exposes:
    - type: mcp
      namespace: finance
      port: 8080
      tools:
        - name: get-distributor
          description: "Retrieves account balance for a distributor."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The distributor account balance identifier."
          call: "finance-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: finance-api
      baseUri: "https://api.zoetis.com/finance/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: distributor
          path: "/distributor/account/balance/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-distributor
              method: GET

When a distributor places an order, validates inventory in SAP, creates a sales order, updates the Salesforce opportunity, and sends order confirmation via SendGrid.

naftiko: "0.5"
info:
  label: "Distributor Order Processing Pipeline"
  description: "When a distributor places an order, validates inventory in SAP, creates a sales order, updates the Salesforce opportunity, and sends order confirmation via SendGrid."
  tags:
    - sales
    - sap
    - salesforce
    - sendgrid
    - distribution
capability:
  exposes:
    - type: mcp
      namespace: order-management
      port: 8080
      tools:
        - name: process-distributor-order
          description: "Given order details, validate inventory, create SAP order, update CRM, and confirm."
          inputParameters:
            - name: distributor_id
              in: body
              type: string
              description: "The SAP distributor customer ID."
            - name: product_sku
              in: body
              type: string
              description: "The product SKU."
            - name: quantity
              in: body
              type: integer
              description: "Order quantity."
            - name: distributor_email
              in: body
              type: string
              description: "The distributor contact email."
          steps:
            - name: check-inventory
              type: call
              call: "sap.check-material-availability"
              with:
                material: "{{product_sku}}"
                quantity: "{{quantity}}"
            - name: create-sales-order
              type: call
              call: "sap.create-sales-order"
              with:
                customer: "{{distributor_id}}"
                material: "{{product_sku}}"
                quantity: "{{quantity}}"
            - name: update-opportunity
              type: call
              call: "salesforce.update-opportunity"
              with:
                distributor_id: "{{distributor_id}}"
                order_number: "{{create-sales-order.order_number}}"
                amount: "{{create-sales-order.total_amount}}"
            - name: send-confirmation
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{distributor_email}}"
                template_id: "order_confirmation"
                dynamic_data:
                  order_number: "{{create-sales-order.order_number}}"
                  product: "{{product_sku}}"
                  quantity: "{{quantity}}"
                  delivery_date: "{{create-sales-order.delivery_date}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://zoetis-s4.sap.com/sap/opu/odata/sap/API_SALES_ORDER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: availability
          path: "/A_Product('{{material}}')/to_ProductAvailability"
          inputParameters:
            - name: material
              in: path
          operations:
            - name: check-material-availability
              method: GET
        - name: sales-orders
          path: "/A_SalesOrder"
          operations:
            - name: create-sales-order
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://zoetis.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity"
          operations:
            - name: update-opportunity
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

When a new animal health product is approved, creates a regulatory record in the compliance system, updates the product catalog in SAP, registers with Salesforce for commercial launch, and notifies the regulatory team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Drug Product Registration Pipeline"
  description: "When a new animal health product is approved, creates a regulatory record in the compliance system, updates the product catalog in SAP, registers with Salesforce for commercial launch, and notifies the regulatory team in Microsoft Teams."
  tags:
    - regulatory
    - manufacturing
    - sap
    - salesforce
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: product-registration
      port: 8080
      tools:
        - name: register-product
          description: "Given product approval details, create regulatory record, update SAP, register in CRM, and notify team."
          inputParameters:
            - name: product_name
              in: body
              type: string
              description: "The approved product name."
            - name: nda_number
              in: body
              type: string
              description: "The regulatory NDA or approval number."
            - name: species
              in: body
              type: string
              description: "Target species (e.g., canine, feline, bovine, porcine, poultry)."
            - name: therapeutic_area
              in: body
              type: string
              description: "Therapeutic area (e.g., parasiticides, vaccines, anti-infectives)."
            - name: market
              in: body
              type: string
              description: "Market region (US, EU, APAC, LATAM)."
          steps:
            - name: create-regulatory-record
              type: call
              call: "regulatory.register-approval"
              with:
                product_name: "{{product_name}}"
                nda_number: "{{nda_number}}"
                species: "{{species}}"
                market: "{{market}}"
            - name: create-sap-material
              type: call
              call: "sap.create-material"
              with:
                material_name: "{{product_name}}"
                material_group: "{{therapeutic_area}}"
                regulatory_ref: "{{nda_number}}"
            - name: create-sf-product
              type: call
              call: "salesforce.create-product"
              with:
                name: "{{product_name}}"
                species: "{{species}}"
                therapeutic_area: "{{therapeutic_area}}"
                nda_number: "{{nda_number}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "regulatory-approvals"
                text: "Product registered: {{product_name}} ({{nda_number}}) for {{species}} in {{market}}. SAP: {{create-sap-material.material_number}}. Salesforce: {{create-sf-product.id}}"
  consumes:
    - type: http
      namespace: regulatory
      baseUri: "https://api.zoetis.com/regulatory/v1"
      authentication:
        type: bearer
        token: "$secrets.regulatory_api_token"
      resources:
        - name: approvals
          path: "/approvals"
          operations:
            - name: register-approval
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://zoetis-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: materials
          path: "/A_Product"
          operations:
            - name: create-material
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://zoetis.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: products
          path: "/sobjects/Product2"
          operations:
            - name: create-product
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-message
              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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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

On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message.

naftiko: "0.5"
info:
  label: "Employee Onboarding Orchestrator"
  description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome message."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-onboarding
          description: "Given a Workday employee ID and start date, orchestrate the full onboarding sequence."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "The Workday worker ID."
            - name: start_date
              in: body
              type: string
              description: "Start date in YYYY-MM-DD format."
            - name: department
              in: body
              type: string
              description: "The department."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{employee_id}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "New hire onboarding: {{get-employee.full_name}}"
                category: "hr_onboarding"
                assigned_group: "IT_Onboarding"
            - name: provision-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "hr_onboarding"
                folder_path: "NewHires/{{get-employee.full_name}}_{{start_date}}"
            - name: send-welcome
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-employee.work_email}}"
                text: "Welcome to Zoetis, {{get-employee.first_name}}! Ticket: {{open-ticket.number}}. Documents: {{provision-folder.url}}"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://zoetis.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 GitHub repository information.

naftiko: "0.5"
info:
  label: "GitHub Repo Viewer"
  description: "Retrieves GitHub repository information."
  tags:
    - engineering
    - github
capability:
  exposes:
    - type: mcp
      namespace: engineering
      port: 8080
      tools:
        - name: get-github
          description: "Retrieves GitHub repository information."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The github repo viewer identifier."
          call: "engineering-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: engineering-api
      baseUri: "https://api.zoetis.com/engineering/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: github
          path: "/github/repo/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-github
              method: GET

When a GMP deviation is detected in manufacturing, creates a CAPA in the quality system, opens a ServiceNow incident, notifies the quality team in Microsoft Teams, and logs the deviation in the regulatory system.

naftiko: "0.5"
info:
  label: "GMP Deviation Investigation Workflow"
  description: "When a GMP deviation is detected in manufacturing, creates a CAPA in the quality system, opens a ServiceNow incident, notifies the quality team in Microsoft Teams, and logs the deviation in the regulatory system."
  tags:
    - manufacturing
    - quality
    - regulatory
    - servicenow
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: quality-deviations
      port: 8080
      tools:
        - name: report-deviation
          description: "Given deviation details, create CAPA, open incident, notify team, and log in regulatory."
          inputParameters:
            - name: plant_id
              in: body
              type: string
              description: "The manufacturing plant identifier."
            - name: deviation_type
              in: body
              type: string
              description: "Type of deviation (process, equipment, material, documentation)."
            - name: description
              in: body
              type: string
              description: "Description of the deviation."
            - name: severity
              in: body
              type: string
              description: "Severity (minor, major, critical)."
            - name: batch_number
              in: body
              type: string
              description: "Affected batch number, if applicable."
          steps:
            - name: create-capa
              type: call
              call: "quality.create-capa"
              with:
                plant_id: "{{plant_id}}"
                type: "{{deviation_type}}"
                description: "{{description}}"
                severity: "{{severity}}"
                batch: "{{batch_number}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "GMP Deviation: {{deviation_type}} at {{plant_id}}"
                category: "quality_deviation"
                priority: "{{severity}}"
                description: "{{description}}. Batch: {{batch_number}}"
            - name: log-regulatory
              type: call
              call: "regulatory.log-deviation"
              with:
                plant_id: "{{plant_id}}"
                deviation_type: "{{deviation_type}}"
                capa_id: "{{create-capa.capa_id}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "quality-deviations"
                text: "GMP DEVIATION: {{severity}} {{deviation_type}} at {{plant_id}}. Batch: {{batch_number}}. CAPA: {{create-capa.capa_id}}. ServiceNow: {{create-incident.number}}"
  consumes:
    - type: http
      namespace: quality
      baseUri: "https://api.zoetis.com/quality/v1"
      authentication:
        type: bearer
        token: "$secrets.quality_api_token"
      resources:
        - name: capas
          path: "/capas"
          operations:
            - name: create-capa
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://zoetis.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: regulatory
      baseUri: "https://api.zoetis.com/regulatory/v1"
      authentication:
        type: bearer
        token: "$secrets.regulatory_api_token"
      resources:
        - name: deviations
          path: "/deviations"
          operations:
            - name: log-deviation
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Retrieves a document from Google Drive by file ID.

naftiko: "0.5"
info:
  label: "Google Drive Document Retrieval"
  description: "Retrieves a document from Google Drive by file ID."
  tags:
    - collaboration
    - google-drive
    - documents
capability:
  exposes:
    - type: mcp
      namespace: document-mgmt
      port: 8080
      tools:
        - name: get-drive-file
          description: "Fetch a Google Drive file's metadata by file ID."
          inputParameters:
            - name: file_id
              in: body
              type: string
              description: "The Google Drive file identifier."
          call: "gdrive.get-file"
          with:
            file_id: "{{file_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.name"
            - name: owner
              type: string
              mapping: "$.owners[0].displayName"
            - name: modified_time
              type: string
              mapping: "$.modifiedTime"
  consumes:
    - type: http
      namespace: gdrive
      baseUri: "https://www.googleapis.com/drive/v3"
      authentication:
        type: bearer
        token: "$secrets.google_drive_token"
      resources:
        - name: files
          path: "/files/{{file_id}}?fields=name,owners,modifiedTime"
          inputParameters:
            - name: file_id
              in: path
          operations:
            - name: get-file
              method: GET

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.zoetis.com/collaboration/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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.zoetis.com/engineering/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 calibration status for R&D lab equipment from the LIMS system.

naftiko: "0.5"
info:
  label: "Lab Equipment Calibration Tracker"
  description: "Retrieves calibration status for R&D lab equipment from the LIMS system."
  tags:
    - r-and-d
    - laboratory
    - equipment
capability:
  exposes:
    - type: mcp
      namespace: lab-equipment
      port: 8080
      tools:
        - name: get-calibration-status
          description: "Check calibration status for lab equipment."
          inputParameters:
            - name: equipment_id
              in: body
              type: string
              description: "The lab equipment identifier."
          call: "lims.get-calibration"
          with:
            equipment_id: "{{equipment_id}}"
          outputParameters:
            - name: last_calibrated
              type: string
              mapping: "$.calibration.last_date"
            - name: next_due
              type: string
              mapping: "$.calibration.next_due"
            - name: status
              type: string
              mapping: "$.calibration.status"
            - name: certificate_id
              type: string
              mapping: "$.calibration.certificate_id"
  consumes:
    - type: http
      namespace: lims
      baseUri: "https://api.zoetis.com/lims/v1"
      authentication:
        type: bearer
        token: "$secrets.lims_api_token"
      resources:
        - name: calibrations
          path: "/equipment/{{equipment_id}}/calibration"
          inputParameters:
            - name: equipment_id
              in: path
          operations:
            - name: get-calibration
              method: GET

When a manufacturing batch passes quality testing, updates the batch record in SAP, creates a quality release document, notifies the quality team in Microsoft Teams, and logs the release in the regulatory compliance system.

naftiko: "0.5"
info:
  label: "Manufacturing Batch Release Orchestrator"
  description: "When a manufacturing batch passes quality testing, updates the batch record in SAP, creates a quality release document, notifies the quality team in Microsoft Teams, and logs the release in the regulatory compliance system."
  tags:
    - manufacturing
    - quality
    - sap
    - microsoft-teams
    - regulatory
capability:
  exposes:
    - type: mcp
      namespace: batch-release
      port: 8080
      tools:
        - name: release-batch
          description: "Given a batch number and QC results, process batch release across SAP, quality, and regulatory systems."
          inputParameters:
            - name: batch_number
              in: body
              type: string
              description: "The manufacturing batch number."
            - name: product_name
              in: body
              type: string
              description: "The product name."
            - name: plant_id
              in: body
              type: string
              description: "The manufacturing plant identifier."
            - name: qc_result
              in: body
              type: string
              description: "Quality control result (pass, conditional_pass)."
          steps:
            - name: update-batch
              type: call
              call: "sap.update-batch-status"
              with:
                batch_number: "{{batch_number}}"
                status: "released"
                qc_result: "{{qc_result}}"
            - name: create-release-doc
              type: call
              call: "quality.create-release-document"
              with:
                batch_number: "{{batch_number}}"
                product_name: "{{product_name}}"
                plant_id: "{{plant_id}}"
            - name: log-regulatory
              type: call
              call: "regulatory.log-batch-release"
              with:
                batch_number: "{{batch_number}}"
                product_name: "{{product_name}}"
                release_document: "{{create-release-doc.document_id}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "quality-releases"
                text: "Batch {{batch_number}} ({{product_name}}) released from {{plant_id}}. QC: {{qc_result}}. Release doc: {{create-release-doc.document_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://zoetis-s4.sap.com/sap/opu/odata/sap/API_BATCH_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: batches
          path: "/A_Batch('{{batch_number}}')"
          inputParameters:
            - name: batch_number
              in: path
          operations:
            - name: update-batch-status
              method: PATCH
    - type: http
      namespace: quality
      baseUri: "https://api.zoetis.com/quality/v1"
      authentication:
        type: bearer
        token: "$secrets.quality_api_token"
      resources:
        - name: releases
          path: "/release-documents"
          operations:
            - name: create-release-document
              method: POST
    - type: http
      namespace: regulatory
      baseUri: "https://api.zoetis.com/regulatory/v1"
      authentication:
        type: bearer
        token: "$secrets.regulatory_api_token"
      resources:
        - name: batch-releases
          path: "/batch-releases"
          operations:
            - name: log-batch-release
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Queries Snowflake for manufacturing plant utilization and capacity metrics.

naftiko: "0.5"
info:
  label: "Manufacturing Plant Capacity Query"
  description: "Queries Snowflake for manufacturing plant utilization and capacity metrics."
  tags:
    - manufacturing
    - analytics
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: mfg-analytics
      port: 8080
      tools:
        - name: get-plant-capacity
          description: "Fetch manufacturing plant capacity and utilization metrics."
          inputParameters:
            - name: plant_id
              in: body
              type: string
              description: "The manufacturing plant identifier."
            - name: period
              in: body
              type: string
              description: "Reporting period (e.g., 2026-Q1)."
          call: "snowflake.execute-query"
          with:
            statement: "SELECT line_id, product_type, SUM(units_produced) as produced, SUM(planned_units) as planned, SUM(units_produced)/SUM(planned_units)*100 as utilization_pct FROM manufacturing.production WHERE plant_id = '{{plant_id}}' AND period = '{{period}}' GROUP BY line_id, product_type"
            database: "ZOETIS_MFG"
          outputParameters:
            - name: results
              type: array
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://zoetis.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 notification message to a Microsoft Teams channel.

naftiko: "0.5"
info:
  label: "Microsoft Teams Channel Notification"
  description: "Sends a notification message to a Microsoft Teams channel."
  tags:
    - collaboration
    - microsoft-teams
    - messaging
capability:
  exposes:
    - type: mcp
      namespace: teams-messaging
      port: 8080
      tools:
        - name: send-teams-notification
          description: "Send a notification to a Microsoft Teams channel."
          inputParameters:
            - name: team_id
              in: body
              type: string
              description: "The Teams team ID."
            - name: channel_id
              in: body
              type: string
              description: "The Teams channel ID."
            - name: message
              in: body
              type: string
              description: "The notification message."
          call: "msteams.send-message"
          with:
            team_id: "{{team_id}}"
            channel_id: "{{channel_id}}"
            text: "{{message}}"
  consumes:
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

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.zoetis.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: microsoft
          path: "/microsoft/teams/message/sender/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-microsoft
              method: GET

Triggers a Power BI dataset refresh for manufacturing and sales dashboards.

naftiko: "0.5"
info:
  label: "Power BI Dashboard Refresh"
  description: "Triggers a Power BI dataset refresh for manufacturing and sales dashboards."
  tags:
    - analytics
    - power-bi
    - reporting
capability:
  exposes:
    - type: mcp
      namespace: bi-reporting
      port: 8080
      tools:
        - name: refresh-dataset
          description: "Trigger a Power BI dataset refresh."
          inputParameters:
            - name: workspace_id
              in: body
              type: string
              description: "The Power BI workspace ID."
            - name: dataset_id
              in: body
              type: string
              description: "The Power BI dataset ID."
          call: "powerbi.trigger-refresh"
          with:
            group_id: "{{workspace_id}}"
            dataset_id: "{{dataset_id}}"
  consumes:
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/groups/{{group_id}}/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: group_id
              in: path
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              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.zoetis.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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

Queries SAP for current inventory levels of an animal health product across manufacturing plants and distribution centers.

naftiko: "0.5"
info:
  label: "Product Inventory Level Check"
  description: "Queries SAP for current inventory levels of an animal health product across manufacturing plants and distribution centers."
  tags:
    - manufacturing
    - sap
    - inventory
capability:
  exposes:
    - type: mcp
      namespace: inventory
      port: 8080
      tools:
        - name: get-inventory-levels
          description: "Fetch SAP inventory levels for a product across plants."
          inputParameters:
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
          call: "sap.get-material-stock"
          with:
            material: "{{material_number}}"
          outputParameters:
            - name: total_stock
              type: number
              mapping: "$.d.TotalStock"
            - name: available_stock
              type: number
              mapping: "$.d.AvailableStock"
            - name: unit
              type: string
              mapping: "$.d.BaseUnit"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://zoetis-s4.sap.com/sap/opu/odata/sap/API_MATERIAL_STOCK_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: material-stock
          path: "/A_MatlStkInAcctMod(Material='{{material}}')"
          inputParameters:
            - name: material
              in: path
          operations:
            - name: get-material-stock
              method: GET

When a product label update is approved, uploads new label artwork to SharePoint, updates the product record in SAP, creates a change request in ServiceNow, and notifies the packaging team in Slack.

naftiko: "0.5"
info:
  label: "Product Label Update Workflow"
  description: "When a product label update is approved, uploads new label artwork to SharePoint, updates the product record in SAP, creates a change request in ServiceNow, and notifies the packaging team in Slack."
  tags:
    - regulatory
    - manufacturing
    - sharepoint
    - sap
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: label-management
      port: 8080
      tools:
        - name: process-label-update
          description: "Given label update details, upload artwork, update SAP, create change request, and notify team."
          inputParameters:
            - name: product_name
              in: body
              type: string
              description: "The product name."
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
            - name: change_reason
              in: body
              type: string
              description: "Reason for the label change."
            - name: effective_date
              in: body
              type: string
              description: "Effective date for the new label."
          steps:
            - name: upload-artwork
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "product_labels"
                folder_path: "{{product_name}}/{{effective_date}}"
                file_name: "label_{{material_number}}_{{effective_date}}.pdf"
            - name: update-sap
              type: call
              call: "sap.update-material-label"
              with:
                material_number: "{{material_number}}"
                label_version: "{{effective_date}}"
                label_url: "{{upload-artwork.url}}"
            - name: create-change-request
              type: call
              call: "servicenow.create-change-request"
              with:
                short_description: "Label update: {{product_name}} effective {{effective_date}}"
                category: "product_labeling"
                description: "{{change_reason}}. New artwork: {{upload-artwork.url}}"
            - name: notify-team
              type: call
              call: "slack.post-message"
              with:
                channel: "packaging-ops"
                text: "Label update approved for {{product_name}} effective {{effective_date}}. Reason: {{change_reason}}. Change request: {{create-change-request.number}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
            - name: file_name
              in: path
          operations:
            - name: upload-file
              method: PUT
    - type: http
      namespace: sap
      baseUri: "https://zoetis-s4.sap.com/sap/opu/odata/sap/API_PRODUCT_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: materials
          path: "/A_Product('{{material_number}}')"
          inputParameters:
            - name: material_number
              in: path
          operations:
            - name: update-material-label
              method: PATCH
    - type: http
      namespace: servicenow
      baseUri: "https://zoetis.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: change-requests
          path: "/table/change_request"
          operations:
            - name: create-change-request
              method: POST
    - type: http
      namespace: 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 product recall is initiated, updates SAP inventory status, creates a Salesforce campaign for affected customers, opens a ServiceNow major incident, sends recall notifications via SendGrid, and alerts leadership in Slack.

naftiko: "0.5"
info:
  label: "Product Recall Orchestrator"
  description: "When a product recall is initiated, updates SAP inventory status, creates a Salesforce campaign for affected customers, opens a ServiceNow major incident, sends recall notifications via SendGrid, and alerts leadership in Slack."
  tags:
    - regulatory
    - quality
    - sap
    - salesforce
    - servicenow
    - sendgrid
    - slack
capability:
  exposes:
    - type: mcp
      namespace: product-recall
      port: 8080
      tools:
        - name: initiate-recall
          description: "Given recall details, update inventory, notify customers, create incident, and alert leadership."
          inputParameters:
            - name: product_name
              in: body
              type: string
              description: "The product being recalled."
            - name: batch_numbers
              in: body
              type: string
              description: "Comma-separated affected batch numbers."
            - name: recall_reason
              in: body
              type: string
              description: "Reason for the recall."
            - name: recall_class
              in: body
              type: string
              description: "Recall classification (I, II, III)."
          steps:
            - name: block-inventory
              type: call
              call: "sap.block-batches"
              with:
                product_name: "{{product_name}}"
                batch_numbers: "{{batch_numbers}}"
                reason: "RECALL_{{recall_class}}"
            - name: create-campaign
              type: call
              call: "salesforce.create-campaign"
              with:
                name: "Product Recall: {{product_name}} - Class {{recall_class}}"
                type: "Recall"
                description: "{{recall_reason}}. Batches: {{batch_numbers}}"
            - name: create-incident
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "PRODUCT RECALL: {{product_name}} Class {{recall_class}}"
                category: "product_recall"
                priority: "1"
                description: "{{recall_reason}}. Batches: {{batch_numbers}}"
            - name: send-notifications
              type: call
              call: "sendgrid.send-email"
              with:
                list_id: "affected_distributors"
                template_id: "product_recall_notice"
                dynamic_data:
                  product: "{{product_name}}"
                  batches: "{{batch_numbers}}"
                  reason: "{{recall_reason}}"
                  class: "{{recall_class}}"
            - name: alert-leadership
              type: call
              call: "slack.post-message"
              with:
                channel: "leadership-urgent"
                text: "PRODUCT RECALL INITIATED: {{product_name}} (Class {{recall_class}}). Batches: {{batch_numbers}}. Reason: {{recall_reason}}. ServiceNow: {{create-incident.number}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://zoetis-s4.sap.com/sap/opu/odata/sap/API_BATCH_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: batches
          path: "/A_Batch"
          operations:
            - name: block-batches
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://zoetis.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: campaigns
          path: "/sobjects/Campaign"
          operations:
            - name: create-campaign
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://zoetis.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves registration status for a veterinary product.

naftiko: "0.5"
info:
  label: "Product Registration Status"
  description: "Retrieves registration status for a veterinary product."
  tags:
    - regulatory
    - product-management
capability:
  exposes:
    - type: mcp
      namespace: regulatory
      port: 8080
      tools:
        - name: get-product
          description: "Retrieves registration status for a veterinary product."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The product registration status identifier."
          call: "regulatory-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: regulatory-api
      baseUri: "https://api.zoetis.com/regulatory/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: product
          path: "/product/registration/status/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-product
              method: GET

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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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

When receiving raw materials from a supplier, validates the Certificate of Analysis, checks supplier quality scores in SAP, logs the receipt in the quality system, and notifies the procurement team in Slack.

naftiko: "0.5"
info:
  label: "Raw Material Supplier Quality Pipeline"
  description: "When receiving raw materials from a supplier, validates the Certificate of Analysis, checks supplier quality scores in SAP, logs the receipt in the quality system, and notifies the procurement team in Slack."
  tags:
    - manufacturing
    - quality
    - sap
    - slack
    - procurement
capability:
  exposes:
    - type: mcp
      namespace: supplier-quality
      port: 8080
      tools:
        - name: process-material-receipt
          description: "Given material receipt details, validate CoA, check supplier quality, log receipt, and notify."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number."
            - name: vendor_id
              in: body
              type: string
              description: "The SAP vendor identifier."
            - name: material_number
              in: body
              type: string
              description: "The SAP material number."
            - name: batch_number
              in: body
              type: string
              description: "The supplier batch number."
          steps:
            - name: get-supplier-quality
              type: call
              call: "sap.get-vendor-evaluation"
              with:
                vendor_id: "{{vendor_id}}"
            - name: log-receipt
              type: call
              call: "quality.log-material-receipt"
              with:
                po_number: "{{po_number}}"
                material: "{{material_number}}"
                batch: "{{batch_number}}"
                vendor_score: "{{get-supplier-quality.overall_score}}"
            - name: notify-procurement
              type: call
              call: "slack.post-message"
              with:
                channel: "procurement-quality"
                text: "Material received: {{material_number}} batch {{batch_number}} from vendor {{vendor_id}} (score: {{get-supplier-quality.overall_score}}). PO: {{po_number}}. Receipt: {{log-receipt.receipt_id}}"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://zoetis-s4.sap.com/sap/opu/odata/sap/API_BUSINESS_PARTNER_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: vendor-evaluations
          path: "/A_BusinessPartner('{{vendor_id}}')/to_SupplierEvaluation"
          inputParameters:
            - name: vendor_id
              in: path
          operations:
            - name: get-vendor-evaluation
              method: GET
    - type: http
      namespace: quality
      baseUri: "https://api.zoetis.com/quality/v1"
      authentication:
        type: bearer
        token: "$secrets.quality_api_token"
      resources:
        - name: material-receipts
          path: "/material-receipts"
          operations:
            - name: log-material-receipt
              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

Aggregates R&D pipeline data from the clinical trials system and Snowflake, calculates progress metrics, and updates the Power BI executive dashboard.

naftiko: "0.5"
info:
  label: "R&D Pipeline Dashboard Builder"
  description: "Aggregates R&D pipeline data from the clinical trials system and Snowflake, calculates progress metrics, and updates the Power BI executive dashboard."
  tags:
    - r-and-d
    - analytics
    - snowflake
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: rnd-reporting
      port: 8080
      tools:
        - name: build-pipeline-dashboard
          description: "Given a therapeutic area and year, aggregate R&D metrics and refresh the dashboard."
          inputParameters:
            - name: therapeutic_area
              in: body
              type: string
              description: "The therapeutic area to report on."
            - name: year
              in: body
              type: string
              description: "The reporting year."
          steps:
            - name: query-pipeline
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "SELECT species, phase, COUNT(*) as programs, SUM(investment_mm) as total_investment FROM rnd.pipeline WHERE therapeutic_area = '{{therapeutic_area}}' AND year = '{{year}}' GROUP BY species, phase ORDER BY species, phase"
                database: "ZOETIS_RND"
            - name: refresh-dashboard
              type: call
              call: "powerbi.trigger-refresh"
              with:
                group_id: "rnd_workspace"
                dataset_id: "pipeline_metrics"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://zoetis.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST
    - type: http
      namespace: powerbi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.powerbi_token"
      resources:
        - name: datasets
          path: "/groups/{{group_id}}/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: group_id
              in: path
            - name: dataset_id
              in: path
          operations:
            - name: trigger-refresh
              method: POST

When a regulatory submission is ready, uploads documents to SharePoint, creates a tracking record in the regulatory system, notifies the regulatory affairs team in Microsoft Teams, and logs the submission in Salesforce.

naftiko: "0.5"
info:
  label: "Regulatory Submission Pipeline"
  description: "When a regulatory submission is ready, uploads documents to SharePoint, creates a tracking record in the regulatory system, notifies the regulatory affairs team in Microsoft Teams, and logs the submission in Salesforce."
  tags:
    - regulatory
    - sharepoint
    - microsoft-teams
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: regulatory-submissions
      port: 8080
      tools:
        - name: submit-regulatory-filing
          description: "Given filing details, upload docs, create tracking record, notify team, and log in CRM."
          inputParameters:
            - name: filing_type
              in: body
              type: string
              description: "Type of filing (NDA, ANADA, supplement, variation)."
            - name: product_name
              in: body
              type: string
              description: "The product name."
            - name: market
              in: body
              type: string
              description: "Target market (US, EU, APAC)."
            - name: submission_date
              in: body
              type: string
              description: "Submission date in YYYY-MM-DD format."
          steps:
            - name: upload-documents
              type: call
              call: "sharepoint.upload-file"
              with:
                site_id: "regulatory_filings"
                folder_path: "{{filing_type}}/{{product_name}}/{{market}}"
                file_name: "{{filing_type}}_{{product_name}}_{{submission_date}}.pdf"
            - name: create-tracking
              type: call
              call: "regulatory.create-submission"
              with:
                filing_type: "{{filing_type}}"
                product_name: "{{product_name}}"
                market: "{{market}}"
                submission_date: "{{submission_date}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "regulatory-submissions"
                text: "Regulatory submission filed: {{filing_type}} for {{product_name}} in {{market}} on {{submission_date}}. Tracking: {{create-tracking.submission_id}}. Docs: {{upload-documents.url}}"
            - name: log-in-crm
              type: call
              call: "salesforce.create-activity"
              with:
                subject: "Regulatory filing: {{filing_type}} - {{product_name}} ({{market}})"
                description: "Filed on {{submission_date}}. Tracking ID: {{create-tracking.submission_id}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
            - name: file_name
              in: path
          operations:
            - name: upload-file
              method: PUT
    - type: http
      namespace: regulatory
      baseUri: "https://api.zoetis.com/regulatory/v1"
      authentication:
        type: bearer
        token: "$secrets.regulatory_api_token"
      resources:
        - name: submissions
          path: "/submissions"
          operations:
            - name: create-submission
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://zoetis.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: activities
          path: "/sobjects/Task"
          operations:
            - name: create-activity
              method: POST

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.zoetis.com/sales/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: salesforce
          path: "/salesforce/account/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-salesforce
              method: GET

Retrieves a veterinary practice or distributor account from Salesforce including contact details, territory, and purchase history.

naftiko: "0.5"
info:
  label: "Salesforce Veterinary Account Lookup"
  description: "Retrieves a veterinary practice or distributor account from Salesforce including contact details, territory, and purchase history."
  tags:
    - crm
    - salesforce
    - animal-health
    - sales
capability:
  exposes:
    - type: mcp
      namespace: crm
      port: 8080
      tools:
        - name: get-vet-account
          description: "Look up a Salesforce veterinary account by ID."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "The Salesforce account ID."
          call: "salesforce.get-account"
          with:
            account_id: "{{account_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.Name"
            - name: type
              type: string
              mapping: "$.Account_Type__c"
            - name: territory
              type: string
              mapping: "$.Territory__c"
            - name: annual_revenue
              type: number
              mapping: "$.AnnualRevenue"
            - name: species_focus
              type: string
              mapping: "$.Species_Focus__c"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://zoetis.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-account
              method: GET

When an expense report is submitted in SAP Concur, validates and posts to SAP S/4HANA, and notifies finance.

naftiko: "0.5"
info:
  label: "SAP Concur Expense Report Sync"
  description: "When an expense report is submitted in SAP Concur, validates and posts to SAP S/4HANA, and notifies finance."
  tags:
    - finance
    - sap-concur
    - sap-s4hana
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: expense-management
      port: 8080
      tools:
        - name: sync-expense-report
          description: "Given a Concur expense report ID, validate, post to SAP, and notify finance."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "The SAP Concur expense report identifier."
          steps:
            - name: get-report
              type: call
              call: "concur.get-expense-report"
              with:
                report_id: "{{report_id}}"
            - name: post-to-sap
              type: call
              call: "sap.create-expense-entry"
              with:
                amount: "{{get-report.total_amount}}"
                currency: "{{get-report.currency_code}}"
                cost_center: "{{get-report.cost_center}}"
            - name: notify-finance
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "finance-expenses"
                text: "Expense report {{report_id}} for {{get-report.total_amount}} posted to SAP. Document: {{post-to-sap.document_number}}"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: expense-reports
          path: "/expense/reports/{{report_id}}"
          inputParameters:
            - name: report_id
              in: path
          operations:
            - name: get-expense-report
              method: GET
    - type: http
      namespace: sap
      baseUri: "https://zoetis-s4.sap.com/sap/opu/odata/sap/API_FINANCIALACCOUNTING_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: journal-entries
          path: "/A_JournalEntry"
          operations:
            - name: create-expense-entry
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

Looks up a SAP S/4HANA purchase order by number and returns header status, vendor, total value, and delivery date.

naftiko: "0.5"
info:
  label: "SAP Purchase Order Status"
  description: "Looks up a SAP S/4HANA purchase order by number and returns header status, vendor, total value, and delivery date."
  tags:
    - procurement
    - sap
    - sap-s4hana
    - purchase-order
capability:
  exposes:
    - type: mcp
      namespace: erp-procurement
      port: 8080
      tools:
        - name: get-purchase-order
          description: "Look up a SAP S/4HANA purchase order by PO number."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "The SAP purchase order number (10-digit)."
          call: "sap.get-po"
          with:
            po_number: "{{po_number}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.d.OverallStatus"
            - name: vendor
              type: string
              mapping: "$.d.Supplier.CompanyName"
            - name: total_value
              type: string
              mapping: "$.d.TotalAmount"
            - name: delivery_date
              type: string
              mapping: "$.d.DeliveryDate"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://zoetis-s4.sap.com/sap/opu/odata/sap/MM_PUR_PO_MAINT_V2_SRV"
      authentication:
        type: basic
        username: "$secrets.sap_user"
        password: "$secrets.sap_password"
      resources:
        - name: purchase-orders
          path: "/A_PurchaseOrder('{{po_number}}')"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET

Retrieves a SAP purchase order by number.

naftiko: "0.5"
info:
  label: "SAP Purchase Order Viewer"
  description: "Retrieves a SAP purchase order by number."
  tags:
    - procurement
    - sap
capability:
  exposes:
    - type: mcp
      namespace: procurement
      port: 8080
      tools:
        - name: get-sap
          description: "Retrieves a SAP purchase order by number."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The sap purchase order viewer identifier."
          call: "procurement-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: procurement-api
      baseUri: "https://api.zoetis.com/procurement/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: sap
          path: "/sap/purchase/order/viewer/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-sap
              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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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.zoetis.com/it/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: servicenow
          path: "/servicenow/incident/creator/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-servicenow
              method: GET

Retrieves a ServiceNow incident by number and returns status, priority, and assigned group.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Lookup"
  description: "Retrieves a ServiceNow incident by number and returns status, priority, and assigned group."
  tags:
    - it-ops
    - servicenow
    - incident
capability:
  exposes:
    - type: mcp
      namespace: it-service
      port: 8080
      tools:
        - name: get-incident
          description: "Look up a ServiceNow incident by number."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "The ServiceNow incident number."
          call: "servicenow.get-incident"
          with:
            number: "{{incident_number}}"
          outputParameters:
            - name: state
              type: string
              mapping: "$.result.state"
            - name: priority
              type: string
              mapping: "$.result.priority"
            - name: assigned_group
              type: string
              mapping: "$.result.assignment_group.display_value"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://zoetis.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident?sysparm_query=number={{number}}"
          inputParameters:
            - name: number
              in: query
          operations:
            - name: get-incident
              method: GET

Retrieves a document from SharePoint.

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

Posts a formatted message to a specified Slack channel.

naftiko: "0.5"
info:
  label: "Slack Channel Message Post"
  description: "Posts a formatted message to a specified Slack channel."
  tags:
    - collaboration
    - slack
    - messaging
capability:
  exposes:
    - type: mcp
      namespace: messaging
      port: 8080
      tools:
        - name: post-slack-message
          description: "Post a message to a Slack channel."
          inputParameters:
            - name: channel
              in: body
              type: string
              description: "The Slack channel name or ID."
            - name: text
              in: body
              type: string
              description: "The message text."
          call: "slack.post-message"
          with:
            channel: "{{channel}}"
            text: "{{text}}"
  consumes:
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_bot_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

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.zoetis.com/communications/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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.zoetis.com/analytics/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: snowflake
          path: "/snowflake/analytics/query/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-snowflake
              method: GET

Executes a sales analytics query against Snowflake for product, territory, and distributor performance.

naftiko: "0.5"
info:
  label: "Snowflake Sales Analytics Query"
  description: "Executes a sales analytics query against Snowflake for product, territory, and distributor performance."
  tags:
    - analytics
    - snowflake
    - sales
capability:
  exposes:
    - type: mcp
      namespace: sales-analytics
      port: 8080
      tools:
        - name: query-sales-data
          description: "Run a sales analytics query on Snowflake."
          inputParameters:
            - name: species
              in: body
              type: string
              description: "Target species filter."
            - name: year
              in: body
              type: string
              description: "Reporting year."
          call: "snowflake.execute-query"
          with:
            statement: "SELECT product_name, territory, SUM(revenue) as total_revenue, SUM(units) as total_units FROM sales.transactions WHERE species = '{{species}}' AND year = '{{year}}' GROUP BY product_name, territory ORDER BY total_revenue DESC"
            database: "ZOETIS_ANALYTICS"
          outputParameters:
            - name: results
              type: array
              mapping: "$.data"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://zoetis.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Retrieves dosage information by species and product.

naftiko: "0.5"
info:
  label: "Species-Specific Dosage Lookup"
  description: "Retrieves dosage information by species and product."
  tags:
    - veterinary
    - product-management
capability:
  exposes:
    - type: mcp
      namespace: veterinary
      port: 8080
      tools:
        - name: get-species
          description: "Retrieves dosage information by species and product."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The species specific dosage lookup identifier."
          call: "veterinary-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: veterinary-api
      baseUri: "https://api.zoetis.com/veterinary/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: species
          path: "/species/specific/dosage/lookup/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-species
              method: GET

When a stability study is initiated for a product, creates the study record in the LIMS, schedules sampling in ServiceNow, sets up data tracking in Google Sheets, and notifies the stability team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Stability Study Orchestrator"
  description: "When a stability study is initiated for a product, creates the study record in the LIMS, schedules sampling in ServiceNow, sets up data tracking in Google Sheets, and notifies the stability team in Microsoft Teams."
  tags:
    - r-and-d
    - manufacturing
    - quality
    - servicenow
    - google-sheets
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: stability-studies
      port: 8080
      tools:
        - name: initiate-stability-study
          description: "Given study details, create LIMS record, schedule sampling, set up tracking, and notify team."
          inputParameters:
            - name: product_name
              in: body
              type: string
              description: "The product name."
            - name: batch_number
              in: body
              type: string
              description: "The batch number under study."
            - name: study_type
              in: body
              type: string
              description: "Study type (long_term, accelerated, intermediate)."
            - name: duration_months
              in: body
              type: integer
              description: "Study duration in months."
          steps:
            - name: create-study
              type: call
              call: "lims.create-stability-study"
              with:
                product_name: "{{product_name}}"
                batch_number: "{{batch_number}}"
                study_type: "{{study_type}}"
                duration: "{{duration_months}}"
            - name: schedule-sampling
              type: call
              call: "servicenow.create-request"
              with:
                short_description: "Stability sampling: {{product_name}} batch {{batch_number}}"
                category: "stability_testing"
                description: "Study type: {{study_type}}. Duration: {{duration_months}} months."
            - name: create-tracker
              type: call
              call: "gsheets.create-spreadsheet"
              with:
                title: "Stability: {{product_name}} - {{batch_number}} ({{study_type}})"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "stability-studies"
                text: "Stability study initiated: {{product_name}} batch {{batch_number}} ({{study_type}}, {{duration_months}} months). LIMS: {{create-study.study_id}}. Tracker: {{create-tracker.url}}"
  consumes:
    - type: http
      namespace: lims
      baseUri: "https://api.zoetis.com/lims/v1"
      authentication:
        type: bearer
        token: "$secrets.lims_api_token"
      resources:
        - name: stability-studies
          path: "/stability-studies"
          operations:
            - name: create-stability-study
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://zoetis.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: spreadsheets
          path: "/spreadsheets"
          operations:
            - name: create-spreadsheet
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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

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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 cold chain temperature monitoring data for a shipment from the logistics system, checking for excursions that could affect vaccine potency.

naftiko: "0.5"
info:
  label: "Vaccine Cold Chain Monitor"
  description: "Retrieves cold chain temperature monitoring data for a shipment from the logistics system, checking for excursions that could affect vaccine potency."
  tags:
    - manufacturing
    - logistics
    - cold-chain
    - animal-health
capability:
  exposes:
    - type: mcp
      namespace: cold-chain
      port: 8080
      tools:
        - name: get-shipment-temperature
          description: "Fetch cold chain temperature data for a shipment."
          inputParameters:
            - name: shipment_id
              in: body
              type: string
              description: "The shipment tracking identifier."
          call: "logistics.get-temperature-log"
          with:
            shipment_id: "{{shipment_id}}"
          outputParameters:
            - name: min_temp_c
              type: number
              mapping: "$.temperature.min"
            - name: max_temp_c
              type: number
              mapping: "$.temperature.max"
            - name: avg_temp_c
              type: number
              mapping: "$.temperature.avg"
            - name: excursion_count
              type: integer
              mapping: "$.temperature.excursions"
            - name: status
              type: string
              mapping: "$.shipment.status"
  consumes:
    - type: http
      namespace: logistics
      baseUri: "https://api.zoetis.com/logistics/v1"
      authentication:
        type: bearer
        token: "$secrets.logistics_api_token"
      resources:
        - name: temperature-logs
          path: "/shipments/{{shipment_id}}/temperature"
          inputParameters:
            - name: shipment_id
              in: path
          operations:
            - name: get-temperature-log
              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.zoetis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: primary
          path: "/process"
          operations:
            - name: initiate
              method: POST
    - type: http
      namespace: secondary-api
      baseUri: "https://api.zoetis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.zoetis_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 veterinary conference, imports leads from Google Sheets into Salesforce, assigns to territory reps, and sends follow-up emails via SendGrid.

naftiko: "0.5"
info:
  label: "Veterinary Conference Lead Pipeline"
  description: "After a veterinary conference, imports leads from Google Sheets into Salesforce, assigns to territory reps, and sends follow-up emails via SendGrid."
  tags:
    - sales
    - salesforce
    - google-sheets
    - sendgrid
    - marketing
capability:
  exposes:
    - type: mcp
      namespace: conference-leads
      port: 8080
      tools:
        - name: process-conference-leads
          description: "Given a conference name and leads spreadsheet, import to Salesforce, assign reps, and send follow-ups."
          inputParameters:
            - name: conference_name
              in: body
              type: string
              description: "The conference name."
            - name: spreadsheet_id
              in: body
              type: string
              description: "The Google Sheets ID containing leads."
          steps:
            - name: get-leads
              type: call
              call: "gsheets.get-values"
              with:
                spreadsheet_id: "{{spreadsheet_id}}"
                range: "Leads!A:F"
            - name: import-leads
              type: call
              call: "salesforce.bulk-create-leads"
              with:
                source: "{{conference_name}}"
                leads: "{{get-leads.values}}"
            - name: send-followups
              type: call
              call: "sendgrid.send-email"
              with:
                list_id: "conference-{{conference_name}}"
                template_id: "conference_followup"
                dynamic_data:
                  conference: "{{conference_name}}"
  consumes:
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: values
          path: "/spreadsheets/{{spreadsheet_id}}/values/{{range}}"
          inputParameters:
            - name: spreadsheet_id
              in: path
            - name: range
              in: path
          operations:
            - name: get-values
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://zoetis.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leads
          path: "/composite/sobjects/Lead"
          operations:
            - name: bulk-create-leads
              method: POST
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

When a veterinarian contacts technical support, creates a Salesforce case, retrieves product information from the knowledge base, sends a response via SendGrid, and logs the interaction for pharmacovigilance review.

naftiko: "0.5"
info:
  label: "Veterinary Technical Support Pipeline"
  description: "When a veterinarian contacts technical support, creates a Salesforce case, retrieves product information from the knowledge base, sends a response via SendGrid, and logs the interaction for pharmacovigilance review."
  tags:
    - customer-service
    - salesforce
    - sendgrid
    - animal-health
capability:
  exposes:
    - type: mcp
      namespace: vet-support
      port: 8080
      tools:
        - name: handle-tech-inquiry
          description: "Given a veterinarian inquiry, create case, fetch product info, respond, and log."
          inputParameters:
            - name: vet_email
              in: body
              type: string
              description: "The veterinarian's email."
            - name: product_name
              in: body
              type: string
              description: "The product in question."
            - name: inquiry_type
              in: body
              type: string
              description: "Type of inquiry (dosing, interactions, adverse_event, efficacy)."
            - name: question
              in: body
              type: string
              description: "The technical question."
          steps:
            - name: create-case
              type: call
              call: "salesforce.create-case"
              with:
                subject: "Tech support: {{product_name}} - {{inquiry_type}}"
                description: "{{question}}"
                type: "Technical_Support"
            - name: get-product-info
              type: call
              call: "knowledge.get-product-details"
              with:
                product_name: "{{product_name}}"
                topic: "{{inquiry_type}}"
            - name: send-response
              type: call
              call: "sendgrid.send-email"
              with:
                to: "{{vet_email}}"
                template_id: "tech_support_response"
                dynamic_data:
                  product: "{{product_name}}"
                  inquiry_type: "{{inquiry_type}}"
                  case_number: "{{create-case.id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://zoetis.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: cases
          path: "/sobjects/Case"
          operations:
            - name: create-case
              method: POST
    - type: http
      namespace: knowledge
      baseUri: "https://api.zoetis.com/knowledge/v1"
      authentication:
        type: bearer
        token: "$secrets.knowledge_api_token"
      resources:
        - name: products
          path: "/products/{{product_name}}"
          inputParameters:
            - name: product_name
              in: path
          operations:
            - name: get-product-details
              method: GET
    - type: http
      namespace: sendgrid
      baseUri: "https://api.sendgrid.com/v3"
      authentication:
        type: bearer
        token: "$secrets.sendgrid_api_key"
      resources:
        - name: mail
          path: "/mail/send"
          operations:
            - name: send-email
              method: POST

Retrieves employee details from Workday.

naftiko: "0.5"
info:
  label: "Workday Employee Directory Lookup"
  description: "Retrieves employee details from Workday."
  tags:
    - hr
    - workday
    - employee
capability:
  exposes:
    - type: mcp
      namespace: hr-directory
      port: 8080
      tools:
        - name: get-employee
          description: "Look up a Workday employee by worker ID."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "The Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_id}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.worker.name.full"
            - name: department
              type: string
              mapping: "$.worker.organization.name"
            - name: manager
              type: string
              mapping: "$.worker.manager.name.full"
            - name: email
              type: string
              mapping: "$.worker.contact.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

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.zoetis.com/hr/v1"
      authentication:
        type: bearer
        token: "$secrets.zoetis_api_token"
      resources:
        - name: workday
          path: "/workday/employee/profile/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-workday
              method: GET

Creates a Zoom meeting, sends invites via Microsoft Outlook, and posts the link in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Zoom Meeting Scheduler"
  description: "Creates a Zoom meeting, sends invites via Microsoft Outlook, and posts the link in Microsoft Teams."
  tags:
    - collaboration
    - zoom
    - microsoft-outlook
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: meeting-mgmt
      port: 8080
      tools:
        - name: schedule-meeting
          description: "Given meeting details, create Zoom meeting, send invite, and post to Teams."
          inputParameters:
            - name: host_email
              in: body
              type: string
              description: "The host email."
            - name: topic
              in: body
              type: string
              description: "The meeting topic."
            - name: start_time
              in: body
              type: string
              description: "Start time in ISO 8601 format."
            - name: duration_minutes
              in: body
              type: integer
              description: "Duration in minutes."
          steps:
            - name: create-meeting
              type: call
              call: "zoom.create-meeting"
              with:
                host_email: "{{host_email}}"
                topic: "{{topic}}"
                start_time: "{{start_time}}"
                duration: "{{duration_minutes}}"
            - name: send-invite
              type: call
              call: "outlook.create-event"
              with:
                subject: "{{topic}}"
                start: "{{start_time}}"
                body: "Join Zoom: {{create-meeting.join_url}}"
            - name: post-to-teams
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "general"
                text: "Meeting: {{topic}} at {{start_time}}. Zoom: {{create-meeting.join_url}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_token"
      resources:
        - name: meetings
          path: "/users/{{host_email}}/meetings"
          inputParameters:
            - name: host_email
              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: "/me/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST