OrbiAds/Orbiads-GAM-MCP

OrbiAds/Orbiads-GAM-MCP

от orbiads
OrbiAds — это MCP сервер, который дает AI-ассистентам прямой доступ к Google Ad Manager. Управляйте кампаниями, отчетами и креативами через естественный язык — без API-токенов и скриптов. Идеально для AdOps, издателей и агентств.

OrbiAds — Google Ad Manager MCP

English · Français

OrbiAds terminal workflow showing Google Ad Manager checks from the command line
Hosted MCP for AI agents, plus a Python CLI for terminal and CI workflows.

MCP Protocol GAM API Version PyPI Python License Docs GitHub stars Works with Claude Works with ChatGPT Works with Gemini Glama MCP.so Smithery

A skill for Claude, ChatGPT, Gemini, and OpenAI Codex that gives your AI assistant direct access to Google Ad Manager.

→ Get started free at orbiads.com · ★ Star this repo


Try in 3 Minutes

Hosted MCP, no local install
  1. Create a free OrbiAds account at orbiads.com and connect Google Ad Manager.
  2. Add this MCP endpoint to Claude, ChatGPT, Gemini, Cursor, Codex, or Warp:
    https://orbiads.com/mcp
    
  3. Ask your agent:
    Connect to my GAM account and show me my active networks.
    
CLI smoke test
pip install orbiads-cli
orbiads auth login
orbiads network info

Want a deeper setup path? Start with the CLI guide or the agent install guides.


Trust Signals

Signal Status Link
Public repo MIT licensed mirror of the OrbiAds MCP distribution LICENSE
PyPI CLI Published as orbiads-cli for terminal and CI workflows pypi.org/project/orbiads-cli
Hosted MCP Remote Streamable HTTP endpoint with OAuth https://orbiads.com/mcp
Glama Indexed MCP registry page glama.ai
MCP.so Indexed MCP directory page mcp.so
Official MCP registry server.json manifest ready for registry publication server.json
Smithery Submission target prepared for hosted/external MCP listing smithery.ai/new
Safety model Plan → confirm → execute on write actions Safety docs
Инструменты были проиндексированы:
ad_review_center

Ad Review Center - search, allow, or block Ad Exchange creatives.

Параметры
  • actionenumобязательный

    Ad Review Center action: search, allow_batch, or block_batch.

  • paramsobject | null

    Action params. Batch actions require dry_run then confirmation_token.

  • tenant_idstring | null

    Firebase tenant UID. Auto-resolved by hosted MCP when omitted.

audiences

Parent audiences tool for the Epic 68.2 catalogue refactor batch.

Параметры
  • actionenumобязательный

    Audiences sub-action. One of: list_audience_segments, get_audience_segment, create_audience_segment, update_audience_segment, perform_audience_segment_action, update_segment_memberships, get_segment_population_results, perform_segment_population_action.

  • paramsobject | null

    Action params dict. Schema depends on action and is validated with strict Pydantic V2 models in src.domain.audiences. perform_audience_segment_action uses actionType (not action) for the WSDL xsi_type to avoid colliding with the discriminator.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

auditтолько чтение

Parent audit tool for the Epic 68.5 catalogue refactor batch.

Параметры
  • actionstringобязательный

    Audit sub-action. Currently one of: query_audit_log.

  • paramsobject | null

    Action params dict. query_audit_log accepts {auditAction, resourceType, limit}.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

audit_skill

OrbiAds 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).

Параметры
  • actionenumобязательный

    Sub-action to dispatch. One of: 'hygiene_check' (parity audit REST/SOAP ↔ OrbiAds, SHIPPED Story 65.10a), 'ops_diagnostic' (Cloud Logging ops audit, SHIPPED Story 65.10b), 'standards_baseline' (multi-framework standards baseline — MVP framework 'orbiads_baseline' only, SHIPPED Story 65.10c), 'wrapper_coverage' (CreativeWrapper coverage policy audit, SHIPPED Story 76.4; docs: _docs/wrapper-coverage-policies.md).

  • paramsobject

    Action params dict — schema depends on action (Pydantic discriminated union validates the right shape). See src/domain/audit_skill.py for each sub-action's params model. Note: 'skipDisclaimer' / 'disclaimerOverride' are silently ignored — the legal disclaimer is non-suppressible (Story 65.0a AC #6).

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your MCP session if omitted).

billingтолько чтение

Parent billing tool for the Epic 68.5 catalogue refactor batch.

Параметры
  • actionenumобязательный

    Billing sub-action. One of: get_credit_balance, list_transactions.

  • paramsobject | null

    Action params dict. list_transactions accepts: {limit: int}. get_credit_balance accepts an empty object.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

blueprint

Parent 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).

Параметры
  • actionenumобязательный

    Blueprint sub-action. One of: get_active_preferences, get_active_blueprint, save_blueprint, save_preferences, add_format, remove_format, add_position, remove_position, add_key_value, remove_key_value, update_brand, update_platforms, list_templates, get_v2, list_drafts, get_diff, list_block_versions, get_block_version, list_packages, get_preview_url. Read actions (get_*) are free. Write actions (save_*, add_*, remove_*, update_*) cost 0.5 credit. Use list_templates to discover available blueprint starter templates.

  • paramsobject | null

    Action-specific params dict. Each action has its own strict Pydantic schema (extra='forbid'). See src.domain.blueprint_mcp.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

