Eventbrite Capabilities

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

Sort
Expand

Reviews access at Eventbrite via Okta, IAM, and Jira.

naftiko: "0.5"
info:
  label: "Access Review Pipeline"
  description: "Reviews access at Eventbrite via Okta, IAM, and Jira."
  tags:
    - security
    - access-management
    - okta
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: access-rev
      port: 8080
      tools:
        - name: review
          description: "Review access at Eventbrite."
          inputParameters:
            - name: dept
              in: body
              type: string
              description: "Department."
          steps:
            - name: ent
              type: call
              call: "okta.get-users"
              with:
                dept: "{{dept}}"
            - name: compare
              type: call
              call: "iam.compare"
              with:
                data: "{{ent.data}}"
            - name: flag
              type: call
              call: "iam.flag"
              with:
                violations: "{{compare.violations}}"
            - name: fix
              type: call
              call: "jira.create-issue"
              with:
                project: "IAM"
                summary: "Violations in {{dept}}"
  consumes:
    - type: http
      namespace: okta
      baseUri: "https://eventbrite.com.okta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.okta_api_token"
      resources:
        - name: users
          path: "/users"
          operations:
            - name: get-users
              method: GET
    - type: http
      namespace: iam
      baseUri: "https://iam.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.iam_token"
      resources:
        - name: reviews
          path: "/compare"
          operations:
            - name: compare
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://eventbrite.com.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Retrieves the status and configuration of an Amazon API Gateway REST API.

naftiko: "0.5"
info:
  label: "Amazon API Gateway Endpoint Status"
  description: "Retrieves the status and configuration of an Amazon API Gateway REST API."
  tags:
    - infrastructure
    - amazon-api-gateway
capability:
  exposes:
    - type: mcp
      namespace: api-gateway
      port: 8080
      tools:
        - name: get-api-status
          description: "Fetch API Gateway REST API status by API ID."
          inputParameters:
            - name: api_id
              in: body
              type: string
              description: "The API Gateway REST API ID."
          call: "apigateway.get-api"
          with:
            api_id: "{{api_id}}"
  consumes:
    - type: http
      namespace: apigateway
      baseUri: "https://apigateway.us-east-1.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_token"
      resources:
        - name: apis
          path: "/restapis/{{api_id}}"
          inputParameters:
            - name: api_id
              in: path
          operations:
            - name: get-api
              method: GET

Retrieves the status of an Amazon ECS service including running task count and deployment state.

naftiko: "0.5"
info:
  label: "Amazon ECS Service Status"
  description: "Retrieves the status of an Amazon ECS service including running task count and deployment state."
  tags:
    - infrastructure
    - amazon-ecs
capability:
  exposes:
    - type: mcp
      namespace: ecs-status
      port: 8080
      tools:
        - name: get-service-status
          description: "Fetch ECS service status by cluster and service name."
          inputParameters:
            - name: cluster
              in: body
              type: string
              description: "ECS cluster name."
            - name: service
              in: body
              type: string
              description: "ECS service name."
          call: "ecs.describe-service"
          with:
            cluster: "{{cluster}}"
            service: "{{service}}"
  consumes:
    - type: http
      namespace: ecs
      baseUri: "https://ecs.us-east-1.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_token"
      resources:
        - name: services
          path: "/"
          operations:
            - name: describe-service
              method: POST

Pushes real-time event activity data to Amazon Kinesis for stream processing and analytics.

naftiko: "0.5"
info:
  label: "Amazon Kinesis Event Stream Ingestion"
  description: "Pushes real-time event activity data to Amazon Kinesis for stream processing and analytics."
  tags:
    - data
    - streaming
    - amazon-kinesis
capability:
  exposes:
    - type: mcp
      namespace: event-streaming
      port: 8080
      tools:
        - name: put-event-record
          description: "Send an event activity record to Amazon Kinesis."
          inputParameters:
            - name: stream_name
              in: body
              type: string
              description: "Kinesis stream name."
            - name: partition_key
              in: body
              type: string
              description: "Partition key for the record."
            - name: data
              in: body
              type: string
              description: "Base64-encoded record data."
          call: "kinesis.put-record"
          with:
            stream_name: "{{stream_name}}"
            partition_key: "{{partition_key}}"
            data: "{{data}}"
  consumes:
    - type: http
      namespace: kinesis
      baseUri: "https://kinesis.us-east-1.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_token"
      resources:
        - name: records
          path: "/"
          operations:
            - name: put-record
              method: POST

Uploads event media assets to Amazon S3 and returns the public URL.

naftiko: "0.5"
info:
  label: "Amazon S3 Asset Storage"
  description: "Uploads event media assets to Amazon S3 and returns the public URL."
  tags:
    - infrastructure
    - storage
    - amazon-s3
capability:
  exposes:
    - type: mcp
      namespace: asset-storage
      port: 8080
      tools:
        - name: upload-asset
          description: "Upload an asset to S3 and get the public URL."
          inputParameters:
            - name: bucket
              in: body
              type: string
              description: "S3 bucket name."
            - name: key
              in: body
              type: string
              description: "Object key (path) in the bucket."
            - name: content_url
              in: body
              type: string
              description: "URL of the content to upload."
          call: "s3.put-object"
          with:
            bucket: "{{bucket}}"
            key: "{{key}}"
            content: "{{content_url}}"
  consumes:
    - type: http
      namespace: s3
      baseUri: "https://{{bucket}}.s3.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_token"
      resources:
        - name: objects
          path: "/{{key}}"
          inputParameters:
            - name: key
              in: path
          operations:
            - name: put-object
              method: PUT

Manages API deprecation at Eventbrite via consumer identification, notices, and tracking.

naftiko: "0.5"
info:
  label: "API Deprecation Pipeline"
  description: "Manages API deprecation at Eventbrite via consumer identification, notices, and tracking."
  tags:
    - api-management
    - communications
    - governance
capability:
  exposes:
    - type: mcp
      namespace: api-sunset
      port: 8080
      tools:
        - name: notify-sunset
          description: "Manage API sunset at Eventbrite."
          inputParameters:
            - name: api
              in: body
              type: string
              description: "API name."
            - name: date
              in: body
              type: string
              description: "Sunset date."
          steps:
            - name: consumers
              type: call
              call: "api-gw.consumers"
              with:
                api: "{{api}}"
            - name: notify
              type: call
              call: "email.batch"
              with:
                to: "{{consumers.emails}}"
                subject: "{{api}} sunset: {{date}}"
            - name: track
              type: call
              call: "analytics.usage"
              with:
                api: "{{api}}"
            - name: ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "API"
                summary: "Sunset {{api}} by {{date}}"
  consumes:
    - type: http
      namespace: api-gw
      baseUri: "https://api-gw.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.api_gw_token"
      resources:
        - name: consumers
          path: "/apis/{{api}}/consumers"
          inputParameters:
            - name: api
              in: path
          operations:
            - name: consumers
              method: GET
    - type: http
      namespace: email
      baseUri: "https://email.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.email_token"
      resources:
        - name: batch
          path: "/send-batch"
          operations:
            - name: batch
              method: POST
    - type: http
      namespace: analytics
      baseUri: "https://analytics.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.analytics_token"
      resources:
        - name: usage
          path: "/api-usage"
          operations:
            - name: usage
              method: GET
    - type: http
      namespace: jira
      baseUri: "https://eventbrite.com.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Creates and manages Asana tasks for event planning workflows.

naftiko: "0.5"
info:
  label: "Asana Task Management"
  description: "Creates and manages Asana tasks for event planning workflows."
  tags:
    - project-management
    - asana
capability:
  exposes:
    - type: mcp
      namespace: task-mgmt
      port: 8080
      tools:
        - name: create-task
          description: "Create an Asana task for event planning."
          inputParameters:
            - name: project_id
              in: body
              type: string
              description: "The Asana project ID."
            - name: name
              in: body
              type: string
              description: "Task name."
            - name: due_date
              in: body
              type: string
              description: "Due date YYYY-MM-DD."
            - name: assignee
              in: body
              type: string
              description: "Assignee email."
          call: "asana.create-task"
          with:
            project_id: "{{project_id}}"
            name: "{{name}}"
            due_on: "{{due_date}}"
            assignee: "{{assignee}}"
  consumes:
    - type: http
      namespace: asana
      baseUri: "https://app.asana.com/api/1.0"
      authentication:
        type: bearer
        token: "$secrets.asana_token"
      resources:
        - name: tasks
          path: "/tasks"
          operations:
            - name: create-task
              method: POST

When an attendee checks in at the venue, updates their status in Eventbrite, sends a WhatsApp welcome message with event details, and logs the check-in in Datadog.

naftiko: "0.5"
info:
  label: "Attendee Check-In and Welcome Flow"
  description: "When an attendee checks in at the venue, updates their status in Eventbrite, sends a WhatsApp welcome message with event details, and logs the check-in in Datadog."
  tags:
    - events
    - ticketing
    - eventbrite
    - whatsapp
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: check-in
      port: 8080
      tools:
        - name: process-check-in
          description: "Update attendee check-in status, send welcome, and log."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The Eventbrite event ID."
            - name: attendee_id
              in: body
              type: string
              description: "The attendee ID."
          steps:
            - name: check-in
              type: call
              call: "eventbrite.check-in-attendee"
              with:
                event_id: "{{event_id}}"
                attendee_id: "{{attendee_id}}"
            - name: get-attendee
              type: call
              call: "eventbrite.get-attendee"
              with:
                event_id: "{{event_id}}"
                attendee_id: "{{attendee_id}}"
            - name: send-welcome
              type: call
              call: "whatsapp.send-message"
              with:
                to: "{{get-attendee.phone}}"
                text: "Welcome to {{get-attendee.event_name}}, {{get-attendee.first_name}}! Your seat: {{get-attendee.seat_assignment}}. Wi-Fi: EventbriteGuest."
            - name: log-checkin
              type: call
              call: "datadog.submit-metric"
              with:
                metric: "events.checkins"
                value: 1
                tags: "event:{{event_id}}"
  consumes:
    - type: http
      namespace: eventbrite
      baseUri: "https://www.eventbriteapi.com/v3"
      authentication:
        type: bearer
        token: "$secrets.eventbrite_token"
      resources:
        - name: attendees
          path: "/events/{{event_id}}/attendees/{{attendee_id}}"
          inputParameters:
            - name: event_id
              in: path
            - name: attendee_id
              in: path
          operations:
            - name: check-in-attendee
              method: POST
            - name: get-attendee
              method: GET
    - type: http
      namespace: whatsapp
      baseUri: "https://graph.facebook.com/v17.0"
      authentication:
        type: bearer
        token: "$secrets.whatsapp_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: send-message
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: metrics
          path: "/series"
          operations:
            - name: submit-metric
              method: POST

Invokes an AWS Lambda function for serverless event processing tasks and returns the execution result.

naftiko: "0.5"
info:
  label: "AWS Lambda Function Invocation"
  description: "Invokes an AWS Lambda function for serverless event processing tasks and returns the execution result."
  tags:
    - infrastructure
    - aws-lambda
capability:
  exposes:
    - type: mcp
      namespace: serverless
      port: 8080
      tools:
        - name: invoke-lambda
          description: "Invoke an AWS Lambda function by name."
          inputParameters:
            - name: function_name
              in: body
              type: string
              description: "The Lambda function name."
            - name: payload
              in: body
              type: string
              description: "JSON payload for the function."
          call: "lambda.invoke"
          with:
            function_name: "{{function_name}}"
            payload: "{{payload}}"
  consumes:
    - type: http
      namespace: lambda
      baseUri: "https://lambda.us-east-1.amazonaws.com/2015-03-31"
      authentication:
        type: bearer
        token: "$secrets.aws_token"
      resources:
        - name: functions
          path: "/functions/{{function_name}}/invocations"
          inputParameters:
            - name: function_name
              in: path
          operations:
            - name: invoke
              method: POST

Checks build at Eventbrite.

naftiko: "0.5"
info:
  label: "Azure DevOps Build Check"
  description: "Checks build at Eventbrite."
  tags:
    - devops
    - azure-devops
    - ci-cd
capability:
  exposes:
    - type: mcp
      namespace: azdo-build
      port: 8080
      tools:
        - name: check-build
          description: "Check build at Eventbrite."
          inputParameters:
            - name: project
              in: body
              type: string
              description: "Project."
            - name: build_id
              in: body
              type: string
              description: "Build ID."
          call: "azdo.get-build"
          with:
            project: "{{project}}"
            build_id: "{{build_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: azdo
      baseUri: "https://dev.azure.com/eventbrite.com"
      authentication:
        type: bearer
        token: "$secrets.azdo_token"
      resources:
        - name: builds
          path: "/{{project}}/_apis/build/builds/{{build_id}}"
          inputParameters:
            - name: project
              in: path
            - name: build_id
              in: path
          operations:
            - name: get-build
              method: GET

Verifies backups at Eventbrite.

naftiko: "0.5"
info:
  label: "Backup Verification Pipeline"
  description: "Verifies backups at Eventbrite."
  tags:
    - database
    - backup
    - operations
capability:
  exposes:
    - type: mcp
      namespace: backup-verify
      port: 8080
      tools:
        - name: verify-backups
          description: "Verify backups at Eventbrite."
          inputParameters:
            - name: db
              in: body
              type: string
              description: "Database."
            - name: date
              in: body
              type: string
              description: "Backup date."
          steps:
            - name: status
              type: call
              call: "backup.get-status"
              with:
                db: "{{db}}"
                date: "{{date}}"
            - name: verify
              type: call
              call: "backup.verify"
              with:
                id: "{{status.backup_id}}"
            - name: log
              type: call
              call: "snowflake.query"
              with:
                query: "INSERT INTO backup_log VALUES ('{{db}}','{{date}}','{{verify.status}}')"
            - name: alert
              type: call
              call: "slack.post-message"
              with:
                channel: "#dba"
                text: "Backup {{db}}: {{verify.status}}"
  consumes:
    - type: http
      namespace: backup
      baseUri: "https://backup.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.backup_token"
      resources:
        - name: backups
          path: "/databases/{{db}}/status"
          inputParameters:
            - name: db
              in: path
          operations:
            - name: get-status
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://eventbrite.com.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves the latest pipeline status for a Bitbucket repository.

naftiko: "0.5"
info:
  label: "Bitbucket Repository Status"
  description: "Retrieves the latest pipeline status for a Bitbucket repository."
  tags:
    - development
    - bitbucket
capability:
  exposes:
    - type: mcp
      namespace: bitbucket-ops
      port: 8080
      tools:
        - name: get-repo-pipelines
          description: "Fetch latest Bitbucket pipeline runs for a repository."
          inputParameters:
            - name: workspace
              in: body
              type: string
              description: "Bitbucket workspace."
            - name: repo_slug
              in: body
              type: string
              description: "Repository slug."
          call: "bitbucket.get-pipelines"
          with:
            workspace: "{{workspace}}"
            repo_slug: "{{repo_slug}}"
  consumes:
    - type: http
      namespace: bitbucket
      baseUri: "https://api.bitbucket.org/2.0"
      authentication:
        type: bearer
        token: "$secrets.bitbucket_token"
      resources:
        - name: pipelines
          path: "/repositories/{{workspace}}/{{repo_slug}}/pipelines"
          inputParameters:
            - name: workspace
              in: path
            - name: repo_slug
              in: path
          operations:
            - name: get-pipelines
              method: GET

Analyzes budget variance at Eventbrite via Oracle, Workday, and Slack.

naftiko: "0.5"
info:
  label: "Budget Variance Pipeline"
  description: "Analyzes budget variance at Eventbrite via Oracle, Workday, and Slack."
  tags:
    - finance
    - budget
    - oracle
    - workday
capability:
  exposes:
    - type: mcp
      namespace: budget-var
      port: 8080
      tools:
        - name: analyze-variance
          description: "Check budget variance at Eventbrite."
          inputParameters:
            - name: cc
              in: body
              type: string
              description: "Cost center."
            - name: period
              in: body
              type: string
              description: "Period."
          steps:
            - name: actuals
              type: call
              call: "oracle.get-actuals"
              with:
                cc: "{{cc}}"
                period: "{{period}}"
            - name: budget
              type: call
              call: "workday.get-budget"
              with:
                cc: "{{cc}}"
            - name: compute
              type: call
              call: "analytics.variance"
              with:
                a: "{{actuals.total}}"
                b: "{{budget.total}}"
            - name: alert
              type: call
              call: "slack.post-message"
              with:
                channel: "#finance"
                text: "Variance {{cc}}: ${{compute.variance}}"
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://oracle.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: fin
          path: "/actuals"
          operations:
            - name: get-actuals
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd5.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: budgets
          path: "/budgets"
          operations:
            - name: get-budget
              method: GET
    - type: http
      namespace: analytics
      baseUri: "https://analytics.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.analytics_token"
      resources:
        - name: var
          path: "/compute"
          operations:
            - name: variance
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves a Canva design template for event promotional materials.

