USA TODAY Capabilities

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

Sort
Expand

When an advertiser books a campaign in Salesforce, creates the ad order in Google Ads, schedules social promotion on Facebook, and sends a confirmation to the advertiser via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Ad Campaign Booking Orchestrator"
  description: "When an advertiser books a campaign in Salesforce, creates the ad order in Google Ads, schedules social promotion on Facebook, and sends a confirmation to the advertiser via Microsoft Outlook."
  tags:
    - advertising
    - campaign-management
    - salesforce
    - google-ads
    - facebook
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: ad-operations
      port: 8080
      tools:
        - name: book-ad-campaign
          description: "Create ad orders across platforms and confirm with advertiser."
          inputParameters:
            - name: opportunity_id
              in: body
              type: string
              description: "Salesforce opportunity ID."
          steps:
            - name: get-deal
              type: call
              call: "salesforce.get-opportunity"
              with:
                opportunity_id: "{{opportunity_id}}"
            - name: create-google-campaign
              type: call
              call: "googleads.create-campaign"
              with:
                name: "{{get-deal.Name}}"
                budget: "{{get-deal.Amount}}"
                start_date: "{{get-deal.Campaign_Start__c}}"
            - name: create-fb-campaign
              type: call
              call: "meta.create-campaign"
              with:
                name: "{{get-deal.Name}}"
                budget: "{{get-deal.Social_Budget__c}}"
            - name: send-confirmation
              type: call
              call: "outlook.send-mail"
              with:
                to: "{{get-deal.Contact_Email__c}}"
                subject: "Campaign Confirmed: {{get-deal.Name}}"
                body: "Your campaign is booked. Google ID: {{create-google-campaign.id}}, Facebook ID: {{create-fb-campaign.id}}."
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://gannett.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: googleads
      baseUri: "https://googleads.googleapis.com/v14"
      authentication:
        type: bearer
        token: "$secrets.google_ads_token"
      resources:
        - name: campaigns
          path: "/customers/{{customer_id}}/campaigns"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: create-campaign
              method: POST
    - type: http
      namespace: meta
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.meta_ads_token"
      resources:
        - name: campaigns
          path: "/act_{{ad_account_id}}/campaigns"
          inputParameters:
            - name: ad_account_id
              in: path
          operations:
            - name: create-campaign
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-mail
              method: POST

Checks available ad inventory by placement.

naftiko: "0.5"
info:
  label: "Ad Inventory Availability"
  description: "Checks available ad inventory by placement."
  tags:
    - advertising
    - sales
capability:
  exposes:
    - type: mcp
      namespace: advertising
      port: 8080
      tools:
        - name: get-ad
          description: "Checks available ad inventory by placement."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The ad inventory availability identifier."
          call: "advertising-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: advertising-api
      baseUri: "https://api.usa-today.com/advertising/v1"
      authentication:
        type: bearer
        token: "$secrets.usa_today_api_token"
      resources:
        - name: ad
          path: "/ad/inventory/availability/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-ad
              method: GET

Aggregates advertising revenue from Google Ads and Facebook Ads, reconciles with Salesforce bookings, and publishes the report to Looker Studio.

naftiko: "0.5"
info:
  label: "Ad Revenue Reporting Orchestrator"
  description: "Aggregates advertising revenue from Google Ads and Facebook Ads, reconciles with Salesforce bookings, and publishes the report to Looker Studio."
  tags:
    - advertising
    - finance
    - google-ads
    - facebook
    - salesforce
    - looker-studio
capability:
  exposes:
    - type: mcp
      namespace: ad-revenue
      port: 8080
      tools:
        - name: generate-revenue-report
          description: "Aggregate multi-platform ad revenue and refresh Looker Studio."
          inputParameters:
            - name: period
              in: body
              type: string
              description: "Reporting period (e.g., '2024-Q1')."
          steps:
            - name: get-google-revenue
              type: call
              call: "googleads.get-account-revenue"
              with:
                period: "{{period}}"
            - name: get-fb-revenue
              type: call
              call: "meta.get-account-insights"
              with:
                period: "{{period}}"
            - name: get-sf-bookings
              type: call
              call: "salesforce.query-revenue"
              with:
                period: "{{period}}"
            - name: refresh-report
              type: call
              call: "lookerstudio.refresh-datasource"
              with:
                datasource_id: "ad_revenue_report"
  consumes:
    - type: http
      namespace: googleads
      baseUri: "https://googleads.googleapis.com/v14"
      authentication:
        type: bearer
        token: "$secrets.google_ads_token"
      resources:
        - name: reports
          path: "/customers/{{customer_id}}/reports"
          inputParameters:
            - name: customer_id
              in: path
          operations:
            - name: get-account-revenue
              method: GET
    - type: http
      namespace: meta
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.meta_ads_token"
      resources:
        - name: account-insights
          path: "/act_{{ad_account_id}}/insights"
          inputParameters:
            - name: ad_account_id
              in: path
          operations:
            - name: get-account-insights
              method: GET
    - type: http
      namespace: salesforce
      baseUri: "https://gannett.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: query
          path: "/query"
          operations:
            - name: query-revenue
              method: GET
    - type: http
      namespace: lookerstudio
      baseUri: "https://datastudio.googleapis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.google_datastudio_token"
      resources:
        - name: datasources
          path: "/datasources/{{datasource_id}}/refresh"
          inputParameters:
            - name: datasource_id
              in: path
          operations:
            - name: refresh-datasource
              method: POST

Retrieves Adobe Analytics content performance for editorial sections.

naftiko: "0.5"
info:
  label: "Adobe Analytics Content Performance"
  description: "Retrieves Adobe Analytics content performance for editorial sections."
  tags:
    - analytics
    - publishing
    - adobe-analytics
capability:
  exposes:
    - type: mcp
      namespace: content-performance
      port: 8080
      tools:
        - name: get-section-metrics
          description: "Fetch Adobe Analytics section-level metrics."
          inputParameters:
            - name: report_suite_id
              in: body
              type: string
              description: "Report suite ID."
            - name: section
              in: body
              type: string
              description: "Editorial section name."
          call: "adobe-analytics.get-report"
          with:
            rsid: "{{report_suite_id}}"
            section: "{{section}}"
          outputParameters:
            - name: pageviews
              type: number
              mapping: "$.totalPages[0].data[0].pageViews"
            - name: unique_visitors
              type: number
              mapping: "$.totalPages[0].data[0].uniqueVisitors"
  consumes:
    - type: http
      namespace: adobe-analytics
      baseUri: "https://analytics.adobe.io/api"
      authentication:
        type: bearer
        token: "$secrets.adobe_analytics_token"
      inputParameters:
        - name: x-api-key
          in: header
          value: "$secrets.adobe_api_key"
      resources:
        - name: reports
          path: "/{{company_id}}/reports"
          inputParameters:
            - name: company_id
              in: path
          operations:
            - name: get-report
              method: POST

Retrieves ADP payroll summary for a pay period.

naftiko: "0.5"
info:
  label: "ADP Payroll Summary Lookup"
  description: "Retrieves ADP payroll summary for a pay period."
  tags:
    - hr
    - payroll
    - adp
capability:
  exposes:
    - type: mcp
      namespace: payroll-ops
      port: 8080
      tools:
        - name: get-payroll-summary
          description: "Fetch ADP payroll summary."
          inputParameters:
            - name: pay_period
              in: body
              type: string
              description: "Pay period identifier."
          call: "adp.get-payroll"
          with:
            pay_period: "{{pay_period}}"
          outputParameters:
            - name: gross_pay
              type: string
              mapping: "$.payrollSummary.grossPay"
            - name: net_pay
              type: string
              mapping: "$.payrollSummary.netPay"
  consumes:
    - type: http
      namespace: adp
      baseUri: "https://api.adp.com/hr/v2"
      authentication:
        type: bearer
        token: "$secrets.adp_token"
      resources:
        - name: payroll
          path: "/payroll-summaries/{{pay_period}}"
          inputParameters:
            - name: pay_period
              in: path
          operations:
            - name: get-payroll
              method: GET

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

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

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

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

