TEGNA · Capability

TEGNA Media Advertising

Unified media advertising capability for TEGNA, combining AudienceOne first-party digital targeting and Premion OTT/CTV streaming advertising. Enables advertisers, media buyers, and agency partners to plan, execute, and measure multi-screen campaigns across TEGNA's 64 local TV brands and Premion's premium streaming inventory in 51 U.S. markets.

Run with Naftiko TEGNAMedia AdvertisingDigital AdvertisingOTTCTVAudience TargetingBroadcasting

What You Can Do

GET
List audiences — List available audience segments for campaign targeting.
/v1/audiences
GET
List campaigns — List digital advertising campaigns.
/v1/campaigns
POST
Create campaign — Create a digital advertising campaign.
/v1/campaigns
GET
Get campaign performance — Get digital campaign performance metrics.
/v1/campaigns/{campaignId}/performance
GET
List ott campaigns — List OTT/CTV advertising campaigns.
/v1/ott-campaigns
POST
Create ott campaign — Create an OTT/CTV advertising campaign.
/v1/ott-campaigns
GET
Get ott campaign performance — Get OTT/CTV campaign streaming performance.
/v1/ott-campaigns/{campaignId}/performance
GET
List ott inventory — Browse available OTT inventory.
/v1/inventory
GET
List markets — List TEGNA broadcast markets.
/v1/markets

MCP Tools

list-audience-segments

List TEGNA AudienceOne first-party audience segments for campaign targeting.

read-only
list-digital-campaigns

List TEGNA AudienceOne digital advertising campaigns.

read-only
get-digital-campaign-performance

Get performance metrics for a TEGNA digital advertising campaign.

read-only
list-broadcast-markets

List TEGNA local TV broadcast markets available for campaign targeting.

read-only
list-ott-campaigns

List Premion OTT/CTV streaming advertising campaigns.

read-only
get-ott-campaign-performance

Get streaming video performance metrics (impressions, completion rate, CPCV) for a Premion OTT campaign.

read-only
list-ott-inventory

Browse available OTT/CTV ad inventory across Roku, Hulu, Fire TV, and other streaming platforms.

read-only
create-ott-campaign

Create a new OTT/CTV streaming video advertising campaign on Premion.

APIs Used

tegna-audience-one tegna-premion

Capability Spec

media-advertising.yaml Raw ↑
naftiko: "1.0.0-alpha1"

info:
  label: "TEGNA Media Advertising"
  description: >-
    Unified media advertising capability for TEGNA, combining AudienceOne
    first-party digital targeting and Premion OTT/CTV streaming advertising.
    Enables advertisers, media buyers, and agency partners to plan, execute,
    and measure multi-screen campaigns across TEGNA's 64 local TV brands and
    Premion's premium streaming inventory in 51 U.S. markets.
  tags:
    - TEGNA
    - Media Advertising
    - Digital Advertising
    - OTT
    - CTV
    - Audience Targeting
    - Broadcasting
  created: "2026-05-03"
  modified: "2026-05-03"

binds:
  - namespace: env
    keys:
      TEGNA_API_TOKEN: TEGNA_API_TOKEN
      PREMION_API_KEY: PREMION_API_KEY