naftiko: "0.5"
info:
  label: "Canva Design Template Fetch"
  description: "Retrieves a Canva design template for event promotional materials."
  tags:
    - design
    - canva
capability:
  exposes:
    - type: mcp
      namespace: design-templates
      port: 8080
      tools:
        - name: get-design-template
          description: "Fetch a Canva design template by ID."
          inputParameters:
            - name: design_id
              in: body
              type: string
              description: "The Canva design identifier."
          call: "canva.get-design"
          with:
            design_id: "{{design_id}}"
  consumes:
    - type: http
      namespace: canva
      baseUri: "https://api.canva.com/rest/v1"
      authentication:
        type: bearer
        token: "$secrets.canva_token"
      resources:
        - name: designs
          path: "/designs/{{design_id}}"
          inputParameters:
            - name: design_id
              in: path
          operations:
            - name: get-design
              method: GET

Plans capacity at Eventbrite by collecting utilization and forecasting.

naftiko: "0.5"
info:
  label: "Capacity Planning Pipeline"
  description: "Plans capacity at Eventbrite by collecting utilization and forecasting."
  tags:
    - infrastructure
    - capacity-planning
    - forecasting
capability:
  exposes:
    - type: mcp
      namespace: capacity
      port: 8080
      tools:
        - name: plan-capacity
          description: "Plan capacity at Eventbrite."
          inputParameters:
            - name: resource
              in: body
              type: string
              description: "Resource type."
            - name: months
              in: body
              type: number
              description: "Forecast months."
          steps:
            - name: util
              type: call
              call: "monitoring.get-util"
              with:
                resource: "{{resource}}"
            - name: forecast
              type: call
              call: "analytics.forecast"
              with:
                current: "{{util.pct}}"
                months: "{{months}}"
            - name: procure
              type: call
              call: "servicenow.create-request"
              with:
                type: "capacity"
                resource: "{{resource}}"
            - name: dashboard
              type: call
              call: "power-bi.refresh"
              with:
                dataset: "capacity"
  consumes:
    - type: http
      namespace: monitoring
      baseUri: "https://monitoring.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.monitoring_token"
      resources:
        - name: util
          path: "/resources/{{resource}}/util"
          inputParameters:
            - name: resource
              in: path
          operations:
            - name: get-util
              method: GET
    - type: http
      namespace: analytics
      baseUri: "https://analytics.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.analytics_token"
      resources:
        - name: forecast
          path: "/demand"
          operations:
            - name: forecast
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://eventbrite.com.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
    - type: http
      namespace: power-bi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.power_bi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset}}/refreshes"
          inputParameters:
            - name: dataset
              in: path
          operations:
            - name: refresh
              method: POST

Monitors cert expiry at Eventbrite.

naftiko: "0.5"
info:
  label: "Certificate Expiry Pipeline"
  description: "Monitors cert expiry at Eventbrite."
  tags:
    - security
    - certificates
    - monitoring
capability:
  exposes:
    - type: mcp
      namespace: cert-monitor
      port: 8080
      tools:
        - name: check-certs
          description: "Monitor certs at Eventbrite."
          inputParameters:
            - name: domains
              in: body
              type: string
              description: "Domains to check."
          steps:
            - name: scan
              type: call
              call: "cert-scanner.scan"
              with:
                domains: "{{domains}}"
            - name: filter
              type: call
              call: "analytics.filter-expiring"
              with:
                certs: "{{scan.results}}"
            - name: ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "SEC"
                summary: "{{filter.count}} certs expiring"
            - name: alert
              type: call
              call: "slack.post-message"
              with:
                channel: "#security"
                text: "Cert alert: {{filter.count}} expiring"
  consumes:
    - type: http
      namespace: cert-scanner
      baseUri: "https://certs.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.cert_token"
      resources:
        - name: scans
          path: "/scan"
          operations:
            - name: scan
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://eventbrite.com.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Routes changes at Eventbrite through ServiceNow and CAB approval.

naftiko: "0.5"
info:
  label: "Change Management Pipeline"
  description: "Routes changes at Eventbrite through ServiceNow and CAB approval."
  tags:
    - change-management
    - servicenow
    - itil
capability:
  exposes:
    - type: mcp
      namespace: change-mgmt
      port: 8080
      tools:
        - name: process-change
          description: "Process changes at Eventbrite."
          inputParameters:
            - name: change_id
              in: body
              type: string
              description: "Change ID."
            - name: date
              in: body
              type: string
              description: "Date."
          steps:
            - name: get
              type: call
              call: "servicenow.get-change"
              with:
                id: "{{change_id}}"
            - name: conflicts
              type: call
              call: "servicenow.check-conflicts"
              with:
                date: "{{date}}"
            - name: submit
              type: call
              call: "servicenow.update"
              with:
                id: "{{change_id}}"
                state: "approval"
            - name: notify
              type: call
              call: "email.send"
              with:
                to: "cab@co.com"
                subject: "CAB: {{change_id}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://eventbrite.com.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: changes
          path: "/table/change_request/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-change
              method: GET
    - type: http
      namespace: email
      baseUri: "https://email.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.email_token"
      resources:
        - name: messages
          path: "/send"
          operations:
            - name: send
              method: POST

Optimizes cloud costs at Eventbrite via Azure, FinOps, Jira, and Power BI.

naftiko: "0.5"
info:
  label: "Cloud Cost Optimization Pipeline"
  description: "Optimizes cloud costs at Eventbrite via Azure, FinOps, Jira, and Power BI."
  tags:
    - cloud
    - cost-management
    - finops
capability:
  exposes:
    - type: mcp
      namespace: cloud-opt
      port: 8080
      tools:
        - name: optimize
          description: "Optimize cloud costs at Eventbrite."
          inputParameters:
            - name: provider
              in: body
              type: string
              description: "Provider."
            - name: range
              in: body
              type: string
              description: "Range."
          steps:
            - name: spend
              type: call
              call: "cloud.get-costs"
              with:
                provider: "{{provider}}"
                range: "{{range}}"
            - name: savings
              type: call
              call: "finops.analyze"
              with:
                data: "{{spend.data}}"
            - name: action
              type: call
              call: "jira.create-issue"
              with:
                project: "FINOPS"
                summary: "Save ${{savings.potential}}"
            - name: report
              type: call
              call: "power-bi.refresh"
              with:
                dataset: "cloud"
  consumes:
    - type: http
      namespace: cloud
      baseUri: "https://management.azure.com"
      authentication:
        type: bearer
        token: "$secrets.azure_token"
      resources:
        - name: costs
          path: "/providers/Microsoft.CostManagement/query"
          operations:
            - name: get-costs
              method: POST
    - type: http
      namespace: finops
      baseUri: "https://finops.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.finops_token"
      resources:
        - name: analysis
          path: "/savings"
          operations:
            - name: analyze
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://eventbrite.com.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: power-bi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.power_bi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset}}/refreshes"
          inputParameters:
            - name: dataset
              in: path
          operations:
            - name: refresh
              method: POST

Purges the Cloudflare CDN cache for event pages to ensure fresh content delivery.

naftiko: "0.5"
info:
  label: "Cloudflare CDN Cache Purge"
  description: "Purges the Cloudflare CDN cache for event pages to ensure fresh content delivery."
  tags:
    - infrastructure
    - cloudflare
capability:
  exposes:
    - type: mcp
      namespace: cdn-mgmt
      port: 8080
      tools:
        - name: purge-cache
          description: "Purge Cloudflare CDN cache for specified URLs."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "Cloudflare zone ID."
            - name: urls
              in: body
              type: string
              description: "JSON array of URLs to purge."
          call: "cloudflare.purge-cache"
          with:
            zone_id: "{{zone_id}}"
            files: "{{urls}}"
  consumes:
    - type: http
      namespace: cloudflare
      baseUri: "https://api.cloudflare.com/client/v4"
      authentication:
        type: bearer
        token: "$secrets.cloudflare_token"
      resources:
        - name: cache
          path: "/zones/{{zone_id}}/purge_cache"
          inputParameters:
            - name: zone_id
              in: path
          operations:
            - name: purge-cache
              method: POST

Searches Confluence at Eventbrite.

naftiko: "0.5"
info:
  label: "Confluence Article Search"
  description: "Searches Confluence at Eventbrite."
  tags:
    - knowledge-management
    - confluence
    - documentation
capability:
  exposes:
    - type: mcp
      namespace: confluence-search
      port: 8080
      tools:
        - name: search-articles
          description: "Search Confluence at Eventbrite."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "Query."
          call: "confluence.search"
          with:
            query: "{{query}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.results[0].title"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://eventbrite.com.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: content
          path: "/content/search"
          operations:
            - name: search
              method: GET

Tracks contract renewals at Eventbrite via contracts system, email, Jira, and Salesforce.

naftiko: "0.5"
info:
  label: "Contract Renewal Pipeline"
  description: "Tracks contract renewals at Eventbrite via contracts system, email, Jira, and Salesforce."
  tags:
    - procurement
    - contracts
    - salesforce
    - jira
capability:
  exposes:
    - type: mcp
      namespace: contract-renew
      port: 8080
      tools:
        - name: track
          description: "Track renewals at Eventbrite."
          inputParameters:
            - name: contract_id
              in: body
              type: string
              description: "Contract ID."
            - name: owner
              in: body
              type: string
              description: "Owner email."
          steps:
            - name: get
              type: call
              call: "contracts.get"
              with:
                id: "{{contract_id}}"
            - name: remind
              type: call
              call: "email.send"
              with:
                to: "{{owner}}"
                subject: "Renewal: {{contract_id}}"
            - name: task
              type: call
              call: "jira.create-issue"
              with:
                project: "PROC"
                summary: "Renew {{contract_id}}"
            - name: crm
              type: call
              call: "salesforce.update"
              with:
                id: "{{contract_id}}"
                stage: "Renewal"
  consumes:
    - type: http
      namespace: contracts
      baseUri: "https://contracts.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.contracts_token"
      resources:
        - name: contracts
          path: "/contracts/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get
              method: GET
    - type: http
      namespace: email
      baseUri: "https://email.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.email_token"
      resources:
        - name: messages
          path: "/send"
          operations:
            - name: send
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://eventbrite.com.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://eventbrite.com.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opps
          path: "/sobjects/Opportunity"
          operations:
            - name: update
              method: PATCH

Reallocates costs at Eventbrite.

naftiko: "0.5"
info:
  label: "Cost Reallocation Pipeline"
  description: "Reallocates costs at Eventbrite."
  tags:
    - finance
    - cost-allocation
    - oracle
capability:
  exposes:
    - type: mcp
      namespace: cost-realloc
      port: 8080
      tools:
        - name: reallocate
          description: "Reallocate costs at Eventbrite."
          inputParameters:
            - name: source
              in: body
              type: string
              description: "Source CC."
            - name: target
              in: body
              type: string
              description: "Target CC."
            - name: amount
              in: body
              type: number
              description: "Amount."
          steps:
            - name: current
              type: call
              call: "oracle.get-alloc"
              with:
                cc: "{{source}}"
            - name: compute
              type: call
              call: "analytics.realloc"
              with:
                source: "{{source}}"
                target: "{{target}}"
                amount: "{{amount}}"
            - name: post
              type: call
              call: "oracle.post-journal"
              with:
                entries: "{{compute.entries}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#finance"
                text: "Reallocated ${{amount}} from {{source}} to {{target}}"
  consumes:
    - type: http
      namespace: oracle
      baseUri: "https://oracle.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: allocations
          path: "/cost-centers/{{cc}}/allocations"
          inputParameters:
            - name: cc
              in: path
          operations:
            - name: get-alloc
              method: GET
    - type: http
      namespace: analytics
      baseUri: "https://analytics.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.analytics_token"
      resources:
        - name: realloc
          path: "/compute"
          operations:
            - name: realloc
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Monitors data pipelines at Eventbrite via Databricks, Snowflake, Slack, and ServiceNow.

naftiko: "0.5"
info:
  label: "Data Pipeline Monitor Pipeline"
  description: "Monitors data pipelines at Eventbrite via Databricks, Snowflake, Slack, and ServiceNow."
  tags:
    - data-engineering
    - databricks
    - monitoring
    - slack
capability:
  exposes:
    - type: mcp
      namespace: pipeline-mon
      port: 8080
      tools:
        - name: monitor
          description: "Monitor pipelines at Eventbrite."
          inputParameters:
            - name: pipeline_id
              in: body
              type: string
              description: "Pipeline ID."
          steps:
            - name: status
              type: call
              call: "databricks.get-run"
              with:
                id: "{{pipeline_id}}"
            - name: quality
              type: call
              call: "snowflake.query"
              with:
                query: "SELECT COUNT(*) FROM out WHERE p='{{pipeline_id}}'"
            - name: alert
              type: call
              call: "slack.post-message"
              with:
                channel: "#data"
                text: "Pipeline {{pipeline_id}}: {{status.state}}"
            - name: incident
              type: call
              call: "servicenow.create-incident"
              with:
                desc: "Pipeline {{pipeline_id}} issue"
  consumes:
    - type: http
      namespace: databricks
      baseUri: "https://eventbrite.com.cloud.databricks.com/api/2.1"
      authentication:
        type: bearer
        token: "$secrets.databricks_token"
      resources:
        - name: jobs
          path: "/jobs/runs/get"
          operations:
            - name: get-run
              method: GET
    - type: http
      namespace: snowflake
      baseUri: "https://eventbrite.com.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://eventbrite.com.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST

Submits custom metrics to Datadog for event platform monitoring and alerting.

naftiko: "0.5"
info:
  label: "Datadog Custom Metric Submission"
  description: "Submits custom metrics to Datadog for event platform monitoring and alerting."
  tags:
    - monitoring
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: custom-metrics
      port: 8080
      tools:
        - name: submit-metric
          description: "Submit a custom metric to Datadog."
          inputParameters:
            - name: metric_name
              in: body
              type: string
              description: "Metric name."
            - name: value
              in: body
              type: number
              description: "Metric value."
            - name: tags
              in: body
              type: string
              description: "Comma-separated tags."
          call: "datadog.submit-metric"
          with:
            metric: "{{metric_name}}"
            value: "{{value}}"
            tags: "{{tags}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: metrics
          path: "/series"
          operations:
            - name: submit-metric
              method: POST

Checks Datadog monitor at Eventbrite.

naftiko: "0.5"
info:
  label: "Datadog Monitor Check"
  description: "Checks Datadog monitor at Eventbrite."
  tags:
    - monitoring
    - datadog
    - observability
capability:
  exposes:
    - type: mcp
      namespace: dd-monitor
      port: 8080
      tools:
        - name: check-monitor
          description: "Check monitor at Eventbrite."
          inputParameters:
            - name: monitor_id
              in: body
              type: string
              description: "Monitor ID."
          call: "datadog.get-monitor"
          with:
            monitor_id: "{{monitor_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.overall_state"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: monitors
          path: "/monitor/{{monitor_id}}"
          inputParameters:
            - name: monitor_id
              in: path
          operations:
            - name: get-monitor
              method: GET

Checks the status of Docker containers running event platform services.

naftiko: "0.5"
info:
  label: "Docker Container Status"
  description: "Checks the status of Docker containers running event platform services."
  tags:
    - infrastructure
    - docker
capability:
  exposes:
    - type: mcp
      namespace: container-status
      port: 8080
      tools:
        - name: get-container-status
          description: "Fetch Docker container status by container ID."
          inputParameters:
            - name: container_id
              in: body
              type: string
              description: "Docker container ID."
          call: "docker.get-container"
          with:
            container_id: "{{container_id}}"
  consumes:
    - type: http
      namespace: docker
      baseUri: "https://docker.eventbrite.com/v1.43"
      authentication:
        type: bearer
        token: "$secrets.docker_token"
      resources:
        - name: containers
          path: "/containers/{{container_id}}/json"
          inputParameters:
            - name: container_id
              in: path
          operations:
            - name: get-container
              method: GET

Tests disaster recovery at Eventbrite via failover, health checks, and reporting.

naftiko: "0.5"
info:
  label: "DR Test Pipeline"
  description: "Tests disaster recovery at Eventbrite via failover, health checks, and reporting."
  tags:
    - disaster-recovery
    - business-continuity
    - testing