campaign

Parent campaign tool for deployment, update, rollback, and lifecycle orchestration. Authoring uses the OrbiAds domain shape (groups / delivery), NEVER raw GAM-SOAP lineItems / creativePlaceholders. You do NOT need to call orders.create first — describe the target Order by name + advertiser in meta and OrbiAds creates the GAM Order for you at deploy time (Story 110.1). create_draft is a free Firestore write (no GAM write); dry_run previews the create_order step; deploy creates the Order → line items → creatives → LICAs as one atomic saga. Canonical Order-less create_draft (no orderId — the Order is created at deploy time from orderName + advertiserId):: campaign(action="create_draft", params={ "meta": { "advertiserId": 123456789, # GAM Advertiser company ID "orderName": "Cavalor — July 2026" # Order created lazily at deploy }, "delivery": { "lineItemType": "STANDARD", "cpmMicroAmount": 2500000, # 2.50 € CPM (required STANDARD/PRICE_PRIORITY) "totalGoal": 500000, "startDateTime": "2026-07-01T00:00:00", "endDateTime": "2026-07-31T23:59:59" }, "groups": [{ "adUnitIds": ["21700000001", "21700000002"], "geoTargeting": {"targetedLocations": [{"id": 2250}]}, # FR "creatives": [{ "creativeType": "NATIVE_STYLE", "htmlSnippet": "<div>...</div>" }] }] }) To reuse an EXISTING Order instead, pass meta.orderId (a live GAM order id) rather than orderName — that flow is unchanged.

Параметры
  • actionenumобязательный

    Campaign sub-action. One of: read, dry_run, deploy, create_draft, update, ensure_template, create_native_style, create_line_items_batch, create_licas, create_display, plan_deployment, deploy_media, rollback, pause, archive, archive_eligible.

  • paramsobject | null

    Action params dict. Schema depends on action and is validated with strict Pydantic V2 models in src.domain.campaign.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

check_credentialsтолько чтение

Get 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 — no GAM network is bound. Never loop initiate_gam_auth here; read the reason field, and relay the message field, which differs by reason: * reason == "scope_missing" — the user signed in through an MCP client, which only grants basic profile scopes. Ad Manager was never requested, so nothing was looked up. Send the user to web onboarding to approve Ad Manager access. Do NOT tell them their account lacks GAM access. * reason == "no_network" (or absent) — Ad Manager consent WAS granted and the account genuinely has zero networks. The account owner needs GAM access, or another Google account. - 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}.

Параметры
  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

companies

Companies 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.

Параметры
  • actionstringобязательный

    Action for the chosen area. advertisers: list, get, find, create, update, find_or_create, archive_advertiser. agencies: list, create, update. contacts: list, create, update. rich_media: list, get.

  • areastringобязательный

    Resource area: 'advertisers' | 'agencies' | 'contacts' | 'rich_media'.

  • paramsobject | null

    Action params dict — schema depends on (area, action). See src/domain/companies.py COMPANIES_PARAMS_MODELS.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

creative_assets

Parent creative asset tool for upload/create/compress/transcode actions.

Параметры
  • actionenumобязательный

    Creative asset sub-action. One of: bulk_upload, upload_from_url, upload_and_associate, upload_html5_zip, create_image, create_html5, create_html5_from_files, create_video, create_audio, create_hosted_video, create_hosted_audio, create_vast_redirect, create_internal_redirect, create_image_redirect, create_click_tracking, create_custom, create_aspect_ratio_image, create_companion, create_third_party, create_classic_native, compress_image, get_video_transcode_status.

  • paramsobject | null

    Action params dict. Schema depends on action and is validated with strict Pydantic V2 models in src.domain.creative_assets.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

creative_qaтолько чтение

Parent creative QA tool for Story 68.6.

Параметры
  • actionenumобязательный

    Creative QA action: scan_creative_compliance, validate_creative_ssl, validate_creative_ssl_batch, audit_creative_tracking, audit_order_tracking, validate_tag_snippet, pre_archive_check.

  • paramsobject | null

    Action params dict validated by src.domain.creative_qa.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

creatives

Parent creatives tool for the Epic 68.7d catalogue refactor batch.

Параметры
  • actionenumобязательный

    Creative management sub-action. One of: list_creatives_by_advertiser, list_creatives_by_line_item, list_creatives_by_network, get_creative, update_creative, archive_creative, duplicate_creative, get_creative_preview_url, get_native_style_preview_urls, get_campaign_preview_links, get_video_transcode_status, list_native_styles, get_native_style, update_native_style, archive_native_style, duplicate_native_style, ensure_classic_native_template, list_creative_templates, get_creative_template, discover_native_formats, associate_creative, bulk_associate_creatives, get_licas_by_line_item, get_licas_batch, deactivate_lica, update_lica, delete_licas, list_creative_sets, create_creative_set, update_creative_set.

  • paramsobject | null

    Action params dict. Schema depends on action and is validated with strict Pydantic V2 models in src.domain.creatives.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

creative_wrapper_skill

Manage 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.

Параметры
  • actionenumобязательный

    CreativeWrapper sub-action. One of: list, get, create, update, activate, deactivate, archive, set_data_declaration, list_rich_media_ads_companies, find_third_party_company, create_preset, list_wrapper_presets, provision. archive returns NOT_SUPPORTED because GAM exposes no archive operation. CreativeWrapper is a GAM 360/premium slot-level wrapper feature; do not use it to traffic third-party creative tags.

  • paramsobject | null

    Action params dict. Schema depends on action and is validated with strict Pydantic V2 models in src.domain.creative_wrapper.

  • tenant_idstring | null

    Firebase tenant UID. Auto-resolved from your MCP session if omitted.

dai_skill

DAI (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, max 64 chars), variantType (required, MEDIA|IFRAME|SUBTITLES), containerType (TS|FMP4|HLS_AUDIO — required by GAM for MEDIA/IFRAME), videoSettings? (codec RFC6381, bitrate bits/s, framesPerSecond, resolution), audioSettings? (codec RFC6381, bitrate bits/s, channels, sampleRateHertz) Returns: created DaiEncodingProfile dict with id. Cost: 0.5 credits. NOTE: The returned id can be used in LiveStreamEvent.daiEncodingProfileIds. NOTE: WSDL op is createDaiEncodingProfiles (plural array); we send one. - update_dai_encoding_profile: Update an encoding profile. params: profileId (required), name?, variantType?, containerType?, videoSettings?, audioSettings? Returns: updated DaiEncodingProfile dict. Cost: 0.5 credits. - delete_dai_encoding_profile: Archive an encoding profile. params: profileId (required) Returns: {"deleted": True, "profileId": profileId} Cost: 0.5 credits. NOTE: No delete op in WSDL — performed via performDaiEncodingProfileAction with the ArchiveDaiEncodingProfiles action. 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.

Параметры
  • actionenumобязательный

    DAI/broadcasting operation. StreamActivityMonitor (SOAP, DAI-network-only): get_stream_activity — query SAM session debug info (by sessionId or debugKey); register_sessions — register session IDs for monitoring persistence. CdnConfiguration (SOAP, Story 98-B7, DAI-network-only): list_cdn_configurations — list CDN configs (filter by id/name); create_cdn_configuration — create CDN config (name, cdnConfigurationType required); update_cdn_configuration — update CDN config (cdnConfigId required); delete_cdn_configuration — archive CDN config (cdnConfigId required). DaiAuthenticationKey (SOAP, Story 98-B8, DAI-network-only, SENSITIVE): list_dai_auth_keys — list auth keys (filter by keyId/name/status); create_dai_auth_key — create key (name required, keyType: API|HMAC); update_dai_auth_key — update key name (keyId required); perform_dai_auth_key_action — activate/deactivate keys (keyIds required, actionType: ActivateDaiAuthenticationKeys|DeactivateDaiAuthenticationKeys). NOTE: responses include 'key' credential — store securely, do not log. DaiEncodingProfile (SOAP, Story 98-B9, DAI-network-only): list_dai_encoding_profiles — list encoding profiles (filter by name); create_dai_encoding_profile — create profile (name, variantType, containerType, videoSettings?, audioSettings?); update_dai_encoding_profile — update profile (profileId required); delete_dai_encoding_profile — archive profile (profileId required). WARNING: All actions require DAI support on the tenant's GAM network. Non-DAI networks return PERMISSION_DENIED from GAM.

  • paramsobject | null

    Action parameters. get_stream_activity: sessionId?, debugKey?, limit? (max 25), offset?. register_sessions: sessionIds (required, list of UUID strings). list_cdn_configurations: cdnConfigId?, nameFilter?, limit?, offset?. create_cdn_configuration: name (required), cdnConfigurationType (required, LIVE_STREAM_SOURCE_CONTENT), sourceContentConfiguration? (dict with ingestSettings.urlPrefix, defaultDeliverySettings.urlPrefix, etc.). update_cdn_configuration: cdnConfigId (required), name?, sourceContentConfiguration?. delete_cdn_configuration: cdnConfigId (required). list_dai_encoding_profiles: nameFilter?, limit?, offset?. create_dai_encoding_profile: name (required, max 64 chars), variantType (required, MEDIA|IFRAME|SUBTITLES), containerType (TS|FMP4|HLS_AUDIO, required by GAM for MEDIA/IFRAME), videoSettings? (dict: codec RFC6381, bitrate bits/s, framesPerSecond, resolution {width, height}), audioSettings? (dict: codec RFC6381, bitrate bits/s, channels, sampleRateHertz). update_dai_encoding_profile: profileId (required), name?, variantType?, containerType?, videoSettings?, audioSettings?. delete_dai_encoding_profile: profileId (required) — archives the profile.

  • tenant_idstring | null

    Firebase tenant UID. Auto-resolved from session if omitted.

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-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

Параметры
  • actionenumобязательный

    Deals sub-action to execute.

  • paramsobjectобязательный

    Action-specific parameters.

  • tenant_idstring | null

    Firebase tenant UID.

disconnect_gam

Revoke 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.

Параметры
  • confirmation_tokenstring | null

    Token from dry_run call

  • dry_runboolean

    If True (default), returns preview

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

formats

Parent 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.

Параметры
  • actionenumобязательный

    Custom Format Registry sub-action. One of: list_recipes, list_suggested_recipes, accept_suggested_recipe, reject_suggested_recipe, register_recipe, update_recipe, delete_recipe, resolve, detect_conflicts. Recipes map a business format name (eg 'habillage') to a GAM technical configuration (ad_format, slot_size, size_mapping, targeting_kv, template_id…). Resolver is context-aware: matches the most specific recipe scope (sites, brands, page_types, positions). Reads are free; writes cost 0.25 credit. Suggested recipes come from the scan-tenant-network CF (Story 78.1) — accept or reject to keep them out of the active registry.

  • paramsobject | null

    Action-specific params. list_recipes: {name?: str}. list_suggested_recipes: {minConfidence?: float, includeExpired?: bool}. accept/reject_suggested_recipe: {suggestionId: str}. register_recipe: {recipe: CustomFormatSpec}. update_recipe: {name, scope, recipe}. delete_recipe: {name, scope}. resolve: {name, context: {site?, brand?, levelOneGroup?, platform?, pageType?, position?}}. detect_conflicts: {name?: str}.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from session if omitted).

gam_admin

GAM 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).