Retrieves engagement metrics for a published article.

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

When a story is approved in the CMS, publishes it to the WordPress site, pushes notifications via WhatsApp and social channels, and logs the publication in Google Sheets.

naftiko: "0.5"
info:
  label: "Article Publishing Orchestrator"
  description: "When a story is approved in the CMS, publishes it to the WordPress site, pushes notifications via WhatsApp and social channels, and logs the publication in Google Sheets."
  tags:
    - publishing
    - content-management
    - wordpress
    - whatsapp
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: content-publishing
      port: 8080
      tools:
        - name: publish-article
          description: "Publish an article to WordPress, send notifications, and log publication."
          inputParameters:
            - name: article_id
              in: body
              type: string
              description: "CMS article identifier."
            - name: title
              in: body
              type: string
              description: "Article headline."
            - name: content
              in: body
              type: string
              description: "Article body content."
            - name: category
              in: body
              type: string
              description: "Article category."
          steps:
            - name: create-post
              type: call
              call: "wordpress.create-post"
              with:
                title: "{{title}}"
                content: "{{content}}"
                categories: "{{category}}"
                status: "publish"
            - name: send-alert
              type: call
              call: "whatsapp.send-message"
              with:
                template: "breaking_news"
                headline: "{{title}}"
                url: "{{create-post.link}}"
            - name: log-publication
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "usa_today_publications"
                row:
                  article_id: "{{article_id}}"
                  title: "{{title}}"
                  url: "{{create-post.link}}"
                  published_at: "{{create-post.date}}"
  consumes:
    - type: http
      namespace: wordpress
      baseUri: "https://www.usatoday.com/wp-json/wp/v2"
      authentication:
        type: bearer
        token: "$secrets.wordpress_token"
      resources:
        - name: posts
          path: "/posts"
          operations:
            - name: create-post
              method: POST
    - type: http
      namespace: whatsapp
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.whatsapp_token"
      resources:
        - name: messages
          path: "/{{phone_number_id}}/messages"
          inputParameters:
            - name: phone_number_id
              in: path
          operations:
            - name: send-message
              method: POST
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: rows
          path: "/spreadsheets/{{spreadsheet_id}}/values/Sheet1:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
          operations:
            - name: append-row
              method: POST

Retrieves the latest Azure DevOps build status.

naftiko: "0.5"
info:
  label: "Azure DevOps Build Status Lookup"
  description: "Retrieves the latest Azure DevOps build status."
  tags:
    - devops
    - ci-cd
    - azure-devops
capability:
  exposes:
    - type: mcp
      namespace: devops-builds
      port: 8080
      tools:
        - name: get-build-status
          description: "Fetch latest build status."
          inputParameters:
            - name: project
              in: body
              type: string
              description: "Project name."
            - name: pipeline_id
              in: body
              type: string
              description: "Pipeline ID."
          call: "azuredevops.get-builds"
          with:
            project: "{{project}}"
            definition_id: "{{pipeline_id}}"
          outputParameters:
            - name: build_number
              type: string
              mapping: "$.value[0].buildNumber"
            - name: status
              type: string
              mapping: "$.value[0].status"
  consumes:
    - type: http
      namespace: azuredevops
      baseUri: "https://dev.azure.com/gannett"
      authentication:
        type: basic
        username: ""
        password: "$secrets.azuredevops_pat"
      resources:
        - name: builds
          path: "/{{project}}/_apis/build/builds?definitions={{definition_id}}&$top=1&api-version=7.0"
          inputParameters:
            - name: project
              in: path
            - name: definition_id
              in: query
          operations:
            - name: get-builds
              method: GET

When a breaking news article is published, simultaneously pushes to Twitter, Facebook, and Instagram, and logs engagement metrics to Google Sheets.

naftiko: "0.5"
info:
  label: "Breaking News Social Distribution Orchestrator"
  description: "When a breaking news article is published, simultaneously pushes to Twitter, Facebook, and Instagram, and logs engagement metrics to Google Sheets."
  tags:
    - publishing
    - social-media
    - twitter
    - facebook
    - instagram
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: social-distribution
      port: 8080
      tools:
        - name: distribute-breaking-news
          description: "Push a breaking story across all social channels and log."
          inputParameters:
            - name: headline
              in: body
              type: string
              description: "Article headline."
            - name: url
              in: body
              type: string
              description: "Article URL."
            - name: image_url
              in: body
              type: string
              description: "Featured image URL."
          steps:
            - name: post-twitter
              type: call
              call: "twitter.create-tweet"
              with:
                text: "BREAKING: {{headline}} {{url}}"
            - name: post-facebook
              type: call
              call: "facebook.create-post"
              with:
                message: "BREAKING: {{headline}}"
                link: "{{url}}"
            - name: post-instagram
              type: call
              call: "instagram.create-media"
              with:
                caption: "BREAKING: {{headline}} Link in bio."
                image_url: "{{image_url}}"
            - name: log-distribution
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "social_distribution_log"
                row:
                  headline: "{{headline}}"
                  url: "{{url}}"
                  twitter_id: "{{post-twitter.id}}"
                  fb_id: "{{post-facebook.id}}"
  consumes:
    - type: http
      namespace: twitter
      baseUri: "https://api.twitter.com/2"
      authentication:
        type: bearer
        token: "$secrets.twitter_bearer_token"
      resources:
        - name: tweets
          path: "/tweets"
          operations:
            - name: create-tweet
              method: POST
    - type: http
      namespace: facebook
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.facebook_page_token"
      resources:
        - name: posts
          path: "/{{page_id}}/feed"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: create-post
              method: POST
    - type: http
      namespace: instagram
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.instagram_token"
      resources:
        - name: media
          path: "/{{ig_user_id}}/media"
          inputParameters:
            - name: ig_user_id
              in: path
          operations:
            - name: create-media
              method: POST
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: rows
          path: "/spreadsheets/{{spreadsheet_id}}/values/Sheet1:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
          operations:
            - name: append-row
              method: POST

When a classified ad is submitted, creates the listing in WordPress, generates an invoice in Oracle E-Business Suite, and sends payment link via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Classified Ad Revenue Orchestrator"
  description: "When a classified ad is submitted, creates the listing in WordPress, generates an invoice in Oracle E-Business Suite, and sends payment link via Microsoft Outlook."
  tags:
    - advertising
    - classified
    - wordpress
    - oracle-e-business-suite
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: classified-ops
      port: 8080
      tools:
        - name: process-classified-ad
          description: "Create classified listing, invoice, and send payment link."
          inputParameters:
            - name: ad_title
              in: body
              type: string
              description: "Classified ad title."
            - name: ad_content
              in: body
              type: string
              description: "Ad content."
            - name: advertiser_email
              in: body
              type: string
              description: "Advertiser email."
            - name: price
              in: body
              type: string
              description: "Ad price."
          steps:
            - name: create-listing
              type: call
              call: "wordpress.create-post"
              with:
                title: "{{ad_title}}"
                content: "{{ad_content}}"
                categories: "classifieds"
                status: "publish"
            - name: create-invoice
              type: call
              call: "oracle-ebs.create-invoice"
              with:
                customer_email: "{{advertiser_email}}"
                amount: "{{price}}"
                description: "Classified ad: {{ad_title}}"
            - name: send-payment-link
              type: call
              call: "outlook.send-mail"
              with:
                to: "{{advertiser_email}}"
                subject: "Invoice for classified ad: {{ad_title}}"
                body: "Your ad is live at {{create-listing.link}}. Invoice: {{create-invoice.invoice_number}}. Pay: {{create-invoice.payment_url}}"
  consumes:
    - type: http
      namespace: wordpress
      baseUri: "https://www.usatoday.com/wp-json/wp/v2"
      authentication:
        type: bearer
        token: "$secrets.wordpress_token"
      resources:
        - name: posts
          path: "/posts"
          operations:
            - name: create-post
              method: POST
    - type: http
      namespace: oracle-ebs
      baseUri: "https://gannett-ebs.gannett.com/webservices/rest/ar"
      authentication:
        type: basic
        username: "$secrets.oracle_ebs_user"
        password: "$secrets.oracle_ebs_password"
      resources:
        - name: invoices
          path: "/invoices"
          operations:
            - name: create-invoice
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-mail
              method: POST