capability:
  exposes:
    - type: mcp
      namespace: dr-test
      port: 8080
      tools:
        - name: test-dr
          description: "Test DR at Eventbrite."
          inputParameters:
            - name: plan_id
              in: body
              type: string
              description: "Plan ID."
            - name: type
              in: body
              type: string
              description: "Test type."
          steps:
            - name: failover
              type: call
              call: "dr.failover"
              with:
                plan: "{{plan_id}}"
                type: "{{type}}"
            - name: validate
              type: call
              call: "monitoring.check"
              with:
                scope: "critical"
            - name: measure
              type: call
              call: "dr.metrics"
              with:
                id: "{{failover.id}}"
            - name: report
              type: call
              call: "confluence.create-page"
              with:
                title: "DR - {{plan_id}}"
                body: "RTO:{{measure.rto}}m RPO:{{measure.rpo}}m"
  consumes:
    - type: http
      namespace: dr
      baseUri: "https://dr.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.dr_token"
      resources:
        - name: failovers
          path: "/failovers"
          operations:
            - name: failover
              method: POST
    - type: http
      namespace: monitoring
      baseUri: "https://monitoring.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.monitoring_token"
      resources:
        - name: health
          path: "/checks"
          operations:
            - name: check
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://eventbrite.com.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST

Detects infrastructure drift at Eventbrite via Terraform, Slack, and Jira.

naftiko: "0.5"
info:
  label: "Drift Detection Pipeline"
  description: "Detects infrastructure drift at Eventbrite via Terraform, Slack, and Jira."
  tags:
    - infrastructure
    - terraform
    - drift-detection
    - devops
capability:
  exposes:
    - type: mcp
      namespace: drift-det
      port: 8080
      tools:
        - name: detect
          description: "Detect drift at Eventbrite."
          inputParameters:
            - name: ws_id
              in: body
              type: string
              description: "Workspace ID."
            - name: env
              in: body
              type: string
              description: "Environment."
          steps:
            - name: plan
              type: call
              call: "terraform.run"
              with:
                ws: "{{ws_id}}"
            - name: check
              type: call
              call: "terraform.get-plan"
              with:
                run: "{{plan.id}}"
            - name: alert
              type: call
              call: "slack.post-message"
              with:
                channel: "#infra"
                text: "Drift {{env}}: {{check.changes}} changes"
            - name: ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "INFRA"
                summary: "Drift in {{env}}"
  consumes:
    - type: http
      namespace: terraform
      baseUri: "https://app.terraform.io/api/v2"
      authentication:
        type: bearer
        token: "$secrets.terraform_token"
      resources:
        - name: runs
          path: "/runs"
          operations:
            - name: run
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://eventbrite.com.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Stores and retrieves event metadata in DynamoDB for high-performance lookups.

naftiko: "0.5"
info:
  label: "DynamoDB Event Metadata Store"
  description: "Stores and retrieves event metadata in DynamoDB for high-performance lookups."
  tags:
    - data
    - dynamodb
capability:
  exposes:
    - type: mcp
      namespace: event-store
      port: 8080
      tools:
        - name: get-event-metadata
          description: "Retrieve event metadata from DynamoDB by event ID."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The event identifier."
          call: "dynamodb.get-item"
          with:
            table_name: "events_metadata"
            key: '{"event_id":"{{event_id}}"}'
  consumes:
    - type: http
      namespace: dynamodb
      baseUri: "https://dynamodb.us-east-1.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_token"
      resources:
        - name: items
          path: "/"
          operations:
            - name: get-item
              method: POST

Indexes event data in Elasticsearch for fast full-text search across the event catalog.

naftiko: "0.5"
info:
  label: "Elasticsearch Event Search Index"
  description: "Indexes event data in Elasticsearch for fast full-text search across the event catalog."
  tags:
    - data
    - search
    - elasticsearch
capability:
  exposes:
    - type: mcp
      namespace: event-search
      port: 8080
      tools:
        - name: index-event
          description: "Index an event document in Elasticsearch."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The event identifier."
            - name: event_data
              in: body
              type: string
              description: "JSON event data to index."
          call: "elasticsearch.index-document"
          with:
            index: "events"
            document_id: "{{event_id}}"
            body: "{{event_data}}"
  consumes:
    - type: http
      namespace: elasticsearch
      baseUri: "https://search.eventbrite.com"
      authentication:
        type: bearer
        token: "$secrets.elasticsearch_token"
      resources:
        - name: documents
          path: "/{{index}}/_doc/{{document_id}}"
          inputParameters:
            - name: index
              in: path
            - name: document_id
              in: path
          operations:
            - name: index-document
              method: PUT

Checks ES index at Eventbrite.

naftiko: "0.5"
info:
  label: "ES Index Health"
  description: "Checks ES index at Eventbrite."
  tags:
    - search
    - elasticsearch
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: es-health
      port: 8080
      tools:
        - name: check-index
          description: "Check ES index at Eventbrite."
          inputParameters:
            - name: index
              in: body
              type: string
              description: "Index name."
          call: "es.get-health"
          with:
            index: "{{index}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
            - name: docs
              type: number
              mapping: "$.docs.count"
  consumes:
    - type: http
      namespace: es
      baseUri: "https://es.eventbrite.com:9200"
      authentication:
        type: bearer
        token: "$secrets.es_token"
      resources:
        - name: indices
          path: "/{{index}}/_stats"
          inputParameters:
            - name: index
              in: path
          operations:
            - name: get-health
              method: GET

Offboards employees at Eventbrite via Okta, Slack, ServiceNow, and storage.

naftiko: "0.5"
info:
  label: "Employee Offboarding Pipeline"
  description: "Offboards employees at Eventbrite via Okta, Slack, ServiceNow, and storage."
  tags:
    - hr
    - offboarding
    - okta
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: offboarding
      port: 8080
      tools:
        - name: offboard
          description: "Offboard employees at Eventbrite."
          inputParameters:
            - name: emp_id
              in: body
              type: string
              description: "Employee ID."
            - name: last_day
              in: body
              type: string
              description: "Last day."
          steps:
            - name: disable
              type: call
              call: "okta.deactivate"
              with:
                user: "{{emp_id}}"
            - name: revoke
              type: call
              call: "slack.remove"
              with:
                user: "{{emp_id}}"
            - name: return
              type: call
              call: "servicenow.create-request"
              with:
                type: "return"
                emp: "{{emp_id}}"
            - name: archive
              type: call
              call: "storage.archive"
              with:
                user: "{{emp_id}}"
  consumes:
    - type: http
      namespace: okta
      baseUri: "https://eventbrite.com.okta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.okta_api_token"
      resources:
        - name: users
          path: "/users/{{user}}/lifecycle/deactivate"
          inputParameters:
            - name: user
              in: path
          operations:
            - name: deactivate
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: users
          path: "/users.admin.remove"
          operations:
            - name: remove
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://eventbrite.com.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
    - type: http
      namespace: storage
      baseUri: "https://storage.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.storage_token"
      resources:
        - name: archives
          path: "/archive"
          operations:
            - name: archive
              method: POST

Monitors event ticket inventory in Eventbrite, manages a waitlist in DynamoDB, and automatically promotes waitlisted attendees when tickets free up, sending confirmation via MailChimp.

naftiko: "0.5"
info:
  label: "Event Capacity and Waitlist Manager"
  description: "Monitors event ticket inventory in Eventbrite, manages a waitlist in DynamoDB, and automatically promotes waitlisted attendees when tickets free up, sending confirmation via MailChimp."
  tags:
    - ticketing
    - events
    - eventbrite
    - dynamodb
    - mailchimp
capability:
  exposes:
    - type: mcp
      namespace: waitlist-mgmt
      port: 8080
      tools:
        - name: manage-waitlist
          description: "Check capacity, promote waitlisted attendees, and send confirmations."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The Eventbrite event ID."
          steps:
            - name: check-capacity
              type: call
              call: "eventbrite.get-event-capacity"
              with:
                event_id: "{{event_id}}"
            - name: get-waitlist
              type: call
              call: "dynamodb.query"
              with:
                table_name: "event_waitlists"
                key_condition: '{"event_id":"{{event_id}}"}'
            - name: promote-attendee
              type: call
              call: "eventbrite.create-order"
              with:
                event_id: "{{event_id}}"
                attendee_email: "{{get-waitlist.next_email}}"
            - name: send-confirmation
              type: call
              call: "mailchimp.send-transactional"
              with:
                to: "{{get-waitlist.next_email}}"
                template: "waitlist_promoted"
                merge_vars: '{"event_name":"{{check-capacity.event_name}}","order_id":"{{promote-attendee.order_id}}"}'
  consumes:
    - type: http
      namespace: eventbrite
      baseUri: "https://www.eventbriteapi.com/v3"
      authentication:
        type: bearer
        token: "$secrets.eventbrite_token"
      resources:
        - name: events
          path: "/events/{{event_id}}"
          inputParameters:
            - name: event_id
              in: path
          operations:
            - name: get-event-capacity
              method: GET
        - name: orders
          path: "/events/{{event_id}}/orders"
          inputParameters:
            - name: event_id
              in: path
          operations:
            - name: create-order
              method: POST
    - type: http
      namespace: dynamodb
      baseUri: "https://dynamodb.us-east-1.amazonaws.com"
      authentication:
        type: bearer
        token: "$secrets.aws_token"
      resources:
        - name: tables
          path: "/"
          operations:
            - name: query
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: bearer
        token: "$secrets.mailchimp_token"
      resources:
        - name: transactional
          path: "/messages/send"
          operations:
            - name: send-transactional
              method: POST

Creates a new event in the Eventbrite platform, sets up a HubSpot email campaign, publishes to social channels (Facebook, Twitter, LinkedIn), and logs the launch in Datadog.

naftiko: "0.5"
info:
  label: "Event Creation and Marketing Orchestrator"
  description: "Creates a new event in the Eventbrite platform, sets up a HubSpot email campaign, publishes to social channels (Facebook, Twitter, LinkedIn), and logs the launch in Datadog."
  tags:
    - events
    - marketing
    - hubspot
    - facebook
    - twitter
    - linkedin
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: event-launch
      port: 8080
      tools:
        - name: launch-event
          description: "Create event, set up marketing campaign, distribute to social channels, and log."
          inputParameters:
            - name: event_name
              in: body
              type: string
              description: "Name of the event."
            - name: event_date
              in: body
              type: string
              description: "Event date YYYY-MM-DD."
            - name: venue_id
              in: body
              type: string
              description: "Venue identifier."
            - name: description
              in: body
              type: string
              description: "Event description text."
          steps:
            - name: create-event
              type: call
              call: "eventbrite.create-event"
              with:
                name: "{{event_name}}"
                start_date: "{{event_date}}"
                venue_id: "{{venue_id}}"
                description: "{{description}}"
            - name: create-campaign
              type: call
              call: "hubspot.create-campaign"
              with:
                name: "Promote: {{event_name}}"
                event_url: "{{create-event.url}}"
            - name: post-facebook
              type: call
              call: "facebook.create-post"
              with:
                message: "Join us for {{event_name}} on {{event_date}}! Register now: {{create-event.url}}"
            - name: post-twitter
              type: call
              call: "twitter.create-tweet"
              with:
                text: "{{event_name}} — {{event_date}}. Get your tickets: {{create-event.url}}"
            - name: post-linkedin
              type: call
              call: "linkedin.create-post"
              with:
                text: "We're hosting {{event_name}} on {{event_date}}. Register: {{create-event.url}}"
            - name: log-launch
              type: call
              call: "datadog.send-event"
              with:
                title: "Event launched: {{event_name}}"
                text: "Event ID: {{create-event.id}}, Date: {{event_date}}"
                tags: "events,launch"
  consumes:
    - type: http
      namespace: eventbrite
      baseUri: "https://www.eventbriteapi.com/v3"
      authentication:
        type: bearer
        token: "$secrets.eventbrite_token"
      resources:
        - name: events
          path: "/organizations/{{org_id}}/events"
          operations:
            - name: create-event
              method: POST
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: campaigns
          path: "/marketing/v3/campaigns"
          operations:
            - name: create-campaign
              method: POST
    - type: http
      namespace: facebook
      baseUri: "https://graph.facebook.com/v17.0"
      authentication:
        type: bearer
        token: "$secrets.facebook_token"
      resources:
        - name: posts
          path: "/me/feed"
          operations:
            - name: create-post
              method: POST
    - type: http
      namespace: twitter
      baseUri: "https://api.twitter.com/2"
      authentication:
        type: bearer
        token: "$secrets.twitter_token"
      resources:
        - name: tweets
          path: "/tweets"
          operations:
            - name: create-tweet
              method: POST
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: posts
          path: "/ugcPosts"
          operations:
            - name: create-post
              method: POST
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: events
          path: "/events"
          operations:
            - name: send-event
              method: POST

Calculates organizer payouts from Eventbrite ticket sales, processes via Stripe Connect, records in Workday Financials, and sends confirmation via Slack.

naftiko: "0.5"
info:
  label: "Event Organizer Payout Processing"
  description: "Calculates organizer payouts from Eventbrite ticket sales, processes via Stripe Connect, records in Workday Financials, and sends confirmation via Slack."
  tags:
    - payments
    - finance
    - eventbrite
    - stripe
    - workday
    - slack
capability:
  exposes:
    - type: mcp
      namespace: organizer-payouts
      port: 8080
      tools:
        - name: process-payout
          description: "Calculate payout, transfer via Stripe, record in Workday, and confirm."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The Eventbrite event ID."
            - name: organizer_id
              in: body
              type: string
              description: "The organizer account ID."
          steps:
            - name: get-sales-summary
              type: call
              call: "eventbrite.get-event-orders"
              with:
                event_id: "{{event_id}}"
            - name: process-transfer
              type: call
              call: "stripe.create-transfer"
              with:
                amount: "{{get-sales-summary.net_revenue}}"
                destination: "{{organizer_id}}"
                metadata: '{"event_id":"{{event_id}}"}'
            - name: record-payout
              type: call
              call: "workday.post-journal-entry"
              with:
                account: "organizer_payouts"
                amount: "{{get-sales-summary.net_revenue}}"
                reference: "{{event_id}}_{{organizer_id}}"
            - name: confirm-payout
              type: call
              call: "slack.post-message"
              with:
                channel: "finance"
                text: "Payout processed: ${{get-sales-summary.net_revenue}} to organizer {{organizer_id}} for event {{event_id}}. Transfer ID: {{process-transfer.id}}"
  consumes:
    - type: http
      namespace: eventbrite
      baseUri: "https://www.eventbriteapi.com/v3"
      authentication:
        type: bearer
        token: "$secrets.eventbrite_token"
      resources:
        - name: orders
          path: "/events/{{event_id}}/orders"
          inputParameters:
            - name: event_id
              in: path
          operations:
            - name: get-event-orders
              method: GET
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: transfers
          path: "/transfers"
          operations:
            - name: create-transfer
              method: POST
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: journals
          path: "/journal-entries"
          operations:
            - name: post-journal-entry
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Creates an Instagram post promoting an event with image, caption, and event link.

naftiko: "0.5"
info:
  label: "Event Promotion via Instagram"
  description: "Creates an Instagram post promoting an event with image, caption, and event link."
  tags:
    - marketing
    - social-media
    - instagram
capability:
  exposes:
    - type: mcp
      namespace: social-instagram
      port: 8080
      tools:
        - name: promote-event-instagram
          description: "Post an Instagram promotion for an event."
          inputParameters:
            - name: image_url
              in: body
              type: string
              description: "URL of the promotional image."
            - name: caption
              in: body
              type: string
              description: "Post caption with event details."
          call: "instagram.create-post"
          with:
            image_url: "{{image_url}}"
            caption: "{{caption}}"
  consumes:
    - type: http
      namespace: instagram
      baseUri: "https://graph.facebook.com/v17.0"
      authentication:
        type: bearer
        token: "$secrets.instagram_token"
      resources:
        - name: media
          path: "/media"
          operations:
            - name: create-post
              method: POST

Pulls ticket sales from Eventbrite, payment records from Stripe, and reconciles totals in Workday Financials, flagging discrepancies in Jira.

naftiko: "0.5"
info:
  label: "Event Revenue Reconciliation"
  description: "Pulls ticket sales from Eventbrite, payment records from Stripe, and reconciles totals in Workday Financials, flagging discrepancies in Jira."
  tags:
    - payments
    - finance
    - eventbrite
    - stripe
    - workday
    - jira