Параметры
  • actionstringобязательный

    Action — depends on area. Standard 8 (teams / custom_fields / labels): list, get, create, batch_create, patch, batch_update, batch_activate, batch_deactivate. Sites: list, get, create, batch_create, patch, batch_update, batch_deactivate, batch_submit_for_approval. Applications: list, get, create, batch_create, patch, batch_update, batch_archive, batch_unarchive. Entity_signals (PPS): list, get, create, batch_create, patch, batch_update (no activate/deactivate). Users: list, get, current, get_roles, create, update, activate, deactivate. User_team_associations (Story 98-A1): list, create, update, delete.

  • areastringобязательный

    Resource area : 'teams' | 'sites' | 'applications' | 'custom_fields' | 'labels' | 'entity_signals' (PPS, feature-gated) | 'users' | 'user_team_associations' (Story 98-A1, SOAP-only).

  • paramsobject | null

    Action params dict — schema depends on (area, action). See src/domain/gam_admin.py GAM_ADMIN_PARAMS_MODELS for the exhaustive (area, action) → Pydantic model map.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

gam_audit

GAM 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.).

Параметры
  • checkstringобязательный

    Audit check to run. Use the short name (e.g. 'inventory_hygiene') or the prefixed name ('gam_audit.inventory_hygiene'). 22 checks available — see catalogue in the tool docstring.

  • paramsobject | null

    Optional check-specific parameters dict. Most checks run with no params (pass {} or omit). Examples: delivery_under accepts {threshold: 0.8}, dormant_inventory accepts {days: 90}, tag_snippet accepts {snippet: '...', creative_type: '...'}.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

