AppLovin · Capability

AppLovin Publisher Monetization

Workflow capability for mobile app publishers monetizing with AppLovin MAX. Combines MAX ad unit management with MAX revenue reporting so a single mediation/ops role can configure waterfalls, run experiments, manage test devices, and pull revenue analytics.

Run with Naftiko AppLovinMAXMediationMonetizationPublisher

What You Can Do

GET
List ad units — List ad units.
/v1/ad-units
POST
Create ad unit — Create an ad unit.
/v1/ad-units
GET
Get ad unit — Get a single ad unit by ID.
/v1/ad-units/{ad_unit_id}
POST
Update ad unit — Update an ad unit.
/v1/ad-units/{ad_unit_id}
GET
List test devices — List test devices.
/v1/test-devices
POST
Create test device — Register a test device.
/v1/test-devices
GET
Get revenue report — Get aggregated MAX revenue rows.
/v1/revenue-report

MCP Tools

list-ad-units

List MAX ad units.

read-only
get-ad-unit

Get a MAX ad unit by ID.

read-only
create-ad-unit

Create a new MAX ad unit.

update-ad-unit

Update a MAX ad unit (partial).

idempotent
list-test-devices

List MAX test devices.

read-only
create-test-device

Register a new MAX test device.

get-revenue-report

Get MAX revenue report rows.

read-only

Capability Spec

publisher-monetization.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: AppLovin Publisher Monetization
  description: Workflow capability for mobile app publishers monetizing with AppLovin MAX. Combines MAX ad unit management
    with MAX revenue reporting so a single mediation/ops role can configure waterfalls, run experiments, manage test devices,
    and pull revenue analytics.
  tags:
  - AppLovin
  - MAX
  - Mediation
  - Monetization
  - Publisher
  created: '2026-05-05'
  modified: '2026-05-06'
binds:
- namespace: env
  keys:
    APPLOVIN_MANAGEMENT_KEY: APPLOVIN_MANAGEMENT_KEY
    APPLOVIN_REPORT_KEY: APPLOVIN_REPORT_KEY