capability:
  exposes:
    - type: mcp
      namespace: revenue-recon
      port: 8080
      tools:
        - name: reconcile-event-revenue
          description: "Reconcile Eventbrite sales against Stripe payments and Workday records."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The Eventbrite event ID."
            - name: date
              in: body
              type: string
              description: "Reconciliation date YYYY-MM-DD."
          steps:
            - name: get-sales
              type: call
              call: "eventbrite.get-event-orders"
              with:
                event_id: "{{event_id}}"
            - name: get-payments
              type: call
              call: "stripe.list-charges"
              with:
                metadata: '{"event_id":"{{event_id}}"}'
                created_after: "{{date}}"
            - name: update-financials
              type: call
              call: "workday.post-journal-entry"
              with:
                account: "ticket_revenue"
                amount: "{{get-sales.total_revenue}}"
                date: "{{date}}"
            - name: flag-discrepancy
              type: call
              call: "jira.create-issue"
              with:
                project_key: "FIN"
                summary: "Revenue discrepancy: Event {{event_id}}"
                description: "Eventbrite total: {{get-sales.total_revenue}}. Stripe total: {{get-payments.total}}. Variance: {{get-sales.variance}}"
                priority: "High"
  consumes:
    - type: http
      namespace: eventbrite
      baseUri: "https://www.eventbriteapi.com/v3"
      authentication:
        type: bearer
        token: "$secrets.eventbrite_token"
      resources:
        - name: orders
          path: "/events/{{event_id}}/orders"
          inputParameters:
            - name: event_id
              in: path
          operations:
            - name: get-event-orders
              method: GET
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: charges
          path: "/charges"
          operations:
            - name: list-charges
              method: GET
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: journals
          path: "/journal-entries"
          operations:
            - name: post-journal-entry
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://eventbrite.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Aggregates ticket sales from Eventbrite, payment data from Stripe, marketing metrics from Google Analytics, and produces a Snowflake analytics report shared via Slack.

naftiko: "0.5"
info:
  label: "Event Ticketing Analytics Dashboard"
  description: "Aggregates ticket sales from Eventbrite, payment data from Stripe, marketing metrics from Google Analytics, and produces a Snowflake analytics report shared via Slack."
  tags:
    - analytics
    - ticketing
    - eventbrite
    - stripe
    - google-analytics
    - snowflake
    - slack
capability:
  exposes:
    - type: mcp
      namespace: ticketing-analytics
      port: 8080
      tools:
        - name: build-ticketing-dashboard
          description: "Aggregate sales, payments, and traffic data into an analytics dashboard."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The Eventbrite event ID."
            - name: date_range
              in: body
              type: string
              description: "Date range for analysis (e.g., last_7d)."
          steps:
            - name: get-sales
              type: call
              call: "eventbrite.get-event-orders"
              with:
                event_id: "{{event_id}}"
            - name: get-payments
              type: call
              call: "stripe.list-charges"
              with:
                metadata: '{"event_id":"{{event_id}}"}'
            - name: get-traffic
              type: call
              call: "ga.get-report"
              with:
                property_id: "eventbrite_web"
                date_from: "{{date_range}}"
                date_to: "today"
            - name: run-analytics
              type: call
              call: "snowflake.execute-query"
              with:
                statement: "CALL sp_ticketing_dashboard('{{event_id}}', '{{date_range}}')"
                warehouse: "analytics_wh"
            - name: share-report
              type: call
              call: "slack.post-message"
              with:
                channel: "analytics"
                text: "Ticketing Dashboard (Event {{event_id}}): {{get-sales.total_tickets}} tickets sold, ${{get-payments.total}} revenue, {{get-traffic.sessions}} page views."
  consumes:
    - type: http
      namespace: eventbrite
      baseUri: "https://www.eventbriteapi.com/v3"
      authentication:
        type: bearer
        token: "$secrets.eventbrite_token"
      resources:
        - name: orders
          path: "/events/{{event_id}}/orders"
          inputParameters:
            - name: event_id
              in: path
          operations:
            - name: get-event-orders
              method: GET
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: charges
          path: "/charges"
          operations:
            - name: list-charges
              method: GET
    - type: http
      namespace: ga
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: get-report
              method: POST
    - type: http
      namespace: snowflake
      baseUri: "https://eventbrite.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: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Retrieves venue details from the Eventbrite API including address, capacity, and amenities.

naftiko: "0.5"
info:
  label: "Event Venue Lookup"
  description: "Retrieves venue details from the Eventbrite API including address, capacity, and amenities."
  tags:
    - events
    - venues
    - eventbrite
capability:
  exposes:
    - type: mcp
      namespace: venues
      port: 8080
      tools:
        - name: get-venue
          description: "Look up an Eventbrite venue by ID."
          inputParameters:
            - name: venue_id
              in: body
              type: string
              description: "The venue identifier."
          call: "eventbrite.get-venue"
          with:
            venue_id: "{{venue_id}}"
  consumes:
    - type: http
      namespace: eventbrite
      baseUri: "https://www.eventbriteapi.com/v3"
      authentication:
        type: bearer
        token: "$secrets.eventbrite_token"
      resources:
        - name: venues
          path: "/venues/{{venue_id}}"
          inputParameters:
            - name: venue_id
              in: path
          operations:
            - name: get-venue
              method: GET

Audits expenses at Eventbrite via Concur, compliance checks, and email.

naftiko: "0.5"
info:
  label: "Expense Audit Pipeline"
  description: "Audits expenses at Eventbrite via Concur, compliance checks, and email."
  tags:
    - finance
    - travel
    - sap-concur
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: expense-audit
      port: 8080
      tools:
        - name: audit
          description: "Audit expenses at Eventbrite."
          inputParameters:
            - name: report_id
              in: body
              type: string
              description: "Report ID."
          steps:
            - name: get
              type: call
              call: "concur.get-report"
              with:
                id: "{{report_id}}"
            - name: check
              type: call
              call: "compliance.check"
              with:
                expenses: "{{get.entries}}"
            - name: flag
              type: call
              call: "workflow.flag"
              with:
                id: "{{report_id}}"
                violations: "{{check.violations}}"
            - name: notify
              type: call
              call: "email.send"
              with:
                to: "{{get.approver}}"
                subject: "Expense {{report_id}} violations"
  consumes:
    - type: http
      namespace: concur
      baseUri: "https://us.api.concursolutions.com/api/v3.0"
      authentication:
        type: bearer
        token: "$secrets.concur_token"
      resources:
        - name: reports
          path: "/expense/reports/{{id}}"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-report
              method: GET
    - type: http
      namespace: compliance
      baseUri: "https://compliance.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: policies
          path: "/check"
          operations:
            - name: check
              method: POST
    - type: http
      namespace: workflow
      baseUri: "https://workflow.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workflow_token"
      resources:
        - name: reviews
          path: "/flag"
          operations:
            - name: flag
              method: POST
    - type: http
      namespace: email
      baseUri: "https://email.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.email_token"
      resources:
        - name: messages
          path: "/send"
          operations:
            - name: send
              method: POST

Analyzes feedback at Eventbrite via surveys, AI sentiment, and Power BI.

naftiko: "0.5"
info:
  label: "Customer Feedback Pipeline"
  description: "Analyzes feedback at Eventbrite via surveys, AI sentiment, and Power BI."
  tags:
    - customer-experience
    - analytics
    - sentiment-analysis
capability:
  exposes:
    - type: mcp
      namespace: feedback
      port: 8080
      tools:
        - name: analyze
          description: "Analyze feedback at Eventbrite."
          inputParameters:
            - name: survey_id
              in: body
              type: string
              description: "Survey ID."
          steps:
            - name: collect
              type: call
              call: "survey.get"
              with:
                id: "{{survey_id}}"
            - name: sentiment
              type: call
              call: "ai.analyze"
              with:
                text: "{{collect.responses}}"
            - name: themes
              type: call
              call: "ai.themes"
              with:
                data: "{{collect.responses}}"
            - name: dashboard
              type: call
              call: "power-bi.refresh"
              with:
                dataset: "cx"
  consumes:
    - type: http
      namespace: survey
      baseUri: "https://surveys.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.survey_token"
      resources:
        - name: responses
          path: "/surveys/{{id}}/responses"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get
              method: GET
    - type: http
      namespace: ai
      baseUri: "https://api.openai.com/v1"
      authentication:
        type: bearer
        token: "$secrets.openai_api_key"
      resources:
        - name: completions
          path: "/chat/completions"
          operations:
            - name: analyze
              method: POST
    - type: http
      namespace: power-bi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.power_bi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset}}/refreshes"
          inputParameters:
            - name: dataset
              in: path
          operations:
            - name: refresh
              method: POST

Exports event promotional design assets from Figma and uploads them to Google Drive for the marketing team.

naftiko: "0.5"
info:
  label: "Figma Event Design Asset Export"
  description: "Exports event promotional design assets from Figma and uploads them to Google Drive for the marketing team."
  tags:
    - design
    - figma
    - google-drive
capability:
  exposes:
    - type: mcp
      namespace: design-assets
      port: 8080
      tools:
        - name: export-design-assets
          description: "Export Figma designs and upload to Google Drive."
          inputParameters:
            - name: file_id
              in: body
              type: string
              description: "The Figma file ID."
            - name: node_ids
              in: body
              type: string
              description: "Comma-separated Figma node IDs to export."
            - name: drive_folder_id
              in: body
              type: string
              description: "Google Drive folder ID for uploads."
          steps:
            - name: export-images
              type: call
              call: "figma.export-images"
              with:
                file_id: "{{file_id}}"
                ids: "{{node_ids}}"
                format: "png"
            - name: upload-to-drive
              type: call
              call: "gdrive.upload-file"
              with:
                folder_id: "{{drive_folder_id}}"
                file_name: "event_assets_{{file_id}}.zip"
                content: "{{export-images.download_url}}"
  consumes:
    - type: http
      namespace: figma
      baseUri: "https://api.figma.com/v1"
      authentication:
        type: bearer
        token: "$secrets.figma_token"
      resources:
        - name: images
          path: "/images/{{file_id}}"
          inputParameters:
            - name: file_id
              in: path
          operations:
            - name: export-images
              method: GET
    - type: http
      namespace: gdrive
      baseUri: "https://www.googleapis.com/upload/drive/v3"
      authentication:
        type: bearer
        token: "$secrets.google_drive_token"
      resources:
        - name: files
          path: "/files"
          operations:
            - name: upload-file
              method: POST

Checks GitHub repo at Eventbrite.

naftiko: "0.5"
info:
  label: "GitHub Repo Check"
  description: "Checks GitHub repo at Eventbrite."
  tags:
    - devops
    - github
    - version-control
capability:
  exposes:
    - type: mcp
      namespace: gh-repo
      port: 8080
      tools:
        - name: get-branch
          description: "Check branch at Eventbrite."
          inputParameters:
            - name: repo
              in: body
              type: string
              description: "Repo."
            - name: branch
              in: body
              type: string
              description: "Branch."
          call: "github.get-branch"
          with:
            repo: "{{repo}}"
            branch: "{{branch}}"
          outputParameters:
            - name: sha
              type: string
              mapping: "$.commit.sha"
  consumes:
    - type: http
      namespace: github
      baseUri: "https://api.github.com"
      authentication:
        type: bearer
        token: "$secrets.github_token"
      resources:
        - name: branches
          path: "/repos/org/{{repo}}/branches/{{branch}}"
          inputParameters:
            - name: repo
              in: path
            - name: branch
              in: path
          operations:
            - name: get-branch
              method: GET

Retrieves Gong call analytics for event sales conversations and returns talk ratio, topics, and follow-up actions.

naftiko: "0.5"
info:
  label: "Gong Sales Call Analytics"
  description: "Retrieves Gong call analytics for event sales conversations and returns talk ratio, topics, and follow-up actions."
  tags:
    - sales
    - gong
capability:
  exposes:
    - type: mcp
      namespace: sales-analytics
      port: 8080
      tools:
        - name: get-call-analytics
          description: "Fetch Gong call analytics by call ID."
          inputParameters:
            - name: call_id
              in: body
              type: string
              description: "The Gong call identifier."
          call: "gong.get-call"
          with:
            call_id: "{{call_id}}"
  consumes:
    - type: http
      namespace: gong
      baseUri: "https://api.gong.io/v2"
      authentication:
        type: bearer
        token: "$secrets.gong_token"
      resources:
        - name: calls
          path: "/calls/{{call_id}}"
          inputParameters:
            - name: call_id
              in: path
          operations:
            - name: get-call
              method: GET

Fetches a Google Analytics report for event page traffic and conversion metrics.

naftiko: "0.5"
info:
  label: "Google Analytics Event Tracking Report"
  description: "Fetches a Google Analytics report for event page traffic and conversion metrics."
  tags:
    - analytics
    - google-analytics
capability:
  exposes:
    - type: mcp
      namespace: web-analytics
      port: 8080
      tools:
        - name: get-event-analytics
          description: "Fetch GA4 report for event page performance."
          inputParameters:
            - name: property_id
              in: body
              type: string
              description: "GA4 property ID."
            - name: date_from
              in: body
              type: string
              description: "Start date YYYY-MM-DD."
            - name: date_to
              in: body
              type: string
              description: "End date YYYY-MM-DD."
          call: "ga.get-report"
          with:
            property_id: "{{property_id}}"
            date_from: "{{date_from}}"
            date_to: "{{date_to}}"
  consumes:
    - type: http
      namespace: ga
      baseUri: "https://analyticsdata.googleapis.com/v1beta"
      authentication:
        type: bearer
        token: "$secrets.google_analytics_token"
      resources:
        - name: reports
          path: "/properties/{{property_id}}:runReport"
          inputParameters:
            - name: property_id
              in: path
          operations:
            - name: get-report
              method: POST

Fetches a file from Google Drive by file ID and returns metadata and download link.

naftiko: "0.5"
info:
  label: "Google Drive File Retrieval"
  description: "Fetches a file from Google Drive by file ID and returns metadata and download link."
  tags:
    - content
    - google-drive
capability:
  exposes:
    - type: mcp
      namespace: drive-files
      port: 8080
      tools:
        - name: get-drive-file
          description: "Retrieve a Google Drive file by ID."
          inputParameters:
            - name: file_id
              in: body
              type: string
              description: "The Google Drive file ID."
          call: "gdrive.get-file"
          with:
            file_id: "{{file_id}}"
  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}}"
          inputParameters:
            - name: file_id
              in: path
          operations:
            - name: get-file
              method: GET

Fetches Google Search Console search analytics for event landing pages including clicks, impressions, and CTR.

naftiko: "0.5"
info:
  label: "Google Search Console Performance"
  description: "Fetches Google Search Console search analytics for event landing pages including clicks, impressions, and CTR."
  tags:
    - marketing
    - seo
    - google-search-console
capability:
  exposes:
    - type: mcp
      namespace: seo-analytics
      port: 8080
      tools:
        - name: get-search-performance
          description: "Fetch GSC search analytics for event pages."
          inputParameters:
            - name: site_url
              in: body
              type: string
              description: "The site URL registered in GSC."
            - name: date_from
              in: body
              type: string
              description: "Start date YYYY-MM-DD."
            - name: date_to
              in: body
              type: string
              description: "End date YYYY-MM-DD."
          call: "gsc.query-analytics"
          with:
            site_url: "{{site_url}}"
            start_date: "{{date_from}}"
            end_date: "{{date_to}}"
  consumes:
    - type: http
      namespace: gsc
      baseUri: "https://www.googleapis.com/webmasters/v3"
      authentication:
        type: bearer
        token: "$secrets.google_search_console_token"
      resources:
        - name: analytics
          path: "/sites/{{site_url}}/searchAnalytics/query"
          inputParameters:
            - name: site_url
              in: path
          operations:
            - name: query-analytics
              method: POST

Updates a Google Sheets spreadsheet with event data for reporting and analysis.

naftiko: "0.5"
info:
  label: "Google Sheets Report Update"
  description: "Updates a Google Sheets spreadsheet with event data for reporting and analysis."
  tags:
    - reporting
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: sheets-reporting
      port: 8080
      tools:
        - name: update-sheet
          description: "Update a Google Sheets range with data."
          inputParameters:
            - name: spreadsheet_id
              in: body
              type: string
              description: "Google Sheets spreadsheet ID."
            - name: range
              in: body
              type: string
              description: "Cell range (e.g., Sheet1!A1:D10)."
            - name: values
              in: body
              type: string
              description: "JSON array of row values."
          call: "gsheets.update-values"
          with:
            spreadsheet_id: "{{spreadsheet_id}}"
            range: "{{range}}"
            values: "{{values}}"
  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: update-values
              method: PUT

Checks Grafana dashboard at Eventbrite.

naftiko: "0.5"
info:
  label: "Grafana Dashboard Status"
  description: "Checks Grafana dashboard at Eventbrite."
  tags:
    - monitoring
    - grafana
    - dashboards