Retrieves Cloudflare analytics for the USA Today zone.

naftiko: "0.5"
info:
  label: "Cloudflare CDN Performance Lookup"
  description: "Retrieves Cloudflare analytics for the USA Today zone."
  tags:
    - infrastructure
    - cdn
    - cloudflare
capability:
  exposes:
    - type: mcp
      namespace: cdn-ops
      port: 8080
      tools:
        - name: get-zone-analytics
          description: "Fetch Cloudflare zone analytics."
          inputParameters:
            - name: zone_id
              in: body
              type: string
              description: "Cloudflare zone ID."
          call: "cloudflare.get-zone-analytics"
          with:
            zone_id: "{{zone_id}}"
          outputParameters:
            - name: requests
              type: number
              mapping: "$.result.totals.requests.all"
            - name: bandwidth
              type: number
              mapping: "$.result.totals.bandwidth.all"
  consumes:
    - type: http
      namespace: cloudflare
      baseUri: "https://api.cloudflare.com/client/v4"
      authentication:
        type: bearer
        token: "$secrets.cloudflare_token"
      resources:
        - name: analytics
          path: "/zones/{{zone_id}}/analytics/dashboard"
          inputParameters:
            - name: zone_id
              in: path
          operations:
            - name: get-zone-analytics
              method: GET

Retrieves a Confluence page by ID, returning title, body, and version.

naftiko: "0.5"
info:
  label: "Confluence Knowledge Base Lookup"
  description: "Retrieves a Confluence page by ID, returning title, body, and version."
  tags:
    - documents
    - knowledge-base
    - confluence
capability:
  exposes:
    - type: mcp
      namespace: knowledge-mgmt
      port: 8080
      tools:
        - name: get-confluence-page
          description: "Fetch a Confluence page."
          inputParameters:
            - name: page_id
              in: body
              type: string
              description: "Confluence page ID."
          call: "confluence.get-page"
          with:
            page_id: "{{page_id}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.title"
            - name: version
              type: number
              mapping: "$.version.number"
  consumes:
    - type: http
      namespace: confluence
      baseUri: "https://gannett.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_token"
      resources:
        - name: pages
          path: "/content/{{page_id}}"
          inputParameters:
            - name: page_id
              in: path
          operations:
            - name: get-page
              method: GET

Retrieves a Confluence wiki page.

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

Retrieves a content page from the CMS.

naftiko: "0.5"
info:
  label: "Content CMS Page Lookup"
  description: "Retrieves a content page from the CMS."
  tags:
    - editorial
    - content-management
capability:
  exposes:
    - type: mcp
      namespace: editorial
      port: 8080
      tools:
        - name: get-content
          description: "Retrieves a content page from the CMS."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The content cms page lookup identifier."
          call: "editorial-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: editorial-api
      baseUri: "https://api.usa-today.com/editorial/v1"
      authentication:
        type: bearer
        token: "$secrets.usa_today_api_token"
      resources:
        - name: content
          path: "/content/cms/page/lookup/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-content
              method: GET

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

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

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

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

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

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

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

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

Retrieves Datadog monitor status.

naftiko: "0.5"
info:
  label: "Datadog Infrastructure Monitor Lookup"
  description: "Retrieves Datadog monitor status."
  tags:
    - monitoring
    - infrastructure
    - datadog
capability:
  exposes:
    - type: mcp
      namespace: infra-monitoring
      port: 8080
      tools:
        - name: get-monitor-status
          description: "Fetch Datadog monitor status."
          inputParameters:
            - name: monitor_id
              in: body
              type: string
              description: "Monitor ID."
          call: "datadog.get-monitor"
          with:
            monitor_id: "{{monitor_id}}"
          outputParameters:
            - name: state
              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"
      inputParameters:
        - name: DD-APPLICATION-KEY
          in: header
          value: "$secrets.datadog_app_key"
      resources:
        - name: monitors
          path: "/monitor/{{monitor_id}}"
          inputParameters:
            - name: monitor_id
              in: path
          operations:
            - name: get-monitor
              method: GET

Retrieves a Datadog monitor status.

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

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

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

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

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

Retrieves active Dynatrace problems.

naftiko: "0.5"
info:
  label: "Dynatrace Application Monitoring"
  description: "Retrieves active Dynatrace problems."
  tags:
    - monitoring
    - dynatrace
capability:
  exposes:
    - type: mcp
      namespace: observability
      port: 8080
      tools:
        - name: get-active-problems
          description: "Fetch active problems from Dynatrace."
          inputParameters:
            - name: time_range
              in: body
              type: string
              description: "Time range."
          call: "dynatrace.get-problems"
          with:
            relativeTime: "{{time_range}}"
          outputParameters:
            - name: total_count
              type: number
              mapping: "$.totalCount"
  consumes:
    - type: http
      namespace: dynatrace
      baseUri: "https://gannett.live.dynatrace.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.dynatrace_token"
      resources:
        - name: problems
          path: "/problems"
          operations:
            - name: get-problems
              method: GET

Creates editorial assignments in Microsoft Planner, notifies reporters via Microsoft Teams, and logs deadlines in Google Sheets.

naftiko: "0.5"
info:
  label: "Editorial Calendar Orchestrator"
  description: "Creates editorial assignments in Microsoft Planner, notifies reporters via Microsoft Teams, and logs deadlines in Google Sheets."
  tags:
    - publishing
    - editorial
    - microsoft-planner
    - microsoft-teams
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: editorial-ops
      port: 8080
      tools:
        - name: create-assignment
          description: "Create editorial assignment with Planner task, Teams notification, and Sheets log."
          inputParameters:
            - name: title
              in: body
              type: string
              description: "Story assignment title."
            - name: reporter_email
              in: body
              type: string
              description: "Assigned reporter email."
            - name: due_date
              in: body
              type: string
              description: "Due date YYYY-MM-DD."
            - name: section
              in: body
              type: string
              description: "Newspaper section."
          steps:
            - name: create-task
              type: call
              call: "planner.create-task"
              with:
                title: "{{title}}"
                assigned_to: "{{reporter_email}}"
                due_date: "{{due_date}}"
                bucket: "{{section}}"
            - name: notify-reporter
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{reporter_email}}"
                text: "New assignment: {{title}}. Due: {{due_date}}. Section: {{section}}."
            - name: log-assignment
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "editorial_calendar"
                row:
                  title: "{{title}}"
                  reporter: "{{reporter_email}}"
                  due_date: "{{due_date}}"
                  section: "{{section}}"
  consumes:
    - type: http
      namespace: planner
      baseUri: "https://graph.microsoft.com/v1.0/planner"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: tasks
          path: "/tasks"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: rows
          path: "/spreadsheets/{{spreadsheet_id}}/values/Sheet1:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
          operations:
            - name: append-row
              method: POST

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

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

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

naftiko: "0.5"
info:
  label: "Employee Onboarding Pipeline"
  description: "On new hire creation in Workday, opens a ServiceNow onboarding ticket, provisions a SharePoint folder, and sends a Microsoft Teams welcome."
  tags:
    - hr
    - onboarding
    - workday
    - servicenow
    - sharepoint
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: hr-onboarding
      port: 8080
      tools:
        - name: trigger-onboarding
          description: "Orchestrate new hire onboarding across Workday, ServiceNow, SharePoint, and Teams."
          inputParameters:
            - name: workday_employee_id
              in: body
              type: string
              description: "Workday worker ID."
            - name: start_date
              in: body
              type: string
              description: "Start date YYYY-MM-DD."
          steps:
            - name: get-employee
              type: call
              call: "workday.get-worker"
              with:
                worker_id: "{{workday_employee_id}}"
            - name: open-ticket
              type: call
              call: "servicenow.create-incident"
              with:
                short_description: "Onboarding: {{get-employee.full_name}}"
                category: "hr_onboarding"
            - name: provision-folder
              type: call
              call: "sharepoint.create-folder"
              with:
                site_id: "hr_onboarding"
                folder_path: "Onboarding/{{get-employee.full_name}}_{{start_date}}"
            - name: send-welcome
              type: call
              call: "msteams.send-message"
              with:
                recipient_upn: "{{get-employee.work_email}}"
                text: "Welcome to Gannett/USA Today, {{get-employee.first_name}}!"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET
    - type: http
      namespace: servicenow
      baseUri: "https://gannett.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident"
          operations:
            - name: create-incident
              method: POST
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: messages
          path: "/users/{{recipient_upn}}/sendMail"
          inputParameters:
            - name: recipient_upn
              in: path
          operations:
            - name: send-message
              method: POST

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

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