capability:
  consumes:
  - type: http
    namespace: applovin-max-ad-unit-management
    baseUri: https://o.applovin.com/mediation/v1
    description: MAX mediation management API.
    authentication:
      type: apikey
      key: Api-Key
      value: '{{APPLOVIN_MANAGEMENT_KEY}}'
      placement: header
    resources:
    - name: ad-units
      path: /ad_units
      description: Ad unit collection.
      operations:
      - name: list-ad-units
        method: GET
        description: List all ad units.
        inputParameters:
        - name: fields
          in: query
          type: string
          required: false
          description: Optional fields to include.
        - name: limit
          in: query
          type: integer
          required: false
          description: Max rows.
        - name: offset
          in: query
          type: integer
          required: false
          description: Pagination offset.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: ad-unit
      path: /ad_unit
      description: Single ad unit.
      operations:
      - name: create-ad-unit
        method: POST
        description: Create a new ad unit.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        body:
          type: json
          data:
            name: '{{tools.name}}'
            platform: '{{tools.platform}}'
            package_name: '{{tools.package_name}}'
            ad_format: '{{tools.ad_format}}'
    - name: ad-unit-detail
      path: /ad_unit/{ad_unit_id}
      description: Single ad unit by ID.
      operations:
      - name: get-ad-unit
        method: GET
        description: Get an ad unit by ID.
        inputParameters:
        - name: ad_unit_id
          in: path
          type: string
          required: true
          description: Ad unit identifier.
        - name: fields
          in: query
          type: string
          required: false
          description: Comma-separated optional fields.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
      - name: update-ad-unit
        method: POST
        description: Update an ad unit (partial update).
        inputParameters:
        - name: ad_unit_id
          in: path
          type: string
          required: true
          description: Ad unit identifier.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        body:
          type: json
          data: '{{tools.body}}'
    - name: test-devices
      path: /test_devices
      description: Test devices.
      operations:
      - name: list-test-devices
        method: GET
        description: List test devices.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
    - name: test-device
      path: /test_device
      description: Single test device.
      operations:
      - name: create-test-device
        method: POST
        description: Register a new test device.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        body:
          type: json
          data:
            name: '{{tools.name}}'
            device_id: '{{tools.device_id}}'
            disabled: '{{tools.disabled}}'
            network: '{{tools.network}}'
  - type: http
    namespace: applovin-max-revenue-reporting
    baseUri: https://r.applovin.com
    description: AppLovin MAX revenue reporting endpoint.
    authentication:
      type: apikey
      key: api_key
      value: '{{APPLOVIN_REPORT_KEY}}'
      placement: query
    resources:
    - name: revenue-report
      path: /maxReport
      description: Aggregated MAX revenue rows.
      operations:
      - name: get-max-revenue-report
        method: GET
        description: Get MAX Revenue Report for a date range.
        inputParameters:
        - name: columns
          in: query
          type: string
          required: true
          description: Comma-separated list of report columns.
        - name: start
          in: query
          type: string
          required: true
          description: Start date YYYY-MM-DD.
        - name: end
          in: query
          type: string
          required: true
          description: End date YYYY-MM-DD (within 45 days of start).
        - name: format
          in: query
          type: string
          required: false
          description: Response format json or csv.
        - name: limit
          in: query
          type: integer
          required: false
          description: Maximum rows.
        - name: offset
          in: query
          type: integer
          required: false
          description: Pagination offset.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
  exposes:
  - type: rest
    port: 8080
    namespace: publisher-monetization-api
    description: Unified REST API for AppLovin publisher monetization workflows.
    resources:
    - path: /v1/ad-units
      name: ad-units
      description: MAX ad units.
      operations:
      - method: GET
        name: list-ad-units
        description: List ad units.
        call: applovin-max-ad-unit-management.list-ad-units
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: create-ad-unit
        description: Create an ad unit.
        call: applovin-max-ad-unit-management.create-ad-unit
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/ad-units/{ad_unit_id}
      name: ad-unit
      description: Single MAX ad unit.
      operations:
      - method: GET
        name: get-ad-unit
        description: Get a single ad unit by ID.
        call: applovin-max-ad-unit-management.get-ad-unit
        with:
          ad_unit_id: rest.ad_unit_id
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: update-ad-unit
        description: Update an ad unit.
        call: applovin-max-ad-unit-management.update-ad-unit
        with:
          ad_unit_id: rest.ad_unit_id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/test-devices
      name: test-devices
      description: MAX test devices.
      operations:
      - method: GET
        name: list-test-devices
        description: List test devices.
        call: applovin-max-ad-unit-management.list-test-devices
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: create-test-device
        description: Register a test device.
        call: applovin-max-ad-unit-management.create-test-device
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/revenue-report
      name: revenue-report
      description: MAX revenue analytics.
      operations:
      - method: GET
        name: get-revenue-report
        description: Get aggregated MAX revenue rows.
        call: applovin-max-revenue-reporting.get-max-revenue-report
        with:
          columns: rest.columns
          start: rest.start
          end: rest.end
          format: rest.format
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    port: 9090
    namespace: publisher-monetization-mcp
    transport: http
    description: MCP server for AI-assisted MAX mediation and revenue analytics.
    tools:
    - name: list-ad-units
      description: List MAX ad units.
      hints:
        readOnly: true
        openWorld: true
      call: applovin-max-ad-unit-management.list-ad-units
      outputParameters:
      - type: object
        mapping: $.
    - name: get-ad-unit
      description: Get a MAX ad unit by ID.
      hints:
        readOnly: true
        openWorld: true
      call: applovin-max-ad-unit-management.get-ad-unit
      with:
        ad_unit_id: tools.ad_unit_id
      outputParameters:
      - type: object
        mapping: $.
    - name: create-ad-unit
      description: Create a new MAX ad unit.
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: applovin-max-ad-unit-management.create-ad-unit
      outputParameters:
      - type: object
        mapping: $.
    - name: update-ad-unit
      description: Update a MAX ad unit (partial).
      hints:
        readOnly: false
        destructive: false
        idempotent: true
      call: applovin-max-ad-unit-management.update-ad-unit
      with:
        ad_unit_id: tools.ad_unit_id
      outputParameters:
      - type: object
        mapping: $.
    - name: list-test-devices
      description: List MAX test devices.
      hints:
        readOnly: true
        openWorld: true
      call: applovin-max-ad-unit-management.list-test-devices
      outputParameters:
      - type: object
        mapping: $.
    - name: create-test-device
      description: Register a new MAX test device.
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: applovin-max-ad-unit-management.create-test-device
      outputParameters:
      - type: object
        mapping: $.
    - name: get-revenue-report
      description: Get MAX revenue report rows.
      hints:
        readOnly: true
        openWorld: true
      call: applovin-max-revenue-reporting.get-max-revenue-report
      with:
        columns: tools.columns
        start: tools.start
        end: tools.end
      outputParameters:
      - type: object
        mapping: $.