capability:
  exposes:
    - type: mcp
      namespace: grafana
      port: 8080
      tools:
        - name: check-dash
          description: "Check dashboard at Eventbrite."
          inputParameters:
            - name: uid
              in: body
              type: string
              description: "Dashboard UID."
          call: "grafana.get-dash"
          with:
            uid: "{{uid}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.dashboard.title"
  consumes:
    - type: http
      namespace: grafana
      baseUri: "https://grafana.eventbrite.com/api"
      authentication:
        type: bearer
        token: "$secrets.grafana_token"
      resources:
        - name: dashboards
          path: "/dashboards/uid/{{uid}}"
          inputParameters:
            - name: uid
              in: path
          operations:
            - name: get-dash
              method: GET

Retrieves a HubSpot contact record for marketing and event CRM integration.

naftiko: "0.5"
info:
  label: "HubSpot Contact Lookup"
  description: "Retrieves a HubSpot contact record for marketing and event CRM integration."
  tags:
    - marketing
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: crm-contacts
      port: 8080
      tools:
        - name: get-contact
          description: "Fetch a HubSpot contact by email."
          inputParameters:
            - name: email
              in: body
              type: string
              description: "Contact email address."
          call: "hubspot.get-contact"
          with:
            email: "{{email}}"
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/crm/v3/objects/contacts/{{email}}"
          inputParameters:
            - name: email
              in: path
          operations:
            - name: get-contact
              method: GET

Syncs event sponsorship invoices from Salesforce to Intuit QuickBooks for accounting.

naftiko: "0.5"
info:
  label: "Intuit QuickBooks Invoice Sync"
  description: "Syncs event sponsorship invoices from Salesforce to Intuit QuickBooks for accounting."
  tags:
    - finance
    - intuit
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: invoice-sync
      port: 8080
      tools:
        - name: sync-invoice
          description: "Sync a Salesforce opportunity to a QuickBooks invoice."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "Salesforce opportunity ID."
          steps:
            - name: get-opportunity
              type: call
              call: "salesforce.get-opportunity"
              with:
                opportunity_id: "{{opportunity_id}}"
            - name: create-invoice
              type: call
              call: "intuit.create-invoice"
              with:
                customer: "{{get-opportunity.account_name}}"
                amount: "{{get-opportunity.amount}}"
                description: "Sponsorship: {{get-opportunity.name}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://eventbrite.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: opportunities
          path: "/sobjects/Opportunity/{{opportunity_id}}"
          inputParameters:
            - name: opportunity_id
              in: path
          operations:
            - name: get-opportunity
              method: GET
    - type: http
      namespace: intuit
      baseUri: "https://quickbooks.api.intuit.com/v3"
      authentication:
        type: bearer
        token: "$secrets.intuit_token"
      resources:
        - name: invoices
          path: "/company/{{company_id}}/invoice"
          operations:
            - name: create-invoice
              method: POST

Escalates IT incidents at Eventbrite via ServiceNow, PagerDuty, and Slack.

naftiko: "0.5"
info:
  label: "IT Incident Escalation Pipeline"
  description: "Escalates IT incidents at Eventbrite via ServiceNow, PagerDuty, and Slack."
  tags:
    - incident-management
    - servicenow
    - pagerduty
    - slack
capability:
  exposes:
    - type: mcp
      namespace: incident-escalation
      port: 8080
      tools:
        - name: escalate-incident
          description: "Escalate incidents at Eventbrite."
          inputParameters:
            - name: incident_id
              in: body
              type: string
              description: "Incident ID."
            - name: severity
              in: body
              type: string
              description: "Severity."
          steps:
            - name: get-incident
              type: call
              call: "servicenow.get-incident"
              with:
                incident_id: "{{incident_id}}"
            - name: page
              type: call
              call: "pagerduty.create-incident"
              with:
                title: "{{get-incident.description}}"
                urgency: "{{severity}}"
            - name: channel
              type: call
              call: "slack.create-channel"
              with:
                name: "inc-{{incident_id}}"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#inc-{{incident_id}}"
                text: "P{{severity}}: {{get-incident.description}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://eventbrite.com.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/table/incident/{{incident_id}}"
          inputParameters:
            - name: incident_id
              in: path
          operations:
            - name: get-incident
              method: GET
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_token"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: channels
          path: "/conversations.create"
          operations:
            - name: create-channel
              method: POST

Retrieves the latest Jenkins build status for event platform CI pipelines.

naftiko: "0.5"
info:
  label: "Jenkins Build Pipeline Status"
  description: "Retrieves the latest Jenkins build status for event platform CI pipelines."
  tags:
    - development
    - jenkins
capability:
  exposes:
    - type: mcp
      namespace: ci-status
      port: 8080
      tools:
        - name: get-build-status
          description: "Fetch Jenkins build status for a job."
          inputParameters:
            - name: job_name
              in: body
              type: string
              description: "Jenkins job name."
          call: "jenkins.get-build"
          with:
            job_name: "{{job_name}}"
  consumes:
    - type: http
      namespace: jenkins
      baseUri: "https://jenkins.eventbrite.com"
      authentication:
        type: basic
        username: "$secrets.jenkins_user"
        password: "$secrets.jenkins_token"
      resources:
        - name: builds
          path: "/job/{{job_name}}/lastBuild/api/json"
          inputParameters:
            - name: job_name
              in: path
          operations:
            - name: get-build
              method: GET

Creates a Jira issue for event operational tasks and links it to the event in the project board.

naftiko: "0.5"
info:
  label: "Jira Issue Creation for Event Operations"
  description: "Creates a Jira issue for event operational tasks and links it to the event in the project board."
  tags:
    - operations
    - jira
capability:
  exposes:
    - type: mcp
      namespace: event-ops
      port: 8080
      tools:
        - name: create-ops-ticket
          description: "Create a Jira ticket for event operations."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "Jira project key."
            - name: summary
              in: body
              type: string
              description: "Ticket summary."
            - name: description
              in: body
              type: string
              description: "Ticket description."
            - name: priority
              in: body
              type: string
              description: "Priority (High, Medium, Low)."
          call: "jira.create-issue"
          with:
            project_key: "{{project_key}}"
            summary: "{{summary}}"
            description: "{{description}}"
            priority: "{{priority}}"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://eventbrite.atlassian.net/rest/api/3"
      authentication:
        type: basic
        username: "$secrets.jira_user"
        password: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST

Retrieves sprint progress at Eventbrite.

naftiko: "0.5"
info:
  label: "Jira Sprint Progress Lookup"
  description: "Retrieves sprint progress at Eventbrite."
  tags:
    - project-management
    - jira
    - agile
capability:
  exposes:
    - type: mcp
      namespace: jira-sprint
      port: 8080
      tools:
        - name: get-sprint
          description: "Look up sprint at Eventbrite."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "Project key."
          call: "jira.get-sprints"
          with:
            project: "{{project_key}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.values[0].name"
            - name: state
              type: string
              mapping: "$.values[0].state"
  consumes:
    - type: http
      namespace: jira
      baseUri: "https://eventbrite.com.atlassian.net/rest/agile/1.0"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: sprints
          path: "/board/1/sprint"
          operations:
            - name: get-sprints
              method: GET

Maintains KB at Eventbrite by finding stale articles and notifying owners.

naftiko: "0.5"
info:
  label: "Knowledge Base Maintenance Pipeline"
  description: "Maintains KB at Eventbrite by finding stale articles and notifying owners."
  tags:
    - knowledge-management
    - confluence
    - maintenance
capability:
  exposes:
    - type: mcp
      namespace: kb-maint
      port: 8080
      tools:
        - name: maintain-kb
          description: "Maintain KB at Eventbrite."
          inputParameters:
            - name: space
              in: body
              type: string
              description: "Confluence space."
            - name: stale_days
              in: body
              type: number
              description: "Days threshold."
          steps:
            - name: find
              type: call
              call: "confluence.search-stale"
              with:
                space: "{{space}}"
                days: "{{stale_days}}"
            - name: notify
              type: call
              call: "email.batch"
              with:
                to: "{{find.owners}}"
                subject: "KB review needed"
            - name: flag
              type: call
              call: "confluence.add-label"
              with:
                pages: "{{find.ids}}"
                label: "needs-review"
            - name: report
              type: call
              call: "slack.post-message"
              with:
                channel: "#kb"
                text: "KB: {{find.count}} stale articles"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://eventbrite.com.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: content
          path: "/content/search"
          operations:
            - name: search-stale
              method: GET
    - type: http
      namespace: email
      baseUri: "https://email.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.email_token"
      resources:
        - name: batch
          path: "/send-batch"
          operations:
            - name: batch
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Generates KPI digest at Eventbrite from Snowflake, Oracle, Power BI, and email.

naftiko: "0.5"
info:
  label: "Weekly KPI Digest Pipeline"
  description: "Generates KPI digest at Eventbrite from Snowflake, Oracle, Power BI, and email."
  tags:
    - reporting
    - kpi
    - snowflake
    - executive
capability:
  exposes:
    - type: mcp
      namespace: kpi-digest
      port: 8080
      tools:
        - name: gen-digest
          description: "Generate KPI digest at Eventbrite."
          inputParameters:
            - name: week
              in: body
              type: string
              description: "Week ending."
            - name: dist
              in: body
              type: string
              description: "Distribution list."
          steps:
            - name: ops
              type: call
              call: "snowflake.query"
              with:
                query: "SELECT * FROM kpis WHERE w='{{week}}'"
            - name: fin
              type: call
              call: "oracle.get-summary"
              with:
                period: "{{week}}"
            - name: refresh
              type: call
              call: "power-bi.refresh"
              with:
                dataset: "exec_kpis"
            - name: send
              type: call
              call: "email.send"
              with:
                to: "{{dist}}"
                subject: "KPIs - {{week}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://eventbrite.com.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query
              method: POST
    - type: http
      namespace: oracle
      baseUri: "https://oracle.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: fin
          path: "/summary"
          operations:
            - name: get-summary
              method: GET
    - type: http
      namespace: power-bi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.power_bi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset}}/refreshes"
          inputParameters:
            - name: dataset
              in: path
          operations:
            - name: refresh
              method: POST
    - type: http
      namespace: email
      baseUri: "https://email.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.email_token"
      resources:
        - name: messages
          path: "/send"
          operations:
            - name: send
              method: POST

Checks K8s pod health at Eventbrite.

naftiko: "0.5"
info:
  label: "K8s Pod Health"
  description: "Checks K8s pod health at Eventbrite."
  tags:
    - containers
    - kubernetes
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: k8s-pod
      port: 8080
      tools:
        - name: check-pod
          description: "Check pod at Eventbrite."
          inputParameters:
            - name: namespace
              in: body
              type: string
              description: "Namespace."
            - name: pod
              in: body
              type: string
              description: "Pod name."
          call: "k8s.get-pod"
          with:
            namespace: "{{namespace}}"
            pod: "{{pod}}"
          outputParameters:
            - name: phase
              type: string
              mapping: "$.status.phase"
  consumes:
    - type: http
      namespace: k8s
      baseUri: "https://k8s.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.k8s_token"
      resources:
        - name: pods
          path: "/namespaces/{{namespace}}/pods/{{pod}}"
          inputParameters:
            - name: namespace
              in: path
            - name: pod
              in: path
          operations:
            - name: get-pod
              method: GET

Checks license compliance at Eventbrite via scanning, entitlements, and procurement.

naftiko: "0.5"
info:
  label: "License Compliance Pipeline"
  description: "Checks license compliance at Eventbrite via scanning, entitlements, and procurement."
  tags:
    - compliance
    - licensing
    - procurement
capability:
  exposes:
    - type: mcp
      namespace: license-comp
      port: 8080
      tools:
        - name: check-licenses
          description: "Check license compliance at Eventbrite."
          inputParameters:
            - name: software
              in: body
              type: string
              description: "Software."
            - name: vendor
              in: body
              type: string
              description: "Vendor."
          steps:
            - name: scan
              type: call
              call: "assets.installations"
              with:
                sw: "{{software}}"
            - name: entitlements
              type: call
              call: "licenses.get"
              with:
                sw: "{{software}}"
            - name: flag
              type: call
              call: "compliance.flag"
              with:
                installed: "{{scan.count}}"
                entitled: "{{entitlements.count}}"
            - name: procure
              type: call
              call: "servicenow.create-request"
              with:
                type: "license"
                sw: "{{software}}"
  consumes:
    - type: http
      namespace: assets
      baseUri: "https://assets.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.asset_token"
      resources:
        - name: installations
          path: "/installations"
          operations:
            - name: installations
              method: GET
    - type: http
      namespace: licenses
      baseUri: "https://licenses.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.license_token"
      resources:
        - name: ent
          path: "/entitlements"
          operations:
            - name: get
              method: GET
    - type: http
      namespace: compliance
      baseUri: "https://compliance.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.compliance_token"
      resources:
        - name: overages
          path: "/flag"
          operations:
            - name: flag
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://eventbrite.com.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST

Generates monthly security reports at Eventbrite from Splunk and Qualys.

naftiko: "0.5"
info:
  label: "Monthly Security Report Pipeline"
  description: "Generates monthly security reports at Eventbrite from Splunk and Qualys."
  tags:
    - security
    - reporting
    - splunk
    - compliance
capability:
  exposes:
    - type: mcp
      namespace: sec-report
      port: 8080
      tools:
        - name: gen-sec-report
          description: "Generate security report at Eventbrite."
          inputParameters:
            - name: month
              in: body
              type: string
              description: "Month."
          steps:
            - name: splunk
              type: call
              call: "splunk.search"
              with:
                query: "index=security earliest=-30d"
            - name: scans
              type: call
              call: "qualys.results"
              with:
                month: "{{month}}"
            - name: compile
              type: call
              call: "analytics.compile-security"
              with:
                events: "{{splunk.count}}"
                vulns: "{{scans.critical}}"
            - name: send
              type: call
              call: "email.send"
              with:
                to: "ciso@co.com"
                subject: "Security - {{month}}"
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://splunk.eventbrite.com:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: search
          path: "/search/jobs"
          operations:
            - name: search
              method: POST
    - type: http
      namespace: qualys
      baseUri: "https://qualysapi.qualys.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.qualys_token"
      resources:
        - name: results
          path: "/fo/scan/results"
          operations:
            - name: results
              method: GET
    - type: http
      namespace: analytics
      baseUri: "https://analytics.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.analytics_token"
      resources:
        - name: security
          path: "/compile"
          operations:
            - name: compile-security
              method: POST
    - type: http
      namespace: email
      baseUri: "https://email.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.email_token"
      resources:
        - name: messages
          path: "/send"
          operations:
            - name: send
              method: POST

24 hours before an event, sends reminders to registered attendees via MailChimp email, WhatsApp message, and posts a reminder on the Facebook event page.

naftiko: "0.5"
info:
  label: "Multi-Channel Event Reminder"
  description: "24 hours before an event, sends reminders to registered attendees via MailChimp email, WhatsApp message, and posts a reminder on the Facebook event page."
  tags:
    - events
    - marketing
    - mailchimp
    - whatsapp
    - facebook
capability:
  exposes:
    - type: mcp
      namespace: event-reminders
      port: 8080
      tools:
        - name: send-event-reminders
          description: "Send multi-channel reminders to event attendees."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The Eventbrite event ID."
          steps:
            - name: get-event
              type: call
              call: "eventbrite.get-event"
              with:
                event_id: "{{event_id}}"
            - name: get-attendees
              type: call
              call: "eventbrite.list-attendees"
              with:
                event_id: "{{event_id}}"
            - name: send-email
              type: call
              call: "mailchimp.send-campaign"
              with:
                list_id: "event_{{event_id}}"
                subject: "Reminder: {{get-event.name}} is tomorrow!"
                body: "Don't forget — {{get-event.name}} starts at {{get-event.start_time}}. Venue: {{get-event.venue_name}}."
            - name: send-whatsapp
              type: call
              call: "whatsapp.send-broadcast"
              with:
                template: "event_reminder"
                parameters: '{"event_name":"{{get-event.name}}","date":"{{get-event.start_date}}","venue":"{{get-event.venue_name}}"}'
            - name: post-facebook
              type: call
              call: "facebook.create-post"
              with:
                message: "Happening tomorrow: {{get-event.name}}! Last chance to register: {{get-event.url}}"
  consumes:
    - type: http
      namespace: eventbrite
      baseUri: "https://www.eventbriteapi.com/v3"
      authentication:
        type: bearer
        token: "$secrets.eventbrite_token"
      resources:
        - name: events
          path: "/events/{{event_id}}"
          inputParameters:
            - name: event_id
              in: path
          operations:
            - name: get-event
              method: GET
        - name: attendees
          path: "/events/{{event_id}}/attendees"
          inputParameters:
            - name: event_id
              in: path
          operations:
            - name: list-attendees
              method: GET
    - type: http
      namespace: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: bearer
        token: "$secrets.mailchimp_token"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: send-campaign
              method: POST
    - type: http
      namespace: whatsapp
      baseUri: "https://graph.facebook.com/v17.0"
      authentication:
        type: bearer
        token: "$secrets.whatsapp_token"
      resources:
        - name: messages
          path: "/messages"
          operations:
            - name: send-broadcast
              method: POST
    - type: http
      namespace: facebook
      baseUri: "https://graph.facebook.com/v17.0"
      authentication:
        type: bearer
        token: "$secrets.facebook_token"
      resources:
        - name: posts
          path: "/me/feed"
          operations:
            - name: create-post
              method: POST