Retrieves Facebook ad spend and ROAS for a date range.

naftiko: "0.5"
info:
  label: "Facebook Ads Spend Reporter"
  description: "Retrieves Facebook ad spend and ROAS for a date range."
  tags:
    - advertising
    - facebook
capability:
  exposes:
    - type: mcp
      namespace: paid-media
      port: 8080
      tools:
        - name: get-fb-ad-spend
          description: "Fetch Facebook ad spend and ROAS."
          inputParameters:
            - name: ad_account_id
              in: body
              type: string
              description: "Facebook ad account ID."
            - name: start_date
              in: body
              type: string
              description: "Start date YYYY-MM-DD."
            - name: end_date
              in: body
              type: string
              description: "End date YYYY-MM-DD."
          call: "meta.get-account-insights"
          with:
            ad_account_id: "{{ad_account_id}}"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
          outputParameters:
            - name: spend
              type: string
              mapping: "$.data[0].spend"
            - name: roas
              type: string
              mapping: "$.data[0].purchase_roas[0].value"
  consumes:
    - type: http
      namespace: meta
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.meta_ads_token"
      resources:
        - name: account-insights
          path: "/act_{{ad_account_id}}/insights"
          inputParameters:
            - name: ad_account_id
              in: path
          operations:
            - name: get-account-insights
              method: GET

Retrieves Google Ads campaign performance metrics including impressions, clicks, and cost.

naftiko: "0.5"
info:
  label: "Google Ads Campaign Performance Lookup"
  description: "Retrieves Google Ads campaign performance metrics including impressions, clicks, and cost."
  tags:
    - advertising
    - google-ads
capability:
  exposes:
    - type: mcp
      namespace: ad-performance
      port: 8080
      tools:
        - name: get-google-ads-metrics
          description: "Fetch Google Ads campaign performance."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "Google Ads campaign ID."
            - name: date_range
              in: body
              type: string
              description: "Date range."
          call: "googleads.get-campaign-metrics"
          with:
            campaign_id: "{{campaign_id}}"
            date_range: "{{date_range}}"
          outputParameters:
            - name: impressions
              type: number
              mapping: "$.metrics.impressions"
            - name: clicks
              type: number
              mapping: "$.metrics.clicks"
            - name: cost
              type: string
              mapping: "$.metrics.costMicros"
  consumes:
    - type: http
      namespace: googleads
      baseUri: "https://googleads.googleapis.com/v14"
      authentication:
        type: bearer
        token: "$secrets.google_ads_token"
      resources:
        - name: campaigns
          path: "/customers/{{customer_id}}/campaigns/{{campaign_id}}"
          inputParameters:
            - name: customer_id
              in: path
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign-metrics
              method: GET

Retrieves Google Analytics page performance data for a specific article URL, returning pageviews, unique visitors, and average time on page.

naftiko: "0.5"
info:
  label: "Google Analytics Article Performance Lookup"
  description: "Retrieves Google Analytics page performance data for a specific article URL, returning pageviews, unique visitors, and average time on page."
  tags:
    - analytics
    - publishing
    - google-analytics
capability:
  exposes:
    - type: mcp
      namespace: content-analytics
      port: 8080
      tools:
        - name: get-article-metrics
          description: "Fetch GA metrics for a specific article."
          inputParameters:
            - name: page_path
              in: body
              type: string
              description: "Article URL path."
            - name: start_date
              in: body
              type: string
              description: "Start date YYYY-MM-DD."
            - name: end_date
              in: body
              type: string
              description: "End date YYYY-MM-DD."
          call: "ga.get-report"
          with:
            page_path: "{{page_path}}"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
          outputParameters:
            - name: pageviews
              type: number
              mapping: "$.rows[0].pageviews"
            - name: unique_visitors
              type: number
              mapping: "$.rows[0].uniqueVisitors"
            - name: avg_time_on_page
              type: string
              mapping: "$.rows[0].avgTimeOnPage"
  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

Searches for documents in Google Drive by name.

naftiko: "0.5"
info:
  label: "Google Drive File Search"
  description: "Searches for documents in Google Drive by name."
  tags:
    - documents
    - google-drive
capability:
  exposes:
    - type: mcp
      namespace: drive-search
      port: 8080
      tools:
        - name: search-drive-files
          description: "Search Google Drive files."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "Search query."
          call: "gdrive.search-files"
          with:
            q: "name contains '{{query}}'"
          outputParameters:
            - name: files
              type: array
              mapping: "$.files"
  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"
          operations:
            - name: search-files
              method: GET

Retrieves a file from Google Drive.

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

Retrieves search performance data from Google Search Console.

naftiko: "0.5"
info:
  label: "Google Search Console Performance"
  description: "Retrieves search performance data from Google Search Console."
  tags:
    - seo
    - analytics
    - google-search-console
capability:
  exposes:
    - type: mcp
      namespace: seo-analytics
      port: 8080
      tools:
        - name: get-search-performance
          description: "Fetch GSC performance data."
          inputParameters:
            - name: site_url
              in: body
              type: string
              description: "Site URL property."
            - name: start_date
              in: body
              type: string
              description: "Start date YYYY-MM-DD."
            - name: end_date
              in: body
              type: string
              description: "End date YYYY-MM-DD."
          call: "gsc.query-analytics"
          with:
            site_url: "{{site_url}}"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
          outputParameters:
            - name: clicks
              type: number
              mapping: "$.rows[0].clicks"
            - name: impressions
              type: number
              mapping: "$.rows[0].impressions"
  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

Retrieves the latest GTM container version.

naftiko: "0.5"
info:
  label: "Google Tag Manager Container Version"
  description: "Retrieves the latest GTM container version."
  tags:
    - analytics
    - tag-management
    - google-tag-manager
capability:
  exposes:
    - type: mcp
      namespace: tag-management
      port: 8080
      tools:
        - name: get-gtm-version
          description: "Fetch latest GTM container version."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "GTM account ID."
            - name: container_id
              in: body
              type: string
              description: "GTM container ID."
          call: "gtm.get-live-version"
          with:
            account_id: "{{account_id}}"
            container_id: "{{container_id}}"
          outputParameters:
            - name: version_number
              type: string
              mapping: "$.containerVersionId"
  consumes:
    - type: http
      namespace: gtm
      baseUri: "https://www.googleapis.com/tagmanager/v2"
      authentication:
        type: bearer
        token: "$secrets.google_tagmanager_token"
      resources:
        - name: versions
          path: "/accounts/{{account_id}}/containers/{{container_id}}/versions/live"
          inputParameters:
            - name: account_id
              in: path
            - name: container_id
              in: path
          operations:
            - name: get-live-version
              method: GET

Retrieves a HubSpot contact by email.

naftiko: "0.5"
info:
  label: "HubSpot Contact Lookup"
  description: "Retrieves a HubSpot contact by email."
  tags:
    - marketing
    - crm
    - hubspot