gam_featuresтолько чтение

Parent gam_features tool for the Epic 68.5 catalogue refactor batch.

Параметры
  • actionenumобязательный

    GAM features sub-action. One of: get_gam_features, probe_gam_features, refresh_gam_features.

  • paramsobject | null

    Action params dict. These actions currently accept an empty object.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

gam_jobs

Async 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.

Параметры
  • actionenumобязательный

    gam_jobs sub-action. One of: image-optimize, blueprint-generate, audit-export, poll.

  • paramsobject | null

    Action params dict. image-optimize: { filename, imageB64, thresholdBytes?, quality? } blueprint-generate: BlueprintPreferences shape (brand required, everything else defaulted; matches sync endpoint). audit-export: { scope: 'full' | 'users_only' | 'teams_only' | 'sites_only' | 'applications_only' | 'labels_only' | 'custom_fields_only' | 'activity_only' } poll: { jobId }

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

get_my_tenant_idтолько чтение

Get 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).

Параметры

Без параметров.

get_premium_rateтолько чтение

Fetch 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).

Параметры
  • premium_rate_idstringобязательный

    GAM Premium Rate ID

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

initiate_gam_auth

Re-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

Параметры
  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

inventory

Parent inventory tool for Story 68.6.

Параметры
  • actionenumобязательный

    Inventory action: tree/audit/ads-json/blueprint reads plus batch create, blueprint push, inactive scan/archive.

  • paramsobject | null

    Action params dict validated by src.domain.inventory.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

jobs

Parent jobs tool for the Epic 68.2 catalogue refactor batch.

Параметры
  • actionenumобязательный

    Jobs sub-action. One of: get_job, list_jobs, duplicate_job.

  • paramsobject | null

    Action params dict. Schema depends on action and is validated with strict Pydantic V2 models in src.domain.jobs.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

line_item_lifecycle

Run 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.