Onboards employees at Eventbrite with Okta, ServiceNow, Slack, and calendar.

naftiko: "0.5"
info:
  label: "New Employee IT Onboarding Pipeline"
  description: "Onboards employees at Eventbrite with Okta, ServiceNow, Slack, and calendar."
  tags:
    - hr
    - onboarding
    - okta
    - servicenow
    - slack
capability:
  exposes:
    - type: mcp
      namespace: it-onboarding
      port: 8080
      tools:
        - name: onboard-employee
          description: "Onboard employees at Eventbrite."
          inputParameters:
            - name: name
              in: body
              type: string
              description: "Name."
            - name: dept
              in: body
              type: string
              description: "Department."
            - name: start
              in: body
              type: string
              description: "Start date."
          steps:
            - name: okta
              type: call
              call: "okta.create-user"
              with:
                name: "{{name}}"
                department: "{{dept}}"
            - name: equip
              type: call
              call: "servicenow.create-request"
              with:
                type: "new_hire"
                for: "{{name}}"
            - name: slack
              type: call
              call: "slack.invite"
              with:
                email: "{{okta.email}}"
            - name: orient
              type: call
              call: "calendar.create-event"
              with:
                title: "Orientation - {{name}}"
                date: "{{start}}"
  consumes:
    - type: http
      namespace: okta
      baseUri: "https://eventbrite.com.okta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.okta_api_token"
      resources:
        - name: users
          path: "/users"
          operations:
            - name: create-user
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://eventbrite.com.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: requests
          path: "/table/sc_request"
          operations:
            - name: create-request
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: users
          path: "/users.admin.invite"
          operations:
            - name: invite
              method: POST
    - type: http
      namespace: calendar
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.microsoft_graph_token"
      resources:
        - name: events
          path: "/users/hr/events"
          operations:
            - name: create-event
              method: POST

Checks New Relic APM at Eventbrite.

naftiko: "0.5"
info:
  label: "New Relic APM Check"
  description: "Checks New Relic APM at Eventbrite."
  tags:
    - monitoring
    - new-relic
    - apm
capability:
  exposes:
    - type: mcp
      namespace: nr-apm
      port: 8080
      tools:
        - name: check-apm
          description: "Check APM at Eventbrite."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "App ID."
          call: "newrelic.get-app"
          with:
            app_id: "{{app_id}}"
          outputParameters:
            - name: health
              type: string
              mapping: "$.application.health_status"
  consumes:
    - type: http
      namespace: newrelic
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: bearer
        token: "$secrets.new_relic_api_key"
      resources:
        - name: applications
          path: "/applications/{{app_id}}.json"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: get-app
              method: GET

Retrieves application performance metrics from New Relic for Eventbrite platform monitoring.

naftiko: "0.5"
info:
  label: "New Relic Performance Check"
  description: "Retrieves application performance metrics from New Relic for Eventbrite platform monitoring."
  tags:
    - monitoring
    - new-relic
capability:
  exposes:
    - type: mcp
      namespace: apm
      port: 8080
      tools:
        - name: get-app-performance
          description: "Fetch New Relic APM metrics for an application."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "The New Relic application ID."
          call: "newrelic.get-app-metrics"
          with:
            app_id: "{{app_id}}"
  consumes:
    - type: http
      namespace: newrelic
      baseUri: "https://api.newrelic.com/v2"
      authentication:
        type: bearer
        token: "$secrets.newrelic_api_key"
      resources:
        - name: applications
          path: "/applications/{{app_id}}/metrics/data.json"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: get-app-metrics
              method: GET

Checks Okta user at Eventbrite.

naftiko: "0.5"
info:
  label: "Okta User Check"
  description: "Checks Okta user at Eventbrite."
  tags:
    - identity
    - okta
    - access-management
capability:
  exposes:
    - type: mcp
      namespace: okta-user
      port: 8080
      tools:
        - name: check-user
          description: "Check user at Eventbrite."
          inputParameters:
            - name: email
              in: body
              type: string
              description: "Email."
          call: "okta.get-user"
          with:
            email: "{{email}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.status"
  consumes:
    - type: http
      namespace: okta
      baseUri: "https://eventbrite.com.okta.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.okta_api_token"
      resources:
        - name: users
          path: "/users/{{email}}"
          inputParameters:
            - name: email
              in: path
          operations:
            - name: get-user
              method: GET

Checks on-call at Eventbrite.

naftiko: "0.5"
info:
  label: "PagerDuty On-Call Check"
  description: "Checks on-call at Eventbrite."
  tags:
    - incident-management
    - pagerduty
    - on-call
capability:
  exposes:
    - type: mcp
      namespace: pd-oncall
      port: 8080
      tools:
        - name: get-oncall
          description: "Check on-call at Eventbrite."
          inputParameters:
            - name: schedule_id
              in: body
              type: string
              description: "Schedule ID."
          call: "pagerduty.get-oncall"
          with:
            schedule_id: "{{schedule_id}}"
          outputParameters:
            - name: user
              type: string
              mapping: "$.oncalls[0].user.summary"
  consumes:
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_token"
      resources:
        - name: oncalls
          path: "/oncalls"
          operations:
            - name: get-oncall
              method: GET

Queries Palo Alto Networks for threat intelligence on suspicious IPs accessing the platform.

naftiko: "0.5"
info:
  label: "Palo Alto Networks Threat Query"
  description: "Queries Palo Alto Networks for threat intelligence on suspicious IPs accessing the platform."
  tags:
    - security
    - palo-alto-networks
capability:
  exposes:
    - type: mcp
      namespace: threat-intel
      port: 8080
      tools:
        - name: query-threat
          description: "Look up threat intelligence for an indicator."
          inputParameters:
            - name: indicator
              in: body
              type: string
              description: "IP address or domain."
          call: "paloalto.get-threat"
          with:
            indicator: "{{indicator}}"
  consumes:
    - type: http
      namespace: paloalto
      baseUri: "https://api.paloaltonetworks.com/v1"
      authentication:
        type: bearer
        token: "$secrets.paloalto_token"
      resources:
        - name: threats
          path: "/threats/{{indicator}}"
          inputParameters:
            - name: indicator
              in: path
          operations:
            - name: get-threat
              method: GET

After an event ends, sends a Google Forms survey to all attendees via MailChimp, collects responses, and creates a summary report in Google Sheets.

naftiko: "0.5"
info:
  label: "Post-Event Survey and Feedback Pipeline"
  description: "After an event ends, sends a Google Forms survey to all attendees via MailChimp, collects responses, and creates a summary report in Google Sheets."
  tags:
    - events
    - feedback
    - google-forms
    - mailchimp
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: event-feedback
      port: 8080
      tools:
        - name: trigger-post-event-survey
          description: "Send survey to attendees, collect responses, and summarize in Sheets."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The Eventbrite event ID."
            - name: survey_form_id
              in: body
              type: string
              description: "The Google Forms survey ID."
          steps:
            - name: get-attendees
              type: call
              call: "eventbrite.list-attendees"
              with:
                event_id: "{{event_id}}"
            - name: send-survey
              type: call
              call: "mailchimp.send-campaign"
              with:
                list_id: "event_{{event_id}}"
                subject: "How was your experience? Share your feedback!"
                body: "Thank you for attending! Please take our quick survey: https://forms.google.com/{{survey_form_id}}"
            - name: create-summary
              type: call
              call: "gsheets.create-sheet"
              with:
                spreadsheet_id: "event_feedback_tracker"
                title: "Feedback — Event {{event_id}}"
                data: '{"event_id":"{{event_id}}","attendee_count":"{{get-attendees.count}}","survey_sent":"true"}'
  consumes:
    - type: http
      namespace: eventbrite
      baseUri: "https://www.eventbriteapi.com/v3"
      authentication:
        type: bearer
        token: "$secrets.eventbrite_token"
      resources:
        - name: attendees
          path: "/events/{{event_id}}/attendees"
          inputParameters:
            - name: event_id
              in: path
          operations:
            - name: list-attendees
              method: GET
    - type: http
      namespace: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: bearer
        token: "$secrets.mailchimp_token"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: send-campaign
              method: POST
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: sheets
          path: "/spreadsheets/{{spreadsheet_id}}/sheets"
          inputParameters:
            - name: spreadsheet_id
              in: path
          operations:
            - name: create-sheet
              method: POST

Executes a PostgreSQL query against the Eventbrite analytics database for custom reporting.

naftiko: "0.5"
info:
  label: "PostgreSQL Analytics Query"
  description: "Executes a PostgreSQL query against the Eventbrite analytics database for custom reporting."
  tags:
    - data
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: db-analytics
      port: 8080
      tools:
        - name: run-query
          description: "Execute a PostgreSQL analytics query."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "SQL query to execute."
            - name: database
              in: body
              type: string
              description: "Target database name."
          call: "postgres.execute-query"
          with:
            query: "{{query}}"
            database: "{{database}}"
  consumes:
    - type: http
      namespace: postgres
      baseUri: "https://db-proxy.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.postgres_token"
      resources:
        - name: queries
          path: "/query"
          operations:
            - name: execute-query
              method: POST

Creates postmortems at Eventbrite.

naftiko: "0.5"
info:
  label: "Incident Postmortem Pipeline"
  description: "Creates postmortems at Eventbrite."
  tags:
    - incident-management
    - postmortem
    - pagerduty
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: postmortem
      port: 8080
      tools:
        - name: create-postmortem
          description: "Create postmortem at Eventbrite."
          inputParameters:
            - name: incident_id
              in: body
              type: string
              description: "Incident ID."
          steps:
            - name: timeline
              type: call
              call: "pagerduty.get-log"
              with:
                id: "{{incident_id}}"
            - name: metrics
              type: call
              call: "datadog.get-metrics"
              with:
                incident: "{{incident_id}}"
            - name: doc
              type: call
              call: "confluence.create-page"
              with:
                title: "Postmortem: {{timeline.title}}"
                body: "Impact: {{metrics.impact}}"
            - name: review
              type: call
              call: "calendar.create-event"
              with:
                title: "Review: {{timeline.title}}"
  consumes:
    - type: http
      namespace: pagerduty
      baseUri: "https://api.pagerduty.com"
      authentication:
        type: bearer
        token: "$secrets.pagerduty_token"
      resources:
        - name: incidents
          path: "/incidents/{{id}}/log_entries"
          inputParameters:
            - name: id
              in: path
          operations:
            - name: get-log
              method: GET
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: incidents
          path: "/incidents"
          operations:
            - name: get-metrics
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://eventbrite.com.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST
    - type: http
      namespace: calendar
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.microsoft_graph_token"
      resources:
        - name: events
          path: "/users/sre/events"
          operations:
            - name: create-event
              method: POST

Checks Power BI refresh at Eventbrite.

naftiko: "0.5"
info:
  label: "Power BI Refresh Check"
  description: "Checks Power BI refresh at Eventbrite."
  tags:
    - analytics
    - power-bi
    - dashboards
capability:
  exposes:
    - type: mcp
      namespace: pbi-refresh
      port: 8080
      tools:
        - name: check-refresh
          description: "Check refresh at Eventbrite."
          inputParameters:
            - name: dataset_id
              in: body
              type: string
              description: "Dataset ID."
          call: "power-bi.get-refresh"
          with:
            dataset_id: "{{dataset_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.value[0].status"
  consumes:
    - type: http
      namespace: power-bi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.power_bi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset_id}}/refreshes"
          inputParameters:
            - name: dataset_id
              in: path
          operations:
            - name: get-refresh
              method: GET

Queries Prometheus for platform infrastructure metrics used in event service monitoring.

naftiko: "0.5"
info:
  label: "Prometheus Metrics Query"
  description: "Queries Prometheus for platform infrastructure metrics used in event service monitoring."
  tags:
    - monitoring
    - prometheus
capability:
  exposes:
    - type: mcp
      namespace: prometheus-metrics
      port: 8080
      tools:
        - name: query-prometheus
          description: "Execute a PromQL query."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "PromQL query string."
            - name: time
              in: body
              type: string
              description: "Evaluation timestamp (RFC3339 or Unix)."
          call: "prometheus.query"
          with:
            query: "{{query}}"
            time: "{{time}}"
  consumes:
    - type: http
      namespace: prometheus
      baseUri: "https://prometheus.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.prometheus_token"
      resources:
        - name: queries
          path: "/query"
          operations:
            - name: query
              method: GET

Generates compliance reports at Eventbrite from Snowflake, Power BI, and email.

naftiko: "0.5"
info:
  label: "Quarterly Compliance Report Pipeline"
  description: "Generates compliance reports at Eventbrite from Snowflake, Power BI, and email."
  tags:
    - compliance
    - reporting
    - snowflake
    - power-bi
capability:
  exposes:
    - type: mcp
      namespace: compliance-rpt
      port: 8080
      tools:
        - name: gen-report
          description: "Generate compliance reports at Eventbrite."
          inputParameters:
            - name: quarter
              in: body
              type: string
              description: "Quarter."
            - name: type
              in: body
              type: string
              description: "Type."
          steps:
            - name: data
              type: call
              call: "snowflake.query"
              with:
                query: "SELECT * FROM compliance WHERE q='{{quarter}}'"
            - name: metrics
              type: call
              call: "analytics.compute"
              with:
                data: "{{data.results}}"
            - name: refresh
              type: call
              call: "power-bi.refresh"
              with:
                dataset: "compliance"
            - name: send
              type: call
              call: "email.send"
              with:
                to: "compliance@co.com"
                subject: "{{type}} - {{quarter}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://eventbrite.com.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: query
              method: POST
    - type: http
      namespace: analytics
      baseUri: "https://analytics.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.analytics_token"
      resources:
        - name: metrics
          path: "/compute"
          operations:
            - name: compute
              method: POST
    - type: http
      namespace: power-bi
      baseUri: "https://api.powerbi.com/v1.0/myorg"
      authentication:
        type: bearer
        token: "$secrets.power_bi_token"
      resources:
        - name: datasets
          path: "/datasets/{{dataset}}/refreshes"
          inputParameters:
            - name: dataset
              in: path
          operations:
            - name: refresh
              method: POST
    - type: http
      namespace: email
      baseUri: "https://email.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.email_token"
      resources:
        - name: messages
          path: "/send"
          operations:
            - name: send
              method: POST

Checks Redis at Eventbrite.

naftiko: "0.5"
info:
  label: "Redis Cache Status"
  description: "Checks Redis at Eventbrite."
  tags:
    - caching
    - redis
    - infrastructure
capability:
  exposes:
    - type: mcp
      namespace: redis
      port: 8080
      tools:
        - name: check-cache
          description: "Check Redis at Eventbrite."
          inputParameters:
            - name: instance
              in: body
              type: string
              description: "Instance ID."
          call: "redis.get-info"
          with:
            instance: "{{instance}}"
          outputParameters:
            - name: memory
              type: string
              mapping: "$.used_memory_human"
  consumes:
    - type: http
      namespace: redis
      baseUri: "https://redis.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.redis_token"
      resources:
        - name: instances
          path: "/instances/{{instance}}/info"
          inputParameters:
            - name: instance
              in: path
          operations:
            - name: get-info
              method: GET

Processes a ticket refund by canceling the Eventbrite order, issuing a Stripe refund, sending a confirmation email via MailChimp, and updating the Salesforce contact record.