capability:
  exposes:
    - type: mcp
      namespace: crm-marketing
      port: 8080
      tools:
        - name: get-hubspot-contact
          description: "Look up a HubSpot contact by email."
          inputParameters:
            - name: email
              in: body
              type: string
              description: "Contact email."
          call: "hubspot.get-contact-by-email"
          with:
            email: "{{email}}"
          outputParameters:
            - name: lifecycle_stage
              type: string
              mapping: "$.properties.lifecyclestage"
            - name: subscription_status
              type: string
              mapping: "$.properties.subscription_status"
  consumes:
    - type: http
      namespace: hubspot
      baseUri: "https://api.hubapi.com/crm/v3"
      authentication:
        type: bearer
        token: "$secrets.hubspot_token"
      resources:
        - name: contacts
          path: "/objects/contacts/{{email}}?idProperty=email"
          inputParameters:
            - name: email
              in: path
          operations:
            - name: get-contact-by-email
              method: GET

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

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

Retrieves Instagram post engagement metrics for editorial content.

naftiko: "0.5"
info:
  label: "Instagram Content Promotion"
  description: "Retrieves Instagram post engagement metrics for editorial content."
  tags:
    - social-media
    - publishing
    - instagram
capability:
  exposes:
    - type: mcp
      namespace: social-engagement
      port: 8080
      tools:
        - name: get-post-engagement
          description: "Fetch Instagram post engagement metrics."
          inputParameters:
            - name: media_id
              in: body
              type: string
              description: "Instagram media ID."
          call: "instagram.get-media-insights"
          with:
            media_id: "{{media_id}}"
          outputParameters:
            - name: impressions
              type: number
              mapping: "$.data[0].values[0].value"
            - name: reach
              type: number
              mapping: "$.data[1].values[0].value"
  consumes:
    - type: http
      namespace: instagram
      baseUri: "https://graph.facebook.com/v18.0"
      authentication:
        type: bearer
        token: "$secrets.instagram_token"
      resources:
        - name: media-insights
          path: "/{{media_id}}/insights"
          inputParameters:
            - name: media_id
              in: path
          operations:
            - name: get-media-insights
              method: GET

Sets up an investigative report workspace by creating a shared Google Drive folder, a Confluence space, assigning tasks in Microsoft Planner, and notifying the investigative team in Microsoft Teams.

naftiko: "0.5"
info:
  label: "Investigative Report Collaboration Orchestrator"
  description: "Sets up an investigative report workspace by creating a shared Google Drive folder, a Confluence space, assigning tasks in Microsoft Planner, and notifying the investigative team in Microsoft Teams."
  tags:
    - publishing
    - collaboration
    - google-drive
    - confluence
    - microsoft-planner
    - microsoft-teams
capability:
  exposes:
    - type: mcp
      namespace: investigative-ops
      port: 8080
      tools:
        - name: setup-investigation
          description: "Create collaboration workspace for investigative reporting."
          inputParameters:
            - name: project_name
              in: body
              type: string
              description: "Investigation project name."
            - name: lead_reporter
              in: body
              type: string
              description: "Lead reporter email."
          steps:
            - name: create-drive-folder
              type: call
              call: "gdrive.create-folder"
              with:
                name: "Investigation - {{project_name}}"
                parent_id: "investigations_root"
            - name: create-confluence-space
              type: call
              call: "confluence.create-space"
              with:
                name: "INV - {{project_name}}"
                key: "INV{{project_name}}"
            - name: create-plan
              type: call
              call: "planner.create-task"
              with:
                title: "Lead: {{project_name}}"
                assigned_to: "{{lead_reporter}}"
            - name: notify-team
              type: call
              call: "msteams.send-message"
              with:
                channel_id: "investigative-team"
                text: "New investigation: {{project_name}}. Lead: {{lead_reporter}}. Drive: {{create-drive-folder.url}}"
  consumes:
    - type: http
      namespace: gdrive
      baseUri: "https://www.googleapis.com/drive/v3"
      authentication:
        type: bearer
        token: "$secrets.google_drive_token"
      resources:
        - name: folders
          path: "/files"
          operations:
            - name: create-folder
              method: POST
    - type: http
      namespace: confluence
      baseUri: "https://gannett.atlassian.net/wiki/rest/api"
      authentication:
        type: basic
        username: "$secrets.confluence_user"
        password: "$secrets.confluence_token"
      resources:
        - name: spaces
          path: "/space"
          operations:
            - name: create-space
              method: POST
    - type: http
      namespace: planner
      baseUri: "https://graph.microsoft.com/v1.0/planner"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: tasks
          path: "/tasks"
          operations:
            - name: create-task
              method: POST
    - type: http
      namespace: msteams
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: channel-messages
          path: "/teams/{{team_id}}/channels/{{channel_id}}/messages"
          inputParameters:
            - name: team_id
              in: path
            - name: channel_id
              in: path
          operations:
            - name: send-message
              method: POST

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

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

Retrieves a Jira ticket by issue key.

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

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

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

Retrieves LinkedIn company page analytics including followers and engagement.

naftiko: "0.5"
info:
  label: "LinkedIn Page Analytics"
  description: "Retrieves LinkedIn company page analytics including followers and engagement."
  tags:
    - social-media
    - linkedin
capability:
  exposes:
    - type: mcp
      namespace: social-analytics
      port: 8080
      tools:
        - name: get-linkedin-analytics
          description: "Fetch LinkedIn company page stats."
          inputParameters:
            - name: organization_id
              in: body
              type: string
              description: "LinkedIn organization ID."
          call: "linkedin.get-page-stats"
          with:
            organization_id: "{{organization_id}}"
          outputParameters:
            - name: follower_count
              type: number
              mapping: "$.firstDegreeSize"
  consumes:
    - type: http
      namespace: linkedin
      baseUri: "https://api.linkedin.com/v2"
      authentication:
        type: bearer
        token: "$secrets.linkedin_token"
      resources:
        - name: stats
          path: "/networkSizes/{{organization_id}}?edgeType=CompanyFollowedByMember"
          inputParameters:
            - name: organization_id
              in: path
          operations:
            - name: get-page-stats
              method: GET

Triggers a data source refresh in Looker Studio for editorial dashboards.

naftiko: "0.5"
info:
  label: "Looker Studio Dashboard Refresh"
  description: "Triggers a data source refresh in Looker Studio for editorial dashboards."
  tags:
    - analytics
    - reporting
    - looker-studio
capability:
  exposes:
    - type: mcp
      namespace: bi-ops
      port: 8080
      tools:
        - name: refresh-dashboard
          description: "Refresh a Looker Studio data source."
          inputParameters:
            - name: datasource_id
              in: body
              type: string
              description: "Looker Studio data source ID."
          call: "lookerstudio.refresh-datasource"
          with:
            datasource_id: "{{datasource_id}}"
  consumes:
    - type: http
      namespace: lookerstudio
      baseUri: "https://datastudio.googleapis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.google_datastudio_token"
      resources:
        - name: datasources
          path: "/datasources/{{datasource_id}}/refresh"
          inputParameters:
            - name: datasource_id
              in: path
          operations:
            - name: refresh-datasource
              method: POST

Retrieves MailChimp newsletter campaign statistics.

naftiko: "0.5"
info:
  label: "MailChimp Newsletter Stats Lookup"
  description: "Retrieves MailChimp newsletter campaign statistics."
  tags:
    - marketing
    - email
    - mailchimp
capability:
  exposes:
    - type: mcp
      namespace: email-marketing
      port: 8080
      tools:
        - name: get-campaign-stats
          description: "Fetch MailChimp campaign statistics."
          inputParameters:
            - name: campaign_id
              in: body
              type: string
              description: "MailChimp campaign ID."
          call: "mailchimp.get-campaign-report"
          with:
            campaign_id: "{{campaign_id}}"
          outputParameters:
            - name: open_rate
              type: number
              mapping: "$.opens.open_rate"
            - name: click_rate
              type: number
              mapping: "$.clicks.click_rate"
            - name: emails_sent
              type: number
              mapping: "$.emails_sent"
  consumes:
    - type: http
      namespace: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: basic
        username: "anystring"
        password: "$secrets.mailchimp_api_key"
      resources:
        - name: reports
          path: "/reports/{{campaign_id}}"
          inputParameters:
            - name: campaign_id
              in: path
          operations:
            - name: get-campaign-report
              method: GET

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

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

