Orbiads

OrbiAds — Google Ad Manager MCP Server 173 tools to automate Google Ad Manager (GAM) via natural language.

От сообщества: Добавлен пользователем или импортирован; проверьте владельца перед подключениемРаботаетБез входаГлобальныйБесплатноМожет изменять данные

Что умеет

  • Creative Qa: Parent creative QA tool for Story 68.6.
  • Ad Review Center: Ad Review Center - search, allow, or block Ad Exchange creatives.
  • Deals: Parent MCP tool for PMP, PG/PD proposal authoring, and ADCP deal flows. ── ADCP actions — param schemas ────────────────────────────────────────── All three ADCP actions share the same top-leve

Какие данные видит

Нужен ли аккаунт

Не нужен: сервер работает без входа

OrbiAds — Google Ad Manager MCP Server

                                                                                                                                                                                                                                                                               **173 tools** to automate Google Ad Manager (GAM) via natural language.                                                                                                                                                                                                        
                                                                                                                                                                                                                                                                               ## What it does                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                                                                             

OrbiAds connects AI assistants to the full Google Ad Manager API — no code, no SOAP XML, no GAM UI clicking.

Capabilities

  • Campaigns — create, update, pause/resume, duplicate campaigns
  • Orders & Line Items — manage orders, targeting, scheduling, delivery
  • Creatives — upload, assign, preview creatives across formats
  • Inventory — browse ad units, placements, key-values
  • Reporting — run delivery/revenue reports with custom dimensions & metrics
  • Users & Permissions — manage team access and roles
  • Network Settings — inspect and configure GAM network properties

Configuration

{ "mcpServers": { "orbiads": { "type": "http", "url": "https://orbiads.com/mcp" } } }

Links

- Website: https://orbiads.com
- MCP endpoint: https://orbiads.com/mcp
- GitHub: https://github.com/OrbiAds/Orbiads-GAM-MCP
Список инструментов сервера (49)

Технические названия из tools/list. Нужны только разработчикам.