Параметры
  • actionstringобязательный

    Lifecycle action: 'activate' (INACTIVE/DRAFT→READY — first activation for a line item that has never delivered), 'resume' (PAUSED→DELIVERING — un-pause a previously active line item), 'pause' (DELIVERING→PAUSED), 'archive' (irreversible removal from active views), 'unarchive' (restore ARCHIVED → previous status), 'reserve' (book inventory without delivering), 'release' (release reserved inventory). Note: line items have no approve/retire action — they auto-approve when the parent Order is approved.

  • confirmation_tokenstring | null

    Token from a previous dry_run=True call. Required when dry_run=False.

  • dry_runboolean

    If True (default), returns preview without executing any SOAP call

  • line_item_idsstring[]обязательный

    List of GAM Line Item IDs to act on. Pass at least one. Use direct GAM IDs — NO Firestore job_id required.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

line_items

Parent line_items tool for non-lifecycle Line Item operations.

Параметры
  • actionenumобязательный

    Line item sub-action. One of: get, get_full, list_by_order, update, update_batch, update_targeting, duplicate, verify, approve, archive, create_batch, activate_batch, pause_batch, create, create_adexchange, create_open_bidding, create_preferred_deal, list_private_deals.

  • paramsobject | null

    Action params dict. Schema depends on action and is validated with strict Pydantic V2 models in src.domain.line_items.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

list_premium_ratesтолько чтение

List 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).

Параметры
  • rate_card_idstringобязательный

    GAM Rate Card ID

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

list_rate_cardsтолько чтение

List 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).

Параметры
  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

live_stream

Live 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, max 255), videoSourceUrl? - update_live_stream_slate: slateId (required), name (only editable field) - delete_live_stream_slate: slateId (required) — archives via ArchiveSlates Cost: 0 credits for reads, 0.5 credits for writes.

Параметры
  • actionenumобязательный

    Live stream action. Ad breaks (REST): list/get/create/patch/delete. Events (SOAP): list_live_stream_events/create_live_stream_event/update_live_stream_event/delete_live_stream_event. Slates (SOAP): list_live_stream_slates/create_live_stream_slate/update_live_stream_slate/delete_live_stream_slate.

  • paramsobject | null

    Action params. Writes require dryRun then confirmationToken.

  • tenant_idstring | null

    Firebase tenant UID. Auto-resolved from session if omitted.

mcmтолько чтение

MCM read-only operations.

Параметры
  • actionstringобязательный

    MCM sub-action. One of: earnings_fetch. earnings_fetch returns monthly Multi-Customer Management earnings for parent publishers. Requires MCM Principal access.

  • paramsobject | null

    earnings_fetch params: {month: 1-12, year: 2020-2099}.

  • tenant_idstring | null

    Firebase tenant UID. Auto-resolved from session if omitted.

network

Parent network tool for the Epic 68.5 catalogue refactor batch.

Параметры
  • actionenumобязательный

    Network sub-action. One of: get_network_info, switch_network, list_accessible_networks, update_network, get_preview_url_library, set_preview_url_library.

  • paramsobject | null

    Action params dict. switch_network: {networkCode}; update_network: {displayName, dryRun, confirmationToken}; get_preview_url_library: {networkCode?}; set_preview_url_library: {networkCode?, previewUrls: [{name, url, enabled?, isDefault?, tags?}]}.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

order_lifecycle

Run 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.

Параметры
  • actionstringобязательный

    Lifecycle action: 'approve' (idempotent on already-APPROVED), 'approve_without_reservation_changes' (skip reservation recalc), 'archive' / 'unarchive', 'pause' (DELIVERING→PAUSED), 'resume' (PAUSED→DELIVERING), 'retire' (irreversible end-of-life), 'disapprove' (revoke APPROVED), 'submit_for_approval' (DRAFT→PENDING_APPROVAL).

  • confirmation_tokenstring | null

    Token from a previous dry_run=True call. Required when dry_run=False.

  • dry_runboolean

    If True (default), returns preview without executing any SOAP call

  • order_idstringобязательный

    GAM Order ID to act on. Direct GAM ID — no Firestore job_id required.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

orders

Parent orders tool for non-lifecycle Order operations.

Параметры
  • actionenumобязательный

    Order sub-action. One of: list_delivering, get, list, create, archive, approve, verify_setup, update, find_or_create, list_users, list_roles.

  • paramsobject | null

    Action params dict. Schema depends on action and is validated with strict Pydantic V2 models in src.domain.orders.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

placements

Parent placements tool for Story 68.6.

Параметры
  • actionenumобязательный

    Placements action: list_placements, create_placement, update_placement, activate_placement, deactivate_placement, archive_placement.

  • paramsobject | null

    Action params dict validated by src.domain.placements.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

poll_auth_statusтолько чтение

Check 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

Параметры
  • poll_tokenstringобязательный

    The pollToken from initiate_gam_auth

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

pqlтолько чтение

Parent pql tool for the Epic 68.2 catalogue refactor batch.