Sends a notification to a Microsoft Teams channel.

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

Sends a message to a Microsoft Teams channel.

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

Retrieves New Relic APM metrics.

naftiko: "0.5"
info:
  label: "New Relic Application Performance"
  description: "Retrieves New Relic APM metrics."
  tags:
    - monitoring
    - new-relic
capability:
  exposes:
    - type: mcp
      namespace: apm-monitoring
      port: 8080
      tools:
        - name: get-app-performance
          description: "Fetch New Relic APM metrics."
          inputParameters:
            - name: app_id
              in: body
              type: string
              description: "New Relic app ID."
          call: "newrelic.get-application"
          with:
            app_id: "{{app_id}}"
          outputParameters:
            - name: response_time
              type: number
              mapping: "$.application.application_summary.response_time"
            - name: error_rate
              type: number
              mapping: "$.application.application_summary.error_rate"
  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}}.json"
          inputParameters:
            - name: app_id
              in: path
          operations:
            - name: get-application
              method: GET

Orchestrates news media workflow 1 by coordinating across systems, validating data, and sending notifications.

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

Orchestrates news media workflow 2 by coordinating across systems, validating data, and sending notifications.

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

Retrieves news media operational data for workflow 3.

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

Orchestrates news media workflow 4 by coordinating across systems, validating data, and sending notifications.

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

Orchestrates news media workflow 5 by coordinating across systems, validating data, and sending notifications.

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

Retrieves news media operational data for workflow 6.

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

Orchestrates news media workflow 7 by coordinating across systems, validating data, and sending notifications.

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

Orchestrates news media workflow 8 by coordinating across systems, validating data, and sending notifications.

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

Retrieves news media operational data for workflow 9.

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

Orchestrates news media workflow 10 by coordinating across systems, validating data, and sending notifications.

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

Orchestrates news media workflow 11 by coordinating across systems, validating data, and sending notifications.

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

Retrieves news media operational data for workflow 12.

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

Orchestrates news media workflow 13 by coordinating across systems, validating data, and sending notifications.

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

Orchestrates news media workflow 14 by coordinating across systems, validating data, and sending notifications.

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

Retrieves news media operational data for workflow 15.

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

Orchestrates news media workflow 16 by coordinating across systems, validating data, and sending notifications.

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

Orchestrates news media workflow 17 by coordinating across systems, validating data, and sending notifications.

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

Retrieves news media operational data for workflow 18.

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

Orchestrates news media workflow 19 by coordinating across systems, validating data, and sending notifications.

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

Orchestrates news media workflow 20 by coordinating across systems, validating data, and sending notifications.

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

Retrieves news media operational data for workflow 21.

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

Orchestrates news media workflow 22 by coordinating across systems, validating data, and sending notifications.

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

Pulls subscriber data from Salesforce, cross-references with Google Analytics engagement, and refreshes a Looker Studio dashboard with subscriber health metrics.

naftiko: "0.5"
info:
  label: "Paywall Subscription Analytics Orchestrator"
  description: "Pulls subscriber data from Salesforce, cross-references with Google Analytics engagement, and refreshes a Looker Studio dashboard with subscriber health metrics."
  tags:
    - subscriptions
    - analytics
    - salesforce
    - google-analytics
    - looker-studio
capability:
  exposes:
    - type: mcp
      namespace: subscription-analytics
      port: 8080
      tools:
        - name: analyze-subscriber-health
          description: "Aggregate subscriber and engagement data for the subscription health dashboard."
          inputParameters:
            - name: segment
              in: body
              type: string
              description: "Subscriber segment (e.g., 'premium', 'basic')."
            - name: date_range
              in: body
              type: string
              description: "Date range."
          steps:
            - name: get-subscriber-data
              type: call
              call: "salesforce.query-subscribers"
              with:
                segment: "{{segment}}"
            - name: get-engagement
              type: call
              call: "ga.get-report"
              with:
                segment: "{{segment}}"
                date_range: "{{date_range}}"
            - name: refresh-dashboard
              type: call
              call: "lookerstudio.refresh-datasource"
              with:
                datasource_id: "subscriber_health"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://gannett.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: query
          path: "/query"
          operations:
            - name: query-subscribers
              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: lookerstudio
      baseUri: "https://datastudio.googleapis.com/v1"
      authentication:
        type: bearer
        token: "$secrets.google_datastudio_token"
      resources:
        - name: datasources
          path: "/datasources/{{datasource_id}}/refresh"
          inputParameters:
            - name: datasource_id
              in: path
          operations:
            - name: refresh-datasource
              method: POST

Triggers a Power BI dataset refresh.

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

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

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

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

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

Retrieves a Salesforce account by account ID.

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

Retrieves a Salesforce advertiser account by ID, returning account name, contract status, and revenue.

naftiko: "0.5"
info:
  label: "Salesforce Advertiser Account Lookup"
  description: "Retrieves a Salesforce advertiser account by ID, returning account name, contract status, and revenue."
  tags:
    - advertising
    - sales
    - salesforce
capability:
  exposes:
    - type: mcp
      namespace: ad-sales
      port: 8080
      tools:
        - name: get-advertiser-account
          description: "Fetch Salesforce advertiser account details."
          inputParameters:
            - name: account_id
              in: body
              type: string
              description: "Salesforce account ID."
          call: "salesforce.get-account"
          with:
            account_id: "{{account_id}}"
          outputParameters:
            - name: name
              type: string
              mapping: "$.Name"
            - name: contract_status
              type: string
              mapping: "$.Contract_Status__c"
            - name: annual_revenue
              type: string
              mapping: "$.AnnualRevenue"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://gannett.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: accounts
          path: "/sobjects/Account/{{account_id}}"
          inputParameters:
            - name: account_id
              in: path
          operations:
            - name: get-account
              method: GET

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

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

Creates a new incident in ServiceNow.

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

Retrieves a ServiceNow incident by number.

naftiko: "0.5"
info:
  label: "ServiceNow Incident Lookup"
  description: "Retrieves a ServiceNow incident by number."
  tags:
    - it-ops
    - servicenow
capability:
  exposes:
    - type: mcp
      namespace: it-service
      port: 8080
      tools:
        - name: get-incident
          description: "Fetch a ServiceNow incident."
          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://gannett.service-now.com/api/now"
      authentication:
        type: basic
        username: "$secrets.servicenow_user"
        password: "$secrets.servicenow_password"
      resources:
        - name: incidents
          path: "/table/incident?sysparm_query=number={{number}}"
          inputParameters:
            - name: number
              in: query
          operations:
            - name: get-incident
              method: GET

Uploads a document to SharePoint.

naftiko: "0.5"
info:
  label: "SharePoint Document Upload"
  description: "Uploads a document to SharePoint."
  tags:
    - documents
    - sharepoint
capability:
  exposes:
    - type: mcp
      namespace: document-mgmt
      port: 8080
      tools:
        - name: upload-document
          description: "Upload a file to SharePoint."
          inputParameters:
            - name: site_id
              in: body
              type: string
              description: "SharePoint site ID."
            - name: folder_path
              in: body
              type: string
              description: "Folder path."
            - name: file_name
              in: body
              type: string
              description: "File name."
          call: "sharepoint.upload-file"
          with:
            site_id: "{{site_id}}"
            folder_path: "{{folder_path}}"
            file_name: "{{file_name}}"
  consumes:
    - type: http
      namespace: sharepoint
      baseUri: "https://graph.microsoft.com/v1.0/sites"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: drive-items
          path: "/{{site_id}}/drive/root:/{{folder_path}}/{{file_name}}:/content"
          inputParameters:
            - name: site_id
              in: path
            - name: folder_path
              in: path
            - name: file_name
              in: path
          operations:
            - name: upload-file
              method: PUT

Retrieves a document from SharePoint.

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

Sends a notification to a Slack channel.

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

Runs an analytics query against the Snowflake data warehouse.

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

Retrieves subscriber acquisition metrics.

naftiko: "0.5"
info:
  label: "Subscriber Acquisition Report"
  description: "Retrieves subscriber acquisition metrics."
  tags:
    - subscriptions
    - analytics
