Aller au contenu principal
Reporting-Doku
Use Case Codex + Yield

LLM-lesbarer Planning Output

Key-Value Forecast mit Order-Kontext als JSON

Order in GAM aufloesen, Custom-Targeting IDs aufloesen, constrained Forecast ausfuehren und ein stabiles JSON Objekt zurueckgeben, das ein anderes LLM ohne Raten lesen kann.

User Prompt

"Codex, erstelle einen LLM-lesbaren JSON Forecast fuer Order OR-2026-SUMMER. Loese die Order auf, loese key-values audience=sports und hb_pb=20, forecaste Homepage/Sports Ad Units vom 2026-07-01 bis 2026-07-31 fuer 500000 Impressions mit 300x250 und 728x90, splitte Verfuegbarkeit nach Format und gib nur das Decision JSON zurueck."

Erwartetes Ergebnis

Ein normalisiertes forecastDecision JSON mit Order-Metadaten, aufgeloesten key/value IDs, Forecast-Zahlen, Format-Split, Risiko und naechster sicherer Aktion.

Agentenablauf

  1. 01

    Order mit list_orders finden, dann get_order aufrufen, damit orderId, status, advertiserId und traffickerId im JSON stehen.

  2. 02

    Jedes key-value mit search_custom_targeting und get_custom_targeting_values aufloesen; nie nur Labels wie audience=sports an den Forecast uebergeben.

  3. 03

    get_standalone_forecast fuer Draft-Bedarf, get_delivery_forecast_by_line_item fuer bestehende Line Items oder get_prospective_delivery_forecast fuer mehrere gemeinsam simulierte geplante Line Items nutzen.

  4. 04

    breakdownTargets nach Creative-Format hinzufuegen, damit das LLM 300x250 und 728x90 vergleicht statt eine gemischte Kapazitaet zu lesen.

  5. 05

    Den Raw Forecast in ein striktes forecastDecision Objekt mappen, bevor das LLM eine Empfehlung geben darf.

MCP-Funktionen

Parent-MCP-Aufruf mit reporting action.

FunktionKostenZweck
reporting(action="list_orders")0 crFindet die GAM Order per Name.
reporting(action="get_order")0 crHolt vollstaendige Order-Metadaten.
reporting(action="search_custom_targeting")0 crLoest Key-Namen zu Key IDs auf.
reporting(action="get_custom_targeting_values")0 crLoest erlaubte Value IDs pro Key auf.
reporting(action="get_standalone_forecast")0 crForecastet das aufgeloeste Targeting vor Booking.
reporting(action="get_delivery_forecast_by_line_item")0 crVergleicht mit Forecast eines bestehenden Line Items.
reporting(action="get_prospective_delivery_forecast")0 crSimuliert mehrere geplante Line Items gemeinsam.

JSON Payload

{
  "objective": "forecast_key_values_order_json",
  "prerequisiteCalls": [
    {
      "tool": "orders",
      "arguments": {
        "action": "list",
        "params": {
          "q": "OR-2026-SUMMER",
          "limit": 5
        }
      }
    },
    {
      "tool": "orders",
      "arguments": {
        "action": "get",
        "params": {
          "orderId": "9482"
        }
      }
    },
    {
      "tool": "targeting",
      "arguments": {
        "action": "search_custom_targeting",
        "params": {
          "q": "audience",
          "limit": 10
        }
      }
    },
    {
      "tool": "targeting",
      "arguments": {
        "action": "get_custom_targeting_values",
        "params": {
          "keyId": "1871",
          "limit": 200
        }
      }
    }
  ],
  "forecastCall": {
    "tool": "reporting",
    "arguments": {
      "action": "get_standalone_forecast",
      "params": {
        "adUnitIds": [
          "1234567",
          "1234568"
        ],
        "startDate": "2026-07-01T00:00:00",
        "endDate": "2026-07-31T23:59:59",
        "primaryGoalUnits": 500000,
        "lineItemType": "STANDARD",
        "priority": 8,
        "keyValues": [
          {
            "keyId": 1871,
            "valueIds": [
              9912
            ]
          },
          {
            "keyId": 2450,
            "valueIds": [
              3301
            ]
          }
        ],
        "geoTargeting": [
          "2250"
        ],
        "creativeSizes": [
          {
            "width": 300,
            "height": 250
          },
          {
            "width": 728,
            "height": 90
          }
        ],
        "breakdownTargets": [
          {
            "name": "format_300x250",
            "creative": {
              "width": 300,
              "height": 250
            }
          },
          {
            "name": "format_728x90",
            "creative": {
              "width": 728,
              "height": 90
            }
          }
        ],
        "frequencyCaps": [
          {
            "maxImpressions": 3,
            "numTimeUnits": 1,
            "timeUnit": "DAY"
          }
        ],
        "includeTargetingCriteriaBreakdown": true
      }
    }
  },
  "llmJsonContract": {
    "forecastDecision": {
      "order": [
        "id",
        "name",
        "status",
        "advertiserId",
        "traffickerId"
      ],
      "targeting": [
        "adUnitIds",
        "keyValues",
        "geoTargeting",
        "creativeSizes"
      ],
      "forecast": [
        "availableUnits",
        "matchedUnits",
        "deliveredUnits",
        "utilizationPercent",
        "formatSplit",
        "contendingLineItems"
      ],
      "decision": [
        "riskLevel",
        "status",
        "relaxFirst",
        "nextAction"
      ]
    }
  }
}