capability:
  consumes:
    - import: tegna-audience-one
      location: ./shared/audience-one.yaml
    - import: tegna-premion
      location: ./shared/premion-ott.yaml

  exposes:
    - type: rest
      port: 8080
      namespace: tegna-media-api
      description: "Unified REST API for TEGNA multi-screen media advertising."
      resources:
        - path: /v1/audiences
          name: audiences
          description: "TEGNA first-party audience segments for targeting."
          operations:
            - method: GET
              name: list-audiences
              description: "List available audience segments for campaign targeting."
              call: "tegna-audience-one.list-audiences"
              with:
                market: "rest.market"
                type: "rest.type"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/campaigns
          name: campaigns
          description: "TEGNA digital advertising campaigns."
          operations:
            - method: GET
              name: list-campaigns
              description: "List digital advertising campaigns."
              call: "tegna-audience-one.list-campaigns"
              with:
                status: "rest.status"
              outputParameters:
                - type: array
                  mapping: "$."
            - method: POST
              name: create-campaign
              description: "Create a digital advertising campaign."
              call: "tegna-audience-one.create-campaign"
              with:
                name: "rest.name"
                startDate: "rest.startDate"
                budget: "rest.budget"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/campaigns/{campaignId}/performance
          name: campaign-performance
          description: "Campaign performance metrics."
          operations:
            - method: GET
              name: get-campaign-performance
              description: "Get digital campaign performance metrics."
              call: "tegna-audience-one.get-campaign-performance"
              with:
                campaignId: "rest.campaignId"
                startDate: "rest.startDate"
                endDate: "rest.endDate"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/ott-campaigns
          name: ott-campaigns
          description: "Premion OTT/CTV advertising campaigns."
          operations:
            - method: GET
              name: list-ott-campaigns
              description: "List OTT/CTV advertising campaigns."
              call: "tegna-premion.list-ott-campaigns"
              with:
                status: "rest.status"
              outputParameters:
                - type: array
                  mapping: "$."
            - method: POST
              name: create-ott-campaign
              description: "Create an OTT/CTV advertising campaign."
              call: "tegna-premion.create-ott-campaign"
              with:
                name: "rest.name"
                startDate: "rest.startDate"
                budget: "rest.budget"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/ott-campaigns/{campaignId}/performance
          name: ott-performance
          description: "OTT campaign streaming performance."
          operations:
            - method: GET
              name: get-ott-campaign-performance
              description: "Get OTT/CTV campaign streaming performance."
              call: "tegna-premion.get-ott-campaign-performance"
              with:
                campaignId: "rest.campaignId"
                startDate: "rest.startDate"
                endDate: "rest.endDate"
              outputParameters:
                - type: object
                  mapping: "$."

        - path: /v1/inventory
          name: inventory
          description: "Available OTT/CTV advertising inventory."
          operations:
            - method: GET
              name: list-ott-inventory
              description: "Browse available OTT inventory."
              call: "tegna-premion.list-ott-inventory"
              with:
                platform: "rest.platform"
                genre: "rest.genre"
              outputParameters:
                - type: array
                  mapping: "$."

        - path: /v1/markets
          name: markets
          description: "TEGNA local broadcast markets."
          operations:
            - method: GET
              name: list-markets
              description: "List TEGNA broadcast markets."
              call: "tegna-audience-one.list-markets"
              outputParameters:
                - type: array
                  mapping: "$."

    - type: mcp
      port: 9090
      namespace: tegna-media-mcp
      transport: http
      description: "MCP server for AI-assisted TEGNA multi-screen media advertising."
      tools:
        - name: list-audience-segments
          description: "List TEGNA AudienceOne first-party audience segments for campaign targeting."
          hints:
            readOnly: true
          call: "tegna-audience-one.list-audiences"
          with:
            market: "tools.market"
            type: "tools.type"
          outputParameters:
            - type: object
              mapping: "$."

        - name: list-digital-campaigns
          description: "List TEGNA AudienceOne digital advertising campaigns."
          hints:
            readOnly: true
          call: "tegna-audience-one.list-campaigns"
          with:
            status: "tools.status"
          outputParameters:
            - type: array
              mapping: "$."

        - name: get-digital-campaign-performance
          description: "Get performance metrics for a TEGNA digital advertising campaign."
          hints:
            readOnly: true
          call: "tegna-audience-one.get-campaign-performance"
          with:
            campaignId: "tools.campaignId"
            startDate: "tools.startDate"
            endDate: "tools.endDate"
          outputParameters:
            - type: object
              mapping: "$."

        - name: list-broadcast-markets
          description: "List TEGNA local TV broadcast markets available for campaign targeting."
          hints:
            readOnly: true
          call: "tegna-audience-one.list-markets"
          outputParameters:
            - type: array
              mapping: "$."

        - name: list-ott-campaigns
          description: "List Premion OTT/CTV streaming advertising campaigns."
          hints:
            readOnly: true
          call: "tegna-premion.list-ott-campaigns"
          with:
            status: "tools.status"
          outputParameters:
            - type: array
              mapping: "$."

        - name: get-ott-campaign-performance
          description: "Get streaming video performance metrics (impressions, completion rate, CPCV) for a Premion OTT campaign."
          hints:
            readOnly: true
          call: "tegna-premion.get-ott-campaign-performance"
          with:
            campaignId: "tools.campaignId"
            startDate: "tools.startDate"
            endDate: "tools.endDate"
          outputParameters:
            - type: object
              mapping: "$."

        - name: list-ott-inventory
          description: "Browse available OTT/CTV ad inventory across Roku, Hulu, Fire TV, and other streaming platforms."
          hints:
            readOnly: true
          call: "tegna-premion.list-ott-inventory"
          with:
            platform: "tools.platform"
            genre: "tools.genre"
          outputParameters:
            - type: array
              mapping: "$."

        - name: create-ott-campaign
          description: "Create a new OTT/CTV streaming video advertising campaign on Premion."
          hints:
            readOnly: false
            destructive: false
          call: "tegna-premion.create-ott-campaign"
          with:
            name: "tools.name"
            startDate: "tools.startDate"
            budget: "tools.budget"
            targetPlatforms: "tools.targetPlatforms"
            impressionGoal: "tools.impressionGoal"
          outputParameters:
            - type: object
              mapping: "$."