capability:
  exposes:
    - type: mcp
      namespace: subscriptions
      port: 8080
      tools:
        - name: get-subscriber
          description: "Retrieves subscriber acquisition metrics."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The subscriber acquisition report identifier."
          call: "subscriptions-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: subscriptions-api
      baseUri: "https://api.usa-today.com/subscriptions/v1"
      authentication:
        type: bearer
        token: "$secrets.usa_today_api_token"
      resources:
        - name: subscriber
          path: "/subscriber/acquisition/report/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-subscriber
              method: GET

Identifies at-risk subscribers in Salesforce, sends targeted retention campaigns via MailChimp, creates retention offers in the subscription platform, and logs results in Google Sheets.

naftiko: "0.5"
info:
  label: "Subscriber Churn Prevention Orchestrator"
  description: "Identifies at-risk subscribers in Salesforce, sends targeted retention campaigns via MailChimp, creates retention offers in the subscription platform, and logs results in Google Sheets."
  tags:
    - subscriptions
    - retention
    - salesforce
    - mailchimp
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: retention-ops
      port: 8080
      tools:
        - name: run-churn-prevention
          description: "Identify at-risk subscribers and trigger retention campaigns."
          inputParameters:
            - name: risk_threshold
              in: body
              type: number
              description: "Churn risk score threshold (0-100)."
          steps:
            - name: get-at-risk
              type: call
              call: "salesforce.query-subscribers"
              with:
                query: "SELECT Id, Email, Churn_Score__c FROM Contact WHERE Churn_Score__c > {{risk_threshold}}"
            - name: send-retention
              type: call
              call: "mailchimp.send-campaign"
              with:
                list_id: "at_risk_subscribers"
                subject: "We miss you! Special offer inside"
                template: "retention_offer"
            - name: log-results
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "retention_campaigns"
                row:
                  threshold: "{{risk_threshold}}"
                  contacts_targeted: "{{get-at-risk.totalSize}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://gannett.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: query
          path: "/query"
          operations:
            - name: query-subscribers
              method: GET
    - type: http
      namespace: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: basic
        username: "anystring"
        password: "$secrets.mailchimp_api_key"
      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: rows
          path: "/spreadsheets/{{spreadsheet_id}}/values/Sheet1:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
          operations:
            - name: append-row
              method: POST

When a subscriber upgrades their plan, updates the record in Salesforce, processes payment via Mastercard, and sends a welcome email via MailChimp.

naftiko: "0.5"
info:
  label: "Subscription Management Orchestrator"
  description: "When a subscriber upgrades their plan, updates the record in Salesforce, processes payment via Mastercard, and sends a welcome email via MailChimp."
  tags:
    - subscriptions
    - salesforce
    - mastercard
    - mailchimp
capability:
  exposes:
    - type: mcp
      namespace: subscription-ops
      port: 8080
      tools:
        - name: upgrade-subscription
          description: "Process subscription upgrade across Salesforce, payment, and email."
          inputParameters:
            - name: contact_id
              in: body
              type: string
              description: "Salesforce contact ID."
            - name: new_plan
              in: body
              type: string
              description: "New subscription plan name."
          steps:
            - name: get-contact
              type: call
              call: "salesforce.get-contact"
              with:
                contact_id: "{{contact_id}}"
            - name: update-subscription
              type: call
              call: "salesforce.update-contact"
              with:
                contact_id: "{{contact_id}}"
                subscription_plan: "{{new_plan}}"
            - name: process-payment
              type: call
              call: "mastercard.create-payment"
              with:
                customer_id: "{{contact_id}}"
                plan: "{{new_plan}}"
            - name: send-welcome
              type: call
              call: "mailchimp.send-transactional"
              with:
                email: "{{get-contact.Email}}"
                template: "subscription_upgrade"
                merge_vars:
                  first_name: "{{get-contact.FirstName}}"
                  plan: "{{new_plan}}"
  consumes:
    - type: http
      namespace: salesforce
      baseUri: "https://gannett.my.salesforce.com/services/data/v58.0"
      authentication:
        type: bearer
        token: "$secrets.salesforce_token"
      resources:
        - name: contacts
          path: "/sobjects/Contact/{{contact_id}}"
          inputParameters:
            - name: contact_id
              in: path
          operations:
            - name: get-contact
              method: GET
            - name: update-contact
              method: PATCH
    - type: http
      namespace: mastercard
      baseUri: "https://api.mastercard.com/payments/v1"
      authentication:
        type: bearer
        token: "$secrets.mastercard_token"
      resources:
        - name: payments
          path: "/payments"
          operations:
            - name: create-payment
              method: POST
    - type: http
      namespace: mailchimp
      baseUri: "https://mandrillapp.com/api/1.0"
      authentication:
        type: bearer
        token: "$secrets.mailchimp_transactional_key"
      resources:
        - name: messages
          path: "/messages/send-template"
          operations:
            - name: send-transactional
              method: POST

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

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

Retrieves content syndication partner delivery status.

naftiko: "0.5"
info:
  label: "Syndication Partner Status"
  description: "Retrieves content syndication partner delivery status."
  tags:
    - distribution
    - partnerships
capability:
  exposes:
    - type: mcp
      namespace: distribution
      port: 8080
      tools:
        - name: get-syndication
          description: "Retrieves content syndication partner delivery status."
          inputParameters:
            - name: entity_id
              in: body
              type: string
              description: "The syndication partner status identifier."
          call: "distribution-api.get-data"
          with:
            entity_id: "{{entity_id}}"
  consumes:
    - type: http
      namespace: distribution-api
      baseUri: "https://api.usa-today.com/distribution/v1"
      authentication:
        type: bearer
        token: "$secrets.usa_today_api_token"
      resources:
        - name: syndication
          path: "/syndication/partner/status/{{entity_id}}"
          inputParameters:
            - name: entity_id
              in: path
          operations:
            - name: get-syndication
              method: GET

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

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

Fetches recent Twitter mentions and logs results to Google Sheets.

naftiko: "0.5"
info:
  label: "Twitter Brand Mention Tracker"
  description: "Fetches recent Twitter mentions and logs results to Google Sheets."
  tags:
    - social-media
    - twitter
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: social-listening
      port: 8080
      tools:
        - name: track-brand-mentions
          description: "Search Twitter mentions and log to Sheets."
          inputParameters:
            - name: query
              in: body
              type: string
              description: "Search query."
            - name: since_date
              in: body
              type: string
              description: "Start date YYYY-MM-DD."
          steps:
            - name: search-tweets
              type: call
              call: "twitter.search-recent"
              with:
                query: "{{query}}"
                start_time: "{{since_date}}T00:00:00Z"
            - name: log-results
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "usa_today_social"
                row:
                  query: "{{query}}"
                  count: "{{search-tweets.meta.result_count}}"
  consumes:
    - type: http
      namespace: twitter
      baseUri: "https://api.twitter.com/2"
      authentication:
        type: bearer
        token: "$secrets.twitter_bearer_token"
      resources:
        - name: tweets-search
          path: "/tweets/search/recent"
          operations:
            - name: search-recent
              method: GET
    - type: http
      namespace: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: rows
          path: "/spreadsheets/{{spreadsheet_id}}/values/Sheet1:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
          operations:
            - name: append-row
              method: POST

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

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

Retrieves a WordPress post by ID, returning title, status, date, and URL.

naftiko: "0.5"
info:
  label: "WordPress Post Lookup"
  description: "Retrieves a WordPress post by ID, returning title, status, date, and URL."
  tags:
    - publishing
    - wordpress