Параметры
  • actionenumобязательный

    PQL sub-action: run_query | validate_query | list_tables. run_query executes a SELECT against GAM PublisherQueryLanguageService. validate_query checks a query (sanitizer + column allow-map + LIMIT) without any SOAP call and returns {valid, normalizedQuery, table, tier, warnings}. list_tables returns the 29 queryable tables with their executability tier + key columns (no SOAP call). The column lists are an empirical catalogue, not a GAM schema: valid=true means 'nothing known to be wrong', so GAM can still answer 'Unknown column'. Read that fault as ground truth and drop the column — do not retry the same query. Tables (tier): line_item, ad_unit, geo_target, change_history, user, programmatic_buyer, audience_segment (EXECUTABLE); device_category (NO_NAME_COLUMN — Id only); browser_language (UNEXECUTABLE_ON_PROD). Order/Creative/Company/Placement are NOT PQL-queryable — use the dedicated tool.

  • paramsobject | null

    Action params dict. Schema depends on action and is validated with strict Pydantic V2 models in src.domain.pql. run_query and validate_query require: {query: str}. list_tables takes no params.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

prebid_skill

Dispatch Prebid.js / Header Bidding sub-actions through one MCP tool.

Параметры
  • actionenumобязательный

    Sub-action to dispatch. One of: 'generate_line_items', 'generate_targeting_keys', 'update_line_items', 'inspect_existing_setup', 'preview_batch', 'cleanup'. Story 70.1 registers all actions as STUBs; later stories flip actions to SHIPPED.

  • paramsobject

    Action params dict - schema depends on action and is validated by src/domain/prebid_skill.py.

  • tenant_idstring | null

    Firebase tenant UID. Auto-resolved from the MCP session if omitted where billing or audit logging needs it.

preview

Parent preview tool for the Epic 68.2 catalogue refactor batch.

Параметры
  • actionenumобязательный

    Preview sub-action. One of: get_preview_urls, get_campaign_preview_urls, check_creative_coverage.

  • paramsobject | null

    Action params dict. Schema depends on action and is validated with strict Pydantic V2 models in src.domain.preview. URL actions support a manual billing chain (cost-cap 10.0 credits, per-page estimation, dry_run sampling).

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

products

Parent products tool for the Epic 68.8 catalogue refactor batch.

Параметры
  • actionenumобязательный

    Products sub-action. One of: create, list, get, update, archive, get_adcp, pricing_suggestion.

  • confirmation_tokenstring | null

    ExecutionPlan token for guarded product exposure changes.

  • dry_runboolean

    Return an ExecutionPlan for guarded product exposure changes.

  • paramsobject | null

    Action params dict. Schema depends on action and is validated with strict Pydantic V2 models in src.domain.products_mcp.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

reporting

Parent reporting tool for the Epic 68.7b catalogue refactor batch.

Параметры
  • actionenumобязательный

    Reporting sub-action. One of: check_delivery_status, fetch_delivery_report, run_custom_report, fetch_inventory_report, get_report_result, export_report_csv, get_report_download_link, get_report_dimensions, get_report_metrics, get_report_date_ranges, get_standalone_forecast, get_delivery_forecast_by_line_item, get_prospective_delivery_forecast, get_traffic_data, list_report_templates, save_report_template, delete_report_template, duplicate_report_template, update_report_template, run_report_from_template, list_gam_reports, get_gam_report, create_gam_report, update_gam_report, delete_gam_report, run_gam_report, run_ga_report, get_ga_dimensions, get_ga_metrics, check_underdelivery_alerts, check_budget_alerts, generate_billing_report.

  • paramsobject | null

    Action params dict. Schema depends on action and is validated with Pydantic V2 models in src.domain.reporting.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

reporting_skill

Reporting 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.

Параметры
  • actionstringобязательный

    Action to dispatch. One of: schedule_from_template (duplicate a report template + apply overrides), create_alert (conditional delivery report with flags), cancel_run (best-effort cancel a running report LRO), historical_aggregates (RGPD-safe eCPM aggregates per Product — live compute, no persistence), [NOT_READY] fetch_mcm_earnings (Multi-Customer Management earnings — not implemented yet, returns NOT_IMPLEMENTED without charging credits), list_recent_advertisers (advertisers with orders ending in the last N days — Epic 84), generate_branded_report (enqueue branded Excel report job — Epic 84), get_execution_status (poll a generate_branded_report execution — Epic 84), list_saved_queries (list GAM saved queries from the console — Story 87.2).

  • paramsobjectобязательный

    Action params dict — schema depends on action (Pydantic discriminated union validates the right shape). See domain/report_skills.py for each action's params model.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

select_gam_network

Select 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.

Параметры
  • network_codestringобязательный

    GAM network code to select (from poll_auth_status)

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

server_infoтолько чтение

Return public health and catalogue metadata without touching GAM.

Параметры

Без параметров.

settings

Parent settings tool for the Epic 68.1 catalogue refactor POC.