naftiko: "0.5"
info:
  label: "Refund Processing Pipeline"
  description: "Processes a ticket refund by canceling the Eventbrite order, issuing a Stripe refund, sending a confirmation email via MailChimp, and updating the Salesforce contact record."
  tags:
    - payments
    - ticketing
    - eventbrite
    - stripe
    - mailchimp
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: refunds
      port: 8080
      tools:
        - name: process-refund
          description: "Cancel order, issue refund, confirm via email, and update CRM."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The Eventbrite order ID."
            - name: reason
              in: body
              type: string
              description: "Refund reason."
          steps:
            - name: get-order
              type: call
              call: "eventbrite.get-order"
              with:
                order_id: "{{order_id}}"
            - name: cancel-order
              type: call
              call: "eventbrite.cancel-order"
              with:
                order_id: "{{order_id}}"
            - name: issue-refund
              type: call
              call: "stripe.create-refund"
              with:
                payment_intent: "{{get-order.payment_intent_id}}"
                reason: "{{reason}}"
            - name: send-confirmation
              type: call
              call: "mailchimp.send-transactional"
              with:
                to: "{{get-order.email}}"
                template: "refund_confirmation"
                merge_vars: '{"name":"{{get-order.attendee_name}}","amount":"{{get-order.total}}","reason":"{{reason}}"}'
            - name: update-crm
              type: call
              call: "salesforce.update-contact"
              with:
                email: "{{get-order.email}}"
                note: "Refund processed for order {{order_id}}: {{reason}}"
  consumes:
    - type: http
      namespace: eventbrite
      baseUri: "https://www.eventbriteapi.com/v3"
      authentication:
        type: bearer
        token: "$secrets.eventbrite_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET
            - name: cancel-order
              method: POST
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: refunds
          path: "/refunds"
          operations:
            - name: create-refund
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: bearer
        token: "$secrets.mailchimp_token"
      resources:
        - name: transactional
          path: "/messages/send"
          operations:
            - name: send-transactional
              method: POST
    - type: http
      namespace: salesforce
      baseUri: "https://eventbrite.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/sobjects/Contact"
          operations:
            - name: update-contact
              method: PATCH

Checks release readiness at Eventbrite.

naftiko: "0.5"
info:
  label: "Release Readiness Pipeline"
  description: "Checks release readiness at Eventbrite."
  tags:
    - release-management
    - devops
    - quality
capability:
  exposes:
    - type: mcp
      namespace: release-ready
      port: 8080
      tools:
        - name: check-release
          description: "Check release at Eventbrite."
          inputParameters:
            - name: release_id
              in: body
              type: string
              description: "Release ID."
            - name: project
              in: body
              type: string
              description: "Project."
          steps:
            - name: tests
              type: call
              call: "azdo.get-tests"
              with:
                project: "{{project}}"
                release: "{{release_id}}"
            - name: quality
              type: call
              call: "sonarqube.get-gate"
              with:
                project: "{{project}}"
            - name: security
              type: call
              call: "security.get-scan"
              with:
                project: "{{project}}"
            - name: doc
              type: call
              call: "confluence.create-page"
              with:
                title: "Release - {{release_id}}"
                body: "Tests: {{tests.pass_rate}}% Quality: {{quality.status}}"
  consumes:
    - type: http
      namespace: azdo
      baseUri: "https://dev.azure.com/eventbrite.com"
      authentication:
        type: bearer
        token: "$secrets.azdo_token"
      resources:
        - name: tests
          path: "/{{project}}/_apis/test/runs"
          inputParameters:
            - name: project
              in: path
          operations:
            - name: get-tests
              method: GET
    - type: http
      namespace: sonarqube
      baseUri: "https://sonarqube.eventbrite.com/api"
      authentication:
        type: bearer
        token: "$secrets.sonarqube_token"
      resources:
        - name: quality
          path: "/qualitygates/project_status"
          operations:
            - name: get-gate
              method: GET
    - type: http
      namespace: security
      baseUri: "https://security.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.security_token"
      resources:
        - name: scans
          path: "/results"
          operations:
            - name: get-scan
              method: GET
    - type: http
      namespace: confluence
      baseUri: "https://eventbrite.com.atlassian.net/wiki/rest/api"
      authentication:
        type: bearer
        token: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content"
          operations:
            - name: create-page
              method: POST

When a new Eventbrite registration occurs, creates a Salesforce lead with event context and notifies the sales team in Slack.

naftiko: "0.5"
info:
  label: "Salesforce Lead from Event Registration"
  description: "When a new Eventbrite registration occurs, creates a Salesforce lead with event context and notifies the sales team in Slack."
  tags:
    - sales
    - events
    - salesforce
    - slack
    - eventbrite
capability:
  exposes:
    - type: mcp
      namespace: event-leads
      port: 8080
      tools:
        - name: create-lead-from-registration
          description: "Create a Salesforce lead from an event registration and notify sales."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "The Eventbrite event ID."
            - name: attendee_id
              in: body
              type: string
              description: "The attendee ID."
          steps:
            - name: get-attendee
              type: call
              call: "eventbrite.get-attendee"
              with:
                event_id: "{{event_id}}"
                attendee_id: "{{attendee_id}}"
            - name: create-lead
              type: call
              call: "salesforce.create-lead"
              with:
                email: "{{get-attendee.email}}"
                first_name: "{{get-attendee.first_name}}"
                last_name: "{{get-attendee.last_name}}"
                company: "{{get-attendee.company}}"
                source: "Event: {{get-attendee.event_name}}"
            - name: notify-sales
              type: call
              call: "slack.post-message"
              with:
                channel: "sales-leads"
                text: "New lead from {{get-attendee.event_name}}: {{get-attendee.first_name}} {{get-attendee.last_name}} ({{get-attendee.company}}). SF ID: {{create-lead.id}}"
  consumes:
    - type: http
      namespace: eventbrite
      baseUri: "https://www.eventbriteapi.com/v3"
      authentication:
        type: bearer
        token: "$secrets.eventbrite_token"
      resources:
        - name: attendees
          path: "/events/{{event_id}}/attendees/{{attendee_id}}"
          inputParameters:
            - name: event_id
              in: path
            - name: attendee_id
              in: path
          operations:
            - name: get-attendee
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://eventbrite.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: leads
          path: "/sobjects/Lead"
          operations:
            - name: create-lead
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Checks SAP PO at Eventbrite.

naftiko: "0.5"
info:
  label: "SAP PO Check"
  description: "Checks SAP PO at Eventbrite."
  tags:
    - procurement
    - sap
    - purchase-orders
capability:
  exposes:
    - type: mcp
      namespace: sap-po
      port: 8080
      tools:
        - name: get-po
          description: "Check PO at Eventbrite."
          inputParameters:
            - name: po_number
              in: body
              type: string
              description: "PO number."
          call: "sap.get-po"
          with:
            po_number: "{{po_number}}"
          outputParameters:
            - name: vendor
              type: string
              mapping: "$.order.vendor"
            - name: status
              type: string
              mapping: "$.order.status"
  consumes:
    - type: http
      namespace: sap
      baseUri: "https://sap.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: purchase-orders
          path: "/purchase-orders/{{po_number}}"
          inputParameters:
            - name: po_number
              in: path
          operations:
            - name: get-po
              method: GET

Remediates vulnerabilities at Eventbrite via scanning, Jira, and Slack.

naftiko: "0.5"
info:
  label: "Security Vulnerability Remediation Pipeline"
  description: "Remediates vulnerabilities at Eventbrite via scanning, Jira, and Slack."
  tags:
    - security
    - vulnerability-management
    - jira
capability:
  exposes:
    - type: mcp
      namespace: vuln-fix
      port: 8080
      tools:
        - name: remediate
          description: "Fix vulnerabilities at Eventbrite."
          inputParameters:
            - name: target
              in: body
              type: string
              description: "Target."
            - name: policy
              in: body
              type: string
              description: "Policy."
          steps:
            - name: scan
              type: call
              call: "qualys.scan"
              with:
                target: "{{target}}"
                policy: "{{policy}}"
            - name: prioritize
              type: call
              call: "security.prioritize"
              with:
                scan: "{{scan.id}}"
            - name: ticket
              type: call
              call: "jira.create-issue"
              with:
                project: "SEC"
                summary: "Vulns: {{prioritize.critical}} critical"
            - name: notify
              type: call
              call: "slack.post-message"
              with:
                channel: "#security"
                text: "Scan: {{prioritize.critical}} critical"
  consumes:
    - type: http
      namespace: qualys
      baseUri: "https://qualysapi.qualys.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.qualys_token"
      resources:
        - name: scans
          path: "/fo/scan"
          operations:
            - name: scan
              method: POST
    - type: http
      namespace: security
      baseUri: "https://security.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.security_token"
      resources:
        - name: vulns
          path: "/prioritize"
          operations:
            - name: prioritize
              method: POST
    - type: http
      namespace: jira
      baseUri: "https://eventbrite.com.atlassian.net/rest/api/3"
      authentication:
        type: bearer
        token: "$secrets.jira_token"
      resources:
        - name: issues
          path: "/issue"
          operations:
            - name: create-issue
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Checks IT incident in ServiceNow for Eventbrite.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Detail Check"
  description: "Checks IT incident in ServiceNow for Eventbrite."
  tags:
    - it-service
    - servicenow
    - incident-management
capability:
  exposes:
    - type: mcp
      namespace: snow-incident
      port: 8080
      tools:
        - name: check-incident
          description: "Check incident at Eventbrite."
          inputParameters:
            - name: incident_number
              in: body
              type: string
              description: "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"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://eventbrite.com.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: get-incident
              method: GET

Creates a ServiceNow IT request for event infrastructure needs.

naftiko: "0.5"
info:
  label: "ServiceNow IT Request"
  description: "Creates a ServiceNow IT request for event infrastructure needs."
  tags:
    - operations
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: it-requests
      port: 8080
      tools:
        - name: create-it-request
          description: "Create a ServiceNow IT request for event infrastructure."
          inputParameters:
            - name: summary
              in: body
              type: string
              description: "Request summary."
            - name: description
              in: body
              type: string
              description: "Request description."
            - name: priority
              in: body
              type: string
              description: "Priority level."
          call: "servicenow.create-request"
          with:
            short_description: "{{summary}}"
            description: "{{description}}"
            priority: "{{priority}}"
  consumes:
    - type: http
      namespace: servicenow
      baseUri: "https://eventbrite.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

Retrieves SharePoint metadata at Eventbrite.

naftiko: "0.5"
info:
  label: "SharePoint File Metadata"
  description: "Retrieves SharePoint metadata at Eventbrite."
  tags:
    - document-management
    - sharepoint
    - collaboration
capability:
  exposes:
    - type: mcp
      namespace: sp-docs
      port: 8080
      tools:
        - name: get-file
          description: "Look up file at Eventbrite."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "Site ID."
            - name: file_path
              in: body
              type: string
              description: "Path."
          call: "sharepoint.get-file"
          with:
            site_id: "{{site_id}}"
            path: "{{file_path}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.name"
            - name: size
              type: number
              mapping: "$.size"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.microsoft_graph_token"
      resources:
        - name: files
          path: "/sites/{{site_id}}/drive/root:/{{path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: path
              in: path
          operations:
            - name: get-file
              method: GET

Monitors SLAs at Eventbrite via Datadog and Slack.

naftiko: "0.5"
info:
  label: "SLA Monitoring Pipeline"
  description: "Monitors SLAs at Eventbrite via Datadog and Slack."
  tags:
    - operations
    - sla
    - datadog
    - slack
capability:
  exposes:
    - type: mcp
      namespace: sla-monitor
      port: 8080
      tools:
        - name: check-sla
          description: "Monitor SLAs at Eventbrite."
          inputParameters:
            - name: service
              in: body
              type: string
              description: "Service."
            - name: target
              in: body
              type: number
              description: "SLA target %."
          steps:
            - name: metrics
              type: call
              call: "datadog.get-sla"
              with:
                service: "{{service}}"
            - name: check
              type: call
              call: "analytics.check-sla"
              with:
                uptime: "{{metrics.uptime}}"
                target: "{{target}}"
            - name: alert
              type: call
              call: "slack.post-message"
              with:
                channel: "#ops"
                text: "SLA: {{service}} at {{metrics.uptime}}% (target: {{target}}%)"
            - name: log
              type: call
              call: "servicenow.create-incident"
              with:
                desc: "SLA breach: {{service}}"
  consumes:
    - type: http
      namespace: datadog
      baseUri: "https://api.datadoghq.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.datadog_api_key"
      resources:
        - name: metrics
          path: "/metrics"
          operations:
            - name: get-sla
              method: GET
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST
    - type: http
      namespace: servicenow
      baseUri: "https://eventbrite.com.service-now.com/api/now"
      authentication:
        type: bearer
        token: "$secrets.servicenow_token"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST

Sends a message to a Slack channel for internal team communication and event coordination.

naftiko: "0.5"
info:
  label: "Slack Channel Notification"
  description: "Sends a message to a Slack channel for internal team communication and event coordination."
  tags:
    - communications
    - slack
capability:
  exposes:
    - type: mcp
      namespace: messaging
      port: 8080
      tools:
        - name: send-slack-message
          description: "Post a message to a Slack channel."
          inputParameters:
            - name: channel
              in: body
              type: string
              description: "Slack channel name or ID."
            - name: text
              in: body
              type: string
              description: "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_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Executes a Snowflake SQL query for event analytics and returns the result set.

naftiko: "0.5"
info:
  label: "Snowflake Analytics Query"
  description: "Executes a Snowflake SQL query for event analytics and returns the result set."
  tags:
    - data
    - analytics
    - snowflake
capability:
  exposes:
    - type: mcp
      namespace: data-analytics
      port: 8080
      tools:
        - name: run-analytics-query
          description: "Execute a Snowflake SQL query for event analytics."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "SQL query to execute."
            - name: warehouse
              in: body
              type: string
              description: "Snowflake warehouse name."
          call: "snowflake.execute-query"
          with:
            statement: "{{query}}"
            warehouse: "{{warehouse}}"
  consumes:
    - type: http
      namespace: snowflake
      baseUri: "https://eventbrite.snowflakecomputing.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.snowflake_token"
      resources:
        - name: statements
          path: "/statements"
          operations:
            - name: execute-query
              method: POST

Retrieves SonarQube project quality metrics for Eventbrite platform code quality gates.

naftiko: "0.5"
info:
  label: "SonarQube Code Quality Check"
  description: "Retrieves SonarQube project quality metrics for Eventbrite platform code quality gates."
  tags:
    - development
    - sonarqube
capability:
  exposes:
    - type: mcp
      namespace: code-quality
      port: 8080
      tools:
        - name: get-quality-gate
          description: "Fetch SonarQube quality gate status for a project."
          inputParameters:
            - name: project_key
              in: body
              type: string
              description: "SonarQube project key."
          call: "sonarqube.get-quality-gate"
          with:
            project_key: "{{project_key}}"
  consumes:
    - type: http
      namespace: sonarqube
      baseUri: "https://sonar.eventbrite.com/api"
      authentication:
        type: bearer
        token: "$secrets.sonarqube_token"
      resources:
        - name: quality-gates
          path: "/qualitygates/project_status"
          operations:
            - name: get-quality-gate
              method: GET

Searches Splunk at Eventbrite.

naftiko: "0.5"
info:
  label: "Splunk Log Search"
  description: "Searches Splunk at Eventbrite."
  tags:
    - security
    - splunk
    - logging
capability:
  exposes:
    - type: mcp
      namespace: splunk-search
      port: 8080
      tools:
        - name: search-logs
          description: "Search logs at Eventbrite."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "SPL query."
          call: "splunk.search"
          with:
            query: "{{query}}"
          outputParameters:
            - name: count
              type: number
              mapping: "$.results.count"
  consumes:
    - type: http
      namespace: splunk
      baseUri: "https://splunk.eventbrite.com:8089/services"
      authentication:
        type: bearer
        token: "$secrets.splunk_token"
      resources:
        - name: search
          path: "/search/jobs"
          operations:
            - name: search
              method: POST

Creates a sponsor record in Salesforce, assigns sponsorship tier in the Eventbrite event, uploads the sponsor logo to Google Drive, and notifies the partnerships team in Slack.

naftiko: "0.5"
info:
  label: "Sponsor Management Pipeline"
  description: "Creates a sponsor record in Salesforce, assigns sponsorship tier in the Eventbrite event, uploads the sponsor logo to Google Drive, and notifies the partnerships team in Slack."
  tags:
    - events
    - sales
    - salesforce
    - eventbrite
    - google-drive
    - slack