capability:
  exposes:
    - type: mcp
      namespace: cms-ops
      port: 8080
      tools:
        - name: get-post
          description: "Fetch a WordPress post by ID."
          inputParameters:
            - name: post_id
              in: body
              type: string
              description: "WordPress post ID."
          call: "wordpress.get-post"
          with:
            post_id: "{{post_id}}"
          outputParameters:
            - name: title
              type: string
              mapping: "$.title.rendered"
            - name: status
              type: string
              mapping: "$.status"
            - name: date
              type: string
              mapping: "$.date"
            - name: link
              type: string
              mapping: "$.link"
  consumes:
    - type: http
      namespace: wordpress
      baseUri: "https://www.usatoday.com/wp-json/wp/v2"
      authentication:
        type: bearer
        token: "$secrets.wordpress_token"
      resources:
        - name: posts
          path: "/posts/{{post_id}}"
          inputParameters:
            - name: post_id
              in: path
          operations:
            - name: get-post
              method: GET

Retrieves employee details from Workday by worker ID.

naftiko: "0.5"
info:
  label: "Workday Employee Directory Lookup"
  description: "Retrieves employee details from Workday by worker ID."
  tags:
    - hr
    - workday
capability:
  exposes:
    - type: mcp
      namespace: hr-directory
      port: 8080
      tools:
        - name: get-employee-details
          description: "Fetch Workday employee profile."
          inputParameters:
            - name: worker_id
              in: body
              type: string
              description: "Workday worker ID."
          call: "workday.get-worker"
          with:
            worker_id: "{{worker_id}}"
          outputParameters:
            - name: full_name
              type: string
              mapping: "$.worker.name.formatted"
            - name: title
              type: string
              mapping: "$.worker.position.title"
            - name: department
              type: string
              mapping: "$.worker.organization.name"
  consumes:
    - type: http
      namespace: workday
      baseUri: "https://wd2-impl-services1.workday.com/ccx/api/v1"
      authentication:
        type: bearer
        token: "$secrets.workday_token"
      resources:
        - name: workers
          path: "/workers/{{worker_id}}"
          inputParameters:
            - name: worker_id
              in: path
          operations:
            - name: get-worker
              method: GET

Retrieves employee profile from Workday.

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

Retrieves YouTube channel analytics for USA Today's channel.

naftiko: "0.5"
info:
  label: "YouTube Channel Analytics"
  description: "Retrieves YouTube channel analytics for USA Today's channel."
  tags:
    - publishing
    - video
    - youtube
capability:
  exposes:
    - type: mcp
      namespace: video-analytics
      port: 8080
      tools:
        - name: get-channel-analytics
          description: "Fetch YouTube channel analytics."
          inputParameters:
            - name: channel_id
              in: body
              type: string
              description: "YouTube channel ID."
            - name: start_date
              in: body
              type: string
              description: "Start date."
            - name: end_date
              in: body
              type: string
              description: "End date."
          call: "youtube.get-analytics"
          with:
            channel_id: "{{channel_id}}"
            start_date: "{{start_date}}"
            end_date: "{{end_date}}"
          outputParameters:
            - name: views
              type: number
              mapping: "$.rows[0][0]"
            - name: watch_time_minutes
              type: number
              mapping: "$.rows[0][1]"
  consumes:
    - type: http
      namespace: youtube
      baseUri: "https://youtubeanalytics.googleapis.com/v2"
      authentication:
        type: bearer
        token: "$secrets.youtube_token"
      resources:
        - name: reports
          path: "/reports"
          operations:
            - name: get-analytics
              method: GET

Retrieves a Zendesk support ticket for subscriber service.

naftiko: "0.5"
info:
  label: "Zendesk Support Ticket Lookup"
  description: "Retrieves a Zendesk support ticket for subscriber service."
  tags:
    - customer-service
    - subscriptions
    - zendesk
capability:
  exposes:
    - type: mcp
      namespace: subscriber-support
      port: 8080
      tools:
        - name: get-ticket
          description: "Fetch a Zendesk support ticket."
          inputParameters:
            - name: ticket_id
              in: body
              type: string
              description: "Zendesk ticket ID."
          call: "zendesk.get-ticket"
          with:
            ticket_id: "{{ticket_id}}"
          outputParameters:
            - name: status
              type: string
              mapping: "$.ticket.status"
            - name: subject
              type: string
              mapping: "$.ticket.subject"
            - name: priority
              type: string
              mapping: "$.ticket.priority"
  consumes:
    - type: http
      namespace: zendesk
      baseUri: "https://gannett.zendesk.com/api/v2"
      authentication:
        type: bearer
        token: "$secrets.zendesk_token"
      resources:
        - name: tickets
          path: "/tickets/{{ticket_id}}"
          inputParameters:
            - name: ticket_id
              in: path
          operations:
            - name: get-ticket
              method: GET

Creates a Zoom meeting and sends invitations via Microsoft Outlook.

naftiko: "0.5"
info:
  label: "Zoom Meeting Scheduler"
  description: "Creates a Zoom meeting and sends invitations via Microsoft Outlook."
  tags:
    - communications
    - zoom
    - microsoft-outlook
capability:
  exposes:
    - type: mcp
      namespace: meeting-management
      port: 8080
      tools:
        - name: schedule-zoom-meeting
          description: "Create a Zoom meeting and email invites."
          inputParameters:
            - name: topic
              in: body
              type: string
              description: "Meeting topic."
            - name: start_time
              in: body
              type: string
              description: "ISO 8601 start time."
            - name: attendees
              in: body
              type: string
              description: "Comma-separated emails."
          steps:
            - name: create-meeting
              type: call
              call: "zoom.create-meeting"
              with:
                topic: "{{topic}}"
                start_time: "{{start_time}}"
            - name: send-invites
              type: call
              call: "outlook.send-mail"
              with:
                to: "{{attendees}}"
                subject: "Zoom: {{topic}}"
                body: "Join: {{create-meeting.join_url}}"
  consumes:
    - type: http
      namespace: zoom
      baseUri: "https://api.zoom.us/v2"
      authentication:
        type: bearer
        token: "$secrets.zoom_token"
      resources:
        - name: meetings
          path: "/users/me/meetings"
          operations:
            - name: create-meeting
              method: POST
    - type: http
      namespace: outlook
      baseUri: "https://graph.microsoft.com/v1.0"
      authentication:
        type: bearer
        token: "$secrets.msgraph_token"
      resources:
        - name: mail
          path: "/me/sendMail"
          operations:
            - name: send-mail
              method: POST

Creates a Zoom webinar for live news events, promotes via MailChimp, posts on LinkedIn, and logs registrations in Google Sheets.

naftiko: "0.5"
info:
  label: "Zoom Webinar Event Orchestrator"
  description: "Creates a Zoom webinar for live news events, promotes via MailChimp, posts on LinkedIn, and logs registrations in Google Sheets."
  tags:
    - events
    - publishing
    - zoom
    - mailchimp
    - linkedin
    - google-sheets
capability:
  exposes:
    - type: mcp
      namespace: event-management
      port: 8080
      tools:
        - name: create-live-event
          description: "Set up a Zoom webinar with promotion and tracking."
          inputParameters:
            - 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: send-promotion
              type: call
              call: "mailchimp.send-campaign"
              with:
                list_id: "usa_today_events"
                subject: "Join Live: {{topic}}"
                body: "Register: {{create-webinar.registration_url}}"
            - name: post-linkedin
              type: call
              call: "linkedin.create-post"
              with:
                text: "Join our live event: {{topic}}. Register: {{create-webinar.registration_url}}"
            - name: log-event
              type: call
              call: "gsheets.append-row"
              with:
                spreadsheet_id: "events_tracker"
                row:
                  topic: "{{topic}}"
                  webinar_id: "{{create-webinar.id}}"
                  url: "{{create-webinar.registration_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: mailchimp
      baseUri: "https://us1.api.mailchimp.com/3.0"
      authentication:
        type: basic
        username: "anystring"
        password: "$secrets.mailchimp_api_key"
      resources:
        - name: campaigns
          path: "/campaigns"
          operations:
            - name: send-campaign
              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: gsheets
      baseUri: "https://sheets.googleapis.com/v4"
      authentication:
        type: bearer
        token: "$secrets.google_sheets_token"
      resources:
        - name: rows
          path: "/spreadsheets/{{spreadsheet_id}}/values/Sheet1:append"
          inputParameters:
            - name: spreadsheet_id
              in: path
          operations:
            - name: append-row
              method: POST