Параметры
  • actionenumобязательный

    Settings sub-action. One of: list_presets, create_preset, update_preset, delete_preset, list_preset_suggestions, accept_preset_suggestion, dismiss_preset_suggestion, recompute_preset_suggestions, get_tenant_settings, update_tenant_settings, get_naming_conventions, update_naming_conventions, get_delivery_defaults, update_delivery_defaults, get_network_delivery_defaults, update_network_delivery_defaults, reset_network_delivery_defaults, get_network_naming_conventions, update_network_naming_conventions, reset_network_naming_conventions, get_multilang_matrix, get_global_multilang_matrix, save_global_multilang_matrix, apply_multilang_to_networks, resolve_multilang_matrix, list_preview_matrices.

  • paramsobject | null

    Action params dict. Schema depends on action and is validated with strict Pydantic V2 models in src.domain.settings.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

targeting

Parent targeting tool for Story 68.6.

Параметры
  • actionenumобязательный

    Targeting action. Groups: ad_units, custom_targeting, forecast, and reference_lookups.

  • paramsobject | null

    Action params dict validated by src.domain.targeting.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

tenant_catalog

Parent 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.

Параметры
  • actionenumобязательный

    Tenant catalog sub-action. One of: scan_network, get_scan_status, get_active_catalog, refresh. scan_network triggers the scan-tenant-network Cloud Function asynchronously and returns immediately with a scanId — poll via get_scan_status(scanId) until status='completed'. Then get_active_catalog() returns the populated catalog. Reads are free, scan trigger costs 1.0 credit. DRY_RUN mode active if INTERNAL_SCAN_HMAC_KEY/SCAN_CF_URL env vars absent (returns dryRunMode=true in get_active_catalog).

  • paramsobject | null

    Action-specific params. scan_network: {scope: 'full'|'incremental'|'recent_only'}, get_scan_status: {scanId: str}, get_active_catalog: {}, refresh: {forceFull: bool}.

  • tenant_idstring | null

    Firebase tenant UID. (auto-resolved from your session if omitted).

video_ops

Video 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.

Параметры
  • actionenumобязательный

    Video monetization action. AdRule (SOAP, video-network-only): list_ad_rules / create_ad_rule / update_ad_rule / delete_ad_rule. Content (SOAP, read-only): list_content. ContentBundle (SOAP, read-only): list_content_bundles. WARNING: AdRule and Content ops require a video-capable GAM network. GAM returns PERMISSION_DENIED or FEATURE_ERROR on standard networks.

  • paramsobject | null

    Action parameters. Write actions (create_ad_rule, update_ad_rule, delete_ad_rule) require dryRun=true first to get confirmationToken, then dryRun=false + confirmationToken. Read actions (list_ad_rules, list_content, list_content_bundles) take optional filter + pagination params.

  • tenant_idstring | null

    Firebase tenant UID. Auto-resolved from session if omitted.

yield_skill

Yield 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.

Параметры
  • actionenumобязательный

    Yield optimization / forecast governance action. YieldGroup (SOAP): list_yield_groups / create_yield_group / update_yield_group. Note: no delete — WSDL has no delete op; soft-delete via exchangeStatus=DELETED on adSources. ForecastAdjustment (SOAP, read-only): list_forecast_adjustments / list_forecast_segments.

  • paramsobject | null

    Action parameters. Write actions (create_yield_group, update_yield_group) require dryRun=true first to get confirmationToken, then dryRun=false + confirmationToken. Read actions (list_*) take optional filter + pagination params.

  • tenant_idstring | null

    Firebase tenant UID. Auto-resolved from session if omitted.

У этого сервера пока нет списка версий.

Выберите клиент, чтобы установить OrbiAds/Orbiads-GAM-MCP:

Любой клиент

Конфиг добавления MCP сервера стандартный, обычно он не меняется вообще, поэтому подходит практически к любому ИИ клиенту, поддерживающему MCP.

{
  "mcpServers": {
    "orbiads-orbiads-gam-mcp-navl0z2fr6": {
      "type": "http",
      "url": "https://orbiads.com/mcp"
    }
  }
}
CursorCursor

Перейдите по ссылке и сервер автоматически будет добавлен в Cursor. Либо откройте/создайте файл ~/.cursor/mcp.json(%USERPROFILE%\.cursor\mcp.json на Windows) и добавьте конфиг сервера:

{
  "mcpServers": {
    "orbiads-orbiads-gam-mcp-navl0z2fr6": {
      "type": "http",
      "url": "https://orbiads.com/mcp"
    }
  }
}
VS Code

Создайте .vscode/mcp.json в проекте (ключ верхнего уровня — servers):

{
  "servers": {
    "orbiads-orbiads-gam-mcp-navl0z2fr6": {
      "type": "http",
      "url": "https://orbiads.com/mcp"
    }
  }
}

Либо добавьте сервер через терминал:

code --add-mcp "{\"name\":\"orbiads-orbiads-gam-mcp-navl0z2fr6\",\"type\":\"http\",\"url\":\"https://orbiads.com/mcp\"}"
ClaudeClaude Desktop

Откройте Settings → Developer → Edit Config — это откроет файл claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Впишите сервер и полностью перезапустите Claude Desktop:

{
  "mcpServers": {
    "orbiads-orbiads-gam-mcp-navl0z2fr6": {
      "type": "http",
      "url": "https://orbiads.com/mcp"
    }
  }
}
Claude CodeClaude Code