creative_qaParent creative QA tool for Story 68.6.
ad_review_centerAd Review Center - search, allow, or block Ad Exchange creatives.
dealsParent MCP tool for PMP, PG/PD proposal authoring, and ADCP deal flows. ── ADCP actions — param schemas ────────────────────────────────────────── All three ADCP actions share the same top-level ``request`` wrapper which maps to the ADCP v3 ``create_media_buy_request`` JSON Schema (https://adcontextprotocol.org/schemas/v3/media-buy/create-media-buy-request.json). adcp_validate Validates the payload against the v3 schema. Pure check — no GAM call, no credit deduction. Returns: {valid: bool, errors: [...]} or {valid: true, summary: {...}} params: { "request": { "idempotency_key": "<16-255 chars, [A-Za-z0-9_.:-]>", "account": { "account_id": "<seller-issued account ID>" // OR: "brand": {...}, "operator": {...} (implicit lookup) }, "brand": {"domain": "<lowercase domain e.g. acme.com>"}, "start_time": "<ISO 8601 UTC or 'asap'>", "end_time": "<ISO 8601 UTC>", "packages": [{"package_id": "<str>", ...}], "ext": {"orbiads_deal_type": "PROGRAMMATIC_GUARANTEED|PREFERRED_DEAL|PMP"} } } adcp_preview Translates the request to DealSpec(s) WITHOUT executing. Performs advertiser lookup + current-user resolution + targeting mapping, then returns the resulting deal specs and an executionPlan + confirmation_token (same shape as adcp_create dry-run — useful to inspect before committing). Cost: 0.5 credits. Returns: {dealSpecs: [...], packageCount: N, executionPlan: {...}} params: same shape as adcp_validate above. adcp_create Creates the deal(s) in GAM. Uses a two-step confirmation flow to avoid accidental writes: Step 1 — dry-run (omit confirmation_token): Call adcp_create without confirmation_token. Returns: {executionPlan: {operation, preview: [...]}, confirmationToken: "<token>"} Step 2 — confirm (supply the token from Step 1): Call adcp_create again with the same params + confirmation_token. Returns: {idempotencyKey, brand, deals: [...], totalDeals: N} The token expires after 5 minutes and is bound to the exact payload — any change invalidates it (TOKEN_EXPIRED / TOKEN_PAYLOAD_MISMATCH error). Cost: 1 credit per deal created. params: { "request": { "idempotency_key": "<str>", "account": {"account_id": "<str>"}, "brand": {"domain": "<str>"}, "start_time": "<ISO 8601 or 'asap'>", "end_time": "<ISO 8601>", "packages": [ { "package_id": "<seller-unique str>", "pricing_option_id": "<str — drives PMP/PG/PD dispatch>", "budget": <float>, "impressions": <int> // + optional: pacing, targeting_overlay, creatives, ... } ], "ext": {"orbiads_deal_type": "PROGRAMMATIC_GUARANTEED|PREFERRED_DEAL|PMP"} }, "dry_run": true, // Step 1 — omit or set false + add token for Step 2 "confirmation_token": null // Step 2 — supply token returned from Step 1 } ── Other action groups ──────────────────────────────────────────────────── PMP (Private Marketplace): list_deals, get_deal, create_deal, update_deal, list_private_auctions, get_private_auction, create_private_auction, update_private_auction, list_buyers, get_buyer PG/PD Proposals (SOAP): get_proposal, create_proposal, update_proposal, reserve_proposal, edit_proposal_for_negotiation, terminate_proposal_negotiations, request_buyer_acceptance, archive_proposal, list_proposal_line_items, create_proposal_line_items, update_proposal_line_items, archive_proposal_line_items, get_marketplace_comments Cost estimation: estimate_deal_cost Makegoods: create_makegoods
companiesCompanies dispatcher — single entry point for advertisers, agencies, contacts, and rich media partners. Discriminates on **(area, action)** and validates ``params`` against a strict Pydantic model before dispatching to the appropriate GAM service. Catalogue (area → actions): {action_catalog} Cost model: - reads (list / get / find) : 0 credits - writes (create / update / find_or_create) : 0.5 credits Returns ``mcp_success({{area, action, ...result}})`` on success. Errors: - ``VALIDATION_ERROR`` : unknown area, unknown action, or invalid params.
audiencesParent audiences tool for the Epic 68.2 catalogue refactor batch.
auditParent audit tool for the Epic 68.5 catalogue refactor batch.
audit_skillOrbiAds audit suite — single entry point for audit sub-actions. Dispatches on `action` to the right implementation. Shipped actions are ``hygiene_check``, ``ops_diagnostic``, ``standards_baseline`` with the ``orbiads_baseline`` framework, and ``wrapper_coverage``. Reserved standards frameworks still surface ``NOT_IMPLEMENTED`` without consuming credits. Cost model (`audit_skill.{action}` cost keys in `CREDIT_COSTS`): - `hygiene_check` : 0.5 credit (markdown parse + routes scan, no GAM call) - `ops_diagnostic` : 1.0 credit when shipped (consumes Cloud Logging API quota) - `standards_baseline.{framework}` : 1.0 credit per framework when shipped - `wrapper_coverage` : 1.0 credit (GAM inventory + wrapper reads) Returns: `mcp_success({{action, ...result}})` on success. Audit results carry: - ``reportMarkdown`` : full markdown report (disclaimer first) - structured drill-down fields such as ``findings[]``, ``recommendations[]`` or ``violations[]`` depending on action - ``summary`` : action-specific counters ``wrapper_coverage`` policy YAML reference: ``_docs/wrapper-coverage-policies.md``. Errors: - `VALIDATION_ERROR` : unknown action, or params do not match the Pydantic schema for the resolved action. - `NOT_IMPLEMENTED` : reserved standards framework. No credit deducted. - Other errors propagate via the standard error_translator decorator. Disclaimer (Story 65.0a) ======================== Every report markdown starts with the mandatory legal disclaimer. Passing `params={{"skipDisclaimer": true}}` does NOT remove it — the rendering function ignores any override (defence-in-depth).
get_my_tenant_idGet your tenant ID from your authenticated Google account. CALL THIS FIRST before using any other tool. This server requires Google authentication. After signing in with Google, this tool maps your Google identity to your orbiads tenant_id (Firebase UID). Pass the returned tenant_id to every subsequent tool call. Returns: tenantId: Your unique identifier — pass this to all other tools. email: Your Google account email. googleSub: Your Google subject ID (for reference).
initiate_gam_authRe-initiate the GAM OAuth flow. PREFER ``check_credentials()`` first — most users are already connected from the MCP login itself (Phase 3). Use this tool ONLY when ``check_credentials`` returns state == NOT_CONNECTED with a missing refresh token (e.g. user revoked Google consent), or after ``disconnect_gam`` to reconnect without forcing a full MCP re-login. Returns a Google OAuth URL the user must open in their browser, plus a poll_token to track completion. Workflow: 1. Call this tool → get authorization_url + poll_token 2. Tell the user to open authorization_url in their browser 3. Call poll_auth_status(poll_token) until status="completed" 4. If multiple networks: call select_gam_network() to choose one
poll_auth_statusCheck if the user has completed the OAuth flow in their browser. Returns one of: - status: "pending" → user hasn't completed auth yet - status: "completed" → credentials stored, ready to use - status: "select_network" → multiple networks found, call select_gam_network - status: "expired" → poll_token expired, call initiate_gam_auth again - status: "error" → something went wrong
select_gam_networkSelect a GAM network after OAuth when multiple networks are available. Use after poll_auth_status returns status="select_network". Consumes the pending OAuth and stores credentials for the selected network.
check_credentialsGet the unified GAM connection state for a tenant. Returns the same state model as the web admin (consumed via ``GET /api/auth/gam/connection-state``): - ``state`` ∈ {NOT_CONNECTED, NO_GAM_NETWORK, PENDING_NETWORK_SELECTION, CONNECTED_READ_ONLY, CONNECTED_READY, PERMISSIONS_DESYNC} - ``NO_GAM_NETWORK`` — OAuth succeeded but the Google account has zero accessible GAM networks. Do NOT loop ``initiate_gam_auth``; tell the user to grant the account GAM access or use a different Google account. A ``message`` field is included in this case. - ``networkCode`` — the bound GAM network code (null when not connected) - ``networkDisplayName`` — friendly network name (when known) - ``autoBound`` — true if the network was the only accessible one and was bound automatically; false if the user explicitly picked from multiple. Use this to decide whether to confirm the network with the user before the first write operation. - ``canWrite`` — false on read-only / desync states; saves a 403 round-trip before attempting writes - ``availableNetworks`` — only present when state == PENDING_NETWORK_SELECTION; pass ``select_gam_network`` with one of these networkCodes to finish provisioning Backward-compatible alias: ``hasCredentials`` is true iff state ∈ {CONNECTED_READY, CONNECTED_READ_ONLY, PERMISSIONS_DESYNC}.
disconnect_gamRevoke and delete GAM credentials for a tenant. This disconnects the GAM account. The user will need to re-authenticate via initiate_gam_auth to use GAM tools again. Note: no billing required — disconnect must be available even without a billing setup.
billingParent billing tool for the Epic 68.5 catalogue refactor batch.
blueprintParent blueprint MCP tool — CRUD on tenant inventory blueprint (Story 78.13). Enables LLM tenant to read + modify the BlueprintPreferences (brand, platforms, page_types, positions, formats, key_values) WITHOUT leaving the MCP session. Critical for 100% MCP-driven philosophy. Cascade warnings (Story 78.13 MVP): - remove_format checks customFormatRecipes (Story 78.2 reserved field). Returns warnings + applied=False unless force=True. - Other remove_* operations don't have cascade checks yet (will be added by Story 78.6 conflict detection). Persistence : tenants/{tid}/blueprint/active (Firestore single doc, coordinated with Story 78.2 customFormatRecipes/suggestedFormatRecipes fields in the same document).
campaignParent campaign tool for deployment, update, rollback, and lifecycle orchestration.
creative_wrapper_skillManage GAM CreativeWrapper entities (AdUnit/Placement level wrapping) through one parent tool. IMPORTANT: CreativeWrapper is a GAM 360/premium feature used for slot-level wrapping via CREATIVE_WRAPPER Labels applied to AdUnits or Placements. For campaign-specific or creative-specific tracker injection (like appending impression pixels, click trackers, or viewability scripts to individual creatives like NATIVE_STYLE, THIRD_PARTY or TEMPLATE), do NOT use this tool. For HTML/JS third-party ad tags, use creative_assets(action='create_third_party') or create_third_party_creative; for pixels, configure the trackers directly on the creative. For ``set_data_declaration`` compliance workflow details, see ``_docs/compliance-data-declaration.md``. For the ``provision`` rollback chain, see ``_docs/creative-wrapper-provision-flow.md``.
creativesParent creatives tool for the Epic 68.7d catalogue refactor batch.
creative_assetsParent creative asset tool for upload/create/compress/transcode actions.
formatsParent formats MCP tool — Custom Format Registry avec scope multi-site (Story 78.2). A "recipe" is a tenant-curated mapping from a business format name (eg 'habillage', 'native_inread') to a complete GAM technical configuration. Multiple recipes can share the same name with different scopes — the resolver picks the most specific match for a given (site, brand, page_type, position) context. Producer of suggested recipes : Story 78.1 scan-tenant-network CF.
gam_adminGAM admin orchestration — single entry point for 54 ops over 7 areas. Discriminates on **(area, action)** to dispatch to the right Epic 65 REST resource service or to UserService read/write/lifecycle handling. Catalogue (area → actions): {action_catalog} Cost model (`gam_admin.{{area}}.{{action}}` cost keys in `CREDIT_COSTS`): - `*.list` / `*.get` / `users.*` : 0 credit (reads) - `*.create` / `*.batch_create` : 0.5 credit (× batch size) - `*.patch` / `*.batch_update` / lifecycle ops : 0 credit Returns: `mcp_success({{area, action, ...result}})` on success. Errors: - `VALIDATION_ERROR` : unknown area, unknown action for area, or params do not match the Pydantic schema for (area, action). - `FEATURE_NOT_AVAILABLE` : PPS area on a network without PPS enabled (only possible on `area='entity_signals'`). - Other GAM errors propagate via the standard error_translator decorator (HTTP 4xx → GAM_API_ERROR etc.). Pattern parent>child (Epic 68 — see feedback_mcp_parent_child_pattern): one MCP tool exposing 54 ops instead of 54 standalone tools. Reduces LLM catalogue inflation (already at 234 tools network-wide).
gam_auditGAM audit dispatcher — single entry-point for 22 ad-ops audit checks. Dispatches to :class:`~GamAuditService` which wraps 13 legacy detectors and adds 9 new ones powered by the Epic 65 REST resource services. Fail-open behaviour: any SOAP/REST failure on an individual check returns a result with ``meta.status='error'`` and ``meta.error`` describing the failure — the call never crashes. Checks catalogue: {check_catalog} Cost model (``gam_audit.{check}`` keys in ``CREDIT_COSTS``): - Free (0 cr): ``tag_snippet``, ``credentials``, ``pql_safety`` - Light (0.25 cr): most scan checks (inventory, creative, delivery…) - Heavy (0.5 cr): ``creative_tracking``, ``pre_archive_safety`` Returns: ``mcp_success({{check, findings, meta}})`` on success. Errors: - ``UNKNOWN_CHECK``: unknown ``check`` value (not in catalogue). - GAM errors propagate via ``with_error_translation`` (HTTP 4xx → GAM_API_ERROR etc.).
gam_featuresParent gam_features tool for the Epic 68.5 catalogue refactor batch.
inventoryParent inventory tool for Story 68.6.
jobsParent jobs tool for the Epic 68.2 catalogue refactor batch.
gam_jobsAsync job dispatcher (parent>child pattern, Epic 82). image-optimize is synchronous (~2-3 s incl. CF cold-start) and returns the signed GCS URL directly. blueprint-generate and audit-export enqueue a Pub/Sub job and return a ``jobId`` for polling. poll reads the queue + result for a given jobId. All actions are tenant-scoped.
line_itemsParent line_items tool for non-lifecycle Line Item operations.
line_item_lifecycleRun a lifecycle action on one or more Line Items by direct GAM ID. This is the **parent>child** replacement for the legacy job-coupled tools (`activate_line_items(job_id)`, `pause_line_items(job_id)`). It bypasses Firestore entirely — works for Line Items created directly in GAM (outside the OrbiAds wizard), which the legacy tools could not address. All actions map to the WSDL `LineItemService.performLineItemAction` subtypes (see Epic 68 §9.2 inventory). The SOAP adapter applies them in one call regardless of how many IDs are passed. Cost: 0.5 credits.
live_streamLive stream ad breaks + event/slate management. Action catalogue: Ad breaks (REST): - list/get/create: supports area event_id, asset_key, custom_asset_key - patch/delete: asset_key only LiveStreamEvent CRUD (SOAP, Story 98-A6): - list_live_stream_events: optional nameFilter, limit, offset - create_live_stream_event: name (required), daiEncodingProfileIds, contentUrls - update_live_stream_event: eventId (required), name, daiEncodingProfileIds, contentUrls - delete_live_stream_event: eventId (required) LiveStreamSlate CRUD (SOAP, Story 98-A6): - list_live_stream_slates: optional nameFilter, limit, offset - create_live_stream_slate: name (required), creativeIds - update_live_stream_slate: slateId (required), name, creativeIds - delete_live_stream_slate: slateId (required) Cost: 0 credits for reads, 0.5 credits for writes.
mcmMCM read-only operations.
networkParent network tool for the Epic 68.5 catalogue refactor batch.
ordersParent orders tool for non-lifecycle Order operations.
order_lifecycleRun a lifecycle action on a GAM Order by direct ID. Parent>child consolidation covering ALL `OrderService.performOrderAction` subtypes from the WSDL. Most actions were previously absent from the OrbiAds MCP catalogue (Epic 68 §9.2 — only `approve_order` / `archive_order` existed as single-action tools, leaving pause/resume/ retire/disapprove/submit_for_approval out of reach for tenants who work on Orders directly in GAM without going through the OrbiAds pipeline). Cost: 0.5 credits.
placementsParent placements tool for Story 68.6.
pqlParent pql tool for the Epic 68.2 catalogue refactor batch.
prebid_skillDispatch Prebid.js / Header Bidding sub-actions through one MCP tool.
previewParent preview tool for the Epic 68.2 catalogue refactor batch.
list_rate_cardsList active Rate Cards in the GAM network. NOTE: This service is currently unavailable — RateCardService was removed from the supported GAM SOAP version. Cost: 0 credits (read-only).
list_premium_ratesList Premium Rates attached to a Rate Card. NOTE: This service is currently unavailable — PremiumRateService was removed from the supported GAM SOAP version. Cost: 0 credits (read-only).
get_premium_rateFetch details of a single Premium Rate by ID. NOTE: This service is currently unavailable — PremiumRateService was removed from the supported GAM SOAP version. Cost: 0 credits (read-only).
productsParent products tool for the Epic 68.8 catalogue refactor batch.
reportingParent reporting tool for the Epic 68.7b catalogue refactor batch.
reporting_skillReporting orchestration skill — single entry point for report automation flows. Actions: - schedule_from_template : duplicates a Report template + applies date / filter / schedule overrides. Returns the new Report ID + a GAM UI deep-link to add email recipients (recipients API doesn't exist on GAM — verified Epic 66 deep-dive). Cost: 1 credit. - create_alert : creates a Report with scheduleOptions.deliveryCondition=WHEN_FLAG_CONDITIONS_MET + a flag on (metric, operator, threshold). Useful for "email me when CPM falls below X" workflows. Cost: 0.5 credit. - cancel_run : best-effort cancellation of a running report long-running operation (POST /v1/{op}:cancel — gap-fill). The cancel is asynchronous on GAM's side — re-poll via poll_run_operation to confirm. Cost: 0. - historical_aggregates : RGPD-safe eCPM aggregates per Product over a window. STUB — real impl in Story 66.6 (raises NotImplementedError). Cost: 1 credit when implemented. - fetch_mcm_earnings : Multi-Customer Management earnings (niche, regies multi-tiers). STUB — real impl when an MCM tenant is identified (raises NotImplementedError). Cost: 0.5 credit when implemented. - list_recent_advertisers (Epic 84) : advertisers with at least one order whose endTime is in the last N days. Backs /reporting UI. Real impl since Story 84-1-2. Cost: 0 credit (read-only). - generate_branded_report (Epic 84) : enqueue a branded Excel report generation for a single (advertiser, campaign) pair on Pub/Sub. The Epic 82 worker dispatches to ``BrandedReportJobHandler`` which handles GAM extract → openpyxl injection → GCS upload. Cost: 5 credits (charged on enqueue regardless of worker outcome — refund applies only on enqueue failure, not on a failed run). - get_execution_status (Epic 84) : poll a generate_branded_report execution by execution_id. Returns status + signed_url when complete. Cost: 0 credit (Firestore read). Pattern parent>child (Epic 68 — see `feedback_mcp_parent_child_pattern`): one MCP tool exposing N actions instead of N standalone tools. Reduces MCP catalogue inflation. Pydantic discriminated union (driven by the `action` field inside `params`) validates the right shape per action.
settingsParent settings tool for the Epic 68.1 catalogue refactor POC.
targetingParent targeting tool for Story 68.6.
tenant_catalogParent tenant_catalog MCP tool — scan + read tenant inventory catalog (Story 78.1). The catalog captures tenant-specific data (custom KV, USER+SYSTEM templates, NativeStyles, recent LineItems, placements, ad units hierarchy, suggested format recipes) for LLM-driven precision from session 1. Scan is offloaded to a Cloud Function (scan-tenant-network) to avoid overloading the backend Cloud Run service with long-running SOAP-heavy work.
video_opsVideo monetization: ad rule management, content metadata, and content bundle operations. Covers AdRule CRUD (AdRuleService v202605), Content read-only (ContentService v202605, Story 98-B4), and ContentBundle read-only (ContentBundleService v202605, Story 98-B5). WARNING: AdRule and Content operations are feature-gated for video-capable GAM networks. Attempting these on a standard network returns PERMISSION_DENIED. Action catalogue: AdRule (SOAP, Story 98-B3): - list_ad_rules: params: adRuleId?, nameFilter?, limit?, offset? - create_ad_rule: params: name (required), priority (required, 1-1000), preroll (required), midroll (required), postroll (required), startDateTimeType?, unlimitedEndDateTime?, frequencyCapBehavior?, maxImpressionsPerLineItemPerStream?, maxImpressionsPerLineItemPerPod?, dryRun, confirmationToken? preroll/midroll/postroll: {slotType, slotBehavior, maxVideoAdDuration, videoMidrollFrequencyType, videoMidrollFrequency, bumper, maxBumperDuration, maxPodDuration, maxAdsInPod, breakTemplateId?} - update_ad_rule: params: adRuleId (required), name?, priority?, preroll?, midroll?, postroll?, startDateTimeType?, unlimitedEndDateTime?, frequencyCapBehavior?, maxImpressionsPerLineItemPerStream?, maxImpressionsPerLineItemPerPod?, dryRun, confirmationToken? - delete_ad_rule: params: adRuleId (required), dryRun, confirmationToken? Content (SOAP, Story 98-B4, read-only — CMS-ingested video metadata): - list_content: params: contentId?, nameFilter?, status?, contentBundleId?, limit?, offset? status: ACTIVE | INACTIVE | ARCHIVED | UNKNOWN Returns: id, name, status, duration (ms), hlsIngestStatus, dashIngestStatus, importDateTime, cmsSources, contentBundleIds, cmsMetadataValueIds ContentBundle (SOAP, Story 98-B5, read-only): - list_content_bundles: params: contentBundleId?, nameFilter?, statusFilter?, limit?, offset? statusFilter: ACTIVE | INACTIVE | ARCHIVED | UNKNOWN Slot types (slotType): NoPodding | OptimizedPodding | StandardPodding AdRuleSlotBehavior: ALWAYS_SHOW | NEVER_SHOW | DEFER | UNKNOWN AdRuleSlotBumper: NONE | BEFORE | AFTER | BEFORE_AND_AFTER | UNKNOWN MidrollFrequencyType: NONE | EVERY_N_SECONDS | FIXED_TIME | EVERY_N_CUEPOINTS | FIXED_CUE_POINTS FrequencyCapBehavior: TURN_ON | TURN_OFF | DEFER | UNKNOWN StartDateTimeType: USE_START_DATE_TIME | IMMEDIATELY | ONE_HOUR_FROM_NOW | ... Cost: 0 credits for list/read, 0.5 credits for create/update/delete.
yield_skillYield optimization group management and forecast governance. Covers YieldGroup CRUD (YieldGroupService v202605) and ForecastAdjustment / TrafficForecastSegment reads (AdjustmentService v202605). Action catalogue: YieldGroup (SOAP, Story 98-B1): - list_yield_groups: params: yieldGroupId?, nameFilter?, limit?, offset? - create_yield_group: params: yieldGroupName (required), exchangeStatus?, format?, environmentType?, dryRun, confirmationToken? - update_yield_group: params: yieldGroupId (required), yieldGroupName?, exchangeStatus?, format?, environmentType?, dryRun, confirmationToken? ForecastAdjustment / TrafficForecastSegment (SOAP, Story 98-B2, read-only): - list_forecast_adjustments: params: adjustmentId?, trafficForecastSegmentId?, nameFilter?, statusFilter?, limit?, offset? - list_forecast_segments: params: segmentId?, nameFilter?, limit?, offset? Key field: activeForecastAdjustmentCount — non-zero means GAM's forecaster is manually overridden for this segment (governance/explainability signal). Note: YieldGroup and AdjustmentService ops may be MCM-feature-gated. Note: Write ops for ForecastAdjustment are not available (out of strategic scope). Cost: 0 credits for all reads, 0.5 credits for YieldGroup writes.
dai_skillDAI (Dynamic Ad Insertion) and broadcasting operations. Covers StreamActivityMonitorService v202605, CdnConfigurationService v202605, and DaiEncodingProfileService v202605. Action catalogue: StreamActivityMonitor (SOAP, Story 98-B6, DAI-network-only): - get_stream_activity: Query SAM session debug info. params: sessionId? (UUID filter), debugKey? (debug key filter), limit? (1-25, WSDL cap), offset? Returns: list of SamSession objects with adBreaks, startDateTime, sessionDurationMillis, isVodSession. Cost: 0 credits. - register_sessions: Register DAI session IDs for monitoring. params: sessionIds (required, list[str] of UUIDs) Returns: {"registered": True, "sessionIds": [...], "count": N} Cost: 0 credits — monitoring registration, no resource mutation. CdnConfiguration (SOAP, Story 98-B7, DAI-network-only): - list_cdn_configurations: List CDN configurations. params: cdnConfigId? (filter by ID), nameFilter? (PQL LIKE), limit? (1-500), offset? Returns: {"cdnConfigurations": [...], "count": N} Cost: 0 credits. - create_cdn_configuration: Create a CDN configuration. params: name (required, max 255 chars), cdnConfigurationType (required, use LIVE_STREAM_SOURCE_CONTENT for DAI live streams), sourceContentConfiguration? (dict with ingestSettings/defaultDeliverySettings) Returns: created CdnConfiguration dict with id. Cost: 0.5 credits. NOTE: The returned ``id`` can be used in LiveStreamEvent.sourceContentConfigurationIds. - update_cdn_configuration: Update a CDN configuration. params: cdnConfigId (required), name?, sourceContentConfiguration? Returns: updated CdnConfiguration dict. Cost: 0.5 credits. - delete_cdn_configuration: Archive a CDN configuration. params: cdnConfigId (required) Returns: {"deleted": True, "cdnConfigId": cdnConfigId} Cost: 0.5 credits. NOTE: Archives the config (status → ARCHIVED). No physical delete in WSDL v202605. DaiEncodingProfile (SOAP, Story 98-B9, DAI-network-only): - list_dai_encoding_profiles: List encoding profiles. params: nameFilter? (PQL LIKE on name), limit? (1-500), offset? Returns: {"profiles": [...], "count": N} Cost: 0 credits. - create_dai_encoding_profile: Create an encoding profile. params: name (required), container (HLS|DASH|PROGRESSIVE_MP4), bitrate (kbps, positive int), codec (H264|VP8|VP9) Returns: created DaiEncodingProfile dict with id. Cost: 0.5 credits. NOTE: The returned ``id`` can be used in LiveStreamEvent.daiEncodingProfileIds. - update_dai_encoding_profile: Update an encoding profile. params: profileId (required), name?, container?, bitrate?, codec? Returns: updated DaiEncodingProfile dict. Cost: 0.5 credits. - delete_dai_encoding_profile: Delete an encoding profile. params: profileId (required) Returns: {"deleted": True, "profileId": profileId} Cost: 0.5 credits. IMPORTANT — DAI-network-only: All actions require DAI (Dynamic Ad Insertion) support on the tenant's GAM network. Non-DAI networks return PERMISSION_DENIED from GAM — this is expected behavior, not an OrbiAds error.