Beispielausgabe

  • {"order":{"id":"9482","name":"OR-2026-SUMMER","status":"DRAFT","advertiserId":"7712","traffickerId":"4431"},"targeting":{"adUnitIds":["1234567","1234568"],"keyValues":[{"keyId":1871,"keyName":"audience","valueIds":[9912],"valueNames":["sports"]},{"keyId":2450,"keyName":"hb_pb","valueIds":[3301],"valueNames":["20"]}]}}
  • {"forecast":{"availableUnits":612400,"matchedUnits":544900,"deliveredUnits":184200,"utilizationPercent":81.6,"formatSplit":[{"format":"300x250","availableUnits":388100,"matchedUnits":352900,"riskLevel":"LOW"},{"format":"728x90","availableUnits":224300,"matchedUnits":192000,"riskLevel":"REVIEW"}],"contendingLineItems":[{"lineItemId":"90031","name":"Summer Roadblock","priority":6}]}}
  • {"decision":{"riskLevel":"LOW","status":"safe_to_review","relaxFirst":null,"nextAction":"regenerate_before_booking"},"llmSummary":"Order aufgeloest, Targeting IDs explizit, Forecast read-only."}

Dimensionen und Metrics

Dimensionen
NameQuelleBeschreibung
ORDER_IDGAMOrder ID
ORDER_NAMEGAMOrder Name
AD_UNIT_IDGAMZielinventar IDs
CREATIVE_TARGET_AD_UNIT_SIZEGAMFormat-Split
KEY_VALUES_IDGAMAufgeloeste Key-Value IDs
KEY_VALUES_NAMEGAMLesbare Key-Value Labels
Metrics
NameQuelleBeschreibung
availableUnitsDerivedForecast-Verfuegbarkeit
matchedUnitsDerivedEinheiten passend zum Targeting
deliveredUnitsDerivedBereits gelieferte Einheiten im Kontext
utilizationPercentDerivedInventardruck-Indikator
formatSplitDerivedVerfuegbarkeit nach Creative-Format
riskLevelDerivedRisikolabel

Grenzen

  • Zukuenftige Verfuegbarkeit ist kein HISTORICAL REST Report; fuer diese Frage nicht run_custom_report nutzen.
  • Order-Kontext ist beschreibend: er reserviert kein Inventar und mutiert keine Order.
  • Key-values muessen als keyId/valueIds im JSON stehen, damit ein anderer Agent denselben Forecast wiederholen kann.
  • Forecasts sollten kurz vor Booking neu erzeugt werden, besonders nach Aenderungen an priority, sizes, caps oder targeting.
Wichtig ist nicht die Prosa, sondern der wiederholbare JSON Vertrag, der das LLM erdet.
Academy Guide lesen

Nutze den redaktionellen Guide fuer die Zielgruppenlogik und komme dann fuer exakte MCP Actions, Felder und Payloads hierher zurueck.

Academy Guide lesen
Feldreferenzen