Добавьте сервер одной командой в терминале:

claude mcp add --transport http orbiads-orbiads-gam-mcp-navl0z2fr6 https://orbiads.com/mcp

Либо через JSON-конфиг:

claude mcp add-json orbiads-orbiads-gam-mcp-navl0z2fr6 "{\"type\":\"http\",\"url\":\"https://orbiads.com/mcp\"}"
CodexCodex

Добавьте сервер командой в терминале:

codex mcp add orbiads-orbiads-gam-mcp-navl0z2fr6 --url https://orbiads.com/mcp

Либо вручную в ~/.codex/config.toml(%USERPROFILE%\.codex\config.toml на Windows):

[mcp_servers.orbiads-orbiads-gam-mcp-navl0z2fr6]
url = "https://orbiads.com/mcp"
PerplexityPerplexity

MCP доступен подписчикам Perplexity Pro / Max / Enterprise. Локальные серверы — только в приложении для macOS.

  1. Откройте Настройки аккаунта → Connectors.
  2. Установите вспомогательное приложение PerplexityXPC (один раз).
  3. Нажмите Add Connector → вкладка Simple.
  4. В поле Server Name укажите OrbiAds/Orbiads-GAM-MCP.

Нажмите Save и дождитесь статуса Running.

WindsurfWindsurf

Откройте Windsurf Settings → Cascade → MCP Servers или отредактируйте файл ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "orbiads-orbiads-gam-mcp-navl0z2fr6": {
      "type": "http",
      "url": "https://orbiads.com/mcp"
    }
  }
}
ClineCline

В панели Cline нажмите иконку MCP Servers → Configure → Configure MCP Servers (или отредактируйте ~/.cline/mcp.json) и добавьте сервер:

{
  "mcpServers": {
    "orbiads-orbiads-gam-mcp-navl0z2fr6": {
      "type": "http",
      "url": "https://orbiads.com/mcp",
      "disabled": false,
      "autoApprove": []
    }
  }
}
Continue

Создайте файл в .continue/mcpServers/ (например orbiads-orbiads-gam-mcp-navl0z2fr6.yaml) или добавьте блок в config.yaml. MCP работает только в режиме agent:

mcpServers:
  - name: orbiads-orbiads-gam-mcp-navl0z2fr6
    type: http
    url: https://orbiads.com/mcp
Zed

Выполните agent: add context server или откройте настройки (zed: open settings file) и добавьте сервер в объект context_servers:

{
  "context_servers": {
    "orbiads-orbiads-gam-mcp-navl0z2fr6": {
      "type": "http",
      "url": "https://orbiads.com/mcp"
    }
  }
}

Похожие MCP-сервера

MatiousCorp/google-ad-manager-mcp

MatiousCorp/google-ad-manager-mcp

от matiouscorp

Сервер для управления Google Ad Manager через естественный язык. AI-ассистенты создают кампании и креативы, проверяют доставку без интерфейса. Автоматизирует рутину маркетологов и адоперов.

Python18
stape-io/stape-mcp-server

stape-io/stape-mcp-server

от stape-io

MCP сервер для интеграции платформы Stape с ИИ-агентами через Claude Desktop. Управляйте данными Stape прямо из чата, используя API-ключ. Поддержка EU-региона. Полезен маркетологам и разработчикам ...

17
peturgeorgievv-factory/postfast-mcp

peturgeorgievv-factory/postfast-mcp

от peturgeorgievv-factory

MCP-сервер для API PostFast: планируйте и публикуйте посты в соцсетях, загружайте медиа, смотрите аналитику. Работает с AI-ассистентами — полезно маркетологам и SMM-специалистам для автоматизации.

TypeScript5
stape-io/google-tag-manager-mcp-server

stape-io/google-tag-manager-mcp-server

от stape-io

MCP сервер для Google Tag Manager с OAuth и удалённым доступом. MCP инструмент предоставляет доступ к GTM API, позволяя управлять тегами, триггерами и переменными из Claude Desktop. Автоматизируйте...

TypeScript217
embeddedlayers/mcp-analytics

embeddedlayers/mcp-analytics

от embeddedlayers

MCP сервер для adhoc анализа данных: загрузите CSV или подключите Shopify/Stripe/GA4, задайте вопрос — агенты построят кастомный модуль с интерактивным отчетом и AI-выводами. Модуль можно перезапускать на свежих данных. Для аналитиков и бизнеса.

JavaScript7
Natden444/pickanagency-mcp

Natden444/pickanagency-mcp

от natden444

MCP-сервер для поиска и подбора маркетинговых агентств из каталога 47 000+ компаний с реальными отзывами. Используй AI-подбор, чтобы найти агентство под задачу, бюджет и регион — прямо в диалоге с ...

JavaScript2
© Каталог MCP, 2026. Все права защищены.
Проект не аффилирован с Anthropic и любыми упомянутыми продуктами.
Все названия и торговые марки принадлежат их владельцам.
Контакты для связи: hi@mcp-katalog.ru

Лука Никитин