capability:
  exposes:
    - type: mcp
      namespace: sponsorships
      port: 8080
      tools:
        - name: onboard-sponsor
          description: "Create sponsor record, assign tier, upload assets, and notify team."
          inputParameters:
            - name: sponsor_name
              in: body
              type: string
              description: "Sponsor company name."
            - name: event_id
              in: body
              type: string
              description: "Eventbrite event ID."
            - name: tier
              in: body
              type: string
              description: "Sponsorship tier (gold, silver, bronze)."
            - name: logo_url
              in: body
              type: string
              description: "URL of the sponsor logo."
          steps:
            - name: create-account
              type: call
              call: "salesforce.create-account"
              with:
                name: "{{sponsor_name}}"
                type: "Sponsor"
                tier: "{{tier}}"
                event: "{{event_id}}"
            - name: upload-logo
              type: call
              call: "gdrive.upload-file"
              with:
                folder_id: "sponsor_assets_{{event_id}}"
                file_name: "{{sponsor_name}}_logo.png"
                content: "{{logo_url}}"
            - name: notify-team
              type: call
              call: "slack.post-message"
              with:
                channel: "partnerships"
                text: "New sponsor: {{sponsor_name}} ({{tier}} tier) for event {{event_id}}. SF ID: {{create-account.id}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://eventbrite.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account"
          operations:
            - name: create-account
              method: POST
    - type: http
      namespace: gdrive
      baseUri: "https://www.googleapis.com/upload/drive/v3"
      authentication:
        type: bearer
        token: "$secrets.google_drive_token"
      resources:
        - name: files
          path: "/files"
          operations:
            - name: upload-file
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Creates a Stripe payment intent for event ticket purchases, processes the charge, and returns the payment confirmation.

naftiko: "0.5"
info:
  label: "Stripe Payment Processing"
  description: "Creates a Stripe payment intent for event ticket purchases, processes the charge, and returns the payment confirmation."
  tags:
    - payments
    - stripe
capability:
  exposes:
    - type: mcp
      namespace: payments
      port: 8080
      tools:
        - name: create-payment
          description: "Create a Stripe payment intent for ticket purchase."
          inputParameters:
            - name: amount
              in: body
              type: number
              description: "Payment amount in cents."
            - name: currency
              in: body
              type: string
              description: "Three-letter currency code (e.g., usd)."
            - name: order_id
              in: body
              type: string
              description: "Associated Eventbrite order ID."
          call: "stripe.create-payment-intent"
          with:
            amount: "{{amount}}"
            currency: "{{currency}}"
            metadata: '{"order_id":"{{order_id}}"}'
  consumes:
    - type: http
      namespace: stripe
      baseUri: "https://api.stripe.com/v1"
      authentication:
        type: bearer
        token: "$secrets.stripe_secret_key"
      resources:
        - name: payment-intents
          path: "/payment_intents"
          operations:
            - name: create-payment-intent
              method: POST

Retrieves Teams activity at Eventbrite.

naftiko: "0.5"
info:
  label: "Teams Channel Activity"
  description: "Retrieves Teams activity at Eventbrite."
  tags:
    - communications
    - microsoft-teams
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: teams-activity
      port: 8080
      tools:
        - name: get-activity
          description: "Check Teams activity at Eventbrite."
          inputParameters:
            - name: team_id
              in: body
              type: string
              description: "Team ID."
            - name: channel_id
              in: body
              type: string
              description: "Channel ID."
          call: "teams.get-messages"
          with:
            team_id: "{{team_id}}"
            channel_id: "{{channel_id}}"
          outputParameters:
            - name: count
              type: number
              mapping: "$.value.length"
  consumes:
    - type: http
      namespace: teams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.microsoft_graph_token"
      resources:
        - name: messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: get-messages
              method: GET

Triggers a Terraform plan for Eventbrite platform infrastructure and posts the summary to Slack.

naftiko: "0.5"
info:
  label: "Terraform Infrastructure Plan"
  description: "Triggers a Terraform plan for Eventbrite platform infrastructure and posts the summary to Slack."
  tags:
    - infrastructure
    - terraform
    - slack
capability:
  exposes:
    - type: mcp
      namespace: infra-automation
      port: 8080
      tools:
        - name: run-terraform-plan
          description: "Trigger a Terraform plan and notify via Slack."
          inputParameters:
            - name: workspace_id
              in: body
              type: string
              description: "Terraform workspace ID."
            - name: slack_channel
              in: body
              type: string
              description: "Slack channel for plan review."
          steps:
            - name: create-run
              type: call
              call: "terraform.create-run"
              with:
                workspace_id: "{{workspace_id}}"
                plan_only: true
            - name: notify-team
              type: call
              call: "slack.post-message"
              with:
                channel: "{{slack_channel}}"
                text: "Terraform plan for {{workspace_id}}: {{create-run.resource_additions}} additions, {{create-run.resource_changes}} changes."
  consumes:
    - type: http
      namespace: terraform
      baseUri: "https://app.terraform.io/api/v2"
      authentication:
        type: bearer
        token: "$secrets.terraform_token"
      resources:
        - name: runs
          path: "/runs"
          operations:
            - name: create-run
              method: POST
    - type: http
      namespace: slack
      baseUri: "https://slack.com/api"
      authentication:
        type: bearer
        token: "$secrets.slack_token"
      resources:
        - name: messages
          path: "/chat.postMessage"
          operations:
            - name: post-message
              method: POST

Checks Terraform workspace at Eventbrite.

naftiko: "0.5"
info:
  label: "Terraform Workspace Check"
  description: "Checks Terraform workspace at Eventbrite."
  tags:
    - infrastructure
    - terraform
    - iac
capability:
  exposes:
    - type: mcp
      namespace: tf-ws
      port: 8080
      tools:
        - name: check-ws
          description: "Check workspace at Eventbrite."
          inputParameters:
            - name: workspace_id
              in: body
              type: string
              description: "Workspace ID."
          call: "terraform.get-ws"
          with:
            workspace_id: "{{workspace_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.data.attributes.name"
  consumes:
    - type: http
      namespace: terraform
      baseUri: "https://app.terraform.io/api/v2"
      authentication:
        type: bearer
        token: "$secrets.terraform_token"
      resources:
        - name: workspaces
          path: "/workspaces/{{workspace_id}}"
          inputParameters:
            - name: workspace_id
              in: path
          operations:
            - name: get-ws
              method: GET

Retrieves ticket order details from the Eventbrite API by order ID including attendee info, ticket type, and payment status.

naftiko: "0.5"
info:
  label: "Ticket Purchase Lookup"
  description: "Retrieves ticket order details from the Eventbrite API by order ID including attendee info, ticket type, and payment status."
  tags:
    - ticketing
    - eventbrite
capability:
  exposes:
    - type: mcp
      namespace: ticketing
      port: 8080
      tools:
        - name: get-order
          description: "Look up an Eventbrite order by order ID."
          inputParameters:
            - name: order_id
              in: body
              type: string
              description: "The Eventbrite order identifier."
          call: "eventbrite.get-order"
          with:
            order_id: "{{order_id}}"
  consumes:
    - type: http
      namespace: eventbrite
      baseUri: "https://www.eventbriteapi.com/v3"
      authentication:
        type: bearer
        token: "$secrets.eventbrite_token"
      resources:
        - name: orders
          path: "/orders/{{order_id}}"
          inputParameters:
            - name: order_id
              in: path
          operations:
            - name: get-order
              method: GET

Checks Vault secret at Eventbrite.

naftiko: "0.5"
info:
  label: "Vault Secret Metadata"
  description: "Checks Vault secret at Eventbrite."
  tags:
    - security
    - vault
    - secrets-management
capability:
  exposes:
    - type: mcp
      namespace: vault
      port: 8080
      tools:
        - name: check-secret
          description: "Check secret at Eventbrite."
          inputParameters:
            - name: path
              in: body
              type: string
              description: "Secret path."
          call: "vault.get-metadata"
          with:
            path: "{{path}}"
          outputParameters:
            - name: version
              type: number
              mapping: "$.data.current_version"
  consumes:
    - type: http
      namespace: vault
      baseUri: "https://vault.eventbrite.com/v1"
      authentication:
        type: bearer
        token: "$secrets.vault_token"
      resources:
        - name: secrets
          path: "/secret/metadata/{{path}}"
          inputParameters:
            - name: path
              in: path
          operations:
            - name: get-metadata
              method: GET

Processes invoices at Eventbrite via OCR, SAP matching, approval, and Oracle recording.

naftiko: "0.5"
info:
  label: "Vendor Invoice Processing Pipeline"
  description: "Processes invoices at Eventbrite via OCR, SAP matching, approval, and Oracle recording."
  tags:
    - finance
    - accounts-payable
    - sap
    - oracle
capability:
  exposes:
    - type: mcp
      namespace: invoice-proc
      port: 8080
      tools:
        - name: process-invoice
          description: "Process invoices at Eventbrite."
          inputParameters:
            - name: invoice_id
              in: body
              type: string
              description: "Invoice ID."
            - name: vendor_id
              in: body
              type: string
              description: "Vendor ID."
          steps:
            - name: extract
              type: call
              call: "ocr.extract"
              with:
                doc: "{{invoice_id}}"
            - name: match
              type: call
              call: "sap.match-po"
              with:
                vendor: "{{vendor_id}}"
                amount: "{{extract.total}}"
            - name: approve
              type: call
              call: "workflow.submit"
              with:
                invoice: "{{invoice_id}}"
            - name: record
              type: call
              call: "oracle.create-payment"
              with:
                invoice: "{{invoice_id}}"
  consumes:
    - type: http
      namespace: ocr
      baseUri: "https://ocr.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.ocr_token"
      resources:
        - name: invoices
          path: "/extract"
          operations:
            - name: extract
              method: POST
    - type: http
      namespace: sap
      baseUri: "https://sap.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.sap_token"
      resources:
        - name: pos
          path: "/match"
          operations:
            - name: match-po
              method: POST
    - type: http
      namespace: workflow
      baseUri: "https://workflow.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workflow_token"
      resources:
        - name: approvals
          path: "/submit"
          operations:
            - name: submit
              method: POST
    - type: http
      namespace: oracle
      baseUri: "https://oracle.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.oracle_token"
      resources:
        - name: payments
          path: "/payments"
          operations:
            - name: create-payment
              method: POST

Reviews vendors at Eventbrite.

naftiko: "0.5"
info:
  label: "Quarterly Vendor Review Pipeline"
  description: "Reviews vendors at Eventbrite."
  tags:
    - procurement
    - vendor-management
    - review
capability:
  exposes:
    - type: mcp
      namespace: vendor-review
      port: 8080
      tools:
        - name: review-vendor
          description: "Review vendors at Eventbrite."
          inputParameters:
            - name: vendor_id
              in: body
              type: string
              description: "Vendor ID."
            - name: quarter
              in: body
              type: string
              description: "Quarter."
          steps:
            - name: perf
              type: call
              call: "procurement.get-metrics"
              with:
                vendor: "{{vendor_id}}"
                q: "{{quarter}}"
            - name: scorecard
              type: call
              call: "analytics.scorecard"
              with:
                data: "{{perf.data}}"
            - name: invite
              type: call
              call: "email.send"
              with:
                to: "{{perf.contact}}"
                subject: "QBR - {{quarter}}"
            - name: schedule
              type: call
              call: "calendar.create-event"
              with:
                title: "QBR - {{perf.name}}"
  consumes:
    - type: http
      namespace: procurement
      baseUri: "https://procurement.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.procurement_token"
      resources:
        - name: vendors
          path: "/vendors/{{vendor}}/metrics"
          inputParameters:
            - name: vendor
              in: path
          operations:
            - name: get-metrics
              method: GET
    - type: http
      namespace: analytics
      baseUri: "https://analytics.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.analytics_token"
      resources:
        - name: scorecards
          path: "/compute"
          operations:
            - name: scorecard
              method: POST
    - type: http
      namespace: email
      baseUri: "https://email.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.email_token"
      resources:
        - name: messages
          path: "/send"
          operations:
            - name: send
              method: POST
    - type: http
      namespace: calendar
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.microsoft_graph_token"
      resources:
        - name: events
          path: "/users/proc/events"
          operations:
            - name: create-event
              method: POST

Retrieves employee profile data from Workday by worker ID.

naftiko: "0.5"
info:
  label: "Workday Employee Lookup"
  description: "Retrieves employee profile data from Workday by worker ID."
  tags:
    - hr
    - workday
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}}"
  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 for Eventbrite.

naftiko: "0.5"
info:
  label: "Workday Employee Profile Lookup"
  description: "Retrieves employee profile from Workday for Eventbrite."
  tags:
    - hr
    - workday
    - employee-directory
capability:
  exposes:
    - type: mcp
      namespace: workday-profile
      port: 8080
      tools:
        - name: get-employee-profile
          description: "Look up Eventbrite employee in Workday."
          inputParameters:
            - name: employee_id
              in: body
              type: string
              description: "Employee ID."
          call: "workday.get-worker"
          with:
            employee_id: "{{employee_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.worker.name"
            - name: title
              type: string
              mapping: "$.worker.title"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd5.eventbrite.com/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{employee_id}}"
          inputParameters:
            - name: employee_id
              in: path
          operations:
            - name: get-worker
              method: GET

Creates a YouTube livestream for an event, links it to the Eventbrite event page, and promotes across social channels.

naftiko: "0.5"
info:
  label: "YouTube Event Livestream Setup"
  description: "Creates a YouTube livestream for an event, links it to the Eventbrite event page, and promotes across social channels."
  tags:
    - events
    - video
    - youtube
    - eventbrite
    - twitter
capability:
  exposes:
    - type: mcp
      namespace: livestream
      port: 8080
      tools:
        - name: setup-livestream
          description: "Create YouTube livestream and promote for an event."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "Eventbrite event ID."
            - name: title
              in: body
              type: string
              description: "Livestream title."
            - name: scheduled_start
              in: body
              type: string
              description: "Scheduled start time ISO 8601."
          steps:
            - name: create-stream
              type: call
              call: "youtube.create-livestream"
              with:
                title: "{{title}}"
                scheduled_start: "{{scheduled_start}}"
            - name: update-event
              type: call
              call: "eventbrite.update-event"
              with:
                event_id: "{{event_id}}"
                online_event_url: "{{create-stream.watch_url}}"
            - name: promote-twitter
              type: call
              call: "twitter.create-tweet"
              with:
                text: "Join us LIVE: {{title}}! Watch at {{create-stream.watch_url}}"
  consumes:
    - type: http
      namespace: youtube
      baseUri: "https://www.googleapis.com/youtube/v3"
      authentication:
        type: bearer
        token: "$secrets.youtube_token"
      resources:
        - name: livestreams
          path: "/liveBroadcasts"
          operations:
            - name: create-livestream
              method: POST
    - type: http
      namespace: eventbrite
      baseUri: "https://www.eventbriteapi.com/v3"
      authentication:
        type: bearer
        token: "$secrets.eventbrite_token"
      resources:
        - name: events
          path: "/events/{{event_id}}"
          inputParameters:
            - name: event_id
              in: path
          operations:
            - name: update-event
              method: POST
    - type: http
      namespace: twitter
      baseUri: "https://api.twitter.com/2"
      authentication:
        type: bearer
        token: "$secrets.twitter_token"
      resources:
        - name: tweets
          path: "/tweets"
          operations:
            - name: create-tweet
              method: POST

Creates a Zoom webinar linked to an Eventbrite event and syncs registrations between platforms.

naftiko: "0.5"
info:
  label: "Zoom Webinar Integration"
  description: "Creates a Zoom webinar linked to an Eventbrite event and syncs registrations between platforms."
  tags:
    - events
    - zoom
    - eventbrite
capability:
  exposes:
    - type: mcp
      namespace: virtual-events
      port: 8080
      tools:
        - name: create-linked-webinar
          description: "Create a Zoom webinar and link it to an Eventbrite event."
          inputParameters:
            - name: event_id
              in: body
              type: string
              description: "Eventbrite event ID."
            - name: topic
              in: body
              type: string
              description: "Webinar topic."
            - name: start_time
              in: body
              type: string
              description: "Start time ISO 8601."
            - name: duration
              in: body
              type: number
              description: "Duration in minutes."
          steps:
            - name: create-webinar
              type: call
              call: "zoom.create-webinar"
              with:
                topic: "{{topic}}"
                start_time: "{{start_time}}"
                duration: "{{duration}}"
            - name: update-event
              type: call
              call: "eventbrite.update-event"
              with:
                event_id: "{{event_id}}"
                online_event_url: "{{create-webinar.join_url}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_token"
      resources:
        - name: webinars
          path: "/users/me/webinars"
          operations:
            - name: create-webinar
              method: POST
    - type: http
      namespace: eventbrite
      baseUri: "https://www.eventbriteapi.com/v3"
      authentication:
        type: bearer
        token: "$secrets.eventbrite_token"
      resources:
        - name: events
          path: "/events/{{event_id}}"
          inputParameters:
            - name: event_id
              in: path
          operations:
            - name: update-event
              method: POST