{
  "data": {
    "tool": {
      "category": "inference",
      "endpoint": "https://mcp.adbutler.com/mcp",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/adbutler-mcp-server.json",
      "kind": "mcp",
      "listed": "indexed",
      "liveUrl": "https://www.anchorterminal.com/api/v1/live/adbutler-mcp-server.json",
      "markdownUrl": "https://www.anchorterminal.com/tools/adbutler-mcp-server.md",
      "mcpTools": {
        "check": {
          "checker": "anchor-check/1.0",
          "totalTokens": 80939,
          "counts": {
            "error": 0,
            "note": 2,
            "warn": 728
          },
          "findings": [
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "archive_email_zone",
              "message": "the description is \"Archive an email zone\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "cancel_signature_request",
              "message": "the description is \"Cancel a signature request\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "create_advertiser",
              "message": "the description is \"Create a new advertiser\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "create_bidder",
              "message": "the description is \"Create a new bidder\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "create_channel",
              "message": "the description is \"Create a new channel\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "create_contact",
              "message": "the description is \"Create a new contact\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "create_contract",
              "message": "the description is \"Create a new contract\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "create_contract_document_from_template",
              "message": "the description is \"Create a contract document from a template\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "create_data_list",
              "message": "the description is \"Create a new data list\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "create_manager",
              "message": "the description is \"Create a new manager\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "create_media_group",
              "message": "the description is \"Create a new media group\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "create_pmp_deal",
              "message": "the description is \"Create a new PMP deal\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "create_publisher",
              "message": "the description is \"Create a new publisher\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_advertiser",
              "message": "the description is \"Delete an advertiser\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_audio_creative",
              "message": "the description is \"Delete an audio creative\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_beacon_signing_key",
              "message": "the description is \"Delete a beacon signing key\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_bidder",
              "message": "the description is \"Delete a bidder\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_campaign_assignment",
              "message": "the description is \"Delete a campaign assignment\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_catalog_ad_item",
              "message": "the description is \"Delete a catalog ad item\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_catalog_zone",
              "message": "the description is \"Delete a catalog zone\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_channel",
              "message": "the description is \"Delete a channel\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_contact",
              "message": "the description is \"Delete a contact\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_contract",
              "message": "the description is \"Delete a contract\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_contract_document",
              "message": "the description is \"Delete a contract document\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_contract_payment",
              "message": "the description is \"Delete a contract payment\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_contract_template",
              "message": "the description is \"Delete a contract template\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_creative",
              "message": "the description is \"Delete an image creative\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_custom_html_ad_item",
              "message": "the description is \"Delete a custom HTML ad item\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_data_key",
              "message": "the description is \"Delete a data key\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_data_key_target",
              "message": "the description is \"Delete a data key target\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_data_list",
              "message": "the description is \"Delete a data list\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_demand_endpoint",
              "message": "the description is \"Delete a demand endpoint\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_demand_source",
              "message": "the description is \"Delete a demand source\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_email_zone",
              "message": "the description is \"Delete an email zone\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_geo_target",
              "message": "the description is \"Delete a geo target\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_image_ad_item",
              "message": "the description is \"Delete an image ad item\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_list_target",
              "message": "the description is \"Delete a list target\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_manager",
              "message": "the description is \"Delete a manager\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_media_group",
              "message": "the description is \"Delete a media group\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_native_ad_item",
              "message": "the description is \"Delete a native ad item\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_native_template",
              "message": "the description is \"Delete a native template\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_platform_target",
              "message": "the description is \"Delete a platform target\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_pmp_deal",
              "message": "the description is \"Delete a PMP deal\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_postal_code_target",
              "message": "the description is \"Delete a postal code target\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_product_source",
              "message": "the description is \"Delete a product source\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_product_source_target",
              "message": "the description is \"Delete a product source target\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_publisher",
              "message": "the description is \"Delete a publisher\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_report_schedule",
              "message": "the description is \"Delete a report schedule\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_rich_media_ad_item",
              "message": "the description is \"Delete a rich media ad item\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_rich_media_creative",
              "message": "the description is \"Delete a rich media creative\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_role",
              "message": "the description is \"Delete a role\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_schedule",
              "message": "the description is \"Delete a schedule\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_signature_request",
              "message": "the description is \"Delete a signature request\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_trusted_redirect_domain",
              "message": "the description is \"Delete a trusted redirect domain\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_video_creative",
              "message": "the description is \"Delete a video creative\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "delete_zone",
              "message": "the description is \"Delete a standard zone\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "draft_delete_placement",
              "message": "the description is \"Delete a draft placement\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "draft_delete_schedule",
              "message": "the description is \"Delete a draft schedule\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "draft_list_schedules",
              "message": "the description is \"List all draft schedules\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "get_click_details_report",
              "message": "the description is \"Get click details report\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "get_conversion_details_report",
              "message": "the description is \"Get conversion details report\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "get_vast_auction_placements_report",
              "message": "the description is \"Get VAST auction placements report\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "get_vast_forecast",
              "message": "the description is \"Get VAST forecast report\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "list_audio_creatives",
              "message": "the description is \"List all audio creatives\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "list_channels",
              "message": "the description is \"List all channels\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "list_contracts",
              "message": "the description is \"List all contracts\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "list_creatives",
              "message": "the description is \"List all image creatives\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "list_data_targets",
              "message": "the description is \"List all data targets\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "list_email_zones",
              "message": "the description is \"List all email zones\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "list_image_ad_items",
              "message": "the description is \"List all image ad items\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "list_native_ad_items",
              "message": "the description is \"List all native ad items\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "list_video_creatives",
              "message": "the description is \"List all video creatives\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "list_zones",
              "message": "the description is \"List all standard zones\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "replace_contract_document_file_from_template",
              "message": "the description is \"Replace a contract document file from a template\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "resend_signature_request",
              "message": "the description is \"Resend a signature request\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "update_report_schedule",
              "message": "the description is \"Update a report schedule\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "update_role",
              "message": "the description is \"Update an existing role\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "validate_beacon_signing_key",
              "message": "the description is \"Validate a beacon signing key\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "vast42_create_icon",
              "message": "the description is \"Create a VAST 4.2 icon\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "vast42_delete_icon",
              "message": "the description is \"Delete a VAST 4.2 icon\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "vast42_list_icons",
              "message": "the description is \"List all VAST 4.2 icons\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "vast42_update_icon",
              "message": "the description is \"Update a VAST 4.2 icon\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "vast_create_zone",
              "message": "the description is \"Create a new VAST zone\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "vast_delete_ad_item",
              "message": "the description is \"Delete a VAST ad item\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "vast_delete_campaign",
              "message": "the description is \"Delete a VAST campaign\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "vast_delete_channel",
              "message": "the description is \"Delete a VAST channel\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "vast_delete_companion",
              "message": "the description is \"Delete a VAST companion\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "vast_delete_placement",
              "message": "the description is \"Delete a VAST placement\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "vast_delete_schedule",
              "message": "the description is \"Delete a VAST schedule\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "vast_delete_zone",
              "message": "the description is \"Delete a VAST zone\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "vast_list_ad_items",
              "message": "the description is \"List all VAST ad items\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "vast_list_campaigns",
              "message": "the description is \"List all VAST campaigns\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "vast_list_channels",
              "message": "the description is \"List all VAST channels\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "vast_list_companions",
              "message": "the description is \"List all VAST companions\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "vast_list_schedules",
              "message": "the description is \"List all VAST schedules\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC06",
              "severity": "warn",
              "tool": "vast_list_zones",
              "message": "the description is \"List all VAST zones\"",
              "fix": "Add when to use it, what it returns and any side effect, in two or three sentences."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "create_zone",
              "message": "2 parameters without a description: ad_size_filter.sizes[].height, ad_size_filter.sizes[].width",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "update_zone",
              "message": "2 parameters without a description: ad_size_filter.sizes[].height, ad_size_filter.sizes[].width",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC12",
              "severity": "warn",
              "tool": "create_report_schedule",
              "message": "no type for recipients[]",
              "fix": "Give every parameter a type (or an enum)."
            },
            {
              "rule": "TC12",
              "severity": "warn",
              "tool": "update_report_schedule",
              "message": "no type for recipients[]",
              "fix": "Give every parameter a type (or an enum)."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "add_user_list_attribute_values",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "archive_advertiser",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "archive_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "archive_channel",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "archive_contract",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "archive_email_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "archive_publisher",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "archive_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "bulk_create_product_sources",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "bulk_upload_add_data_list",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "bulk_upload_product_catalog",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "bulk_upload_remove_data_list",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "bulk_upload_replace_data_list",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "bulk_upload_replace_user_db",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "call_adbutler_api",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "campaign_bulk_create_catalog_ad_items",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "campaign_bulk_delete_catalog_ad_items",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "cancel_signature_request",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "convert_native_to_image",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_advertiser",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_audience",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_audio_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_beacon_signing_key",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_bidder",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_campaign_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_catalog_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_catalog_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_channel",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_channel_zone_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_contact",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_contract",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_contract_document",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_contract_document_from_template",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_contract_payment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_contract_template",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_custom_html_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_custom_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_data_key",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_data_key_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_data_list",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_day_parting",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_demand_endpoint",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_demand_source",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_email_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_event_log_upload_config",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_geo_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_image_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_list_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_manager",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_media_group",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_native_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_native_template",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_ortb_native_data_asset",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_ortb_native_image_asset",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_ortb_native_template",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_ortb_native_title_asset",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_placement",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_platform_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_pmp_deal",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_postal_code_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_product_catalog",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_product_catalog_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_product_source",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_product_source_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_publisher",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_report_schedule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_rich_media_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_rich_media_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_role",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_schedule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_sftp_connection",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_signature_request",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_trial_account",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_trusted_redirect_domain",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_user",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_user_attribute",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_user_db",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_vast_custom_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_video_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "create_zone_ortb_native_ad",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_advertiser",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_archived_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_archived_channel",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_archived_contract",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_audience",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_audio_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_beacon_signing_key",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_bidder",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_campaign_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_catalog_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_catalog_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_channel",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_channel_zone_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_contact",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_contract",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_contract_document",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_contract_payment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_contract_template",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_custom_html_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_custom_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_data_key",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_data_key_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_data_list",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_day_parting",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_demand_endpoint",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_demand_source",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_email_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_event_log_upload_config",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_geo_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_image_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_list_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_manager",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_media_group",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_native_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_native_template",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_ortb_native_data_asset",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_ortb_native_image_asset",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_ortb_native_template",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_ortb_native_title_asset",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_placement",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_platform_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_pmp_deal",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_postal_code_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_product_source",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_product_source_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_publisher",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_report_schedule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_rich_media_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_rich_media_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_role",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_schedule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_sftp_connection",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_signature_request",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_signature_request_recipient",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_trusted_redirect_domain",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_user_attribute",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_video_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "delete_zone_ortb_native_ad",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "describe_adbutler_api",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"describe\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "download_contract_document_file_revision",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"download\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_create_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_create_campaign_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_create_catalog_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_create_custom_html_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_create_image_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_create_native_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_create_placement",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_create_rich_media_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_create_schedule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_delete_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_delete_campaign_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_delete_catalog_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_delete_custom_html_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_delete_image_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_delete_native_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_delete_placement",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_delete_rich_media_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_delete_schedule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_get_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_get_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_get_campaign_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_get_catalog_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_get_custom_html_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_get_image_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_get_native_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_get_placement",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_get_rich_media_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_get_schedule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_list_ad_items",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_list_campaign_assignments",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_list_campaigns",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_list_catalog_ad_items",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_list_custom_html_ad_items",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_list_image_ad_items",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_list_native_ad_items",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_list_placements",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_list_rich_media_ad_items",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_list_schedules",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_save_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_update_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_update_campaign_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_update_catalog_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_update_custom_html_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_update_image_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_update_native_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_update_placement",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_update_rich_media_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "draft_update_schedule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "generate_bulk_zone_tags",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_ad",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_advertiser",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_archived_advertiser",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_archived_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_archived_channel",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_archived_contract",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_archived_email_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_archived_publisher",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_archived_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_auction_placements_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_audience",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_audio_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_beacon_signing_key",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_bidder",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_campaign_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_campaign_conversion_tag",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_campaign_eligible_zones",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_catalog_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_catalog_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_catalog_zone_tag",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_channel",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_channel_zone_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_click_details_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_contact",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_contact_report_schedules",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_contract",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_contract_active_signature_request",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_contract_assigned_campaigns",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_contract_document",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_contract_document_file_revision",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_contract_payment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_contract_template",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_conversion_details_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_custom_html_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_custom_html_ad_item_conversion_tag",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_custom_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_data_key",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_data_key_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_data_list",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_day_parting",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_demand_endpoint",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_demand_source",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_demand_source_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_display_channel_forecast",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_display_forecast",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_display_platform_estimate",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_display_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_email_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_email_zone_conversion_tag",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_email_zone_tag",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_event_log_upload_config",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_event_log_upload_log",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_event_logs",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_geo_summary_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_geo_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_image_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_image_ad_item_conversion_tag",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_kogan_dashboard_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_kogan_product",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_kogan_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_list_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_live_website_preview",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_manager",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_manual_tracking_links",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_media_group",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_native_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_native_ad_item_conversion_tag",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_native_template",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_ortb_native_data_asset",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_ortb_native_image_asset",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_ortb_native_template",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_ortb_native_title_asset",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_placement",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_placement_conversion_tag",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_placement_forecast",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_platform_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_pmp_deal",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_postal_code_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_product_catalog",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_product_catalog_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_product_source",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_product_source_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_publisher",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_report_generated",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_report_schedule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_report_schedule_generated",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_rich_media_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_rich_media_ad_item_conversion_tag",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_rich_media_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_role",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_schedule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_sftp_connection",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_signature_request",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_signature_request_recipient",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_trusted_redirect_domain",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_user",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_user_attribute",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_user_db",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_vast_ad_item_conversion_tag",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_vast_auction_placements_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_vast_campaign_conversion_tag",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_vast_channel_forecast",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_vast_custom_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_vast_forecast",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_vast_geo_summary_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_vast_placement_conversion_tag",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_vast_platform_estimate",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_vast_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_vast_zone_conversion_tag",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_vast_zone_tags",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_video_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_zone_conversion_tag",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_zone_ortb_native_ad",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "get_zone_tag",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_ad_items",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_advertisers",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_all_campaigns",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_all_creatives",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_all_generated_reports",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_all_report_schedules",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_all_zones",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_archived_advertisers",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_archived_campaigns",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_archived_channels",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_archived_contracts",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_archived_email_zones",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_archived_publishers",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_archived_zones",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_audiences",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_audio_creatives",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_beacon_signing_keys",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_bidders",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_campaign_assignments",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_campaigns",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_catalog_ad_items",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_catalog_zones",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_channel_zone_assignments",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_channels",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_contacts",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_contract_document_file_revisions",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_contract_documents",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_contract_payments",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_contract_templates",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_contracts",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_creatives",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_custom_html_ad_items",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_custom_reports",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_data_key_targets",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_data_keys",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_data_lists",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_data_targets",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_day_partings",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_demand_endpoints",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_demand_sources",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_email_zones",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_event_log_upload_configs",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_event_log_upload_logs",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_geo_targets",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_image_ad_items",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_list_targets",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_managers",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_media_groups",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_native_ad_items",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_native_templates",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_ortb_native_data_assets",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_ortb_native_image_assets",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_ortb_native_templates",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_ortb_native_title_assets",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_placements",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_platform_targets",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_pmp_deals",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_postal_code_targets",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_product_catalogs",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_product_source_targets",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_product_sources",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_publishers",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_report_generated",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_report_schedule_generated",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_report_schedules",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_rich_media_ad_items",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_rich_media_creatives",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_roles",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_schedules",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_sftp_connections",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_signature_request_recipients",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_signature_requests",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_trusted_redirect_domains",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_user_attributes",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_user_dbs",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_vast_custom_reports",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_video_creatives",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_zone_ortb_native_ads",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "list_zones",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "remove_list_target_usages",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "remove_user_list_attribute_values",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "replace_audio_creative_file",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "replace_contract_document_file",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "replace_contract_document_file_from_template",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "replace_image_creative_file",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "replace_rich_media_creative_file",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "replace_video_creative_file",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "resend_signature_request",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "resend_verification_code",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "revoke_report_schedule_historical_access",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "search_adbutler_api",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"search\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "search_product_catalog_items",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"search\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "serve_ad",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "setup_api_key",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "sync_kogan_stats",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "test_sftp_connection",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "unarchive_advertiser",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "unarchive_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "unarchive_channel",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "unarchive_contract",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "unarchive_email_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "unarchive_publisher",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "unarchive_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_advertiser",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_audience",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_audio_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_beacon_signing_key",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_bidder",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_campaign_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_catalog_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_catalog_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_channel",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_contact",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_contract",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_contract_document",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_contract_template",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_custom_html_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_custom_report",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_data_key",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_data_key_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_data_list",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_day_parting",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_demand_endpoint",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_demand_source",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_email_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_event_log_upload_config",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_geo_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_image_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_kogan_product_category",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_list_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_manager",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_media_group",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_native_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_native_template",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_ortb_native_data_asset",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_ortb_native_image_asset",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_ortb_native_template",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_ortb_native_title_asset",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_placement",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_platform_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_pmp_deal",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_postal_code_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_product_catalog",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_product_catalog_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_product_source",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_product_source_target",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_publisher",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_report_schedule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_rich_media_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_rich_media_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_role",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_schedule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_sftp_connection",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_signature_request",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_signature_request_recipient",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_trusted_redirect_domain",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_user_attribute",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_video_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "update_zone_ortb_native_ad",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "validate_beacon_signing_key",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"validate\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_create_ad",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_create_campaign_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_create_closed_caption_file",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_create_companion",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_create_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_create_icon",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_create_icon_click_fallback_image",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_create_interactive_creative_file",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_create_linear",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_create_media_file",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_create_mezzanine",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_create_non_linear",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_create_placement",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_create_resource",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_create_universal_ad_id",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_delete_ad",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_delete_campaign_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_delete_closed_caption_file",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_delete_companion",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_delete_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_delete_icon",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_delete_icon_click_fallback_image",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_delete_interactive_creative_file",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_delete_linear",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_delete_media_file",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_delete_mezzanine",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_delete_non_linear",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_delete_placement",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_delete_resource",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_delete_universal_ad_id",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_get_ad",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_get_campaign_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_get_closed_caption_file",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_get_companion",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_get_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_get_icon",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_get_icon_click_fallback_image",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_get_interactive_creative_file",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_get_linear",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_get_media_file",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_get_mezzanine",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_get_non_linear",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_get_placement",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_get_resource",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_get_universal_ad_id",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_list_ads",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_list_campaign_assignments",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_list_closed_caption_files",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_list_companions",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_list_creatives",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_list_icon_click_fallback_images",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_list_icons",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_list_interactive_creative_files",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_list_linears",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_list_media_files",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_list_mezzanines",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_list_non_linears",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_list_placements",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_list_resources",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_list_universal_ad_ids",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_update_ad",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_update_campaign_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_update_closed_caption_file",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_update_companion",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_update_creative",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_update_icon",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_update_icon_click_fallback_image",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_update_interactive_creative_file",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_update_linear",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_update_media_file",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_update_mezzanine",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_update_non_linear",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_update_placement",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_update_resource",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast42_update_universal_ad_id",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_archive_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_archive_channel",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_archive_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_create_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_create_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_create_campaign_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_create_channel",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_create_channel_zone_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_create_companion",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_create_linear_media",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_create_non_linear_media",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_create_placement",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_create_schedule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_create_tracking",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_create_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_delete_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_delete_archived_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_delete_archived_channel",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_delete_archived_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_delete_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_delete_campaign_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_delete_channel",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_delete_channel_zone_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_delete_companion",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_delete_linear_media",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_delete_non_linear_media",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_delete_placement",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_delete_schedule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_delete_tracking",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_delete_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_get_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_get_archived_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_get_archived_channel",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_get_archived_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_get_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_get_campaign_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_get_channel",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_get_channel_zone_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_get_companion",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_get_linear_media",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_get_non_linear_media",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_get_placement",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_get_schedule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_get_tracking",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_get_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"get\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_list_ad_items",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_list_archived_campaigns",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_list_archived_channels",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_list_archived_zones",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_list_campaign_assignments",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_list_campaigns",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_list_channel_zone_assignments",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_list_channels",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_list_companions",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_list_linear_media",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_list_media",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_list_non_linear_media",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_list_placements",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_list_schedules",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_list_tracking",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_list_zones",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Its name starts with \"list\"; if it only reads, set readOnlyHint: true so harnesses can run it without asking."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_unarchive_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_unarchive_channel",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_unarchive_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_update_ad_item",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_update_campaign",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_update_campaign_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_update_channel",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_update_channel_zone_assignment",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_update_companion",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_update_linear_media",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_update_non_linear_media",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_update_placement",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_update_schedule",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_update_tracking",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "vast_update_zone",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC16",
              "severity": "warn",
              "tool": "verify_trial_email",
              "message": "no readOnlyHint or destructiveHint",
              "fix": "Set readOnlyHint: true if it only reads; otherwise set destructiveHint and idempotentHint."
            },
            {
              "rule": "TC23",
              "severity": "warn",
              "message": "627 tools, about 74,913 tokens of definitions",
              "fix": "Split the server by job, or offer a smaller default toolset (a read-only set, or a search-then-call pattern)."
            },
            {
              "rule": "TC03",
              "severity": "note",
              "tool": "replace_contract_document_file_from_template",
              "message": "the name is 44 characters",
              "fix": "Keep names under 40 characters so the client's prefix fits."
            },
            {
              "rule": "TC24",
              "severity": "note",
              "message": "627 of 627 tools have no outputSchema",
              "fix": "Declare outputSchema for tools that return structured data, and return structuredContent that matches it."
            }
          ]
        },
        "checkedAt": "2026-10-04T22:21:56Z",
        "count": 627,
        "schemaTokens": 80939,
        "status": "ok",
        "tools": [
          {
            "name": "list_advertisers",
            "description": "List all advertisers in your AdButler account",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_advertiser",
            "description": "Get details of a specific advertiser by ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Advertiser ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_advertiser",
            "description": "Create a new advertiser",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "can_add_ad_items": {
                  "description": "Whether advertiser can submit advertisements for scheduling",
                  "type": "boolean"
                },
                "can_change_password": {
                  "description": "Whether advertiser can change password",
                  "type": "boolean"
                },
                "email": {
                  "description": "Contact email",
                  "type": "string"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Advertiser name",
                  "type": "string"
                },
                "password": {
                  "description": "Password for advertiser portal (min 8 chars, must include upper, lower, number)",
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_advertiser",
            "description": "Update an existing advertiser",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "can_add_ad_items": {
                  "description": "Whether advertiser can submit advertisements for scheduling",
                  "type": "boolean"
                },
                "can_change_password": {
                  "description": "Whether advertiser can change password",
                  "type": "boolean"
                },
                "email": {
                  "description": "Contact email",
                  "type": "string"
                },
                "id": {
                  "description": "Advertiser ID",
                  "type": "number"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Advertiser name",
                  "type": "string"
                },
                "password": {
                  "description": "Password for advertiser portal (min 8 chars, must include upper, lower, number)",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_advertiser",
            "description": "Delete an advertiser",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Advertiser ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "archive_advertiser",
            "description": "Archive an advertiser (soft-delete, can be restored later)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Advertiser ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_archived_advertisers",
            "description": "List all archived advertisers",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_archived_advertiser",
            "description": "Get details of a specific archived advertiser",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived advertiser ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "unarchive_advertiser",
            "description": "Restore an archived advertiser back to active status",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived advertiser ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_all_campaigns",
            "description": "List all campaigns across all types",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "list_campaigns",
            "description": "List all standard campaigns",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_campaign",
            "description": "Get details of a specific standard campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_campaign",
            "description": "Create a new standard campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "advertiser": {
                  "description": "Advertiser ID",
                  "type": "number"
                },
                "budget": {
                  "additionalProperties": false,
                  "description": "Budget limits (daily/weekly/monthly/lifetime)",
                  "properties": {
                    "daily": {
                      "type": "number"
                    },
                    "lifetime": {
                      "type": "number"
                    },
                    "monthly": {
                      "type": "number"
                    },
                    "weekly": {
                      "type": "number"
                    }
                  },
                  "type": "object"
                },
                "contract": {
                  "description": "Contract ID (requires Contract Management add-on)",
                  "type": "number"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Campaign name",
                  "type": "string"
                },
                "roadblock_tags": {
                  "description": "Tag to link campaign to a roadblock",
                  "type": "string"
                },
                "scheduling_source": {
                  "description": "Whether scheduling is set at campaign or ad item level",
                  "enum": [
                    "CAMPAIGN",
                    "AD_ITEM"
                  ],
                  "type": "string"
                },
                "targeting_source": {
                  "description": "Whether targeting is set at campaign or ad item level",
                  "enum": [
                    "CAMPAIGN",
                    "AD_ITEM"
                  ],
                  "type": "string"
                },
                "trusted_redirect_domains": {
                  "description": "Array of trusted redirect domains",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_campaign",
            "description": "Update an existing standard campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "advertiser": {
                  "description": "Advertiser ID",
                  "type": "number"
                },
                "budget": {
                  "additionalProperties": false,
                  "description": "Budget limits",
                  "properties": {
                    "daily": {
                      "type": "number"
                    },
                    "lifetime": {
                      "type": "number"
                    },
                    "monthly": {
                      "type": "number"
                    },
                    "weekly": {
                      "type": "number"
                    }
                  },
                  "type": "object"
                },
                "contract": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "id": {
                  "description": "Campaign ID",
                  "type": "number"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Campaign name",
                  "type": "string"
                },
                "roadblock_tags": {
                  "description": "Roadblock tag",
                  "type": "string"
                },
                "scheduling_source": {
                  "description": "Scheduling level",
                  "enum": [
                    "CAMPAIGN",
                    "AD_ITEM"
                  ],
                  "type": "string"
                },
                "targeting_source": {
                  "description": "Targeting level",
                  "enum": [
                    "CAMPAIGN",
                    "AD_ITEM"
                  ],
                  "type": "string"
                },
                "trusted_redirect_domains": {
                  "description": "Trusted redirect domains",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_campaign",
            "description": "Delete a standard campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "archive_campaign",
            "description": "Archive a standard campaign (soft-delete, can be restored later)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_archived_campaigns",
            "description": "List all archived standard campaigns",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_archived_campaign",
            "description": "Get details of a specific archived standard campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_archived_campaign",
            "description": "Permanently delete an archived standard campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "unarchive_campaign",
            "description": "Restore an archived standard campaign back to active status",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_campaign_conversion_tag",
            "description": "Get conversion tag for a campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_campaign_eligible_zones",
            "description": "Get eligible zones for a campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "campaign_bulk_create_catalog_ad_items",
            "description": "Bulk create catalog ad items in a campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "campaign_id": {
                  "description": "Campaign ID",
                  "type": "number"
                },
                "items": {
                  "description": "Array of catalog ad item objects to create",
                  "items": {
                    "additionalProperties": {},
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "required": [
                "campaign_id",
                "items"
              ],
              "type": "object"
            }
          },
          {
            "name": "campaign_bulk_delete_catalog_ad_items",
            "description": "Bulk delete catalog ad items from a campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "campaign_id": {
                  "description": "Campaign ID",
                  "type": "number"
                },
                "items": {
                  "description": "Array of catalog ad item IDs to delete",
                  "items": {
                    "type": "number"
                  },
                  "type": "array"
                }
              },
              "required": [
                "campaign_id",
                "items"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_campaign_assignments",
            "description": "List all campaign assignments (ad items assigned to campaigns)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_campaign_assignment",
            "description": "Get details of a specific campaign assignment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Campaign assignment ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_campaign_assignment",
            "description": "Create a new campaign assignment (assign an ad item to a campaign)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "Whether assignment is active (defaults to true)",
                  "type": "boolean"
                },
                "advertisement": {
                  "additionalProperties": false,
                  "description": "Advertisement object with id and type",
                  "properties": {
                    "id": {
                      "description": "Ad item ID",
                      "type": "number"
                    },
                    "type": {
                      "description": "Ad item type: \"image_ad_item\", \"custom_html_ad_item\", \"rich_media_ad_item\", \"native_ad_item\"",
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "type"
                  ],
                  "type": "object"
                },
                "campaign": {
                  "additionalProperties": false,
                  "description": "Campaign object with id and type",
                  "properties": {
                    "id": {
                      "description": "Campaign ID",
                      "type": "number"
                    },
                    "type": {
                      "const": "standard_campaign",
                      "description": "Campaign type",
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "type"
                  ],
                  "type": "object"
                },
                "data_key_target": {
                  "description": "Data Key Target ID",
                  "type": "number"
                },
                "geo_target": {
                  "description": "Geo Target ID (only if campaign targeting_source is \"AD_ITEM\")",
                  "type": "number"
                },
                "keywords": {
                  "description": "Comma-separated keywords for targeting",
                  "type": "string"
                },
                "keywords_match_method": {
                  "description": "Keyword matching method",
                  "enum": [
                    "required",
                    "preferred",
                    "filtered"
                  ],
                  "type": "string"
                },
                "list_target": {
                  "description": "List Target ID",
                  "type": "number"
                },
                "platform_target": {
                  "description": "Platform Target ID",
                  "type": "number"
                },
                "schedule": {
                  "description": "Schedule ID (only if campaign scheduling_source is \"AD_ITEM\")",
                  "type": "number"
                },
                "weight": {
                  "description": "Relative delivery weight (defaults to 1)",
                  "type": "number"
                }
              },
              "required": [
                "advertisement",
                "campaign"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_campaign_assignment",
            "description": "Update an existing campaign assignment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "Whether assignment is active",
                  "type": "boolean"
                },
                "data_key_target": {
                  "description": "Data Key Target ID",
                  "type": "number"
                },
                "geo_target": {
                  "description": "Geo Target ID",
                  "type": "number"
                },
                "id": {
                  "description": "Campaign assignment ID",
                  "type": "number"
                },
                "keywords": {
                  "description": "Comma-separated keywords",
                  "type": "string"
                },
                "keywords_match_method": {
                  "description": "Keyword matching method",
                  "enum": [
                    "required",
                    "preferred",
                    "filtered"
                  ],
                  "type": "string"
                },
                "list_target": {
                  "description": "List Target ID",
                  "type": "number"
                },
                "platform_target": {
                  "description": "Platform Target ID",
                  "type": "number"
                },
                "schedule": {
                  "description": "Schedule ID",
                  "type": "number"
                },
                "weight": {
                  "description": "Relative delivery weight",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_campaign_assignment",
            "description": "Delete a campaign assignment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Campaign assignment ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_channels",
            "description": "List all channels",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_channel",
            "description": "Get details of a specific channel",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Channel ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_channel",
            "description": "Create a new channel",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "name": {
                  "description": "Channel name",
                  "type": "string"
                },
                "priority": {
                  "description": "Serving priority (default: standard)",
                  "enum": [
                    "sponsorship",
                    "standard",
                    "network",
                    "bulk",
                    "house"
                  ],
                  "type": "string"
                },
                "use_share_of_voice": {
                  "description": "Whether to use share of voice as serving strategy (false = use weight)",
                  "type": "boolean"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_channel",
            "description": "Update an existing channel",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Channel ID",
                  "type": "number"
                },
                "name": {
                  "description": "Channel name",
                  "type": "string"
                },
                "priority": {
                  "description": "Serving priority",
                  "enum": [
                    "sponsorship",
                    "standard",
                    "network",
                    "bulk",
                    "house"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_channel",
            "description": "Delete a channel",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Channel ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "archive_channel",
            "description": "Archive a channel (soft-delete, can be restored later)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Channel ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_archived_channels",
            "description": "List all archived channels",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_archived_channel",
            "description": "Get details of a specific archived channel",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived channel ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_archived_channel",
            "description": "Permanently delete an archived channel",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived channel ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "unarchive_channel",
            "description": "Restore an archived channel back to active status",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived channel ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_channel_zone_assignments",
            "description": "List all channel zone assignments",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_channel_zone_assignment",
            "description": "Get details of a specific channel zone assignment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Channel zone assignment ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_channel_zone_assignment",
            "description": "Assign a zone to a channel",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "channel": {
                  "description": "Channel ID",
                  "type": "number"
                },
                "zone": {
                  "additionalProperties": false,
                  "description": "Zone object with id and type",
                  "properties": {
                    "id": {
                      "description": "Zone ID",
                      "type": "number"
                    },
                    "type": {
                      "description": "Zone type (default: standard_zone)",
                      "enum": [
                        "standard_zone",
                        "email_zone"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "id"
                  ],
                  "type": "object"
                }
              },
              "required": [
                "channel",
                "zone"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_channel_zone_assignment",
            "description": "Remove a zone from a channel",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Channel zone assignment ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_all_zones",
            "description": "List all zones across all types (standard, email, catalog)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "list_zones",
            "description": "List all standard zones",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_zone",
            "description": "Get details of a specific standard zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_zone",
            "description": "Create a new standard zone. Set dimensions to \"dynamic\" for a dynamic zone (width/height must be 0), or \"fixed\" (default) for a fixed-size zone.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "ad_size_filter": {
                  "additionalProperties": false,
                  "description": "Ad size filter (dynamic zones only)",
                  "properties": {
                    "sizes": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "height": {
                            "type": "number"
                          },
                          "width": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "width",
                          "height"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "type": {
                      "enum": [
                        "INCLUSIVE",
                        "EXCLUSIVE"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "allow_demand_sources": {
                  "description": "Allow requests to demand endpoints",
                  "type": "boolean"
                },
                "allowed_root_native_templates": {
                  "description": "Allowed root native template IDs",
                  "items": {
                    "type": "number"
                  },
                  "type": "array"
                },
                "api_frameworks": {
                  "description": "Supported API frameworks for OpenRTB",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "auction_tie_break": {
                  "description": "Tie-breaking method for auctions",
                  "enum": [
                    "RANDOM",
                    "SCORE"
                  ],
                  "type": "string"
                },
                "bid_floor": {
                  "description": "Default bid floor for programmatic",
                  "type": "number"
                },
                "burn_in_hours": {
                  "description": "Hours before eCPM confidence",
                  "type": "number"
                },
                "burn_in_impressions": {
                  "description": "Impressions before eCPM confidence",
                  "type": "number"
                },
                "dimensions": {
                  "description": "Zone dimensions type: \"fixed\" (default) or \"dynamic\"",
                  "enum": [
                    "fixed",
                    "dynamic"
                  ],
                  "type": "string"
                },
                "ecpm_testing_allowance": {
                  "description": "Percentage for eCPM recalculation testing",
                  "type": "number"
                },
                "height": {
                  "description": "Zone height in pixels (must be 0 if dimensions is \"dynamic\")",
                  "type": "number"
                },
                "iab_categories": {
                  "description": "IAB category descriptors",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "min_payout": {
                  "description": "Minimum payout per impression (CPM)",
                  "type": "number"
                },
                "name": {
                  "description": "Zone name",
                  "type": "string"
                },
                "optimization_strategy": {
                  "description": "Zone optimization strategy",
                  "type": "string"
                },
                "pmp_deals": {
                  "description": "Allowed PMP Deal IDs",
                  "items": {
                    "type": "number"
                  },
                  "type": "array"
                },
                "private_auction": {
                  "description": "Whether auction ignores non-deal bids",
                  "type": "boolean"
                },
                "publisher": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "refresh_frequency": {
                  "description": "Interval in seconds for serving new ads",
                  "type": "number"
                },
                "refresh_limit": {
                  "description": "Total times zone will refresh",
                  "type": "number"
                },
                "responsive": {
                  "description": "Size behavior",
                  "enum": [
                    "fixed",
                    "auto",
                    "inherit"
                  ],
                  "type": "string"
                },
                "rtb_placement_id": {
                  "description": "OpenRTB tagid identifier",
                  "type": "string"
                },
                "serve_priority_order": {
                  "description": "Priority order: \"weight\" or \"auction\"",
                  "enum": [
                    "weight",
                    "auction"
                  ],
                  "type": "string"
                },
                "unique_delivery": {
                  "description": "Serve unique ads on each zone",
                  "type": "boolean"
                },
                "use_share_of_voice": {
                  "description": "Use \"share of voice\" as serving strategy",
                  "type": "boolean"
                },
                "width": {
                  "description": "Zone width in pixels (must be 0 if dimensions is \"dynamic\")",
                  "type": "number"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_zone",
            "description": "Update an existing standard zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "ad_size_filter": {
                  "additionalProperties": false,
                  "description": "Ad size filter (dynamic zones only)",
                  "properties": {
                    "sizes": {
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "height": {
                            "type": "number"
                          },
                          "width": {
                            "type": "number"
                          }
                        },
                        "required": [
                          "width",
                          "height"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "type": {
                      "enum": [
                        "INCLUSIVE",
                        "EXCLUSIVE"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "allow_demand_sources": {
                  "description": "Allow requests to demand endpoints",
                  "type": "boolean"
                },
                "allowed_root_native_templates": {
                  "description": "Allowed root native template IDs",
                  "items": {
                    "type": "number"
                  },
                  "type": "array"
                },
                "api_frameworks": {
                  "description": "Supported API frameworks",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "auction_tie_break": {
                  "description": "Tie-breaking method",
                  "enum": [
                    "RANDOM",
                    "SCORE"
                  ],
                  "type": "string"
                },
                "bid_floor": {
                  "description": "Default bid floor",
                  "type": "number"
                },
                "burn_in_hours": {
                  "description": "Hours before eCPM confidence",
                  "type": "number"
                },
                "burn_in_impressions": {
                  "description": "Impressions before eCPM confidence",
                  "type": "number"
                },
                "dimensions": {
                  "description": "Zone dimensions type",
                  "enum": [
                    "fixed",
                    "dynamic"
                  ],
                  "type": "string"
                },
                "ecpm_testing_allowance": {
                  "description": "Percentage for eCPM recalculation",
                  "type": "number"
                },
                "height": {
                  "description": "Zone height in pixels",
                  "type": "number"
                },
                "iab_categories": {
                  "description": "IAB category descriptors",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "id": {
                  "description": "Zone ID",
                  "type": "number"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "min_payout": {
                  "description": "Minimum payout per impression (CPM)",
                  "type": "number"
                },
                "name": {
                  "description": "Zone name",
                  "type": "string"
                },
                "optimization_strategy": {
                  "description": "Zone optimization strategy",
                  "type": "string"
                },
                "pmp_deals": {
                  "description": "Allowed PMP Deal IDs",
                  "items": {
                    "type": "number"
                  },
                  "type": "array"
                },
                "private_auction": {
                  "description": "Ignore non-deal bids in auction",
                  "type": "boolean"
                },
                "publisher": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "refresh_frequency": {
                  "description": "Interval in seconds for serving new ads",
                  "type": "number"
                },
                "refresh_limit": {
                  "description": "Total times zone will refresh",
                  "type": "number"
                },
                "responsive": {
                  "description": "Size behavior",
                  "enum": [
                    "fixed",
                    "auto",
                    "inherit"
                  ],
                  "type": "string"
                },
                "rtb_placement_id": {
                  "description": "OpenRTB tagid identifier",
                  "type": "string"
                },
                "serve_priority_order": {
                  "description": "Priority order",
                  "enum": [
                    "weight",
                    "auction"
                  ],
                  "type": "string"
                },
                "unique_delivery": {
                  "description": "Serve unique ads on each zone",
                  "type": "boolean"
                },
                "width": {
                  "description": "Zone width in pixels",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_zone",
            "description": "Delete a standard zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_zone_tag",
            "description": "Get the ad serving tag (embed code) for a zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_zone_conversion_tag",
            "description": "Get the conversion tracking tag for a standard zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "generate_bulk_zone_tags",
            "description": "Generate ad serving tags for multiple zones at once",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "zone_ids": {
                  "description": "Array of zone IDs to generate tags for",
                  "items": {
                    "type": "number"
                  },
                  "type": "array"
                }
              },
              "required": [
                "zone_ids"
              ],
              "type": "object"
            }
          },
          {
            "name": "archive_zone",
            "description": "Archive a standard zone (soft-delete, can be restored later)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_archived_zones",
            "description": "List all archived standard zones",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_archived_zone",
            "description": "Get details of a specific archived standard zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "unarchive_zone",
            "description": "Restore an archived standard zone back to active status",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_email_zones",
            "description": "List all email zones",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_email_zone",
            "description": "Get details of a specific email zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Email zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_email_zone",
            "description": "Create a new email zone for serving ads in email newsletters",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "auction_tie_break": {
                  "description": "Tie-breaking method for auctions",
                  "enum": [
                    "RANDOM",
                    "SCORE"
                  ],
                  "type": "string"
                },
                "height": {
                  "description": "Zone height in pixels",
                  "type": "number"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Zone name",
                  "type": "string"
                },
                "publisher": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "rotate_timer": {
                  "additionalProperties": false,
                  "description": "Period after which user sees a new ad",
                  "properties": {
                    "amount": {
                      "description": "Period amount",
                      "type": "number"
                    },
                    "interval": {
                      "description": "Period interval",
                      "enum": [
                        "minutes",
                        "days"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "amount",
                    "interval"
                  ],
                  "type": "object"
                },
                "uid_rotate": {
                  "description": "Serve different ads per user",
                  "type": "boolean"
                },
                "width": {
                  "description": "Zone width in pixels",
                  "type": "number"
                }
              },
              "required": [
                "name",
                "width",
                "height"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_email_zone",
            "description": "Update an existing email zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "auction_tie_break": {
                  "description": "Tie-breaking method",
                  "enum": [
                    "RANDOM",
                    "SCORE"
                  ],
                  "type": "string"
                },
                "height": {
                  "description": "Zone height in pixels",
                  "type": "number"
                },
                "id": {
                  "description": "Email zone ID",
                  "type": "number"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Zone name",
                  "type": "string"
                },
                "publisher": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "rotate_timer": {
                  "additionalProperties": false,
                  "description": "Period after which user sees a new ad",
                  "properties": {
                    "amount": {
                      "description": "Period amount",
                      "type": "number"
                    },
                    "interval": {
                      "description": "Period interval",
                      "enum": [
                        "minutes",
                        "days"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "amount",
                    "interval"
                  ],
                  "type": "object"
                },
                "uid_rotate": {
                  "description": "Serve different ads per user",
                  "type": "boolean"
                },
                "width": {
                  "description": "Zone width in pixels",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_email_zone",
            "description": "Delete an email zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Email zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_email_zone_tag",
            "description": "Get the ad serving tag for an email zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Email zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_email_zone_conversion_tag",
            "description": "Get the conversion tracking tag for an email zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Email zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "archive_email_zone",
            "description": "Archive an email zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Email zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_archived_email_zones",
            "description": "List all archived email zones",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_archived_email_zone",
            "description": "Get details of a specific archived email zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived email zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "unarchive_email_zone",
            "description": "Restore an archived email zone back to active status",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived email zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_catalog_zones",
            "description": "List all catalog zones (for product/retail ad serving)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_catalog_zone",
            "description": "Get details of a specific catalog zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Catalog zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_catalog_zone",
            "description": "Create a new catalog zone for product/retail ad serving",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "advertiser_cost_type": {
                  "description": "Billing model",
                  "enum": [
                    "CPM",
                    "CPC"
                  ],
                  "type": "string"
                },
                "auction_type": {
                  "description": "Auction type",
                  "enum": [
                    "FIRST_PRICE",
                    "SECOND_PRICE"
                  ],
                  "type": "string"
                },
                "bid_floor": {
                  "description": "Default bid floor",
                  "type": "number"
                },
                "bid_floor_cpc": {
                  "description": "CPC bid floor",
                  "type": "number"
                },
                "bid_floor_cpm": {
                  "description": "CPM bid floor",
                  "type": "number"
                },
                "catalog_id": {
                  "description": "Catalog ID",
                  "type": "number"
                },
                "click_cooldown_period": {
                  "description": "Click cooldown period in seconds (1-86400)",
                  "type": "number"
                },
                "conversion_lookback_period": {
                  "description": "Conversion lookback period in seconds (1-7776000)",
                  "type": "number"
                },
                "name": {
                  "description": "Zone name",
                  "type": "string"
                },
                "publisher": {
                  "description": "Publisher ID",
                  "type": "number"
                }
              },
              "required": [
                "name",
                "catalog_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_catalog_zone",
            "description": "Update an existing catalog zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "advertiser_cost_type": {
                  "description": "Billing model",
                  "enum": [
                    "CPM",
                    "CPC"
                  ],
                  "type": "string"
                },
                "auction_type": {
                  "description": "Auction type",
                  "enum": [
                    "FIRST_PRICE",
                    "SECOND_PRICE"
                  ],
                  "type": "string"
                },
                "bid_floor_cpc": {
                  "description": "CPC bid floor",
                  "type": "number"
                },
                "bid_floor_cpm": {
                  "description": "CPM bid floor",
                  "type": "number"
                },
                "click_cooldown_period": {
                  "description": "Click cooldown period in seconds",
                  "type": "number"
                },
                "conversion_lookback_period": {
                  "description": "Conversion lookback period in seconds",
                  "type": "number"
                },
                "id": {
                  "description": "Catalog zone ID",
                  "type": "number"
                },
                "name": {
                  "description": "Zone name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_catalog_zone",
            "description": "Delete a catalog zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Catalog zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_catalog_zone_tag",
            "description": "Get the ad serving tag for a catalog zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Catalog zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_publishers",
            "description": "List all publishers in your AdButler account",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_publisher",
            "description": "Get details of a specific publisher",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Publisher ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_publisher",
            "description": "Create a new publisher",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "can_admin_account": {
                  "description": "Grant administrator privileges",
                  "type": "boolean"
                },
                "can_approve_ads": {
                  "description": "Allow publisher to approve/deny ad items",
                  "type": "boolean"
                },
                "can_change_password": {
                  "description": "Whether publisher can change password",
                  "type": "boolean"
                },
                "can_view_wordpress_key": {
                  "description": "Allow publisher to view WordPress key",
                  "type": "boolean"
                },
                "default_payout": {
                  "additionalProperties": false,
                  "description": "Default payout configuration",
                  "properties": {
                    "cpa": {
                      "type": "number"
                    },
                    "cpc": {
                      "type": "number"
                    },
                    "cpm": {
                      "type": "number"
                    },
                    "fixed": {
                      "type": "number"
                    },
                    "type": {
                      "enum": [
                        "rate",
                        "percent"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "domain": {
                  "description": "Publisher domain (top-level domains only)",
                  "type": "string"
                },
                "email": {
                  "description": "Contact email (allows publisher to log in)",
                  "type": "string"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Publisher name",
                  "type": "string"
                },
                "seller_type": {
                  "description": "Seller type for ads.txt",
                  "enum": [
                    "publisher",
                    "intermediary",
                    "both"
                  ],
                  "type": "string"
                },
                "timezone": {
                  "description": "Timezone (e.g., \"America/New_York\")",
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_publisher",
            "description": "Update an existing publisher",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "can_admin_account": {
                  "description": "Grant administrator privileges",
                  "type": "boolean"
                },
                "can_approve_ads": {
                  "description": "Allow publisher to approve/deny ad items",
                  "type": "boolean"
                },
                "can_change_password": {
                  "description": "Whether publisher can change password",
                  "type": "boolean"
                },
                "can_view_wordpress_key": {
                  "description": "Allow publisher to view WordPress key",
                  "type": "boolean"
                },
                "default_payout": {
                  "additionalProperties": false,
                  "description": "Default payout configuration",
                  "properties": {
                    "cpa": {
                      "type": "number"
                    },
                    "cpc": {
                      "type": "number"
                    },
                    "cpm": {
                      "type": "number"
                    },
                    "fixed": {
                      "type": "number"
                    },
                    "type": {
                      "enum": [
                        "rate",
                        "percent"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "domain": {
                  "description": "Publisher domain",
                  "type": "string"
                },
                "email": {
                  "description": "Contact email",
                  "type": "string"
                },
                "id": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Publisher name",
                  "type": "string"
                },
                "seller_type": {
                  "description": "Seller type",
                  "enum": [
                    "publisher",
                    "intermediary",
                    "both"
                  ],
                  "type": "string"
                },
                "timezone": {
                  "description": "Timezone",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_publisher",
            "description": "Delete a publisher",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Publisher ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "archive_publisher",
            "description": "Archive a publisher (soft-delete, can be restored later)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Publisher ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_archived_publishers",
            "description": "List all archived publishers",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_archived_publisher",
            "description": "Get details of a specific archived publisher",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived publisher ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "unarchive_publisher",
            "description": "Restore an archived publisher back to active status",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived publisher ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_ad_items",
            "description": "List all ad items (banners) across all types (image, custom HTML, rich media, native, catalog)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "list_image_ad_items",
            "description": "List all image ad items",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_image_ad_item",
            "description": "Get details of a specific image ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_image_ad_item",
            "description": "Create a new image ad item (banner)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "creative": {
                  "description": "Image creative ID (mutually exclusive with creative_url)",
                  "type": "number"
                },
                "creative_url": {
                  "description": "URL to image file — PNG, JPEG, or GIF (mutually exclusive with creative)",
                  "type": "string"
                },
                "height": {
                  "description": "Ad height in pixels (defaults to 0)",
                  "type": "number"
                },
                "html_alt_text": {
                  "description": "Alt text for the image",
                  "type": "string"
                },
                "html_content_below": {
                  "description": "HTML content below the ad item",
                  "type": "string"
                },
                "html_target": {
                  "description": "Window/frame for destination URL (e.g. \"_blank\")",
                  "type": "string"
                },
                "location": {
                  "description": "Click-through URL",
                  "type": "string"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Ad item name",
                  "type": "string"
                },
                "tracking_pixel": {
                  "description": "Third-party tracking pixel URL",
                  "type": "string"
                },
                "tracking_pixels": {
                  "description": "Array of tracking pixel URLs",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "trusted_redirect_domains": {
                  "description": "Trusted redirect domains",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "width": {
                  "description": "Ad width in pixels (defaults to 0)",
                  "type": "number"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_image_ad_item",
            "description": "Update an existing image ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "creative": {
                  "description": "Image creative ID",
                  "type": "number"
                },
                "creative_url": {
                  "description": "URL to image file",
                  "type": "string"
                },
                "height": {
                  "description": "Ad height in pixels",
                  "type": "number"
                },
                "html_alt_text": {
                  "description": "Alt text for the image",
                  "type": "string"
                },
                "html_content_below": {
                  "description": "HTML content below the ad item",
                  "type": "string"
                },
                "html_target": {
                  "description": "Window/frame for destination URL",
                  "type": "string"
                },
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                },
                "location": {
                  "description": "Click-through URL",
                  "type": "string"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Ad item name",
                  "type": "string"
                },
                "tracking_pixel": {
                  "description": "Third-party tracking pixel URL",
                  "type": "string"
                },
                "tracking_pixels": {
                  "description": "Array of tracking pixel URLs",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "trusted_redirect_domains": {
                  "description": "Trusted redirect domains",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "width": {
                  "description": "Ad width in pixels",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_image_ad_item",
            "description": "Delete an image ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_image_ad_item_conversion_tag",
            "description": "Get conversion tracking tag for an image ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_custom_html_ad_items",
            "description": "List all custom HTML ad items",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_custom_html_ad_item",
            "description": "Get details of a specific custom HTML ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_custom_html_ad_item",
            "description": "Create a new custom HTML ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "custom_html": {
                  "description": "The HTML content of the ad item",
                  "type": "string"
                },
                "expand_horizontal_direction": {
                  "description": "Horizontal expand direction",
                  "enum": [
                    "none",
                    "left",
                    "right"
                  ],
                  "type": "string"
                },
                "expand_vertical_direction": {
                  "description": "Vertical expand direction",
                  "enum": [
                    "none",
                    "up",
                    "down"
                  ],
                  "type": "string"
                },
                "height": {
                  "description": "Ad height in pixels (0 for flexible)",
                  "type": "number"
                },
                "html_content_below": {
                  "description": "HTML content below the ad item",
                  "type": "string"
                },
                "location": {
                  "description": "Click-through URL",
                  "type": "string"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Ad item name",
                  "type": "string"
                },
                "tracking_pixel": {
                  "description": "Third-party tracking pixel URL",
                  "type": "string"
                },
                "tracking_pixels": {
                  "description": "Array of tracking pixel URLs",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "trusted_redirect_domains": {
                  "description": "Trusted redirect domains",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "width": {
                  "description": "Ad width in pixels (0 for flexible)",
                  "type": "number"
                }
              },
              "required": [
                "name",
                "custom_html"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_custom_html_ad_item",
            "description": "Update an existing custom HTML ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "custom_html": {
                  "description": "The HTML content",
                  "type": "string"
                },
                "expand_horizontal_direction": {
                  "description": "Horizontal expand direction",
                  "enum": [
                    "none",
                    "left",
                    "right"
                  ],
                  "type": "string"
                },
                "expand_vertical_direction": {
                  "description": "Vertical expand direction",
                  "enum": [
                    "none",
                    "up",
                    "down"
                  ],
                  "type": "string"
                },
                "height": {
                  "description": "Ad height in pixels",
                  "type": "number"
                },
                "html_content_below": {
                  "description": "HTML content below the ad item",
                  "type": "string"
                },
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                },
                "location": {
                  "description": "Click-through URL",
                  "type": "string"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Ad item name",
                  "type": "string"
                },
                "tracking_pixel": {
                  "description": "Third-party tracking pixel URL",
                  "type": "string"
                },
                "tracking_pixels": {
                  "description": "Array of tracking pixel URLs",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "trusted_redirect_domains": {
                  "description": "Trusted redirect domains",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "width": {
                  "description": "Ad width in pixels",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_custom_html_ad_item",
            "description": "Delete a custom HTML ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_custom_html_ad_item_conversion_tag",
            "description": "Get conversion tracking tag for a custom HTML ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_rich_media_ad_items",
            "description": "List all rich media ad items",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_rich_media_ad_item",
            "description": "Get details of a specific rich media ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_rich_media_ad_item",
            "description": "Create a new rich media ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "creative": {
                  "description": "Rich media creative ID",
                  "type": "number"
                },
                "expand_horizontal_direction": {
                  "description": "Horizontal expand direction",
                  "enum": [
                    "none",
                    "left",
                    "right"
                  ],
                  "type": "string"
                },
                "expand_vertical_direction": {
                  "description": "Vertical expand direction",
                  "enum": [
                    "none",
                    "up",
                    "down"
                  ],
                  "type": "string"
                },
                "height": {
                  "description": "Ad height in pixels",
                  "type": "number"
                },
                "html_content_below": {
                  "description": "HTML content below the ad item",
                  "type": "string"
                },
                "location": {
                  "description": "Click-through URL",
                  "type": "string"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Ad item name",
                  "type": "string"
                },
                "tracking_pixel": {
                  "description": "Third-party tracking pixel URL",
                  "type": "string"
                },
                "tracking_pixels": {
                  "description": "Array of tracking pixel URLs",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "trusted_redirect_domains": {
                  "description": "Trusted redirect domains",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "width": {
                  "description": "Ad width in pixels",
                  "type": "number"
                }
              },
              "required": [
                "name",
                "creative"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_rich_media_ad_item",
            "description": "Update an existing rich media ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "creative": {
                  "description": "Rich media creative ID",
                  "type": "number"
                },
                "expand_horizontal_direction": {
                  "description": "Horizontal expand direction",
                  "enum": [
                    "none",
                    "left",
                    "right"
                  ],
                  "type": "string"
                },
                "expand_vertical_direction": {
                  "description": "Vertical expand direction",
                  "enum": [
                    "none",
                    "up",
                    "down"
                  ],
                  "type": "string"
                },
                "html_content_below": {
                  "description": "HTML content below the ad item",
                  "type": "string"
                },
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                },
                "location": {
                  "description": "Click-through URL",
                  "type": "string"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Ad item name",
                  "type": "string"
                },
                "tracking_pixel": {
                  "description": "Third-party tracking pixel URL",
                  "type": "string"
                },
                "tracking_pixels": {
                  "description": "Array of tracking pixel URLs",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "trusted_redirect_domains": {
                  "description": "Trusted redirect domains",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_rich_media_ad_item",
            "description": "Delete a rich media ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_rich_media_ad_item_conversion_tag",
            "description": "Get conversion tracking tag for a rich media ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_native_ad_items",
            "description": "List all native ad items",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_native_ad_item",
            "description": "Get details of a specific native ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_native_ad_item",
            "description": "Create a new native ad item using a native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "height": {
                  "description": "Ad height in pixels",
                  "type": "number"
                },
                "location": {
                  "description": "Click-through URL",
                  "type": "string"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Ad item name",
                  "type": "string"
                },
                "template": {
                  "description": "Native template ID",
                  "type": "number"
                },
                "tracking_pixel": {
                  "description": "Third-party tracking pixel URL",
                  "type": "string"
                },
                "tracking_pixels": {
                  "description": "Array of tracking pixel URLs",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "trusted_redirect_domains": {
                  "description": "Trusted redirect domains",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "variables": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Template variables as key-value pairs (keys should be integer strings)",
                  "type": "object"
                },
                "width": {
                  "description": "Ad width in pixels",
                  "type": "number"
                }
              },
              "required": [
                "name",
                "template",
                "variables"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_native_ad_item",
            "description": "Update an existing native ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                },
                "location": {
                  "description": "Click-through URL",
                  "type": "string"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Ad item name",
                  "type": "string"
                },
                "template": {
                  "description": "Native template ID",
                  "type": "number"
                },
                "tracking_pixel": {
                  "description": "Third-party tracking pixel URL",
                  "type": "string"
                },
                "tracking_pixels": {
                  "description": "Array of tracking pixel URLs",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "trusted_redirect_domains": {
                  "description": "Trusted redirect domains",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "variables": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Template variables as key-value pairs",
                  "type": "object"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_native_ad_item",
            "description": "Delete a native ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_native_ad_item_conversion_tag",
            "description": "Get conversion tracking tag for a native ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_catalog_ad_items",
            "description": "List all catalog ad items",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_catalog_ad_item",
            "description": "Get details of a specific catalog ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_catalog_ad_item",
            "description": "Create a new catalog ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "catalog_id": {
                  "description": "Catalog ID",
                  "type": "number"
                },
                "catalog_item_identifier": {
                  "description": "Unique identifier for the catalog item",
                  "type": "string"
                },
                "location": {
                  "description": "Click-through URL",
                  "type": "string"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Ad item name",
                  "type": "string"
                },
                "tracking_pixel": {
                  "description": "Third-party tracking pixel URL",
                  "type": "string"
                },
                "tracking_pixels": {
                  "description": "Array of tracking pixel URLs",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "required": [
                "name",
                "catalog_id",
                "catalog_item_identifier"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_catalog_ad_item",
            "description": "Update an existing catalog ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "catalog_item_identifier": {
                  "description": "Unique identifier for the catalog item",
                  "type": "string"
                },
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                },
                "location": {
                  "description": "Click-through URL",
                  "type": "string"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Ad item name",
                  "type": "string"
                },
                "tracking_pixel": {
                  "description": "Third-party tracking pixel URL",
                  "type": "string"
                },
                "tracking_pixels": {
                  "description": "Array of tracking pixel URLs",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_catalog_ad_item",
            "description": "Delete a catalog ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "convert_native_to_image",
            "description": "Convert a native ad item to an image ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Native ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_all_creatives",
            "description": "List all creatives across all types (image, rich media, video, audio)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "list_creatives",
            "description": "List all image creatives",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_creative",
            "description": "Get details of a specific image creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Creative ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_creative",
            "description": "Create a new image creative. The API uses multipart file upload — pass the media group ID and file attributes.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "description": {
                  "description": "Creative description",
                  "type": "string"
                },
                "group": {
                  "description": "Media group ID",
                  "type": "number"
                },
                "name": {
                  "description": "Creative name",
                  "type": "string"
                }
              },
              "required": [
                "group"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_creative",
            "description": "Update an existing image creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "description": {
                  "description": "Creative description",
                  "type": "string"
                },
                "id": {
                  "description": "Creative ID",
                  "type": "number"
                },
                "name": {
                  "description": "Creative name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_creative",
            "description": "Delete an image creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Creative ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_rich_media_creatives",
            "description": "List all rich media creatives",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_rich_media_creative",
            "description": "Get details of a specific rich media creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Creative ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_rich_media_creative",
            "description": "Create a new rich media creative. The API uses multipart file upload (ZIP for HTML5).",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "description": {
                  "description": "Creative description",
                  "type": "string"
                },
                "group": {
                  "description": "Media group ID",
                  "type": "number"
                },
                "index_file_path": {
                  "description": "Path to index HTML file inside ZIP archive (for HTML5)",
                  "type": "string"
                },
                "name": {
                  "description": "Creative name",
                  "type": "string"
                }
              },
              "required": [
                "group"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_rich_media_creative",
            "description": "Update an existing rich media creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "description": {
                  "description": "Creative description",
                  "type": "string"
                },
                "id": {
                  "description": "Creative ID",
                  "type": "number"
                },
                "name": {
                  "description": "Creative name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_rich_media_creative",
            "description": "Delete a rich media creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Creative ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_video_creatives",
            "description": "List all video creatives",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_video_creative",
            "description": "Get details of a specific video creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Creative ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_video_creative",
            "description": "Create a new video creative. The API uses multipart file upload.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "description": {
                  "description": "Creative description",
                  "type": "string"
                },
                "group": {
                  "description": "Media group ID",
                  "type": "number"
                },
                "name": {
                  "description": "Creative name",
                  "type": "string"
                }
              },
              "required": [
                "group"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_video_creative",
            "description": "Update an existing video creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "description": {
                  "description": "Creative description",
                  "type": "string"
                },
                "id": {
                  "description": "Creative ID",
                  "type": "number"
                },
                "name": {
                  "description": "Creative name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_video_creative",
            "description": "Delete a video creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Creative ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_audio_creatives",
            "description": "List all audio creatives",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_audio_creative",
            "description": "Get details of a specific audio creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Creative ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_audio_creative",
            "description": "Create a new audio creative. The API uses multipart file upload.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "description": {
                  "description": "Creative description",
                  "type": "string"
                },
                "group": {
                  "description": "Media group ID",
                  "type": "number"
                },
                "name": {
                  "description": "Creative name",
                  "type": "string"
                }
              },
              "required": [
                "group"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_audio_creative",
            "description": "Update an existing audio creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "description": {
                  "description": "Creative description",
                  "type": "string"
                },
                "id": {
                  "description": "Creative ID",
                  "type": "number"
                },
                "name": {
                  "description": "Creative name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_audio_creative",
            "description": "Delete an audio creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Creative ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "replace_image_creative_file",
            "description": "Replace the file on an image creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Creative ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "replace_rich_media_creative_file",
            "description": "Replace the file on a rich media creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Creative ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "replace_video_creative_file",
            "description": "Replace the file on a video creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Creative ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "replace_audio_creative_file",
            "description": "Replace the file on an audio creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Creative ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_placements",
            "description": "List all placements (assignments of ad items to zones)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_placement",
            "description": "Get details of a specific placement",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Placement ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_placement",
            "description": "Create a new placement (assign an ad item or campaign to a zone or channel)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "Whether placement is active (defaults to true)",
                  "type": "boolean"
                },
                "advertisement": {
                  "additionalProperties": false,
                  "description": "Advertisement object with id and type",
                  "properties": {
                    "id": {
                      "description": "Ad item or campaign ID",
                      "type": "number"
                    },
                    "type": {
                      "description": "Type: \"image_ad_item\", \"custom_html_ad_item\", \"rich_media_ad_item\", \"native_ad_item\", \"standard_campaign\"",
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "type"
                  ],
                  "type": "object"
                },
                "channel": {
                  "description": "Channel ID (required if zone not set; mutually exclusive with zone)",
                  "type": "number"
                },
                "contextual_segments": {
                  "description": "Array of contextual segment IDs",
                  "items": {
                    "type": "number"
                  },
                  "type": "array"
                },
                "cost": {
                  "additionalProperties": false,
                  "description": "Pricing model: fixed_cost OR cpm/cpc/cpa",
                  "properties": {
                    "cpa": {
                      "type": "number"
                    },
                    "cpc": {
                      "type": "number"
                    },
                    "cpm": {
                      "type": "number"
                    },
                    "fixed_cost": {
                      "type": "number"
                    }
                  },
                  "type": "object"
                },
                "data_key_target_id": {
                  "description": "Data Key Target ID (Enterprise only)",
                  "type": "number"
                },
                "geo_target": {
                  "description": "Geotarget ID",
                  "type": "number"
                },
                "keywords": {
                  "description": "Comma-separated keywords for targeting",
                  "type": "string"
                },
                "keywords_match_method": {
                  "description": "Keyword matching method",
                  "enum": [
                    "required",
                    "preferred",
                    "filtered"
                  ],
                  "type": "string"
                },
                "list_target": {
                  "description": "List Target ID",
                  "type": "number"
                },
                "payout": {
                  "additionalProperties": false,
                  "description": "Publisher payout configuration",
                  "properties": {
                    "cpa": {
                      "type": "number"
                    },
                    "cpc": {
                      "type": "number"
                    },
                    "cpm": {
                      "type": "number"
                    },
                    "fixed": {
                      "type": "number"
                    },
                    "type": {
                      "enum": [
                        "rate",
                        "percent"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "platform_target": {
                  "description": "Platform target ID",
                  "type": "number"
                },
                "priority": {
                  "description": "Serving priority level (defaults to \"standard\")",
                  "enum": [
                    "sponsorship",
                    "standard",
                    "network",
                    "bulk",
                    "house"
                  ],
                  "type": "string"
                },
                "schedule": {
                  "description": "Schedule ID",
                  "type": "number"
                },
                "serve_method": {
                  "description": "Serving system: weight-based or auction-based",
                  "enum": [
                    "weight",
                    "auction"
                  ],
                  "type": "string"
                },
                "share_of_voice": {
                  "description": "Share of voice percentage (required when zone uses share_of_voice)",
                  "type": "number"
                },
                "weight": {
                  "description": "Relative delivery weight",
                  "type": "number"
                },
                "zone": {
                  "additionalProperties": false,
                  "description": "Zone object (required if channel not set; mutually exclusive with channel)",
                  "properties": {
                    "id": {
                      "description": "Zone ID",
                      "type": "number"
                    },
                    "type": {
                      "description": "Zone type",
                      "enum": [
                        "standard_zone",
                        "text_zone",
                        "email_zone"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "type"
                  ],
                  "type": "object"
                }
              },
              "required": [
                "advertisement",
                "schedule"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_placement",
            "description": "Update an existing placement",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "Whether placement is active",
                  "type": "boolean"
                },
                "advertisement": {
                  "additionalProperties": false,
                  "description": "Advertisement object with id and type",
                  "properties": {
                    "id": {
                      "description": "Ad item or campaign ID",
                      "type": "number"
                    },
                    "type": {
                      "description": "Type: \"image_ad_item\", \"custom_html_ad_item\", \"rich_media_ad_item\", \"native_ad_item\", \"standard_campaign\"",
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "type"
                  ],
                  "type": "object"
                },
                "channel": {
                  "description": "Channel ID (mutually exclusive with zone)",
                  "type": "number"
                },
                "contextual_segments": {
                  "description": "Array of contextual segment IDs",
                  "items": {
                    "type": "number"
                  },
                  "type": "array"
                },
                "cost": {
                  "additionalProperties": false,
                  "description": "Pricing model",
                  "properties": {
                    "cpa": {
                      "type": "number"
                    },
                    "cpc": {
                      "type": "number"
                    },
                    "cpm": {
                      "type": "number"
                    },
                    "fixed_cost": {
                      "type": "number"
                    }
                  },
                  "type": "object"
                },
                "data_key_target_id": {
                  "description": "Data Key Target ID",
                  "type": "number"
                },
                "geo_target": {
                  "description": "Geotarget ID",
                  "type": "number"
                },
                "id": {
                  "description": "Placement ID",
                  "type": "number"
                },
                "keywords": {
                  "description": "Comma-separated keywords",
                  "type": "string"
                },
                "keywords_match_method": {
                  "description": "Keyword matching method",
                  "enum": [
                    "required",
                    "preferred",
                    "filtered"
                  ],
                  "type": "string"
                },
                "list_target": {
                  "description": "List Target ID",
                  "type": "number"
                },
                "payout": {
                  "additionalProperties": false,
                  "description": "Publisher payout configuration",
                  "properties": {
                    "cpa": {
                      "type": "number"
                    },
                    "cpc": {
                      "type": "number"
                    },
                    "cpm": {
                      "type": "number"
                    },
                    "fixed": {
                      "type": "number"
                    },
                    "type": {
                      "enum": [
                        "rate",
                        "percent"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "platform_target": {
                  "description": "Platform target ID",
                  "type": "number"
                },
                "priority": {
                  "description": "Serving priority level",
                  "enum": [
                    "sponsorship",
                    "standard",
                    "network",
                    "bulk",
                    "house"
                  ],
                  "type": "string"
                },
                "schedule": {
                  "description": "Schedule ID",
                  "type": "number"
                },
                "serve_method": {
                  "description": "Serving system",
                  "enum": [
                    "weight",
                    "auction"
                  ],
                  "type": "string"
                },
                "share_of_voice": {
                  "description": "Share of voice percentage",
                  "type": "number"
                },
                "weight": {
                  "description": "Relative delivery weight",
                  "type": "number"
                },
                "zone": {
                  "additionalProperties": false,
                  "description": "Zone object (mutually exclusive with channel)",
                  "properties": {
                    "id": {
                      "description": "Zone ID",
                      "type": "number"
                    },
                    "type": {
                      "description": "Zone type",
                      "enum": [
                        "standard_zone",
                        "text_zone",
                        "email_zone"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "type"
                  ],
                  "type": "object"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_placement",
            "description": "Delete a placement (remove an ad item from a zone)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Placement ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_placement_conversion_tag",
            "description": "Get conversion tracking tag for a placement",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Placement ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_native_templates",
            "description": "List all native ad templates",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_native_template",
            "description": "Get details of a specific native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Native template ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_native_template",
            "description": "Create a new native ad template with HTML and variable placeholders",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "name": {
                  "description": "Template name",
                  "type": "string"
                },
                "raw_html": {
                  "description": "HTML template content with variable placeholders (e.g. \"[%title%]\")",
                  "type": "string"
                },
                "variables": {
                  "description": "Array of template variables",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "dropdown_values": {
                        "description": "Comma-separated options for dropdown variables",
                        "type": "string"
                      },
                      "max_length": {
                        "description": "Max length for text variables",
                        "type": "number"
                      },
                      "name": {
                        "description": "Variable name",
                        "type": "string"
                      },
                      "optional": {
                        "description": "Whether the variable can be left blank (default: false)",
                        "type": "boolean"
                      },
                      "placeholder": {
                        "description": "Placeholder in raw_html (e.g. \"[%title%]\")",
                        "type": "string"
                      },
                      "type": {
                        "description": "Variable type",
                        "enum": [
                          "url",
                          "url_raw",
                          "text",
                          "file",
                          "number",
                          "image_url",
                          "dropdown",
                          "third_party_script"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "name",
                      "placeholder",
                      "type"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "required": [
                "name",
                "raw_html",
                "variables"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_native_template",
            "description": "Update an existing native template. Variables uses add/remove format for updates.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Native template ID",
                  "type": "number"
                },
                "name": {
                  "description": "Template name",
                  "type": "string"
                },
                "raw_html": {
                  "description": "HTML template content with variable placeholders",
                  "type": "string"
                },
                "variables": {
                  "additionalProperties": false,
                  "description": "Variables to add/remove",
                  "properties": {
                    "add": {
                      "description": "Variables to add",
                      "items": {
                        "additionalProperties": false,
                        "properties": {
                          "dropdown_values": {
                            "type": "string"
                          },
                          "max_length": {
                            "type": "number"
                          },
                          "name": {
                            "description": "Variable name",
                            "type": "string"
                          },
                          "optional": {
                            "type": "boolean"
                          },
                          "placeholder": {
                            "description": "Placeholder in raw_html",
                            "type": "string"
                          },
                          "type": {
                            "description": "Variable type",
                            "enum": [
                              "url",
                              "url_raw",
                              "text",
                              "file",
                              "number",
                              "image_url",
                              "dropdown",
                              "third_party_script"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "name",
                          "placeholder",
                          "type"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "remove": {
                      "description": "Variable IDs to remove",
                      "items": {
                        "type": "number"
                      },
                      "type": "array"
                    }
                  },
                  "type": "object"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_native_template",
            "description": "Delete a native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Native template ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_schedules",
            "description": "List all schedules (time-based delivery rules for ad items)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_schedule",
            "description": "Get details of a specific schedule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Schedule ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_schedule",
            "description": "Create a new schedule for time-based ad delivery. Schedules are automatically linked to ad items via placements.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "day_cap_limit": {
                  "description": "Daily cap limit (number of views or clicks per day)",
                  "type": "number"
                },
                "day_cap_type": {
                  "description": "Daily cap type",
                  "enum": [
                    "views",
                    "clicks"
                  ],
                  "type": "string"
                },
                "day_parting_id": {
                  "description": "Day parting ID for time-of-day targeting",
                  "type": "number"
                },
                "delivery_method": {
                  "description": "Delivery pacing: \"default\" (ASAP) or \"smooth\" (evenly distributed)",
                  "enum": [
                    "default",
                    "smooth"
                  ],
                  "type": "string"
                },
                "end_at": {
                  "description": "End date/time in ISO-8601 format, null for indefinite",
                  "type": "string"
                },
                "end_at_timezone": {
                  "description": "IANA timezone for end_at",
                  "type": "string"
                },
                "end_date": {
                  "description": "End date (YYYY-MM-DD HH:MM:SS), null for indefinite — deprecated, use end_at",
                  "type": "string"
                },
                "per_user_view_limit": {
                  "description": "Per-user view frequency cap",
                  "type": "number"
                },
                "per_user_view_period": {
                  "description": "Days before per-user view counter resets",
                  "type": "number"
                },
                "quota_lifetime": {
                  "description": "Total quota amount (views or clicks, not per thousand)",
                  "type": "number"
                },
                "quota_type": {
                  "description": "Quota measurement type",
                  "enum": [
                    "views",
                    "clicks"
                  ],
                  "type": "string"
                },
                "start_at": {
                  "description": "Start date/time in ISO-8601 format",
                  "type": "string"
                },
                "start_at_timezone": {
                  "description": "IANA timezone for start_at (e.g. \"America/New_York\")",
                  "type": "string"
                },
                "start_date": {
                  "description": "Start date (YYYY-MM-DD HH:MM:SS) — deprecated, use start_at",
                  "type": "string"
                },
                "under_delivery_behaviour": {
                  "description": "Whether to keep serving until quota met or stop on end date",
                  "enum": [
                    "endOnQuota",
                    "endOnDate"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "update_schedule",
            "description": "Update an existing schedule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "day_cap_limit": {
                  "description": "Daily cap limit",
                  "type": "number"
                },
                "day_cap_type": {
                  "description": "Daily cap type",
                  "enum": [
                    "views",
                    "clicks"
                  ],
                  "type": "string"
                },
                "day_parting_id": {
                  "description": "Day parting ID for time-of-day targeting",
                  "type": "number"
                },
                "delivery_method": {
                  "description": "Delivery pacing: \"default\" (ASAP) or \"smooth\" (evenly distributed)",
                  "enum": [
                    "default",
                    "smooth"
                  ],
                  "type": "string"
                },
                "end_at": {
                  "description": "End date/time in ISO-8601 format",
                  "type": "string"
                },
                "end_at_timezone": {
                  "description": "IANA timezone for end_at",
                  "type": "string"
                },
                "end_date": {
                  "description": "End date (YYYY-MM-DD HH:MM:SS) — deprecated, use end_at",
                  "type": "string"
                },
                "id": {
                  "description": "Schedule ID",
                  "type": "number"
                },
                "per_user_view_limit": {
                  "description": "Per-user view frequency cap",
                  "type": "number"
                },
                "per_user_view_period": {
                  "description": "Days before per-user view counter resets",
                  "type": "number"
                },
                "quota_lifetime": {
                  "description": "Total quota amount (views or clicks, not per thousand)",
                  "type": "number"
                },
                "quota_type": {
                  "description": "Quota measurement type",
                  "enum": [
                    "views",
                    "clicks"
                  ],
                  "type": "string"
                },
                "start_at": {
                  "description": "Start date/time in ISO-8601 format",
                  "type": "string"
                },
                "start_at_timezone": {
                  "description": "IANA timezone for start_at",
                  "type": "string"
                },
                "start_date": {
                  "description": "Start date (YYYY-MM-DD HH:MM:SS) — deprecated, use start_at",
                  "type": "string"
                },
                "under_delivery_behaviour": {
                  "description": "Whether to keep serving until quota met or stop on end date",
                  "enum": [
                    "endOnQuota",
                    "endOnDate"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_schedule",
            "description": "Delete a schedule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Schedule ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_media_groups",
            "description": "List all media groups (collections of creatives)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_media_group",
            "description": "Get details of a specific media group",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Media group ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_media_group",
            "description": "Create a new media group",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "name": {
                  "description": "Media group name",
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_media_group",
            "description": "Update an existing media group",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Media group ID",
                  "type": "number"
                },
                "name": {
                  "description": "Media group name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_media_group",
            "description": "Delete a media group",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Media group ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_data_keys",
            "description": "List all data keys (custom key-value targeting variables)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_data_key",
            "description": "Get details of a specific data key",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Data key ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_data_key",
            "description": "Create a new data key for custom targeting",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "name": {
                  "description": "Data key name (max 32 chars, must be unique)",
                  "type": "string"
                },
                "type": {
                  "description": "Data key value type",
                  "enum": [
                    "STRING",
                    "NUMBER",
                    "DATE",
                    "DATETIME",
                    "TIME"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "name",
                "type"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_data_key",
            "description": "Update an existing data key",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Data key ID",
                  "type": "number"
                },
                "name": {
                  "description": "Data key name",
                  "type": "string"
                },
                "type": {
                  "description": "Data key value type",
                  "enum": [
                    "STRING",
                    "NUMBER",
                    "DATE",
                    "DATETIME",
                    "TIME"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_data_key",
            "description": "Delete a data key",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Data key ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_data_key_targets",
            "description": "List all data key targets (targeting rules using data key values)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_data_key_target",
            "description": "Get details of a specific data key target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Data key target ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_data_key_target",
            "description": "Create a new data key target (targeting rule)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "name": {
                  "description": "Data key target name",
                  "type": "string"
                },
                "target": {
                  "description": "JSON formatted target logic, e.g. [\"OR\", {\"my_number\": {\"=\": \"5\"}}, {\"my_string\": {\"=\": \"test\"}}]",
                  "type": "string"
                }
              },
              "required": [
                "name",
                "target"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_data_key_target",
            "description": "Update an existing data key target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Data key target ID",
                  "type": "number"
                },
                "name": {
                  "description": "Data key target name",
                  "type": "string"
                },
                "target": {
                  "description": "JSON formatted target logic",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_data_key_target",
            "description": "Delete a data key target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Data key target ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_day_partings",
            "description": "List all day parting rules (time-of-day targeting)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_day_parting",
            "description": "Get details of a specific day parting rule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Day parting ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_day_parting",
            "description": "Create a new day parting rule for time-of-day targeting. Ranges is an object with day names as keys and arrays of time range strings (e.g. \"09:00:00-17:00:00\") as values.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "is_template": {
                  "description": "If true, shown in UI when creating/editing schedules",
                  "type": "boolean"
                },
                "name": {
                  "description": "Day parting name",
                  "type": "string"
                },
                "ranges": {
                  "additionalProperties": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "description": "Object mapping day names (monday-sunday) to arrays of time ranges like \"09:00:00-17:00:00\"",
                  "type": "object"
                },
                "use_member_timezone": {
                  "description": "If true, use account timezone; if false, use viewer timezone",
                  "type": "boolean"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "update_day_parting",
            "description": "Update an existing day parting rule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Day parting ID",
                  "type": "number"
                },
                "is_template": {
                  "description": "If true, shown in UI when creating/editing schedules",
                  "type": "boolean"
                },
                "name": {
                  "description": "Day parting name",
                  "type": "string"
                },
                "ranges": {
                  "additionalProperties": {
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "description": "Object mapping day names (monday-sunday) to arrays of time ranges",
                  "type": "object"
                },
                "use_member_timezone": {
                  "description": "If true, use account timezone; if false, use viewer timezone",
                  "type": "boolean"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_day_parting",
            "description": "Delete a day parting rule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Day parting ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_geo_targets",
            "description": "List all geo targets (geographic targeting rules)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_geo_target",
            "description": "Get details of a specific geo target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Geo target ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_geo_target",
            "description": "Create a new geo target for geographic targeting. Areas is an array of objects with continent, country (2-letter code), region, city fields.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "areas": {
                  "description": "Array of geographic areas to target",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "city": {
                        "description": "City name (e.g., \"San Francisco\")",
                        "type": "string"
                      },
                      "continent": {
                        "description": "Continent name (e.g. \"North America\", \"Europe\"). Not needed if country is provided.",
                        "type": "string"
                      },
                      "country": {
                        "description": "Two-letter country code (e.g., \"US\", \"CA\")",
                        "type": "string"
                      },
                      "region": {
                        "description": "Region/state (e.g., \"California\")",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "inclusive": {
                  "description": "If true, target users IN these areas; if false, EXCLUDE these areas",
                  "type": "boolean"
                },
                "name": {
                  "description": "Geo target name",
                  "type": "string"
                },
                "range": {
                  "description": "Radius range for geo-fencing (only applies when targeting a city)",
                  "type": "number"
                },
                "unit": {
                  "description": "Distance unit for range",
                  "enum": [
                    "miles",
                    "kilometers"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "name",
                "areas"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_geo_target",
            "description": "Update an existing geo target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "areas": {
                  "description": "Array of geographic areas",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "city": {
                        "description": "City name",
                        "type": "string"
                      },
                      "continent": {
                        "description": "Continent name",
                        "type": "string"
                      },
                      "country": {
                        "description": "Two-letter country code",
                        "type": "string"
                      },
                      "region": {
                        "description": "Region/state",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "type": "array"
                },
                "id": {
                  "description": "Geo target ID",
                  "type": "number"
                },
                "inclusive": {
                  "description": "If true, target users IN these areas; if false, EXCLUDE",
                  "type": "boolean"
                },
                "name": {
                  "description": "Geo target name",
                  "type": "string"
                },
                "range": {
                  "description": "Radius range",
                  "type": "number"
                },
                "unit": {
                  "description": "Distance unit",
                  "enum": [
                    "miles",
                    "kilometers"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_geo_target",
            "description": "Delete a geo target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Geo target ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_postal_code_targets",
            "description": "List all postal code targets",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_postal_code_target",
            "description": "Get details of a specific postal code target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Postal code target ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_postal_code_target",
            "description": "Create a new postal code target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "inclusive": {
                  "description": "If true, inclusion target; if false, exclusion target",
                  "type": "boolean"
                },
                "label": {
                  "description": "Postal code target name",
                  "type": "string"
                },
                "locations": {
                  "description": "Array of locations grouped by country",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "country": {
                        "description": "Two-letter country code (e.g. \"JP\", \"US\")",
                        "type": "string"
                      },
                      "postal_codes": {
                        "description": "Array of postal codes for this country",
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "country",
                      "postal_codes"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "required": [
                "label",
                "locations"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_postal_code_target",
            "description": "Update an existing postal code target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Postal code target ID",
                  "type": "number"
                },
                "inclusive": {
                  "description": "If true, inclusion target; if false, exclusion target",
                  "type": "boolean"
                },
                "label": {
                  "description": "Postal code target name",
                  "type": "string"
                },
                "locations": {
                  "description": "Array of locations grouped by country",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "country": {
                        "description": "Two-letter country code",
                        "type": "string"
                      },
                      "postal_codes": {
                        "description": "Array of postal codes",
                        "items": {
                          "type": "string"
                        },
                        "type": "array"
                      }
                    },
                    "required": [
                      "country",
                      "postal_codes"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_postal_code_target",
            "description": "Delete a postal code target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Postal code target ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_list_targets",
            "description": "List all list targets (allowlist/blocklist targeting)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_list_target",
            "description": "Get details of a specific list target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "List target ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_list_target",
            "description": "Create a new list target (inclusion/exclusion using a data list)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "data_list": {
                  "description": "Data list ID containing the values to target",
                  "type": "number"
                },
                "inclusive": {
                  "description": "If true, inclusion target; if false, exclusion target",
                  "type": "boolean"
                },
                "label": {
                  "description": "List target name",
                  "type": "string"
                }
              },
              "required": [
                "label"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_list_target",
            "description": "Update an existing list target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "data_list": {
                  "description": "Data list ID",
                  "type": "number"
                },
                "id": {
                  "description": "List target ID",
                  "type": "number"
                },
                "inclusive": {
                  "description": "If true, inclusion; if false, exclusion",
                  "type": "boolean"
                },
                "label": {
                  "description": "List target name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_list_target",
            "description": "Delete a list target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "List target ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_platform_targets",
            "description": "List all platform targets (device/OS/browser targeting)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_platform_target",
            "description": "Get details of a specific platform target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Platform target ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_platform_target",
            "description": "Create a new platform target for device/OS/browser targeting",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "device_targets": {
                  "description": "List of device patterns to target (e.g. \"Apple*\", \"Samsung Galaxy S5\")",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "name": {
                  "description": "Platform target name",
                  "type": "string"
                },
                "platform": {
                  "description": "Preset platform target (default: any)",
                  "enum": [
                    "any",
                    "specific",
                    "mobile",
                    "tablet",
                    "mobile_and_tablet",
                    "desktop"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_platform_target",
            "description": "Update an existing platform target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "device_targets": {
                  "description": "List of device patterns to target",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "id": {
                  "description": "Platform target ID",
                  "type": "number"
                },
                "name": {
                  "description": "Platform target name",
                  "type": "string"
                },
                "platform": {
                  "description": "Preset platform target",
                  "enum": [
                    "any",
                    "specific",
                    "mobile",
                    "tablet",
                    "mobile_and_tablet",
                    "desktop"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_platform_target",
            "description": "Delete a platform target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Platform target ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_data_targets",
            "description": "List all data targets",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "remove_list_target_usages",
            "description": "Remove all usages of a list target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "List target ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_display_report",
            "description": "Get display advertising report with impressions, clicks, and CTR",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "advertisers": {
                  "description": "Filter by advertiser IDs (comma-separated)",
                  "type": "string"
                },
                "breakdown": {
                  "description": "Include breakdown data",
                  "type": "boolean"
                },
                "campaigns": {
                  "description": "Filter by campaign IDs (comma-separated)",
                  "type": "string"
                },
                "details": {
                  "description": "Include detailed breakdown",
                  "type": "boolean"
                },
                "exclude_campaign_ad_items": {
                  "description": "Exclude ad items in campaigns",
                  "type": "boolean"
                },
                "exclude_channel_stats": {
                  "description": "Exclude stats from channel-served ads",
                  "type": "boolean"
                },
                "exclude_publisher_ad_items": {
                  "description": "Exclude ad items directly in zones",
                  "type": "boolean"
                },
                "financials": {
                  "description": "Include financial data",
                  "type": "boolean"
                },
                "period": {
                  "description": "Data grouping period: day, week, month, year",
                  "type": "string"
                },
                "preset": {
                  "description": "Date preset: today, last-24-hours, yesterday, this-week, last-week, this-month, last-month, year-to-date, last-year, last-7-days, last-14-days, last-30-days, last-3-months, last-6-months, last-12-months",
                  "type": "string"
                },
                "publishers": {
                  "description": "Filter by publisher IDs (comma-separated)",
                  "type": "string"
                },
                "require_channel_stats": {
                  "description": "Only include stats from channel-served ads",
                  "type": "boolean"
                },
                "summary": {
                  "description": "Include summary data",
                  "type": "boolean"
                },
                "timezone": {
                  "description": "Timezone for preset (e.g. \"America/New_York\")",
                  "type": "string"
                },
                "type": {
                  "description": "Report type: overview, advertiser, publisher, zone, campaign, channel, geo-target, ad-item",
                  "type": "string"
                },
                "zones": {
                  "description": "Filter by zone IDs (comma-separated)",
                  "type": "string"
                }
              },
              "required": [
                "type",
                "period"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_vast_report",
            "description": "Get VAST video advertising report",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "advertisers": {
                  "description": "Filter by advertiser IDs (comma-separated)",
                  "type": "string"
                },
                "breakdown": {
                  "description": "Include breakdown data",
                  "type": "boolean"
                },
                "campaigns": {
                  "description": "Filter by campaign IDs (comma-separated)",
                  "type": "string"
                },
                "details": {
                  "description": "Include detailed breakdown",
                  "type": "boolean"
                },
                "financials": {
                  "description": "Include financial data",
                  "type": "boolean"
                },
                "period": {
                  "description": "Data grouping period: day, week, month, year",
                  "type": "string"
                },
                "preset": {
                  "description": "Date preset (same options as display report)",
                  "type": "string"
                },
                "publishers": {
                  "description": "Filter by publisher IDs (comma-separated)",
                  "type": "string"
                },
                "summary": {
                  "description": "Include summary data",
                  "type": "boolean"
                },
                "timezone": {
                  "description": "Timezone for preset",
                  "type": "string"
                },
                "type": {
                  "description": "Report type: overview, advertiser, publisher, zone, campaign, ad-item",
                  "type": "string"
                },
                "zones": {
                  "description": "Filter by zone IDs (comma-separated)",
                  "type": "string"
                }
              },
              "required": [
                "type",
                "period"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_event_logs",
            "description": "Get event logs for account activity (changes, logins, etc.)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "from": {
                  "description": "Start date filter",
                  "type": "string"
                },
                "log_type": {
                  "description": "Type of event log to retrieve",
                  "type": "string"
                },
                "to": {
                  "description": "End date filter",
                  "type": "string"
                }
              },
              "required": [
                "log_type"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_click_details_report",
            "description": "Get click details report",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "advertisers": {
                  "description": "Filter by advertiser IDs (comma-separated)",
                  "type": "string"
                },
                "campaigns": {
                  "description": "Filter by campaign IDs (comma-separated)",
                  "type": "string"
                },
                "preset": {
                  "description": "Date preset",
                  "type": "string"
                },
                "publishers": {
                  "description": "Filter by publisher IDs (comma-separated)",
                  "type": "string"
                },
                "timezone": {
                  "description": "Timezone",
                  "type": "string"
                },
                "zones": {
                  "description": "Filter by zone IDs (comma-separated)",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_conversion_details_report",
            "description": "Get conversion details report",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "advertisers": {
                  "description": "Filter by advertiser IDs (comma-separated)",
                  "type": "string"
                },
                "campaigns": {
                  "description": "Filter by campaign IDs (comma-separated)",
                  "type": "string"
                },
                "preset": {
                  "description": "Date preset",
                  "type": "string"
                },
                "publishers": {
                  "description": "Filter by publisher IDs (comma-separated)",
                  "type": "string"
                },
                "timezone": {
                  "description": "Timezone",
                  "type": "string"
                },
                "zones": {
                  "description": "Filter by zone IDs (comma-separated)",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_demand_source_report",
            "description": "Get demand source statistics report",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "preset": {
                  "description": "Date preset",
                  "type": "string"
                },
                "timezone": {
                  "description": "Timezone",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_display_platform_estimate",
            "description": "Get display platform estimate statistics",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "preset": {
                  "description": "Date preset",
                  "type": "string"
                },
                "timezone": {
                  "description": "Timezone",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_vast_platform_estimate",
            "description": "Get VAST platform estimate statistics",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "preset": {
                  "description": "Date preset",
                  "type": "string"
                },
                "timezone": {
                  "description": "Timezone",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_geo_summary_report",
            "description": "Get geographic summary report",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "advertisers": {
                  "description": "Filter by advertiser IDs (comma-separated)",
                  "type": "string"
                },
                "campaigns": {
                  "description": "Filter by campaign IDs (comma-separated)",
                  "type": "string"
                },
                "preset": {
                  "description": "Date preset",
                  "type": "string"
                },
                "publishers": {
                  "description": "Filter by publisher IDs (comma-separated)",
                  "type": "string"
                },
                "timezone": {
                  "description": "Timezone",
                  "type": "string"
                },
                "zones": {
                  "description": "Filter by zone IDs (comma-separated)",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_auction_placements_report",
            "description": "Get auction placement statistics report",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "preset": {
                  "description": "Date preset",
                  "type": "string"
                },
                "timezone": {
                  "description": "Timezone",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_placement_forecast",
            "description": "Get placement forecast report",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "preset": {
                  "description": "Date preset",
                  "type": "string"
                },
                "timezone": {
                  "description": "Timezone",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_display_forecast",
            "description": "Get display forecast report",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "preset": {
                  "description": "Date preset",
                  "type": "string"
                },
                "timezone": {
                  "description": "Timezone",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_display_channel_forecast",
            "description": "Get display channel forecast report",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "preset": {
                  "description": "Date preset",
                  "type": "string"
                },
                "timezone": {
                  "description": "Timezone",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_vast_forecast",
            "description": "Get VAST forecast report",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "preset": {
                  "description": "Date preset",
                  "type": "string"
                },
                "timezone": {
                  "description": "Timezone",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_vast_channel_forecast",
            "description": "Get VAST channel forecast report",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "preset": {
                  "description": "Date preset",
                  "type": "string"
                },
                "timezone": {
                  "description": "Timezone",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_vast_auction_placements_report",
            "description": "Get VAST auction placements report",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "preset": {
                  "description": "Date preset",
                  "type": "string"
                },
                "timezone": {
                  "description": "Timezone",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_vast_geo_summary_report",
            "description": "Get VAST geographic summary report",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "advertisers": {
                  "description": "Filter by advertiser IDs (comma-separated)",
                  "type": "string"
                },
                "campaigns": {
                  "description": "Filter by campaign IDs (comma-separated)",
                  "type": "string"
                },
                "preset": {
                  "description": "Date preset",
                  "type": "string"
                },
                "publishers": {
                  "description": "Filter by publisher IDs (comma-separated)",
                  "type": "string"
                },
                "timezone": {
                  "description": "Timezone",
                  "type": "string"
                },
                "zones": {
                  "description": "Filter by zone IDs (comma-separated)",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_live_website_preview",
            "description": "Get live website preview URL",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "url": {
                  "description": "Website URL to preview",
                  "type": "string"
                },
                "zone_id": {
                  "description": "Zone ID to preview",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_manual_tracking_links",
            "description": "Generate manual tracking links for an ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "ad_item_id": {
                  "description": "Ad item ID",
                  "type": "number"
                },
                "type": {
                  "description": "Ad item type",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "list_custom_reports",
            "description": "List all saved report configurations",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_custom_report",
            "description": "Get details of a specific report configuration",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Report configuration ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_custom_report",
            "description": "Create a new report configuration",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "columns": {
                  "description": "Columns to include: impressions, eligible, viewable, clicks, conversions, ctr, cvr, e_cpm, e_cpc, e_cpa, cost, payout, revenue",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "date": {
                  "additionalProperties": false,
                  "description": "Date configuration (either preset or start+end required)",
                  "properties": {
                    "end": {
                      "description": "Custom end date (ISO 8601 format)",
                      "type": "string"
                    },
                    "preset": {
                      "description": "Date preset (today, yesterday, last-7-days, last-30-days, etc.)",
                      "type": "string"
                    },
                    "start": {
                      "description": "Custom start date (ISO 8601 format)",
                      "type": "string"
                    },
                    "timezone": {
                      "description": "Timezone (e.g. \"America/Toronto\")",
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "exclude_campaign_ad_items": {
                  "description": "Exclude ad items in campaigns",
                  "type": "boolean"
                },
                "exclude_channel_stats": {
                  "description": "Exclude stats from channel-served ads",
                  "type": "boolean"
                },
                "exclude_publisher_ad_items": {
                  "description": "Exclude ad items directly in zones",
                  "type": "boolean"
                },
                "filters": {
                  "additionalProperties": {},
                  "description": "Filter criteria: { publishers: [...], advertisers: [...], zones: [...], campaigns: [...], ad_items: [...], channels: [...] }",
                  "type": "object"
                },
                "name": {
                  "description": "Report name",
                  "type": "string"
                },
                "period": {
                  "description": "Data grouping period",
                  "enum": [
                    "day",
                    "week",
                    "month",
                    "year"
                  ],
                  "type": "string"
                },
                "require_channel_stats": {
                  "description": "Only include stats from channel-served ads",
                  "type": "boolean"
                },
                "type": {
                  "description": "Report type",
                  "enum": [
                    "overview",
                    "advertiser",
                    "publisher",
                    "zone",
                    "campaign",
                    "channel",
                    "geo-target",
                    "ad-item"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "name",
                "type",
                "period",
                "date"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_custom_report",
            "description": "Update an existing report configuration",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "columns": {
                  "description": "Columns to include",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "date": {
                  "additionalProperties": false,
                  "description": "Date configuration",
                  "properties": {
                    "end": {
                      "type": "string"
                    },
                    "preset": {
                      "type": "string"
                    },
                    "start": {
                      "type": "string"
                    },
                    "timezone": {
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "exclude_campaign_ad_items": {
                  "description": "Exclude ad items in campaigns",
                  "type": "boolean"
                },
                "exclude_channel_stats": {
                  "description": "Exclude stats from channel-served ads",
                  "type": "boolean"
                },
                "exclude_publisher_ad_items": {
                  "description": "Exclude ad items directly in zones",
                  "type": "boolean"
                },
                "filters": {
                  "additionalProperties": {},
                  "description": "Filter criteria",
                  "type": "object"
                },
                "id": {
                  "description": "Report configuration ID",
                  "type": "number"
                },
                "name": {
                  "description": "Report name",
                  "type": "string"
                },
                "period": {
                  "description": "Data grouping period",
                  "enum": [
                    "day",
                    "week",
                    "month",
                    "year"
                  ],
                  "type": "string"
                },
                "require_channel_stats": {
                  "description": "Only include stats from channel-served ads",
                  "type": "boolean"
                },
                "type": {
                  "description": "Report type",
                  "enum": [
                    "overview",
                    "advertiser",
                    "publisher",
                    "zone",
                    "campaign",
                    "channel",
                    "geo-target",
                    "ad-item"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_custom_report",
            "description": "Delete a report configuration",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Report configuration ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_vast_custom_reports",
            "description": "List all VAST report data",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_vast_custom_report",
            "description": "Get a specific VAST report",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST report ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_vast_custom_report",
            "description": "Create a new VAST report configuration",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "name": {
                  "description": "Report name",
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_all_generated_reports",
            "description": "List all generated reports across all configurations",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "list_all_report_schedules",
            "description": "List all report schedules across all configurations",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "list_report_generated",
            "description": "List generated reports for a specific report configuration",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                },
                "report_config_id": {
                  "description": "Report configuration ID",
                  "type": "number"
                }
              },
              "required": [
                "report_config_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_report_generated",
            "description": "Get a specific generated report",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "generated_id": {
                  "description": "Generated report ID",
                  "type": "number"
                },
                "report_config_id": {
                  "description": "Report configuration ID",
                  "type": "number"
                }
              },
              "required": [
                "report_config_id",
                "generated_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_report_schedules",
            "description": "List schedules for a specific report configuration",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                },
                "report_config_id": {
                  "description": "Report configuration ID",
                  "type": "number"
                }
              },
              "required": [
                "report_config_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_report_schedule",
            "description": "Get a specific report schedule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "report_config_id": {
                  "description": "Report configuration ID",
                  "type": "number"
                },
                "schedule_id": {
                  "description": "Schedule ID",
                  "type": "number"
                }
              },
              "required": [
                "report_config_id",
                "schedule_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_report_schedule",
            "description": "Create a new report schedule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "frequency": {
                  "description": "Schedule frequency",
                  "type": "string"
                },
                "recipients": {
                  "description": "Array of recipient objects",
                  "items": {},
                  "type": "array"
                },
                "report_config_id": {
                  "description": "Report configuration ID",
                  "type": "number"
                }
              },
              "required": [
                "report_config_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_report_schedule",
            "description": "Update a report schedule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "frequency": {
                  "description": "Schedule frequency",
                  "type": "string"
                },
                "recipients": {
                  "description": "Array of recipient objects",
                  "items": {},
                  "type": "array"
                },
                "report_config_id": {
                  "description": "Report configuration ID",
                  "type": "number"
                },
                "schedule_id": {
                  "description": "Schedule ID",
                  "type": "number"
                }
              },
              "required": [
                "report_config_id",
                "schedule_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_report_schedule",
            "description": "Delete a report schedule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "report_config_id": {
                  "description": "Report configuration ID",
                  "type": "number"
                },
                "schedule_id": {
                  "description": "Schedule ID",
                  "type": "number"
                }
              },
              "required": [
                "report_config_id",
                "schedule_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_report_schedule_generated",
            "description": "List generated reports for a specific schedule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                },
                "report_config_id": {
                  "description": "Report configuration ID",
                  "type": "number"
                },
                "schedule_id": {
                  "description": "Schedule ID",
                  "type": "number"
                }
              },
              "required": [
                "report_config_id",
                "schedule_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_report_schedule_generated",
            "description": "Get a specific generated report from a schedule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "generated_id": {
                  "description": "Generated report ID",
                  "type": "number"
                },
                "report_config_id": {
                  "description": "Report configuration ID",
                  "type": "number"
                },
                "schedule_id": {
                  "description": "Schedule ID",
                  "type": "number"
                }
              },
              "required": [
                "report_config_id",
                "schedule_id",
                "generated_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "revoke_report_schedule_historical_access",
            "description": "Revoke historical access for a report schedule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "report_config_id": {
                  "description": "Report configuration ID",
                  "type": "number"
                },
                "schedule_id": {
                  "description": "Schedule ID",
                  "type": "number"
                }
              },
              "required": [
                "report_config_id",
                "schedule_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "serve_ad",
            "description": "Request ad delivery for a zone. Returns the ad(s) that would be served, useful for verifying ad setup. Uses POST /adserve.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "ID": {
                  "description": "Your AdButler account ID",
                  "type": "number"
                },
                "_abdk_json": {
                  "additionalProperties": {},
                  "description": "Data key key-value pairs for data key targeting",
                  "type": "object"
                },
                "defer_signing": {
                  "description": "Defer beacon signing hash generation",
                  "type": "boolean"
                },
                "ip": {
                  "description": "IPv4 address for geographic targeting (required for server-side requests)",
                  "type": "string"
                },
                "kw": {
                  "description": "Keywords for keyword targeting",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "pid": {
                  "description": "Page ID for unique delivery/roadblocks (random number, same for all zones on page)",
                  "type": "number"
                },
                "place": {
                  "description": "Place counter for unique delivery (0, 1, 2, etc.)",
                  "type": "number"
                },
                "referrer": {
                  "description": "Page URL for URL targeting (required for server-side requests)",
                  "type": "string"
                },
                "rf": {
                  "description": "Pass 1 to include is_redirectable field in response",
                  "type": "number"
                },
                "setID": {
                  "description": "Zone ID to serve an ad from",
                  "type": "number"
                },
                "sh": {
                  "description": "Screen height for platform targeting",
                  "type": "number"
                },
                "size": {
                  "description": "Expected ad size (e.g. \"300x250\")",
                  "type": "string"
                },
                "spr": {
                  "description": "Screen pixel ratio for platform targeting",
                  "type": "number"
                },
                "sw": {
                  "description": "Screen width for platform targeting",
                  "type": "number"
                },
                "type": {
                  "description": "Response type: \"json\" for most eligible ad, \"jsonr\" for all eligible ads ranked",
                  "enum": [
                    "json",
                    "jsonr"
                  ],
                  "type": "string"
                },
                "ua": {
                  "description": "User agent string for platform targeting",
                  "type": "string"
                }
              },
              "required": [
                "ID",
                "setID",
                "type"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_ad",
            "description": "Retrieve an ad via GET request. Same parameters as serve_ad but uses GET instead of POST.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "ID": {
                  "description": "Your AdButler account ID",
                  "type": "number"
                },
                "_abdk_json": {
                  "additionalProperties": {},
                  "description": "Data key key-value pairs for data key targeting",
                  "type": "object"
                },
                "defer_signing": {
                  "description": "Defer beacon signing hash generation",
                  "type": "boolean"
                },
                "ip": {
                  "description": "IPv4 address for geographic targeting (required for server-side requests)",
                  "type": "string"
                },
                "kw": {
                  "description": "Keywords for keyword targeting",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "pid": {
                  "description": "Page ID for unique delivery/roadblocks (random number, same for all zones on page)",
                  "type": "number"
                },
                "place": {
                  "description": "Place counter for unique delivery (0, 1, 2, etc.)",
                  "type": "number"
                },
                "referrer": {
                  "description": "Page URL for URL targeting (required for server-side requests)",
                  "type": "string"
                },
                "rf": {
                  "description": "Pass 1 to include is_redirectable field in response",
                  "type": "number"
                },
                "setID": {
                  "description": "Zone ID to serve an ad from",
                  "type": "number"
                },
                "sh": {
                  "description": "Screen height for platform targeting",
                  "type": "number"
                },
                "size": {
                  "description": "Expected ad size (e.g. \"300x250\")",
                  "type": "string"
                },
                "spr": {
                  "description": "Screen pixel ratio for platform targeting",
                  "type": "number"
                },
                "sw": {
                  "description": "Screen width for platform targeting",
                  "type": "number"
                },
                "type": {
                  "description": "Response type: \"json\" for most eligible ad, \"jsonr\" for all eligible ads ranked",
                  "enum": [
                    "json",
                    "jsonr"
                  ],
                  "type": "string"
                },
                "ua": {
                  "description": "User agent string for platform targeting",
                  "type": "string"
                }
              },
              "required": [
                "ID",
                "setID",
                "type"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_list_ad_items",
            "description": "List all VAST ad items",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast_get_ad_item",
            "description": "Get details of a specific VAST ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_create_ad_item",
            "description": "Create a new VAST ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "Whether ad item is active",
                  "type": "boolean"
                },
                "location": {
                  "description": "VAST tag URL or media location",
                  "type": "string"
                },
                "name": {
                  "description": "Ad item name",
                  "type": "string"
                }
              },
              "required": [
                "name",
                "location"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_update_ad_item",
            "description": "Update an existing VAST ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "Whether ad item is active",
                  "type": "boolean"
                },
                "id": {
                  "description": "VAST ad item ID",
                  "type": "number"
                },
                "location": {
                  "description": "VAST tag URL or media location",
                  "type": "string"
                },
                "name": {
                  "description": "Ad item name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_delete_ad_item",
            "description": "Delete a VAST ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_list_campaigns",
            "description": "List all VAST campaigns",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast_get_campaign",
            "description": "Get details of a specific VAST campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_create_campaign",
            "description": "Create a new VAST campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "advertiser": {
                  "description": "Advertiser ID",
                  "type": "number"
                },
                "contract": {
                  "description": "Contract ID (requires Contract Management add-on)",
                  "type": "number"
                },
                "name": {
                  "description": "Campaign name",
                  "type": "string"
                }
              },
              "required": [
                "name",
                "advertiser"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_update_campaign",
            "description": "Update an existing VAST campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "advertiser": {
                  "description": "Advertiser ID",
                  "type": "number"
                },
                "contract": {
                  "description": "Contract ID (requires Contract Management add-on)",
                  "type": "number"
                },
                "id": {
                  "description": "VAST campaign ID",
                  "type": "number"
                },
                "name": {
                  "description": "Campaign name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_delete_campaign",
            "description": "Delete a VAST campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_archive_campaign",
            "description": "Archive a VAST campaign (soft-delete, can be restored later)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_list_archived_campaigns",
            "description": "List all archived VAST campaigns",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast_get_archived_campaign",
            "description": "Get details of a specific archived VAST campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived VAST campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_delete_archived_campaign",
            "description": "Permanently delete an archived VAST campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived VAST campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_unarchive_campaign",
            "description": "Restore an archived VAST campaign back to active status",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived VAST campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_list_channels",
            "description": "List all VAST channels",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast_get_channel",
            "description": "Get details of a specific VAST channel",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST channel ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_create_channel",
            "description": "Create a new VAST channel",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "description": {
                  "description": "Channel description",
                  "type": "string"
                },
                "name": {
                  "description": "Channel name",
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_update_channel",
            "description": "Update an existing VAST channel",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "description": {
                  "description": "Channel description",
                  "type": "string"
                },
                "id": {
                  "description": "VAST channel ID",
                  "type": "number"
                },
                "name": {
                  "description": "Channel name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_delete_channel",
            "description": "Delete a VAST channel",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST channel ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_archive_channel",
            "description": "Archive a VAST channel (soft-delete, can be restored later)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST channel ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_list_archived_channels",
            "description": "List all archived VAST channels",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast_get_archived_channel",
            "description": "Get details of a specific archived VAST channel",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived VAST channel ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_delete_archived_channel",
            "description": "Permanently delete an archived VAST channel",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived VAST channel ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_unarchive_channel",
            "description": "Restore an archived VAST channel back to active status",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived VAST channel ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_list_channel_zone_assignments",
            "description": "List all VAST channel zone assignments",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast_get_channel_zone_assignment",
            "description": "Get details of a specific VAST channel zone assignment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST channel zone assignment ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_create_channel_zone_assignment",
            "description": "Assign a VAST zone to a VAST channel",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "channel": {
                  "description": "VAST channel ID",
                  "type": "number"
                },
                "zone": {
                  "description": "VAST zone ID",
                  "type": "number"
                }
              },
              "required": [
                "channel",
                "zone"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_update_channel_zone_assignment",
            "description": "Update a VAST channel zone assignment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "channel": {
                  "description": "VAST channel ID",
                  "type": "number"
                },
                "id": {
                  "description": "VAST channel zone assignment ID",
                  "type": "number"
                },
                "zone": {
                  "description": "VAST zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_delete_channel_zone_assignment",
            "description": "Remove a VAST zone from a VAST channel",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST channel zone assignment ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_list_zones",
            "description": "List all VAST zones",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast_get_zone",
            "description": "Get details of a specific VAST zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_create_zone",
            "description": "Create a new VAST zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "default_vast_ad_item": {
                  "description": "Default VAST ad item ID (mutually exclusive with default_vast_campaign)",
                  "type": "number"
                },
                "default_vast_campaign": {
                  "description": "Default VAST campaign ID (mutually exclusive with default_vast_ad_item)",
                  "type": "number"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Zone name",
                  "type": "string"
                },
                "publisher": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "serve_priority_order": {
                  "description": "Priority order for serving: \"weight\" or \"auction\"",
                  "enum": [
                    "weight",
                    "auction"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "name",
                "publisher"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_update_zone",
            "description": "Update an existing VAST zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "default_vast_ad_item": {
                  "description": "Default VAST ad item ID (mutually exclusive with default_vast_campaign)",
                  "type": "number"
                },
                "default_vast_campaign": {
                  "description": "Default VAST campaign ID (mutually exclusive with default_vast_ad_item)",
                  "type": "number"
                },
                "id": {
                  "description": "VAST zone ID",
                  "type": "number"
                },
                "metadata": {
                  "additionalProperties": {
                    "type": "string"
                  },
                  "description": "Custom metadata key-value pairs",
                  "type": "object"
                },
                "name": {
                  "description": "Zone name",
                  "type": "string"
                },
                "publisher": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "serve_priority_order": {
                  "description": "Priority order for serving: \"weight\" or \"auction\"",
                  "enum": [
                    "weight",
                    "auction"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_delete_zone",
            "description": "Delete a VAST zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_archive_zone",
            "description": "Archive a VAST zone (soft-delete, can be restored later)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_list_archived_zones",
            "description": "List all archived VAST zones",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast_get_archived_zone",
            "description": "Get details of a specific archived VAST zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived VAST zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_delete_archived_zone",
            "description": "Permanently delete an archived VAST zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived VAST zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_unarchive_zone",
            "description": "Restore an archived VAST zone back to active status",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived VAST zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_list_placements",
            "description": "List all VAST placements (assignments of VAST ad items to VAST zones)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast_get_placement",
            "description": "Get details of a specific VAST placement",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST placement ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_create_placement",
            "description": "Create a new VAST placement (assign a VAST ad item or campaign to a VAST zone or channel)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "Whether placement is active (defaults to true)",
                  "type": "boolean"
                },
                "advertisement": {
                  "additionalProperties": false,
                  "description": "Advertisement object with id and type",
                  "properties": {
                    "id": {
                      "description": "VAST ad item or campaign ID",
                      "type": "number"
                    },
                    "type": {
                      "description": "Type of advertisement",
                      "enum": [
                        "vast_ad_item",
                        "vast_campaign"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "type"
                  ],
                  "type": "object"
                },
                "channel": {
                  "description": "VAST channel ID (required if zone not set; mutually exclusive with zone)",
                  "type": "number"
                },
                "cost": {
                  "additionalProperties": false,
                  "description": "Pricing model: fixed_cost OR cpm/cpc/cpa",
                  "properties": {
                    "cpa": {
                      "type": "number"
                    },
                    "cpc": {
                      "type": "number"
                    },
                    "cpm": {
                      "type": "number"
                    },
                    "fixed_cost": {
                      "type": "number"
                    }
                  },
                  "type": "object"
                },
                "data_key_target_id": {
                  "description": "Data Key Target ID (Enterprise only)",
                  "type": "number"
                },
                "max_frequency": {
                  "description": "Frequency cap limit",
                  "type": "number"
                },
                "max_frequency_period": {
                  "description": "Days before frequency counter resets",
                  "type": "number"
                },
                "max_frequency_type": {
                  "description": "Event type to count for frequency capping",
                  "enum": [
                    "start",
                    "view",
                    "firstQuartile",
                    "midpoint",
                    "thirdQuartile",
                    "complete"
                  ],
                  "type": "string"
                },
                "payout": {
                  "additionalProperties": false,
                  "description": "Publisher payout configuration",
                  "properties": {
                    "cpa": {
                      "type": "number"
                    },
                    "cpc": {
                      "type": "number"
                    },
                    "cpm": {
                      "type": "number"
                    },
                    "fixed": {
                      "type": "number"
                    },
                    "type": {
                      "enum": [
                        "rate",
                        "percent"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "description": "Priority level (sponsorship, standard, network, bulk, house)",
                  "type": "number"
                },
                "schedule": {
                  "description": "VAST schedule ID",
                  "type": "number"
                },
                "serve_method": {
                  "description": "Serving system: weight-based or auction-based",
                  "enum": [
                    "weight",
                    "auction"
                  ],
                  "type": "string"
                },
                "zone": {
                  "description": "VAST zone ID (required if channel not set; mutually exclusive with channel)",
                  "type": "number"
                }
              },
              "required": [
                "advertisement",
                "schedule"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_update_placement",
            "description": "Update an existing VAST placement",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "Whether placement is active",
                  "type": "boolean"
                },
                "advertisement": {
                  "additionalProperties": false,
                  "description": "Advertisement object with id and type",
                  "properties": {
                    "id": {
                      "description": "VAST ad item or campaign ID",
                      "type": "number"
                    },
                    "type": {
                      "description": "Type of advertisement",
                      "enum": [
                        "vast_ad_item",
                        "vast_campaign"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "type"
                  ],
                  "type": "object"
                },
                "channel": {
                  "description": "VAST channel ID (mutually exclusive with zone)",
                  "type": "number"
                },
                "cost": {
                  "additionalProperties": false,
                  "description": "Pricing model: fixed_cost OR cpm/cpc/cpa",
                  "properties": {
                    "cpa": {
                      "type": "number"
                    },
                    "cpc": {
                      "type": "number"
                    },
                    "cpm": {
                      "type": "number"
                    },
                    "fixed_cost": {
                      "type": "number"
                    }
                  },
                  "type": "object"
                },
                "data_key_target_id": {
                  "description": "Data Key Target ID (Enterprise only)",
                  "type": "number"
                },
                "id": {
                  "description": "VAST placement ID",
                  "type": "number"
                },
                "max_frequency": {
                  "description": "Frequency cap limit",
                  "type": "number"
                },
                "max_frequency_period": {
                  "description": "Days before frequency counter resets",
                  "type": "number"
                },
                "max_frequency_type": {
                  "description": "Event type for frequency capping",
                  "enum": [
                    "start",
                    "view",
                    "firstQuartile",
                    "midpoint",
                    "thirdQuartile",
                    "complete"
                  ],
                  "type": "string"
                },
                "payout": {
                  "additionalProperties": false,
                  "description": "Publisher payout configuration",
                  "properties": {
                    "cpa": {
                      "type": "number"
                    },
                    "cpc": {
                      "type": "number"
                    },
                    "cpm": {
                      "type": "number"
                    },
                    "fixed": {
                      "type": "number"
                    },
                    "type": {
                      "enum": [
                        "rate",
                        "percent"
                      ],
                      "type": "string"
                    }
                  },
                  "type": "object"
                },
                "priority": {
                  "description": "Priority level",
                  "type": "number"
                },
                "schedule": {
                  "description": "VAST schedule ID",
                  "type": "number"
                },
                "serve_method": {
                  "description": "Serving system: weight-based or auction-based",
                  "enum": [
                    "weight",
                    "auction"
                  ],
                  "type": "string"
                },
                "zone": {
                  "description": "VAST zone ID (mutually exclusive with channel)",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_delete_placement",
            "description": "Delete a VAST placement",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST placement ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_list_campaign_assignments",
            "description": "List all VAST campaign assignments",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast_get_campaign_assignment",
            "description": "Get details of a specific VAST campaign assignment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST campaign assignment ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_create_campaign_assignment",
            "description": "Create a VAST campaign assignment (assign an ad item to a campaign)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "Whether to actively serve ads (defaults to true)",
                  "type": "boolean"
                },
                "ad_item": {
                  "description": "VAST ad item ID",
                  "type": "number"
                },
                "campaign": {
                  "description": "VAST campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "ad_item",
                "campaign"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_update_campaign_assignment",
            "description": "Update a VAST campaign assignment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "Whether to actively serve ads",
                  "type": "boolean"
                },
                "ad_item": {
                  "description": "VAST ad item ID",
                  "type": "number"
                },
                "campaign": {
                  "description": "VAST campaign ID",
                  "type": "number"
                },
                "id": {
                  "description": "VAST campaign assignment ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_delete_campaign_assignment",
            "description": "Delete a VAST campaign assignment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST campaign assignment ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_list_schedules",
            "description": "List all VAST schedules",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast_get_schedule",
            "description": "Get details of a specific VAST schedule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST schedule ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_create_schedule",
            "description": "Create a new VAST schedule for time-based ad delivery",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "day_parting_id": {
                  "description": "Day parting ID for time-of-day targeting",
                  "type": "number"
                },
                "delivery_method": {
                  "description": "Delivery pacing: \"default\" (ASAP) or \"smooth\" (evenly distributed)",
                  "enum": [
                    "default",
                    "smooth"
                  ],
                  "type": "string"
                },
                "end_date": {
                  "description": "End date (YYYY-MM-DD HH:MM:SS), null for indefinite",
                  "type": "string"
                },
                "geo_target": {
                  "description": "Geotarget ID (0 = no targeting)",
                  "type": "number"
                },
                "quota_lifetime": {
                  "description": "Total quota amount (views or clicks, not per thousand)",
                  "type": "number"
                },
                "quota_type": {
                  "description": "Quota measurement type",
                  "enum": [
                    "views",
                    "clicks"
                  ],
                  "type": "string"
                },
                "start_date": {
                  "description": "Start date (YYYY-MM-DD HH:MM:SS)",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast_update_schedule",
            "description": "Update an existing VAST schedule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "day_parting_id": {
                  "description": "Day parting ID for time-of-day targeting",
                  "type": "number"
                },
                "delivery_method": {
                  "description": "Delivery pacing: \"default\" (ASAP) or \"smooth\" (evenly distributed)",
                  "enum": [
                    "default",
                    "smooth"
                  ],
                  "type": "string"
                },
                "end_date": {
                  "description": "End date (YYYY-MM-DD HH:MM:SS), null for indefinite",
                  "type": "string"
                },
                "geo_target": {
                  "description": "Geotarget ID (0 = no targeting)",
                  "type": "number"
                },
                "id": {
                  "description": "VAST schedule ID",
                  "type": "number"
                },
                "quota_lifetime": {
                  "description": "Total quota amount (views or clicks, not per thousand)",
                  "type": "number"
                },
                "quota_type": {
                  "description": "Quota measurement type",
                  "enum": [
                    "views",
                    "clicks"
                  ],
                  "type": "string"
                },
                "start_date": {
                  "description": "Start date (YYYY-MM-DD HH:MM:SS)",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_delete_schedule",
            "description": "Delete a VAST schedule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST schedule ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_list_companions",
            "description": "List all VAST companions",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast_get_companion",
            "description": "Get details of a specific VAST companion",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST companion ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_create_companion",
            "description": "Create a new VAST companion",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "height": {
                  "description": "Companion height in pixels",
                  "type": "number"
                },
                "name": {
                  "description": "Companion name",
                  "type": "string"
                },
                "width": {
                  "description": "Companion width in pixels",
                  "type": "number"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_update_companion",
            "description": "Update an existing VAST companion",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "height": {
                  "description": "Companion height in pixels",
                  "type": "number"
                },
                "id": {
                  "description": "VAST companion ID",
                  "type": "number"
                },
                "name": {
                  "description": "Companion name",
                  "type": "string"
                },
                "width": {
                  "description": "Companion width in pixels",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_delete_companion",
            "description": "Delete a VAST companion",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST companion ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_list_media",
            "description": "List all VAST media (linear and non-linear)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast_list_linear_media",
            "description": "List all VAST linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast_get_linear_media",
            "description": "Get details of a specific VAST linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST linear media ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_create_linear_media",
            "description": "Create a new VAST linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "bitrate": {
                  "description": "Bitrate in kbps",
                  "type": "number"
                },
                "duration": {
                  "description": "Duration in seconds",
                  "type": "number"
                },
                "mime_type": {
                  "description": "MIME type (e.g. video/mp4)",
                  "type": "string"
                },
                "name": {
                  "description": "Linear media name",
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_update_linear_media",
            "description": "Update an existing VAST linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "bitrate": {
                  "description": "Bitrate in kbps",
                  "type": "number"
                },
                "duration": {
                  "description": "Duration in seconds",
                  "type": "number"
                },
                "id": {
                  "description": "VAST linear media ID",
                  "type": "number"
                },
                "mime_type": {
                  "description": "MIME type (e.g. video/mp4)",
                  "type": "string"
                },
                "name": {
                  "description": "Linear media name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_delete_linear_media",
            "description": "Delete a VAST linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST linear media ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_list_non_linear_media",
            "description": "List all VAST non-linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast_get_non_linear_media",
            "description": "Get details of a specific VAST non-linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST non-linear media ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_create_non_linear_media",
            "description": "Create a new VAST non-linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "height": {
                  "description": "Height in pixels",
                  "type": "number"
                },
                "mime_type": {
                  "description": "MIME type",
                  "type": "string"
                },
                "name": {
                  "description": "Non-linear media name",
                  "type": "string"
                },
                "width": {
                  "description": "Width in pixels",
                  "type": "number"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_update_non_linear_media",
            "description": "Update an existing VAST non-linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "height": {
                  "description": "Height in pixels",
                  "type": "number"
                },
                "id": {
                  "description": "VAST non-linear media ID",
                  "type": "number"
                },
                "mime_type": {
                  "description": "MIME type",
                  "type": "string"
                },
                "name": {
                  "description": "Non-linear media name",
                  "type": "string"
                },
                "width": {
                  "description": "Width in pixels",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_delete_non_linear_media",
            "description": "Delete a VAST non-linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST non-linear media ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_list_tracking",
            "description": "List all VAST tracking entries",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast_get_tracking",
            "description": "Get details of a specific VAST tracking entry",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST tracking ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_create_tracking",
            "description": "Create a new VAST tracking entry",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "event": {
                  "description": "Tracking event type (e.g. start, firstQuartile, midpoint, thirdQuartile, complete)",
                  "type": "string"
                },
                "name": {
                  "description": "Tracking name",
                  "type": "string"
                },
                "url": {
                  "description": "Tracking URL",
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_update_tracking",
            "description": "Update an existing VAST tracking entry",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "event": {
                  "description": "Tracking event type",
                  "type": "string"
                },
                "id": {
                  "description": "VAST tracking ID",
                  "type": "number"
                },
                "name": {
                  "description": "Tracking name",
                  "type": "string"
                },
                "url": {
                  "description": "Tracking URL",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast_delete_tracking",
            "description": "Delete a VAST tracking entry",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST tracking ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_vast_zone_tags",
            "description": "Get VAST zone serving tags",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_vast_zone_conversion_tag",
            "description": "Get VAST zone conversion tracking tag",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_vast_ad_item_conversion_tag",
            "description": "Get conversion tracking tag for a VAST ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_vast_campaign_conversion_tag",
            "description": "Get conversion tracking tag for a VAST campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_vast_placement_conversion_tag",
            "description": "Get conversion tracking tag for a VAST placement",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST placement ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_contracts",
            "description": "List all contracts",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_contract",
            "description": "Get details of a specific contract",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Contract ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_contract",
            "description": "Create a new contract",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "advertiser": {
                  "description": "Advertiser ID",
                  "type": "number"
                },
                "description": {
                  "description": "Contract description",
                  "type": "string"
                },
                "end_at": {
                  "description": "Contract end date (YYYY-MM-DD)",
                  "type": "string"
                },
                "name": {
                  "description": "Contract name",
                  "type": "string"
                },
                "payment_due_date": {
                  "description": "Payment due date (YYYY-MM-DD)",
                  "type": "string"
                },
                "rate": {
                  "description": "Contract rate (in account currency)",
                  "type": "number"
                },
                "start_at": {
                  "description": "Contract start date (YYYY-MM-DD)",
                  "type": "string"
                },
                "status": {
                  "description": "Contract status",
                  "enum": [
                    "open",
                    "terminated",
                    "fulfilled",
                    "closed"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "name",
                "advertiser"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_contract",
            "description": "Update an existing contract",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "advertiser": {
                  "description": "Advertiser ID",
                  "type": "number"
                },
                "description": {
                  "description": "Contract description",
                  "type": "string"
                },
                "end_at": {
                  "description": "Contract end date (YYYY-MM-DD)",
                  "type": "string"
                },
                "id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "name": {
                  "description": "Contract name",
                  "type": "string"
                },
                "payment_due_date": {
                  "description": "Payment due date (YYYY-MM-DD)",
                  "type": "string"
                },
                "rate": {
                  "description": "Contract rate",
                  "type": "number"
                },
                "start_at": {
                  "description": "Contract start date (YYYY-MM-DD)",
                  "type": "string"
                },
                "status": {
                  "description": "Contract status",
                  "enum": [
                    "open",
                    "terminated",
                    "fulfilled",
                    "closed"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_contract",
            "description": "Delete a contract",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Contract ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_archived_contracts",
            "description": "List all archived contracts",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_archived_contract",
            "description": "Get details of a specific archived contract",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived contract ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_archived_contract",
            "description": "Permanently delete an archived contract",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived contract ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_contract_templates",
            "description": "List all contract templates",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_contract_template",
            "description": "Get details of a specific contract template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Contract template ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_contract_template",
            "description": "Create a new contract template. Requires name, file, attributes (JSON string), email_subject, and email_body.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "attributes": {
                  "description": "JSON-encoded object containing name, email_subject, email_body, and optionally signing_service, basic_inputs, contract_column_inputs, signers",
                  "type": "string"
                },
                "email_body": {
                  "description": "Email body text when sending for signature",
                  "type": "string"
                },
                "email_subject": {
                  "description": "Email subject line when sending for signature",
                  "type": "string"
                },
                "file": {
                  "description": "URL or path to the contract template file",
                  "type": "string"
                },
                "name": {
                  "description": "Template name",
                  "type": "string"
                }
              },
              "required": [
                "name",
                "file",
                "attributes",
                "email_subject",
                "email_body"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_contract_template",
            "description": "Update an existing contract template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Contract template ID",
                  "type": "number"
                },
                "name": {
                  "description": "Template name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_contract_template",
            "description": "Delete a contract template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Contract template ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_contract_documents",
            "description": "List all documents for a contract",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "required": [
                "contract_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_contract_document",
            "description": "Get details of a specific contract document",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "id": {
                  "description": "Document ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_contract_document",
            "description": "Create a new document for a contract",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "attributes": {
                  "description": "JSON-encoded object with name, admin_executed, vendor_executed fields",
                  "type": "string"
                },
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_contract_document",
            "description": "Update an existing contract document",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "id": {
                  "description": "Document ID",
                  "type": "number"
                },
                "name": {
                  "description": "Document name",
                  "type": "string"
                }
              },
              "required": [
                "contract_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_contract_document",
            "description": "Delete a contract document",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "id": {
                  "description": "Document ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_contract_payments",
            "description": "List all payments for a contract",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "required": [
                "contract_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_contract_payment",
            "description": "Get details of a specific contract payment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "id": {
                  "description": "Payment ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_contract_payment",
            "description": "Create a new payment for a contract",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "amount": {
                  "description": "Amount paid (can be negative for refunds)",
                  "type": "number"
                },
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "note": {
                  "description": "Payment note or description",
                  "type": "string"
                }
              },
              "required": [
                "contract_id",
                "amount"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_contract_payment",
            "description": "Delete a contract payment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "id": {
                  "description": "Payment ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_signature_requests",
            "description": "List all signature requests for a contract",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "required": [
                "contract_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_signature_request",
            "description": "Get details of a specific signature request",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "id": {
                  "description": "Signature request ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_signature_request",
            "description": "Create a new signature request for a contract",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_signature_request",
            "description": "Update an existing signature request",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "id": {
                  "description": "Signature request ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_signature_request",
            "description": "Delete a signature request",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "id": {
                  "description": "Signature request ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "archive_contract",
            "description": "Archive a contract (soft-delete, can be restored later)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Contract ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "unarchive_contract",
            "description": "Unarchive a contract (restore from archive)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Archived contract ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_contract_assigned_campaigns",
            "description": "Get campaigns assigned to a contract",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Contract ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_contract_active_signature_request",
            "description": "Get the active signature request for a contract",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Contract ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_contract_document_from_template",
            "description": "Create a contract document from a template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "template_id": {
                  "description": "Template ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "replace_contract_document_file",
            "description": "Replace the file on a contract document",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "document_id": {
                  "description": "Document ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id",
                "document_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "replace_contract_document_file_from_template",
            "description": "Replace a contract document file from a template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "document_id": {
                  "description": "Document ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id",
                "document_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_contract_document_file_revisions",
            "description": "List file revisions for a contract document",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "document_id": {
                  "description": "Document ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id",
                "document_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_contract_document_file_revision",
            "description": "Get a specific file revision for a contract document",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "document_id": {
                  "description": "Document ID",
                  "type": "number"
                },
                "revision_id": {
                  "description": "File revision ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id",
                "document_id",
                "revision_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "download_contract_document_file_revision",
            "description": "Download a file revision for a contract document",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "document_id": {
                  "description": "Document ID",
                  "type": "number"
                },
                "revision_id": {
                  "description": "File revision ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id",
                "document_id",
                "revision_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_signature_request_recipients",
            "description": "List all recipients for a signature request",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "request_id": {
                  "description": "Signature request ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id",
                "request_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_signature_request_recipient",
            "description": "Get a specific recipient for a signature request",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "recipient_id": {
                  "description": "Recipient ID",
                  "type": "number"
                },
                "request_id": {
                  "description": "Signature request ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id",
                "request_id",
                "recipient_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_signature_request_recipient",
            "description": "Update a recipient for a signature request",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "email": {
                  "description": "Recipient email",
                  "type": "string"
                },
                "name": {
                  "description": "Recipient name",
                  "type": "string"
                },
                "recipient_id": {
                  "description": "Recipient ID",
                  "type": "number"
                },
                "request_id": {
                  "description": "Signature request ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id",
                "request_id",
                "recipient_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_signature_request_recipient",
            "description": "Delete a recipient from a signature request",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "recipient_id": {
                  "description": "Recipient ID",
                  "type": "number"
                },
                "request_id": {
                  "description": "Signature request ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id",
                "request_id",
                "recipient_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "cancel_signature_request",
            "description": "Cancel a signature request",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "request_id": {
                  "description": "Signature request ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id",
                "request_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "resend_signature_request",
            "description": "Resend a signature request",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "contract_id": {
                  "description": "Contract ID",
                  "type": "number"
                },
                "request_id": {
                  "description": "Signature request ID",
                  "type": "number"
                }
              },
              "required": [
                "contract_id",
                "request_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_managers",
            "description": "List all managers in your AdButler account",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_manager",
            "description": "Get details of a specific manager by ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Manager ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_manager",
            "description": "Create a new manager",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "can_assign_campaigns_directly": {
                  "description": "Can assign campaigns directly to zones",
                  "type": "boolean"
                },
                "can_manage_admin_api_access": {
                  "description": "Can manage API keys",
                  "type": "boolean"
                },
                "can_manage_bidders": {
                  "description": "Can manage bidders",
                  "type": "boolean"
                },
                "can_manage_billing": {
                  "description": "Can view invoices and billing",
                  "type": "boolean"
                },
                "can_manage_contracts": {
                  "description": "Can manage contracts and templates",
                  "type": "boolean"
                },
                "can_manage_data_keys": {
                  "description": "Can manage data keys",
                  "type": "boolean"
                },
                "can_manage_links": {
                  "description": "Can create/edit/delete active tracking links",
                  "type": "boolean"
                },
                "can_manage_media": {
                  "description": "Can manage creatives and media groups",
                  "type": "boolean"
                },
                "can_manage_native_ad_templates": {
                  "description": "Can manage native templates",
                  "type": "boolean"
                },
                "can_manage_product_db": {
                  "description": "Can manage product catalogs",
                  "type": "boolean"
                },
                "can_manage_programmatic": {
                  "description": "Can manage demand sources and PMP deals",
                  "type": "boolean"
                },
                "can_manage_self_serve": {
                  "description": "Can manage Self-Serve portals",
                  "type": "boolean"
                },
                "can_manage_targets": {
                  "description": "Can assign/remove targets from placements",
                  "type": "boolean"
                },
                "can_manage_tickets": {
                  "description": "Can create/view support tickets",
                  "type": "boolean"
                },
                "can_manage_users": {
                  "description": "Can manage user accounts and permissions",
                  "type": "boolean"
                },
                "email": {
                  "description": "Manager email address",
                  "type": "string"
                },
                "is_enabled": {
                  "description": "Whether the manager account is enabled",
                  "type": "boolean"
                },
                "name": {
                  "description": "Manager name",
                  "type": "string"
                },
                "notes": {
                  "description": "Notes about the manager",
                  "type": "string"
                },
                "password": {
                  "description": "Login password (min 8 chars with upper, lower, number). Random if blank.",
                  "type": "string"
                },
                "position": {
                  "description": "Manager position in organization",
                  "type": "string"
                },
                "publisher_access": {
                  "description": "Publisher access level",
                  "enum": [
                    "none",
                    "specific",
                    "all"
                  ],
                  "type": "string"
                },
                "publisher_access_list": {
                  "description": "Publisher IDs accessible when publisher_access is \"specific\"",
                  "items": {
                    "type": "number"
                  },
                  "type": "array"
                },
                "statistics_access": {
                  "description": "Statistics access level",
                  "enum": [
                    "none",
                    "specific",
                    "all"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "name",
                "email"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_manager",
            "description": "Update an existing manager",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "can_assign_campaigns_directly": {
                  "description": "Can assign campaigns directly",
                  "type": "boolean"
                },
                "can_manage_admin_api_access": {
                  "description": "Can manage API keys",
                  "type": "boolean"
                },
                "can_manage_bidders": {
                  "description": "Can manage bidders",
                  "type": "boolean"
                },
                "can_manage_billing": {
                  "description": "Can manage billing",
                  "type": "boolean"
                },
                "can_manage_contracts": {
                  "description": "Can manage contracts",
                  "type": "boolean"
                },
                "can_manage_data_keys": {
                  "description": "Can manage data keys",
                  "type": "boolean"
                },
                "can_manage_links": {
                  "description": "Can manage tracking links",
                  "type": "boolean"
                },
                "can_manage_media": {
                  "description": "Can manage creatives and media groups",
                  "type": "boolean"
                },
                "can_manage_native_ad_templates": {
                  "description": "Can manage native templates",
                  "type": "boolean"
                },
                "can_manage_product_db": {
                  "description": "Can manage product catalogs",
                  "type": "boolean"
                },
                "can_manage_programmatic": {
                  "description": "Can manage programmatic",
                  "type": "boolean"
                },
                "can_manage_self_serve": {
                  "description": "Can manage Self-Serve",
                  "type": "boolean"
                },
                "can_manage_targets": {
                  "description": "Can manage targets",
                  "type": "boolean"
                },
                "can_manage_tickets": {
                  "description": "Can manage tickets",
                  "type": "boolean"
                },
                "can_manage_users": {
                  "description": "Can manage users",
                  "type": "boolean"
                },
                "email": {
                  "description": "Manager email address",
                  "type": "string"
                },
                "id": {
                  "description": "Manager ID",
                  "type": "number"
                },
                "is_enabled": {
                  "description": "Whether the manager account is enabled",
                  "type": "boolean"
                },
                "name": {
                  "description": "Manager name",
                  "type": "string"
                },
                "notes": {
                  "description": "Notes about the manager",
                  "type": "string"
                },
                "password": {
                  "description": "Login password",
                  "type": "string"
                },
                "position": {
                  "description": "Manager position",
                  "type": "string"
                },
                "publisher_access": {
                  "description": "Publisher access level",
                  "enum": [
                    "none",
                    "specific",
                    "all"
                  ],
                  "type": "string"
                },
                "publisher_access_list": {
                  "description": "Publisher IDs for specific access",
                  "items": {
                    "type": "number"
                  },
                  "type": "array"
                },
                "statistics_access": {
                  "description": "Statistics access level",
                  "enum": [
                    "none",
                    "specific",
                    "all"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_manager",
            "description": "Delete a manager",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Manager ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_roles",
            "description": "List all roles in your AdButler account",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_role",
            "description": "Get details of a specific role by ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Role ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_role",
            "description": "Create a new role with permission settings",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "can_assign_campaigns_directly": {
                  "description": "Can assign campaigns directly",
                  "type": "boolean"
                },
                "can_manage_admin_api_access": {
                  "description": "Can manage API keys",
                  "type": "boolean"
                },
                "can_manage_bidders": {
                  "description": "Can manage bidders",
                  "type": "boolean"
                },
                "can_manage_billing": {
                  "description": "Can manage billing",
                  "type": "boolean"
                },
                "can_manage_contracts": {
                  "description": "Can manage contracts",
                  "type": "boolean"
                },
                "can_manage_data_keys": {
                  "description": "Can manage data keys",
                  "type": "boolean"
                },
                "can_manage_links": {
                  "description": "Can manage tracking links",
                  "type": "boolean"
                },
                "can_manage_media": {
                  "description": "Can manage creatives and media groups",
                  "type": "boolean"
                },
                "can_manage_native_ad_templates": {
                  "description": "Can manage native templates",
                  "type": "boolean"
                },
                "can_manage_product_db": {
                  "description": "Can manage product catalogs",
                  "type": "boolean"
                },
                "can_manage_programmatic": {
                  "description": "Can manage programmatic",
                  "type": "boolean"
                },
                "can_manage_self_serve": {
                  "description": "Can manage Self-Serve",
                  "type": "boolean"
                },
                "can_manage_targets": {
                  "description": "Can manage targets",
                  "type": "boolean"
                },
                "can_manage_tickets": {
                  "description": "Can manage tickets",
                  "type": "boolean"
                },
                "can_manage_users": {
                  "description": "Can manage users",
                  "type": "boolean"
                },
                "is_default_role": {
                  "description": "Auto-assign this role to new users",
                  "type": "boolean"
                },
                "name": {
                  "description": "Role name",
                  "type": "string"
                },
                "publisher_access": {
                  "description": "Publisher access level",
                  "enum": [
                    "none",
                    "specific",
                    "all"
                  ],
                  "type": "string"
                },
                "publisher_access_list": {
                  "description": "Publisher IDs for specific access",
                  "items": {
                    "type": "number"
                  },
                  "type": "array"
                },
                "statistics_access": {
                  "description": "Statistics access level",
                  "enum": [
                    "none",
                    "specific",
                    "all"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_role",
            "description": "Update an existing role",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "can_assign_campaigns_directly": {
                  "description": "Can assign campaigns directly",
                  "type": "boolean"
                },
                "can_manage_admin_api_access": {
                  "description": "Can manage API keys",
                  "type": "boolean"
                },
                "can_manage_bidders": {
                  "description": "Can manage bidders",
                  "type": "boolean"
                },
                "can_manage_billing": {
                  "description": "Can manage billing",
                  "type": "boolean"
                },
                "can_manage_contracts": {
                  "description": "Can manage contracts",
                  "type": "boolean"
                },
                "can_manage_data_keys": {
                  "description": "Can manage data keys",
                  "type": "boolean"
                },
                "can_manage_links": {
                  "description": "Can manage tracking links",
                  "type": "boolean"
                },
                "can_manage_media": {
                  "description": "Can manage creatives",
                  "type": "boolean"
                },
                "can_manage_native_ad_templates": {
                  "description": "Can manage native templates",
                  "type": "boolean"
                },
                "can_manage_product_db": {
                  "description": "Can manage product catalogs",
                  "type": "boolean"
                },
                "can_manage_programmatic": {
                  "description": "Can manage programmatic",
                  "type": "boolean"
                },
                "can_manage_self_serve": {
                  "description": "Can manage Self-Serve",
                  "type": "boolean"
                },
                "can_manage_targets": {
                  "description": "Can manage targets",
                  "type": "boolean"
                },
                "can_manage_tickets": {
                  "description": "Can manage tickets",
                  "type": "boolean"
                },
                "can_manage_users": {
                  "description": "Can manage users",
                  "type": "boolean"
                },
                "id": {
                  "description": "Role ID",
                  "type": "number"
                },
                "is_default_role": {
                  "description": "Auto-assign to new users",
                  "type": "boolean"
                },
                "name": {
                  "description": "Role name",
                  "type": "string"
                },
                "publisher_access": {
                  "description": "Publisher access level",
                  "enum": [
                    "none",
                    "specific",
                    "all"
                  ],
                  "type": "string"
                },
                "publisher_access_list": {
                  "description": "Publisher IDs for specific access",
                  "items": {
                    "type": "number"
                  },
                  "type": "array"
                },
                "statistics_access": {
                  "description": "Statistics access level",
                  "enum": [
                    "none",
                    "specific",
                    "all"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_role",
            "description": "Delete a role",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Role ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_contacts",
            "description": "List all contacts in your AdButler account",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_contact",
            "description": "Get details of a specific contact by ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Contact ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_contact",
            "description": "Create a new contact",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "email": {
                  "description": "Contact email address (must be unique)",
                  "type": "string"
                },
                "name": {
                  "description": "Contact name (full name recommended)",
                  "type": "string"
                },
                "notes": {
                  "description": "Additional notes about the contact",
                  "type": "string"
                }
              },
              "required": [
                "name",
                "email"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_contact",
            "description": "Update an existing contact",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "email": {
                  "description": "Contact email address",
                  "type": "string"
                },
                "id": {
                  "description": "Contact ID",
                  "type": "number"
                },
                "name": {
                  "description": "Contact name",
                  "type": "string"
                },
                "notes": {
                  "description": "Additional notes",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_contact",
            "description": "Delete a contact",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Contact ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_contact_report_schedules",
            "description": "List report schedules for a contact",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Contact ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_demand_sources",
            "description": "List all demand sources in your AdButler account",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_demand_source",
            "description": "Get details of a specific demand source by ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Demand source ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_demand_source",
            "description": "Create a new demand source",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "name": {
                  "description": "Demand source name",
                  "type": "string"
                },
                "network": {
                  "description": "Network type: 'adview', 'aerserv', 'inmobi', 'inneractive', 'loopme', 'mobilefuse', 'onebyaol', 'pubmatic', 'pubnative', 'smaato', 'startapp', 'tappx', 'consumable', 'bidphysics', or 'openrtb'",
                  "type": "string"
                },
                "spend_limit": {
                  "description": "Spend limit amount",
                  "type": "number"
                },
                "spend_limit_end": {
                  "description": "Spend limit end date (ISO-8601)",
                  "type": "string"
                },
                "spend_limit_period": {
                  "description": "Spend limit reset interval",
                  "enum": [
                    "once",
                    "weekly",
                    "biweekly",
                    "monthly",
                    "quarterly"
                  ],
                  "type": "string"
                },
                "spend_limit_start": {
                  "description": "Spend limit start date (ISO-8601)",
                  "type": "string"
                },
                "status": {
                  "description": "Whether to send bid requests (default: active)",
                  "enum": [
                    "active",
                    "inactive"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "name",
                "network"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_demand_source",
            "description": "Update an existing demand source",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Demand source ID",
                  "type": "number"
                },
                "name": {
                  "description": "Demand source name",
                  "type": "string"
                },
                "spend_limit": {
                  "description": "Spend limit amount",
                  "type": "number"
                },
                "spend_limit_end": {
                  "description": "Spend limit end date (ISO-8601)",
                  "type": "string"
                },
                "spend_limit_period": {
                  "description": "Spend limit reset interval",
                  "enum": [
                    "once",
                    "weekly",
                    "biweekly",
                    "monthly",
                    "quarterly"
                  ],
                  "type": "string"
                },
                "spend_limit_start": {
                  "description": "Spend limit start date (ISO-8601)",
                  "type": "string"
                },
                "status": {
                  "description": "Whether to send bid requests",
                  "enum": [
                    "active",
                    "inactive"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_demand_source",
            "description": "Delete a demand source",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Demand source ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_demand_endpoints",
            "description": "List all demand endpoints in your AdButler account",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_demand_endpoint",
            "description": "Get details of a specific demand endpoint by ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Demand endpoint ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_demand_endpoint",
            "description": "Create a new demand endpoint",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "allowed_sizes": {
                  "description": "Allowed zone sizes (e.g. [\"300x250\", \"728x90\"])",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "bid_floor": {
                  "description": "Default CPM bid floor",
                  "type": "number"
                },
                "default_parameters": {
                  "additionalProperties": {},
                  "description": "Default parameters for the endpoint (e.g. { url: \"https://...\" })",
                  "type": "object"
                },
                "demand_source": {
                  "description": "Demand Source ID this endpoint belongs to",
                  "type": "number"
                },
                "filter_type": {
                  "description": "Zone filtering type",
                  "enum": [
                    "all",
                    "whitelist",
                    "blacklist"
                  ],
                  "type": "string"
                },
                "filtered_vast_zones": {
                  "description": "VAST zone IDs for the filter list",
                  "items": {
                    "type": "number"
                  },
                  "type": "array"
                },
                "filtered_zones": {
                  "description": "Zone IDs for the filter list",
                  "items": {
                    "type": "number"
                  },
                  "type": "array"
                },
                "geo_target": {
                  "description": "Geo target ID for geographic targeting",
                  "type": "number"
                },
                "markup_percent": {
                  "description": "Markup percent applied to zone bid floor",
                  "type": "number"
                },
                "name": {
                  "description": "Demand endpoint name",
                  "type": "string"
                },
                "native_json_encoded": {
                  "description": "Whether native JSON should be encoded",
                  "type": "boolean"
                },
                "priority": {
                  "description": "Serving priority",
                  "enum": [
                    "sponsorship",
                    "standard",
                    "network",
                    "bulk",
                    "house"
                  ],
                  "type": "string"
                },
                "revenue_share": {
                  "description": "Revenue share percentage paid to publisher",
                  "type": "number"
                },
                "status": {
                  "description": "Whether to send bid requests (default: active)",
                  "enum": [
                    "active",
                    "inactive"
                  ],
                  "type": "string"
                },
                "supported_formats": {
                  "description": "Supported ad formats: \"display\", \"native\", \"video\"",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "required": [
                "name",
                "demand_source",
                "default_parameters",
                "supported_formats"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_demand_endpoint",
            "description": "Update an existing demand endpoint",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "allowed_sizes": {
                  "description": "Allowed zone sizes",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "bid_floor": {
                  "description": "Default CPM bid floor",
                  "type": "number"
                },
                "default_parameters": {
                  "additionalProperties": {},
                  "description": "Default parameters",
                  "type": "object"
                },
                "demand_source": {
                  "description": "Demand Source ID",
                  "type": "number"
                },
                "filter_type": {
                  "description": "Zone filtering type",
                  "enum": [
                    "all",
                    "whitelist",
                    "blacklist"
                  ],
                  "type": "string"
                },
                "filtered_vast_zones": {
                  "description": "VAST zone IDs for filter list",
                  "items": {
                    "type": "number"
                  },
                  "type": "array"
                },
                "filtered_zones": {
                  "description": "Zone IDs for filter list",
                  "items": {
                    "type": "number"
                  },
                  "type": "array"
                },
                "geo_target": {
                  "description": "Geo target ID",
                  "type": "number"
                },
                "id": {
                  "description": "Demand endpoint ID",
                  "type": "number"
                },
                "markup_percent": {
                  "description": "Markup percent",
                  "type": "number"
                },
                "name": {
                  "description": "Demand endpoint name",
                  "type": "string"
                },
                "native_json_encoded": {
                  "description": "Whether native JSON should be encoded",
                  "type": "boolean"
                },
                "priority": {
                  "description": "Serving priority",
                  "enum": [
                    "sponsorship",
                    "standard",
                    "network",
                    "bulk",
                    "house"
                  ],
                  "type": "string"
                },
                "revenue_share": {
                  "description": "Revenue share percentage",
                  "type": "number"
                },
                "status": {
                  "description": "Whether to send bid requests",
                  "enum": [
                    "active",
                    "inactive"
                  ],
                  "type": "string"
                },
                "supported_formats": {
                  "description": "Supported ad formats",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_demand_endpoint",
            "description": "Delete a demand endpoint",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Demand endpoint ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_pmp_deals",
            "description": "List all PMP deals in your AdButler account",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_pmp_deal",
            "description": "Get details of a specific PMP deal by ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "PMP deal ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_pmp_deal",
            "description": "Create a new PMP deal",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "audience_target": {
                  "description": "Audience target ID (null = no targeting)",
                  "type": "number"
                },
                "bid_floor": {
                  "description": "Bid floor for this deal",
                  "type": "number"
                },
                "geo_target": {
                  "description": "Geo target ID (0 = no targeting)",
                  "type": "number"
                },
                "name": {
                  "description": "PMP deal name",
                  "type": "string"
                },
                "whitelist_seats": {
                  "description": "Seat IDs with access to this deal",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "update_pmp_deal",
            "description": "Update an existing PMP deal",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "audience_target": {
                  "description": "Audience target ID",
                  "type": "number"
                },
                "bid_floor": {
                  "description": "Bid floor",
                  "type": "number"
                },
                "geo_target": {
                  "description": "Geo target ID",
                  "type": "number"
                },
                "id": {
                  "description": "PMP deal ID",
                  "type": "number"
                },
                "name": {
                  "description": "PMP deal name",
                  "type": "string"
                },
                "whitelist_seats": {
                  "description": "Seat IDs with access",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_pmp_deal",
            "description": "Delete a PMP deal",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "PMP deal ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_ortb_native_templates",
            "description": "List all OpenRTB native templates in your AdButler account",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_ortb_native_template",
            "description": "Get details of a specific OpenRTB native template by ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_ortb_native_template",
            "description": "Create a new OpenRTB native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "html_template": {
                  "description": "HTML template for rendering the native ad (e.g. \"\u003cdiv\u003e{{title}}\u003c/div\u003e\")",
                  "type": "string"
                },
                "name": {
                  "description": "ORTB native template name",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "update_ortb_native_template",
            "description": "Update an existing OpenRTB native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "html_template": {
                  "description": "HTML template for rendering the native ad",
                  "type": "string"
                },
                "id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                },
                "name": {
                  "description": "ORTB native template name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_ortb_native_template",
            "description": "Delete an OpenRTB native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_user_dbs",
            "description": "List all user databases in your AdButler account",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_user_db",
            "description": "Get details of a specific user database by ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "User database ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_user_db",
            "description": "Create a new user database",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id_field_name": {
                  "description": "Name of the field to use as primary user identifier",
                  "type": "string"
                },
                "name": {
                  "description": "User database name",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "list_user_attributes",
            "description": "List all user attributes in a user database",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                },
                "user_db_id": {
                  "description": "User database ID",
                  "type": "number"
                }
              },
              "required": [
                "user_db_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_user_attribute",
            "description": "Get details of a specific user attribute in a user database",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "User attribute ID",
                  "type": "number"
                },
                "user_db_id": {
                  "description": "User database ID",
                  "type": "number"
                }
              },
              "required": [
                "user_db_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_user_attribute",
            "description": "Create a new user attribute in a user database",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Field name in the user data (e.g. \"signup_datetime\")",
                  "type": "string"
                },
                "label": {
                  "description": "Descriptive label for the field",
                  "type": "string"
                },
                "type": {
                  "description": "Data type of the field",
                  "enum": [
                    "number",
                    "phone_number",
                    "email",
                    "text",
                    "date_time",
                    "timestamp"
                  ],
                  "type": "string"
                },
                "user_db_id": {
                  "description": "User database ID",
                  "type": "number"
                }
              },
              "required": [
                "user_db_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_user_attribute",
            "description": "Update an existing user attribute in a user database",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "User attribute ID",
                  "type": "number"
                },
                "label": {
                  "description": "Descriptive label for the field",
                  "type": "string"
                },
                "type": {
                  "description": "Data type of the field",
                  "enum": [
                    "number",
                    "phone_number",
                    "email",
                    "text",
                    "date_time",
                    "timestamp"
                  ],
                  "type": "string"
                },
                "user_db_id": {
                  "description": "User database ID",
                  "type": "number"
                }
              },
              "required": [
                "user_db_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_user_attribute",
            "description": "Delete a user attribute from a user database",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "User attribute ID",
                  "type": "number"
                },
                "user_db_id": {
                  "description": "User database ID",
                  "type": "number"
                }
              },
              "required": [
                "user_db_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_audiences",
            "description": "List all audiences in a user database",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                },
                "user_db_id": {
                  "description": "User database ID",
                  "type": "number"
                }
              },
              "required": [
                "user_db_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_audience",
            "description": "Get details of a specific audience in a user database",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Audience ID",
                  "type": "number"
                },
                "user_db_id": {
                  "description": "User database ID",
                  "type": "number"
                }
              },
              "required": [
                "user_db_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_audience",
            "description": "Create a new audience in a user database",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "additionalProperties": false,
                    "properties": {
                      "operand": {
                        "description": "Value to compare against",
                        "type": "string"
                      },
                      "operator": {
                        "description": "Comparison operator (e.g. \"=\", \"\u003e=\", \"\u003c=\", \"!=\")",
                        "type": "string"
                      }
                    },
                    "required": [
                      "operator",
                      "operand"
                    ],
                    "type": "object"
                  },
                  "description": "Attribute targets defining the audience (e.g. { \"gender\": { \"operator\": \"=\", \"operand\": \"male\" } })",
                  "type": "object"
                },
                "name": {
                  "description": "Audience name",
                  "type": "string"
                },
                "user_db_id": {
                  "description": "User database ID",
                  "type": "number"
                }
              },
              "required": [
                "user_db_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_audience",
            "description": "Update an existing audience in a user database",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "attributes": {
                  "additionalProperties": {
                    "additionalProperties": false,
                    "properties": {
                      "operand": {
                        "description": "Value to compare against",
                        "type": "string"
                      },
                      "operator": {
                        "description": "Comparison operator",
                        "type": "string"
                      }
                    },
                    "required": [
                      "operator",
                      "operand"
                    ],
                    "type": "object"
                  },
                  "description": "Attribute targets defining the audience",
                  "type": "object"
                },
                "id": {
                  "description": "Audience ID",
                  "type": "number"
                },
                "name": {
                  "description": "Audience name",
                  "type": "string"
                },
                "user_db_id": {
                  "description": "User database ID",
                  "type": "number"
                }
              },
              "required": [
                "user_db_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_audience",
            "description": "Delete an audience from a user database",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Audience ID",
                  "type": "number"
                },
                "user_db_id": {
                  "description": "User database ID",
                  "type": "number"
                }
              },
              "required": [
                "user_db_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_user",
            "description": "Get a single user from a user database",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "user_db_id": {
                  "description": "User database ID",
                  "type": "number"
                },
                "user_id": {
                  "description": "User ID",
                  "type": "string"
                }
              },
              "required": [
                "user_db_id",
                "user_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_user",
            "description": "Create a new user in a user database",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "attributes": {
                  "additionalProperties": {},
                  "description": "User attribute values",
                  "type": "object"
                },
                "user_db_id": {
                  "description": "User database ID",
                  "type": "number"
                },
                "user_id": {
                  "description": "User ID",
                  "type": "string"
                }
              },
              "required": [
                "user_db_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "bulk_upload_replace_user_db",
            "description": "Bulk upload to replace all user data in a user database",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "User database ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "add_user_list_attribute_values",
            "description": "Add values to a list attribute for a user",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "list_attribute_name": {
                  "description": "List attribute name",
                  "type": "string"
                },
                "user_db_id": {
                  "description": "User database ID",
                  "type": "number"
                },
                "user_id": {
                  "description": "User ID",
                  "type": "string"
                },
                "values": {
                  "description": "Values to add",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "required": [
                "user_db_id",
                "user_id",
                "list_attribute_name"
              ],
              "type": "object"
            }
          },
          {
            "name": "remove_user_list_attribute_values",
            "description": "Remove values from a list attribute for a user",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "list_attribute_name": {
                  "description": "List attribute name",
                  "type": "string"
                },
                "user_db_id": {
                  "description": "User database ID",
                  "type": "number"
                },
                "user_id": {
                  "description": "User ID",
                  "type": "string"
                },
                "values": {
                  "description": "Values to remove",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "required": [
                "user_db_id",
                "user_id",
                "list_attribute_name"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_data_lists",
            "description": "List all data lists in your AdButler account",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_data_list",
            "description": "Get details of a specific data list by ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Data list ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_data_list",
            "description": "Create a new data list",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "label": {
                  "description": "Data list label/name",
                  "type": "string"
                }
              },
              "required": [
                "label"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_data_list",
            "description": "Update an existing data list",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Data list ID",
                  "type": "number"
                },
                "label": {
                  "description": "Data list label/name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_data_list",
            "description": "Delete a data list",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Data list ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "bulk_upload_add_data_list",
            "description": "Bulk add entries to a data list",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "data": {
                  "description": "CSV data to add",
                  "type": "string"
                },
                "id": {
                  "description": "Data list ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "bulk_upload_remove_data_list",
            "description": "Bulk remove entries from a data list",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "data": {
                  "description": "CSV data to remove",
                  "type": "string"
                },
                "id": {
                  "description": "Data list ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "bulk_upload_replace_data_list",
            "description": "Bulk replace all entries in a data list",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "data": {
                  "description": "CSV data to replace list with",
                  "type": "string"
                },
                "id": {
                  "description": "Data list ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_beacon_signing_keys",
            "description": "List all beacon signing keys in your AdButler account",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_beacon_signing_key",
            "description": "Get details of a specific beacon signing key by ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Beacon signing key ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_beacon_signing_key",
            "description": "Create a new beacon signing key",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "key_name": {
                  "description": "Beacon signing key name",
                  "type": "string"
                }
              },
              "required": [
                "key_name"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_beacon_signing_key",
            "description": "Update an existing beacon signing key",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Beacon signing key ID",
                  "type": "number"
                },
                "key_name": {
                  "description": "Beacon signing key name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_beacon_signing_key",
            "description": "Delete a beacon signing key",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Beacon signing key ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_trusted_redirect_domains",
            "description": "List all trusted redirect domains in your AdButler account",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_trusted_redirect_domain",
            "description": "Get details of a specific trusted redirect domain by ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Trusted redirect domain ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_trusted_redirect_domain",
            "description": "Create a new trusted redirect domain",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "domain": {
                  "description": "Trusted redirect domain (e.g. example.com)",
                  "type": "string"
                }
              },
              "required": [
                "domain"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_trusted_redirect_domain",
            "description": "Update an existing trusted redirect domain",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "domain": {
                  "description": "Trusted redirect domain (e.g. example.com)",
                  "type": "string"
                },
                "id": {
                  "description": "Trusted redirect domain ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_trusted_redirect_domain",
            "description": "Delete a trusted redirect domain",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Trusted redirect domain ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "validate_beacon_signing_key",
            "description": "Validate a beacon signing key",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "key": {
                  "description": "Beacon signing key to validate",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "draft_list_campaigns",
            "description": "List all draft standard campaigns",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "draft_get_campaign",
            "description": "Get details of a specific draft standard campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_create_campaign",
            "description": "Create a new draft standard campaign. Fields go inside a \"draft\" object wrapper.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "draft": {
                  "additionalProperties": {},
                  "description": "Object containing standard campaign fields (name, advertiser, etc.)",
                  "type": "object"
                }
              },
              "required": [
                "draft"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_update_campaign",
            "description": "Update an existing draft standard campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "draft": {
                  "additionalProperties": {},
                  "description": "Object containing standard campaign fields to update",
                  "type": "object"
                },
                "id": {
                  "description": "Draft campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_delete_campaign",
            "description": "Delete a draft standard campaign",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_list_ad_items",
            "description": "List all draft ad items across all types",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "draft_get_ad_item",
            "description": "Get a draft ad item of any type by ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_list_image_ad_items",
            "description": "List all draft image ad items",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "draft_get_image_ad_item",
            "description": "Get details of a specific draft image ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_create_image_ad_item",
            "description": "Create a new draft image ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "campaign_draft_id": {
                  "description": "Draft campaign ID this ad item belongs to",
                  "type": "number"
                },
                "draft": {
                  "additionalProperties": {},
                  "description": "Object containing image ad item fields (name required)",
                  "type": "object"
                }
              },
              "required": [
                "campaign_draft_id",
                "draft"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_update_image_ad_item",
            "description": "Update an existing draft image ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "draft": {
                  "additionalProperties": {},
                  "description": "Object containing image ad item fields to update",
                  "type": "object"
                },
                "id": {
                  "description": "Draft ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_delete_image_ad_item",
            "description": "Delete a draft image ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_list_rich_media_ad_items",
            "description": "List all draft rich media ad items",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "draft_get_rich_media_ad_item",
            "description": "Get details of a specific draft rich media ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_create_rich_media_ad_item",
            "description": "Create a new draft rich media ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "campaign_draft_id": {
                  "description": "Draft campaign ID this ad item belongs to",
                  "type": "number"
                },
                "draft": {
                  "additionalProperties": {},
                  "description": "Object containing rich media ad item fields (name required)",
                  "type": "object"
                }
              },
              "required": [
                "campaign_draft_id",
                "draft"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_update_rich_media_ad_item",
            "description": "Update an existing draft rich media ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "draft": {
                  "additionalProperties": {},
                  "description": "Object containing rich media ad item fields to update",
                  "type": "object"
                },
                "id": {
                  "description": "Draft ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_delete_rich_media_ad_item",
            "description": "Delete a draft rich media ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_list_custom_html_ad_items",
            "description": "List all draft custom HTML ad items",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "draft_get_custom_html_ad_item",
            "description": "Get details of a specific draft custom HTML ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_create_custom_html_ad_item",
            "description": "Create a new draft custom HTML ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "campaign_draft_id": {
                  "description": "Draft campaign ID this ad item belongs to",
                  "type": "number"
                },
                "draft": {
                  "additionalProperties": {},
                  "description": "Object containing custom HTML ad item fields (name, custom_html required)",
                  "type": "object"
                }
              },
              "required": [
                "campaign_draft_id",
                "draft"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_update_custom_html_ad_item",
            "description": "Update an existing draft custom HTML ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "draft": {
                  "additionalProperties": {},
                  "description": "Object containing custom HTML ad item fields to update",
                  "type": "object"
                },
                "id": {
                  "description": "Draft ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_delete_custom_html_ad_item",
            "description": "Delete a draft custom HTML ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_list_native_ad_items",
            "description": "List all draft native ad items",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "draft_get_native_ad_item",
            "description": "Get details of a specific draft native ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_create_native_ad_item",
            "description": "Create a new draft native ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "campaign_draft_id": {
                  "description": "Draft campaign ID this ad item belongs to",
                  "type": "number"
                },
                "draft": {
                  "additionalProperties": {},
                  "description": "Object containing native ad item fields (name required, plus template, variables, etc.)",
                  "type": "object"
                }
              },
              "required": [
                "campaign_draft_id",
                "draft"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_update_native_ad_item",
            "description": "Update an existing draft native ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "draft": {
                  "additionalProperties": {},
                  "description": "Object containing native ad item fields to update",
                  "type": "object"
                },
                "id": {
                  "description": "Draft ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_delete_native_ad_item",
            "description": "Delete a draft native ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_list_catalog_ad_items",
            "description": "List all draft catalog ad items",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "draft_get_catalog_ad_item",
            "description": "Get details of a specific draft catalog ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_create_catalog_ad_item",
            "description": "Create a new draft catalog ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "campaign_draft_id": {
                  "description": "Draft campaign ID this ad item belongs to",
                  "type": "number"
                },
                "draft": {
                  "additionalProperties": {},
                  "description": "Object containing catalog ad item fields (name required)",
                  "type": "object"
                }
              },
              "required": [
                "campaign_draft_id",
                "draft"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_update_catalog_ad_item",
            "description": "Update an existing draft catalog ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "draft": {
                  "additionalProperties": {},
                  "description": "Object containing catalog ad item fields to update",
                  "type": "object"
                },
                "id": {
                  "description": "Draft ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_delete_catalog_ad_item",
            "description": "Delete a draft catalog ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_list_campaign_assignments",
            "description": "List all draft campaign assignments",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "draft_get_campaign_assignment",
            "description": "Get details of a specific draft campaign assignment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft campaign assignment ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_create_campaign_assignment",
            "description": "Create a new draft campaign assignment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "ad_item_draft_id": {
                  "description": "Draft ad item ID this assignment references",
                  "type": "number"
                },
                "campaign_draft_id": {
                  "description": "Draft campaign ID this assignment belongs to",
                  "type": "number"
                },
                "draft": {
                  "additionalProperties": {},
                  "description": "Object containing campaign assignment fields (campaign and advertisement auto-resolved)",
                  "type": "object"
                }
              },
              "required": [
                "campaign_draft_id",
                "ad_item_draft_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_update_campaign_assignment",
            "description": "Update an existing draft campaign assignment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "draft": {
                  "additionalProperties": {},
                  "description": "Object containing campaign assignment fields to update",
                  "type": "object"
                },
                "id": {
                  "description": "Draft campaign assignment ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_delete_campaign_assignment",
            "description": "Delete a draft campaign assignment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft campaign assignment ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_list_placements",
            "description": "List all draft placements",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "draft_get_placement",
            "description": "Get details of a specific draft placement",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft placement ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_create_placement",
            "description": "Create a new draft placement",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "campaign_draft_id": {
                  "description": "Draft campaign ID this placement belongs to",
                  "type": "number"
                },
                "draft": {
                  "additionalProperties": {},
                  "description": "Object containing placement fields (zone, advertisement, etc.)",
                  "type": "object"
                }
              },
              "required": [
                "campaign_draft_id",
                "draft"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_update_placement",
            "description": "Update an existing draft placement",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "draft": {
                  "additionalProperties": {},
                  "description": "Object containing placement fields to update",
                  "type": "object"
                },
                "id": {
                  "description": "Draft placement ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_delete_placement",
            "description": "Delete a draft placement",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft placement ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_list_schedules",
            "description": "List all draft schedules",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "draft_get_schedule",
            "description": "Get details of a specific draft schedule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft schedule ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_create_schedule",
            "description": "Create a new draft schedule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "campaign_draft_id": {
                  "description": "Draft campaign ID this schedule belongs to",
                  "type": "number"
                },
                "draft": {
                  "additionalProperties": {},
                  "description": "Object containing schedule fields",
                  "type": "object"
                }
              },
              "required": [
                "campaign_draft_id",
                "draft"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_update_schedule",
            "description": "Update an existing draft schedule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "draft": {
                  "additionalProperties": {},
                  "description": "Object containing schedule fields to update",
                  "type": "object"
                },
                "id": {
                  "description": "Draft schedule ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_delete_schedule",
            "description": "Delete a draft schedule",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft schedule ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "draft_save_campaign",
            "description": "Save/publish a draft campaign (converts draft to live campaign)",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Draft campaign ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_product_catalogs",
            "description": "List all product catalogs for a publisher",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                },
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                }
              },
              "required": [
                "publisher_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_product_catalog",
            "description": "Get details of a specific product catalog",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "catalog_id": {
                  "description": "Catalog ID",
                  "type": "number"
                },
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                }
              },
              "required": [
                "publisher_id",
                "catalog_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_product_catalog",
            "description": "Create a new product catalog for a publisher",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "name": {
                  "description": "Catalog name",
                  "type": "string"
                },
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                }
              },
              "required": [
                "publisher_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_product_catalog",
            "description": "Update an existing product catalog",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "catalog_id": {
                  "description": "Catalog ID",
                  "type": "number"
                },
                "name": {
                  "description": "Catalog name",
                  "type": "string"
                },
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                }
              },
              "required": [
                "publisher_id",
                "catalog_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "search_product_catalog_items",
            "description": "Search for items in a product catalog",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "catalog_id": {
                  "description": "Catalog ID",
                  "type": "number"
                },
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "query": {
                  "description": "Search query string",
                  "type": "string"
                }
              },
              "required": [
                "publisher_id",
                "catalog_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_product_catalog_item",
            "description": "Get details of a specific product catalog item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "catalog_id": {
                  "description": "Catalog ID",
                  "type": "number"
                },
                "identifier": {
                  "description": "Unique identifier for the catalog item",
                  "type": "string"
                },
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                }
              },
              "required": [
                "publisher_id",
                "catalog_id",
                "identifier"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_product_catalog_item",
            "description": "Create a new item in a product catalog",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "catalog_id": {
                  "description": "Catalog ID",
                  "type": "number"
                },
                "category": {
                  "description": "Item category",
                  "type": "string"
                },
                "description": {
                  "description": "Item description",
                  "type": "string"
                },
                "identifier": {
                  "description": "Unique identifier for the catalog item",
                  "type": "string"
                },
                "image_url": {
                  "description": "Item image URL",
                  "type": "string"
                },
                "name": {
                  "description": "Item name",
                  "type": "string"
                },
                "price": {
                  "description": "Item price",
                  "type": "string"
                },
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "url": {
                  "description": "Item URL",
                  "type": "string"
                }
              },
              "required": [
                "publisher_id",
                "catalog_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_product_catalog_item",
            "description": "Update an existing product catalog item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "catalog_id": {
                  "description": "Catalog ID",
                  "type": "number"
                },
                "category": {
                  "description": "Item category",
                  "type": "string"
                },
                "description": {
                  "description": "Item description",
                  "type": "string"
                },
                "identifier": {
                  "description": "Unique identifier for the catalog item",
                  "type": "string"
                },
                "image_url": {
                  "description": "Item image URL",
                  "type": "string"
                },
                "name": {
                  "description": "Item name",
                  "type": "string"
                },
                "price": {
                  "description": "Item price",
                  "type": "string"
                },
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "url": {
                  "description": "Item URL",
                  "type": "string"
                }
              },
              "required": [
                "publisher_id",
                "catalog_id",
                "identifier"
              ],
              "type": "object"
            }
          },
          {
            "name": "bulk_upload_product_catalog",
            "description": "Bulk upload items to a product catalog",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "catalog_id": {
                  "description": "Catalog ID",
                  "type": "number"
                },
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                }
              },
              "required": [
                "publisher_id",
                "catalog_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_product_sources",
            "description": "List all product sources for a publisher",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                },
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                }
              },
              "required": [
                "publisher_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_product_source",
            "description": "Get details of a specific product source",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "source_id": {
                  "description": "Source ID",
                  "type": "number"
                }
              },
              "required": [
                "publisher_id",
                "source_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_product_source",
            "description": "Create a new product source for a publisher",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "name": {
                  "description": "Source name",
                  "type": "string"
                },
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "type": {
                  "description": "Source type",
                  "type": "string"
                },
                "url": {
                  "description": "Source URL",
                  "type": "string"
                }
              },
              "required": [
                "publisher_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_product_source",
            "description": "Update an existing product source",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "name": {
                  "description": "Source name",
                  "type": "string"
                },
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "source_id": {
                  "description": "Source ID",
                  "type": "number"
                },
                "type": {
                  "description": "Source type",
                  "type": "string"
                },
                "url": {
                  "description": "Source URL",
                  "type": "string"
                }
              },
              "required": [
                "publisher_id",
                "source_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_product_source",
            "description": "Delete a product source",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "source_id": {
                  "description": "Source ID",
                  "type": "number"
                }
              },
              "required": [
                "publisher_id",
                "source_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "bulk_create_product_sources",
            "description": "Bulk create product sources for a publisher",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "sources": {
                  "description": "Array of source objects to create",
                  "items": {
                    "additionalProperties": {},
                    "type": "object"
                  },
                  "type": "array"
                }
              },
              "required": [
                "publisher_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_product_source_targets",
            "description": "List all product source targets for a publisher",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                },
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                }
              },
              "required": [
                "publisher_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_product_source_target",
            "description": "Get details of a specific product source target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "source_target_id": {
                  "description": "Source target ID",
                  "type": "number"
                }
              },
              "required": [
                "publisher_id",
                "source_target_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_product_source_target",
            "description": "Create a new product source target for a publisher",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "name": {
                  "description": "Source target name",
                  "type": "string"
                },
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "source_id": {
                  "description": "Source ID to target",
                  "type": "number"
                }
              },
              "required": [
                "publisher_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_product_source_target",
            "description": "Update an existing product source target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "name": {
                  "description": "Source target name",
                  "type": "string"
                },
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "source_id": {
                  "description": "Source ID to target",
                  "type": "number"
                },
                "source_target_id": {
                  "description": "Source target ID",
                  "type": "number"
                }
              },
              "required": [
                "publisher_id",
                "source_target_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_product_source_target",
            "description": "Delete a product source target",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "publisher_id": {
                  "description": "Publisher ID",
                  "type": "number"
                },
                "source_target_id": {
                  "description": "Source target ID",
                  "type": "number"
                }
              },
              "required": [
                "publisher_id",
                "source_target_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_bidders",
            "description": "List all bidders in your AdButler account",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_bidder",
            "description": "Get details of a specific bidder by ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Bidder ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_bidder",
            "description": "Create a new bidder",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "bid_url": {
                  "description": "Bid endpoint URL",
                  "type": "string"
                },
                "name": {
                  "description": "Bidder name",
                  "type": "string"
                },
                "status": {
                  "description": "Bidder status",
                  "enum": [
                    "active",
                    "inactive"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_bidder",
            "description": "Update an existing bidder",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "bid_url": {
                  "description": "Bid endpoint URL",
                  "type": "string"
                },
                "id": {
                  "description": "Bidder ID",
                  "type": "number"
                },
                "name": {
                  "description": "Bidder name",
                  "type": "string"
                },
                "status": {
                  "description": "Bidder status",
                  "enum": [
                    "active",
                    "inactive"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_bidder",
            "description": "Delete a bidder",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Bidder ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_sftp_connections",
            "description": "List all SFTP connections in your AdButler account",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_sftp_connection",
            "description": "Get details of a specific SFTP connection by ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "SFTP connection ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_sftp_connection",
            "description": "Create a new SFTP connection",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "host": {
                  "description": "SFTP host",
                  "type": "string"
                },
                "name": {
                  "description": "Connection name",
                  "type": "string"
                },
                "password": {
                  "description": "SFTP password",
                  "type": "string"
                },
                "path": {
                  "description": "Remote path",
                  "type": "string"
                },
                "port": {
                  "description": "SFTP port",
                  "type": "number"
                },
                "username": {
                  "description": "SFTP username",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "update_sftp_connection",
            "description": "Update an existing SFTP connection",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "host": {
                  "description": "SFTP host",
                  "type": "string"
                },
                "id": {
                  "description": "SFTP connection ID",
                  "type": "number"
                },
                "name": {
                  "description": "Connection name",
                  "type": "string"
                },
                "password": {
                  "description": "SFTP password",
                  "type": "string"
                },
                "path": {
                  "description": "Remote path",
                  "type": "string"
                },
                "port": {
                  "description": "SFTP port",
                  "type": "number"
                },
                "username": {
                  "description": "SFTP username",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_sftp_connection",
            "description": "Delete an SFTP connection",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "SFTP connection ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "test_sftp_connection",
            "description": "Test an SFTP connection with the provided credentials",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "host": {
                  "description": "SFTP host",
                  "type": "string"
                },
                "password": {
                  "description": "SFTP password",
                  "type": "string"
                },
                "path": {
                  "description": "Remote path",
                  "type": "string"
                },
                "port": {
                  "description": "SFTP port",
                  "type": "number"
                },
                "username": {
                  "description": "SFTP username",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "list_event_log_upload_configs",
            "description": "List all event log upload configurations",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_event_log_upload_config",
            "description": "Get details of a specific event log upload configuration",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Upload configuration ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_event_log_upload_config",
            "description": "Create a new event log upload configuration",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "connection_id": {
                  "description": "SFTP connection ID to use for upload",
                  "type": "number"
                },
                "enabled": {
                  "description": "Whether the upload configuration is enabled",
                  "type": "boolean"
                },
                "format": {
                  "description": "Log file format",
                  "type": "string"
                },
                "frequency": {
                  "description": "Upload frequency (e.g. \"daily\", \"hourly\")",
                  "type": "string"
                },
                "name": {
                  "description": "Configuration name",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "update_event_log_upload_config",
            "description": "Update an existing event log upload configuration",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "connection_id": {
                  "description": "SFTP connection ID to use for upload",
                  "type": "number"
                },
                "enabled": {
                  "description": "Whether the upload configuration is enabled",
                  "type": "boolean"
                },
                "format": {
                  "description": "Log file format",
                  "type": "string"
                },
                "frequency": {
                  "description": "Upload frequency (e.g. \"daily\", \"hourly\")",
                  "type": "string"
                },
                "id": {
                  "description": "Upload configuration ID",
                  "type": "number"
                },
                "name": {
                  "description": "Configuration name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_event_log_upload_config",
            "description": "Delete an event log upload configuration",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Upload configuration ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_event_log_upload_logs",
            "description": "List all event log upload logs",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "get_event_log_upload_log",
            "description": "Get details of a specific event log upload log entry",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Upload log ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_list_ads",
            "description": "List all VAST 4.2 ad items",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_get_ad",
            "description": "Get a single VAST 4.2 ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_create_ad",
            "description": "Create a VAST 4.2 ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "Whether ad item is active",
                  "type": "boolean"
                },
                "location": {
                  "description": "VAST tag URL or media location",
                  "type": "string"
                },
                "name": {
                  "description": "Ad item name",
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_update_ad",
            "description": "Update a VAST 4.2 ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "Whether ad item is active",
                  "type": "boolean"
                },
                "id": {
                  "description": "VAST 4.2 ad item ID",
                  "type": "number"
                },
                "location": {
                  "description": "VAST tag URL or media location",
                  "type": "string"
                },
                "name": {
                  "description": "Ad item name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_delete_ad",
            "description": "Delete a VAST 4.2 ad item",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 ad item ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_list_creatives",
            "description": "List all VAST 4.2 creatives",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_get_creative",
            "description": "Get a single VAST 4.2 creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 creative ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_create_creative",
            "description": "Create a VAST 4.2 creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "description": {
                  "description": "Creative description",
                  "type": "string"
                },
                "name": {
                  "description": "Creative name",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_update_creative",
            "description": "Update a VAST 4.2 creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "description": {
                  "description": "Creative description",
                  "type": "string"
                },
                "id": {
                  "description": "VAST 4.2 creative ID",
                  "type": "number"
                },
                "name": {
                  "description": "Creative name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_delete_creative",
            "description": "Delete a VAST 4.2 creative",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 creative ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_list_linears",
            "description": "List all VAST 4.2 linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_get_linear",
            "description": "Get a single VAST 4.2 linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 linear media ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_create_linear",
            "description": "Create a VAST 4.2 linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "bitrate": {
                  "description": "Bitrate in kbps",
                  "type": "number"
                },
                "duration": {
                  "description": "Duration in seconds",
                  "type": "number"
                },
                "mime_type": {
                  "description": "MIME type (e.g. video/mp4)",
                  "type": "string"
                },
                "name": {
                  "description": "Linear media name",
                  "type": "string"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_update_linear",
            "description": "Update a VAST 4.2 linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "bitrate": {
                  "description": "Bitrate in kbps",
                  "type": "number"
                },
                "duration": {
                  "description": "Duration in seconds",
                  "type": "number"
                },
                "id": {
                  "description": "VAST 4.2 linear media ID",
                  "type": "number"
                },
                "mime_type": {
                  "description": "MIME type (e.g. video/mp4)",
                  "type": "string"
                },
                "name": {
                  "description": "Linear media name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_delete_linear",
            "description": "Delete a VAST 4.2 linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 linear media ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_list_non_linears",
            "description": "List all VAST 4.2 non-linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_get_non_linear",
            "description": "Get a single VAST 4.2 non-linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 non-linear media ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_create_non_linear",
            "description": "Create a VAST 4.2 non-linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "height": {
                  "description": "Height in pixels",
                  "type": "number"
                },
                "mime_type": {
                  "description": "MIME type",
                  "type": "string"
                },
                "name": {
                  "description": "Non-linear media name",
                  "type": "string"
                },
                "width": {
                  "description": "Width in pixels",
                  "type": "number"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_update_non_linear",
            "description": "Update a VAST 4.2 non-linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "height": {
                  "description": "Height in pixels",
                  "type": "number"
                },
                "id": {
                  "description": "VAST 4.2 non-linear media ID",
                  "type": "number"
                },
                "mime_type": {
                  "description": "MIME type",
                  "type": "string"
                },
                "name": {
                  "description": "Non-linear media name",
                  "type": "string"
                },
                "width": {
                  "description": "Width in pixels",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_delete_non_linear",
            "description": "Delete a VAST 4.2 non-linear media",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 non-linear media ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_list_companions",
            "description": "List all VAST 4.2 companions",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_get_companion",
            "description": "Get a single VAST 4.2 companion",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 companion ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_create_companion",
            "description": "Create a VAST 4.2 companion",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "height": {
                  "description": "Companion height in pixels",
                  "type": "number"
                },
                "name": {
                  "description": "Companion name",
                  "type": "string"
                },
                "width": {
                  "description": "Companion width in pixels",
                  "type": "number"
                }
              },
              "required": [
                "name"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_update_companion",
            "description": "Update a VAST 4.2 companion",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "height": {
                  "description": "Companion height in pixels",
                  "type": "number"
                },
                "id": {
                  "description": "VAST 4.2 companion ID",
                  "type": "number"
                },
                "name": {
                  "description": "Companion name",
                  "type": "string"
                },
                "width": {
                  "description": "Companion width in pixels",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_delete_companion",
            "description": "Delete a VAST 4.2 companion",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 companion ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_list_media_files",
            "description": "List all VAST 4.2 media files",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_get_media_file",
            "description": "Get a single VAST 4.2 media file",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 media file ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_create_media_file",
            "description": "Create a VAST 4.2 media file",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "bitrate": {
                  "description": "Bitrate in kbps",
                  "type": "number"
                },
                "height": {
                  "description": "Height in pixels",
                  "type": "number"
                },
                "mime_type": {
                  "description": "MIME type",
                  "type": "string"
                },
                "name": {
                  "description": "Media file name",
                  "type": "string"
                },
                "width": {
                  "description": "Width in pixels",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_update_media_file",
            "description": "Update a VAST 4.2 media file",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "bitrate": {
                  "description": "Bitrate in kbps",
                  "type": "number"
                },
                "height": {
                  "description": "Height in pixels",
                  "type": "number"
                },
                "id": {
                  "description": "VAST 4.2 media file ID",
                  "type": "number"
                },
                "mime_type": {
                  "description": "MIME type",
                  "type": "string"
                },
                "name": {
                  "description": "Media file name",
                  "type": "string"
                },
                "width": {
                  "description": "Width in pixels",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_delete_media_file",
            "description": "Delete a VAST 4.2 media file",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 media file ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_list_mezzanines",
            "description": "List all VAST 4.2 mezzanines",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_get_mezzanine",
            "description": "Get a single VAST 4.2 mezzanine",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 mezzanine ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_create_mezzanine",
            "description": "Create a VAST 4.2 mezzanine",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "mime_type": {
                  "description": "MIME type",
                  "type": "string"
                },
                "name": {
                  "description": "Mezzanine name",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_update_mezzanine",
            "description": "Update a VAST 4.2 mezzanine",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 mezzanine ID",
                  "type": "number"
                },
                "mime_type": {
                  "description": "MIME type",
                  "type": "string"
                },
                "name": {
                  "description": "Mezzanine name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_delete_mezzanine",
            "description": "Delete a VAST 4.2 mezzanine",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 mezzanine ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_list_resources",
            "description": "List all VAST 4.2 resources",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_get_resource",
            "description": "Get a single VAST 4.2 resource",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 resource ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_create_resource",
            "description": "Create a VAST 4.2 resource",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "name": {
                  "description": "Resource name",
                  "type": "string"
                },
                "type": {
                  "description": "Resource type",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_update_resource",
            "description": "Update a VAST 4.2 resource",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 resource ID",
                  "type": "number"
                },
                "name": {
                  "description": "Resource name",
                  "type": "string"
                },
                "type": {
                  "description": "Resource type",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_delete_resource",
            "description": "Delete a VAST 4.2 resource",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 resource ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_list_icons",
            "description": "List all VAST 4.2 icons",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_get_icon",
            "description": "Get a single VAST 4.2 icon",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 icon ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_create_icon",
            "description": "Create a VAST 4.2 icon",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "height": {
                  "description": "Icon height in pixels",
                  "type": "number"
                },
                "name": {
                  "description": "Icon name",
                  "type": "string"
                },
                "width": {
                  "description": "Icon width in pixels",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_update_icon",
            "description": "Update a VAST 4.2 icon",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "height": {
                  "description": "Icon height in pixels",
                  "type": "number"
                },
                "id": {
                  "description": "VAST 4.2 icon ID",
                  "type": "number"
                },
                "name": {
                  "description": "Icon name",
                  "type": "string"
                },
                "width": {
                  "description": "Icon width in pixels",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_delete_icon",
            "description": "Delete a VAST 4.2 icon",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 icon ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_list_icon_click_fallback_images",
            "description": "List all VAST 4.2 icon click fallback images",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_get_icon_click_fallback_image",
            "description": "Get a single VAST 4.2 icon click fallback image",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 icon click fallback image ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_create_icon_click_fallback_image",
            "description": "Create a VAST 4.2 icon click fallback image",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "height": {
                  "description": "Height in pixels",
                  "type": "number"
                },
                "name": {
                  "description": "Icon click fallback image name",
                  "type": "string"
                },
                "width": {
                  "description": "Width in pixels",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_update_icon_click_fallback_image",
            "description": "Update a VAST 4.2 icon click fallback image",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "height": {
                  "description": "Height in pixels",
                  "type": "number"
                },
                "id": {
                  "description": "VAST 4.2 icon click fallback image ID",
                  "type": "number"
                },
                "name": {
                  "description": "Icon click fallback image name",
                  "type": "string"
                },
                "width": {
                  "description": "Width in pixels",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_delete_icon_click_fallback_image",
            "description": "Delete a VAST 4.2 icon click fallback image",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 icon click fallback image ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_list_closed_caption_files",
            "description": "List all VAST 4.2 closed caption files",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_get_closed_caption_file",
            "description": "Get a single VAST 4.2 closed caption file",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 closed caption file ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_create_closed_caption_file",
            "description": "Create a VAST 4.2 closed caption file",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "language": {
                  "description": "Language code",
                  "type": "string"
                },
                "name": {
                  "description": "Closed caption file name",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_update_closed_caption_file",
            "description": "Update a VAST 4.2 closed caption file",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 closed caption file ID",
                  "type": "number"
                },
                "language": {
                  "description": "Language code",
                  "type": "string"
                },
                "name": {
                  "description": "Closed caption file name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_delete_closed_caption_file",
            "description": "Delete a VAST 4.2 closed caption file",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 closed caption file ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_list_interactive_creative_files",
            "description": "List all VAST 4.2 interactive creative files",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_get_interactive_creative_file",
            "description": "Get a single VAST 4.2 interactive creative file",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 interactive creative file ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_create_interactive_creative_file",
            "description": "Create a VAST 4.2 interactive creative file",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "mime_type": {
                  "description": "MIME type",
                  "type": "string"
                },
                "name": {
                  "description": "Interactive creative file name",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_update_interactive_creative_file",
            "description": "Update a VAST 4.2 interactive creative file",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 interactive creative file ID",
                  "type": "number"
                },
                "mime_type": {
                  "description": "MIME type",
                  "type": "string"
                },
                "name": {
                  "description": "Interactive creative file name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_delete_interactive_creative_file",
            "description": "Delete a VAST 4.2 interactive creative file",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 interactive creative file ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_list_universal_ad_ids",
            "description": "List all VAST 4.2 universal ad IDs",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_get_universal_ad_id",
            "description": "Get a single VAST 4.2 universal ad ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 universal ad ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_create_universal_ad_id",
            "description": "Create a VAST 4.2 universal ad ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id_registry": {
                  "description": "ID registry",
                  "type": "string"
                },
                "id_value": {
                  "description": "ID value",
                  "type": "string"
                },
                "name": {
                  "description": "Universal ad ID name",
                  "type": "string"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_update_universal_ad_id",
            "description": "Update a VAST 4.2 universal ad ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 universal ad ID",
                  "type": "number"
                },
                "id_registry": {
                  "description": "ID registry",
                  "type": "string"
                },
                "id_value": {
                  "description": "ID value",
                  "type": "string"
                },
                "name": {
                  "description": "Universal ad ID name",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_delete_universal_ad_id",
            "description": "Delete a VAST 4.2 universal ad ID",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 universal ad ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_list_placements",
            "description": "List all VAST 4.2 placements",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_get_placement",
            "description": "Get a single VAST 4.2 placement",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 placement ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_create_placement",
            "description": "Create a VAST 4.2 placement",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "Whether placement is active",
                  "type": "boolean"
                },
                "advertisement": {
                  "additionalProperties": false,
                  "description": "Advertisement object with id and type",
                  "properties": {
                    "id": {
                      "description": "VAST ad item or campaign ID",
                      "type": "number"
                    },
                    "type": {
                      "description": "Advertisement type",
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "type"
                  ],
                  "type": "object"
                },
                "channel": {
                  "description": "VAST channel ID",
                  "type": "number"
                },
                "priority": {
                  "description": "Priority level",
                  "type": "number"
                },
                "schedule": {
                  "description": "Schedule ID",
                  "type": "number"
                },
                "zone": {
                  "description": "VAST zone ID",
                  "type": "number"
                }
              },
              "required": [
                "advertisement"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_update_placement",
            "description": "Update a VAST 4.2 placement",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "Whether placement is active",
                  "type": "boolean"
                },
                "advertisement": {
                  "additionalProperties": false,
                  "description": "Advertisement object with id and type",
                  "properties": {
                    "id": {
                      "description": "VAST ad item or campaign ID",
                      "type": "number"
                    },
                    "type": {
                      "description": "Advertisement type",
                      "type": "string"
                    }
                  },
                  "required": [
                    "id",
                    "type"
                  ],
                  "type": "object"
                },
                "channel": {
                  "description": "VAST channel ID",
                  "type": "number"
                },
                "id": {
                  "description": "VAST 4.2 placement ID",
                  "type": "number"
                },
                "priority": {
                  "description": "Priority level",
                  "type": "number"
                },
                "schedule": {
                  "description": "Schedule ID",
                  "type": "number"
                },
                "zone": {
                  "description": "VAST zone ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_delete_placement",
            "description": "Delete a VAST 4.2 placement",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 placement ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_list_campaign_assignments",
            "description": "List all VAST 4.2 campaign assignments",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_get_campaign_assignment",
            "description": "Get a single VAST 4.2 campaign assignment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 campaign assignment ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_create_campaign_assignment",
            "description": "Create a VAST 4.2 campaign assignment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "Whether assignment is active",
                  "type": "boolean"
                },
                "ad_item": {
                  "description": "VAST ad item ID",
                  "type": "number"
                },
                "campaign": {
                  "description": "VAST campaign ID",
                  "type": "number"
                }
              },
              "type": "object"
            }
          },
          {
            "name": "vast42_update_campaign_assignment",
            "description": "Update a VAST 4.2 campaign assignment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "active": {
                  "description": "Whether assignment is active",
                  "type": "boolean"
                },
                "ad_item": {
                  "description": "VAST ad item ID",
                  "type": "number"
                },
                "campaign": {
                  "description": "VAST campaign ID",
                  "type": "number"
                },
                "id": {
                  "description": "VAST 4.2 campaign assignment ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "vast42_delete_campaign_assignment",
            "description": "Delete a VAST 4.2 campaign assignment",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "VAST 4.2 campaign assignment ID",
                  "type": "number"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_ortb_native_data_assets",
            "description": "List all data assets for an ORTB native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                },
                "template_id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                }
              },
              "required": [
                "template_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_ortb_native_data_asset",
            "description": "Get details of a specific data asset for an ORTB native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Data asset ID",
                  "type": "number"
                },
                "template_id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                }
              },
              "required": [
                "template_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_ortb_native_data_asset",
            "description": "Create a new data asset for an ORTB native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "len": {
                  "description": "Max length",
                  "type": "number"
                },
                "template_id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                },
                "type": {
                  "description": "Data asset type",
                  "type": "number"
                }
              },
              "required": [
                "template_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_ortb_native_data_asset",
            "description": "Update an existing data asset for an ORTB native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Data asset ID",
                  "type": "number"
                },
                "len": {
                  "description": "Max length",
                  "type": "number"
                },
                "template_id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                },
                "type": {
                  "description": "Data asset type",
                  "type": "number"
                }
              },
              "required": [
                "template_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_ortb_native_data_asset",
            "description": "Delete a data asset from an ORTB native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Data asset ID",
                  "type": "number"
                },
                "template_id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                }
              },
              "required": [
                "template_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_ortb_native_image_assets",
            "description": "List all image assets for an ORTB native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                },
                "template_id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                }
              },
              "required": [
                "template_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_ortb_native_image_asset",
            "description": "Get details of a specific image asset for an ORTB native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Image asset ID",
                  "type": "number"
                },
                "template_id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                }
              },
              "required": [
                "template_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_ortb_native_image_asset",
            "description": "Create a new image asset for an ORTB native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "h": {
                  "description": "Height",
                  "type": "number"
                },
                "hmin": {
                  "description": "Min height",
                  "type": "number"
                },
                "template_id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                },
                "type": {
                  "description": "Image asset type",
                  "type": "number"
                },
                "w": {
                  "description": "Width",
                  "type": "number"
                },
                "wmin": {
                  "description": "Min width",
                  "type": "number"
                }
              },
              "required": [
                "template_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_ortb_native_image_asset",
            "description": "Update an existing image asset for an ORTB native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "h": {
                  "description": "Height",
                  "type": "number"
                },
                "hmin": {
                  "description": "Min height",
                  "type": "number"
                },
                "id": {
                  "description": "Image asset ID",
                  "type": "number"
                },
                "template_id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                },
                "type": {
                  "description": "Image asset type",
                  "type": "number"
                },
                "w": {
                  "description": "Width",
                  "type": "number"
                },
                "wmin": {
                  "description": "Min width",
                  "type": "number"
                }
              },
              "required": [
                "template_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_ortb_native_image_asset",
            "description": "Delete an image asset from an ORTB native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Image asset ID",
                  "type": "number"
                },
                "template_id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                }
              },
              "required": [
                "template_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_ortb_native_title_assets",
            "description": "List all title assets for an ORTB native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                },
                "template_id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                }
              },
              "required": [
                "template_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_ortb_native_title_asset",
            "description": "Get details of a specific title asset for an ORTB native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Title asset ID",
                  "type": "number"
                },
                "template_id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                }
              },
              "required": [
                "template_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_ortb_native_title_asset",
            "description": "Create a new title asset for an ORTB native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "len": {
                  "description": "Max length of title",
                  "type": "number"
                },
                "template_id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                }
              },
              "required": [
                "template_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_ortb_native_title_asset",
            "description": "Update an existing title asset for an ORTB native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Title asset ID",
                  "type": "number"
                },
                "len": {
                  "description": "Max length of title",
                  "type": "number"
                },
                "template_id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                }
              },
              "required": [
                "template_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_ortb_native_title_asset",
            "description": "Delete a title asset from an ORTB native template",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "Title asset ID",
                  "type": "number"
                },
                "template_id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                }
              },
              "required": [
                "template_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "list_zone_ortb_native_ads",
            "description": "List all ORTB native ads for a standard zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 100, max 100)",
                  "type": "number"
                },
                "offset": {
                  "description": "Pagination offset",
                  "type": "number"
                },
                "zone_id": {
                  "description": "Standard zone ID",
                  "type": "number"
                }
              },
              "required": [
                "zone_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_zone_ortb_native_ad",
            "description": "Get details of a specific ORTB native ad for a standard zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "ORTB native ad ID",
                  "type": "number"
                },
                "zone_id": {
                  "description": "Standard zone ID",
                  "type": "number"
                }
              },
              "required": [
                "zone_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_zone_ortb_native_ad",
            "description": "Create a new ORTB native ad for a standard zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "name": {
                  "description": "ORTB native ad name",
                  "type": "string"
                },
                "template_id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                },
                "zone_id": {
                  "description": "Standard zone ID",
                  "type": "number"
                }
              },
              "required": [
                "zone_id"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_zone_ortb_native_ad",
            "description": "Update an existing ORTB native ad for a standard zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "ORTB native ad ID",
                  "type": "number"
                },
                "name": {
                  "description": "ORTB native ad name",
                  "type": "string"
                },
                "template_id": {
                  "description": "ORTB native template ID",
                  "type": "number"
                },
                "zone_id": {
                  "description": "Standard zone ID",
                  "type": "number"
                }
              },
              "required": [
                "zone_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "delete_zone_ortb_native_ad",
            "description": "Delete an ORTB native ad from a standard zone",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "id": {
                  "description": "ORTB native ad ID",
                  "type": "number"
                },
                "zone_id": {
                  "description": "Standard zone ID",
                  "type": "number"
                }
              },
              "required": [
                "zone_id",
                "id"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_kogan_report",
            "description": "Get a Kogan marketplace advertising report (includes Value Catcher stats merged with display stats). Kogan marketplace accounts only — requires the Kogan self-serve feature; other accounts receive a feature-not-enabled error.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "ad_items": {
                  "description": "Filter by ad item IDs (comma-separated)",
                  "type": "string"
                },
                "advertisers": {
                  "description": "Filter by advertiser IDs (comma-separated)",
                  "type": "string"
                },
                "breakdown": {
                  "description": "Include breakdown data",
                  "type": "boolean"
                },
                "campaigns": {
                  "description": "Filter by campaign IDs (comma-separated)",
                  "type": "string"
                },
                "details": {
                  "description": "Include detailed breakdown",
                  "type": "boolean"
                },
                "financials": {
                  "description": "Include financial data",
                  "type": "boolean"
                },
                "from": {
                  "description": "Start date (required with \"to\" unless preset is set)",
                  "type": "string"
                },
                "period": {
                  "description": "Data grouping period: day, week, month, year",
                  "type": "string"
                },
                "portal": {
                  "description": "Marketplace portal ID — report currency follows the portal (e.g. NZ portal reports in NZD); omit for the account default currency",
                  "type": "number"
                },
                "preset": {
                  "description": "Date preset: today, last-24-hours, yesterday, this-week, last-7-days, last-week, last-14-days, this-month, last-30-days, last-month, last-3-months, last-6-months, last-12-months, year-to-date, last-year (required unless from/to are set)",
                  "type": "string"
                },
                "summary": {
                  "description": "Include summary data",
                  "type": "boolean"
                },
                "timezone": {
                  "description": "Timezone for dates (default Australia/Melbourne)",
                  "type": "string"
                },
                "to": {
                  "description": "End date (required with \"from\" unless preset is set)",
                  "type": "string"
                },
                "type": {
                  "description": "Report type: advertiser, campaign, ad-item",
                  "type": "string"
                },
                "zones": {
                  "description": "Filter by zone IDs (comma-separated)",
                  "type": "string"
                }
              },
              "required": [
                "type",
                "period"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_kogan_dashboard_report",
            "description": "Get the Kogan self-serve dashboard report, including overview and Value Catcher ad item stats. Kogan marketplace accounts only — requires the Kogan self-serve feature; other accounts receive a feature-not-enabled error.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "ad_items": {
                  "description": "Filter by ad item IDs (comma-separated)",
                  "type": "string"
                },
                "advertisers": {
                  "description": "Filter by advertiser IDs (comma-separated)",
                  "type": "string"
                },
                "breakdown": {
                  "description": "Include breakdown data",
                  "type": "boolean"
                },
                "campaigns": {
                  "description": "Filter by campaign IDs (comma-separated)",
                  "type": "string"
                },
                "channels": {
                  "description": "Filter by channel IDs (comma-separated)",
                  "type": "string"
                },
                "details": {
                  "description": "Include detailed breakdown",
                  "type": "boolean"
                },
                "financials": {
                  "description": "Include financial data",
                  "type": "boolean"
                },
                "from": {
                  "description": "Start date (required with \"to\" unless preset is set)",
                  "type": "string"
                },
                "period": {
                  "description": "Data grouping period: day, week, month, year",
                  "type": "string"
                },
                "portal": {
                  "description": "Marketplace portal ID — report currency follows the portal (e.g. NZ portal reports in NZD); omit for the account default currency",
                  "type": "number"
                },
                "preset": {
                  "description": "Date preset: today, last-24-hours, yesterday, this-week, last-7-days, last-week, last-14-days, this-month, last-30-days, last-month, last-3-months, last-6-months, last-12-months, year-to-date, last-year (required unless from/to are set)",
                  "type": "string"
                },
                "simple_stats": {
                  "description": "Return simplified stats",
                  "type": "boolean"
                },
                "summary": {
                  "description": "Include summary data",
                  "type": "boolean"
                },
                "timezone": {
                  "description": "Timezone for dates (default Australia/Melbourne)",
                  "type": "string"
                },
                "to": {
                  "description": "End date (required with \"from\" unless preset is set)",
                  "type": "string"
                },
                "type": {
                  "description": "Report type: overview, advertiser, zone, campaign, ad-item, value-catcher-ad-item",
                  "type": "string"
                }
              },
              "required": [
                "type",
                "period"
              ],
              "type": "object"
            }
          },
          {
            "name": "sync_kogan_stats",
            "description": "Push externally-tracked Kogan stats (impressions, clicks, conversions, quantity sold, sales) into AdButler for a set of ad items over a time window. Kogan marketplace accounts only — requires the Kogan self-serve feature; other accounts receive a feature-not-enabled error.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "data": {
                  "description": "Per-ad-item stat rows to record",
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "ad_item_id": {
                        "description": "Numeric ad item ID, or a Value Catcher composite ID \"seller_id,sku,wallet_id,zone_id\" (e.g. \"KoganSeller,OVMIASDBDWA,3,104446)\"",
                        "type": [
                          "number",
                          "string"
                        ]
                      },
                      "clicks": {
                        "description": "Clicks in the window (default 0)",
                        "type": "number"
                      },
                      "conversions": {
                        "description": "Conversions in the window (default 0)",
                        "type": "number"
                      },
                      "impressions": {
                        "description": "Impressions in the window (default 0)",
                        "type": "number"
                      },
                      "quantity_sold": {
                        "description": "Units sold in the window (default 0)",
                        "type": "number"
                      },
                      "sales": {
                        "description": "Sales value in the window (default 0.00)",
                        "type": "number"
                      }
                    },
                    "required": [
                      "ad_item_id"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "meta": {
                  "additionalProperties": false,
                  "description": "Time window the stat rows cover",
                  "properties": {
                    "from": {
                      "description": "Window start, ISO-8601 (e.g. \"2026-02-06T00:00:00+11:00\")",
                      "type": "string"
                    },
                    "timezone": {
                      "description": "Timezone of the window (e.g. \"Australia/Melbourne\")",
                      "type": "string"
                    },
                    "to": {
                      "description": "Window end, ISO-8601",
                      "type": "string"
                    }
                  },
                  "required": [
                    "from",
                    "to",
                    "timezone"
                  ],
                  "type": "object"
                }
              },
              "required": [
                "data",
                "meta"
              ],
              "type": "object"
            }
          },
          {
            "name": "get_kogan_product",
            "description": "Get a Kogan marketplace product by seller ID and SKU (title, brand, category, stock, offers, store URLs, images). Kogan marketplace accounts only — requires the Kogan self-serve feature; other accounts receive a feature-not-enabled error.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "seller_id": {
                  "description": "Kogan seller ID",
                  "type": "string"
                },
                "sku": {
                  "description": "Product SKU",
                  "type": "string"
                }
              },
              "required": [
                "seller_id",
                "sku"
              ],
              "type": "object"
            }
          },
          {
            "name": "update_kogan_product_category",
            "description": "Update the category and category slug of a Kogan marketplace product. Kogan marketplace accounts only — requires the Kogan self-serve feature; other accounts receive a feature-not-enabled error.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "category": {
                  "description": "New category name",
                  "type": "string"
                },
                "category_slug": {
                  "description": "New category slug",
                  "type": "string"
                },
                "seller_id": {
                  "description": "Kogan seller ID",
                  "type": "string"
                },
                "sku": {
                  "description": "Product SKU",
                  "type": "string"
                }
              },
              "required": [
                "seller_id",
                "sku",
                "category",
                "category_slug"
              ],
              "type": "object"
            }
          },
          {
            "name": "search_adbutler_api",
            "description": "Find AdButler API endpoints by keyword when no specific tool matches what you need. Returns matching endpoints with their HTTP method, path, and a brief summary. Use this when the user asks about a concept that is a *field* rather than a resource — e.g. 'priority', 'pacing', 'frequency cap', 'metadata', 'tracking pixel' — and you can't find a tool that handles it. Then call describe_adbutler_api on the most promising hit, then call_adbutler_api to invoke it.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "limit": {
                  "description": "Max results to return (default 10, max 50).",
                  "type": "integer"
                },
                "query": {
                  "description": "Keyword(s) to search for. Single word works best.",
                  "type": "string"
                }
              },
              "required": [
                "query"
              ],
              "type": "object"
            }
          },
          {
            "name": "describe_adbutler_api",
            "description": "Get the full schema (parameters, request body shape, response shape) for one AdButler API endpoint. Use after search_adbutler_api to understand exactly what to send when you call it.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "method": {
                  "description": "HTTP method, e.g. \"GET\", \"POST\", \"PUT\", \"DELETE\".",
                  "type": "string"
                },
                "path": {
                  "description": "Endpoint path with `{placeholder}` syntax for path params, e.g. \"/campaigns/{id}\". Must match the path returned by search_adbutler_api exactly.",
                  "type": "string"
                }
              },
              "required": [
                "method",
                "path"
              ],
              "type": "object"
            }
          },
          {
            "name": "call_adbutler_api",
            "description": "Call any AdButler API endpoint directly. Use this only when no specific tool wraps the endpoint you need. The session's configured API key is used automatically — do NOT pass an api_key argument. Substitute path placeholders via path_params: e.g. path=\"/campaigns/{id}\", path_params={ \"id\": 123 } → /campaigns/123.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "body": {
                  "additionalProperties": {},
                  "description": "JSON request body (for POST/PUT/PATCH).",
                  "type": "object"
                },
                "method": {
                  "description": "HTTP method, e.g. \"GET\", \"POST\", \"PUT\", \"DELETE\".",
                  "type": "string"
                },
                "path": {
                  "description": "Endpoint path with `{placeholder}` syntax for path params, exactly as returned by search_adbutler_api (e.g. \"/campaigns/{id}\").",
                  "type": "string"
                },
                "path_params": {
                  "additionalProperties": {
                    "type": [
                      "string",
                      "number"
                    ]
                  },
                  "description": "Map of path placeholder names to values, e.g. { \"id\": 123 }.",
                  "type": "object"
                },
                "query_params": {
                  "additionalProperties": {
                    "type": [
                      "string",
                      "number",
                      "boolean"
                    ]
                  },
                  "description": "Query string parameters appended to the URL.",
                  "type": "object"
                }
              },
              "required": [
                "method",
                "path"
              ],
              "type": "object"
            }
          },
          {
            "name": "setup_api_key",
            "description": "Configure AdButler with an existing API key. Use this if the user already has an AdButler account and API key. Note: this configures the key for the current session only. For a persistent connection, the user should instead put the key in their MCP connection settings (an \"Authorization: Bearer\" header, or \"?api_key=\" appended to the server URL) — prefer suggesting that before asking the user to share their key in chat.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "api_key": {
                  "description": "The AdButler API key",
                  "type": "string"
                }
              },
              "required": [
                "api_key"
              ],
              "type": "object"
            }
          },
          {
            "name": "create_trial_account",
            "description": "Create a free AdButler trial account. Use this when the user does NOT have an AdButler account yet. Collects their info and creates the account. After calling this, the user must check their email for a verification code, then call verify_trial_email to complete setup.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "company": {
                  "description": "Company or organization name",
                  "type": "string"
                },
                "email": {
                  "description": "User email address",
                  "type": "string"
                },
                "name": {
                  "description": "Full name",
                  "type": "string"
                },
                "phone": {
                  "description": "Phone number (optional)",
                  "type": "string"
                },
                "website": {
                  "description": "Website URL (optional)",
                  "type": "string"
                }
              },
              "required": [
                "email",
                "name",
                "company"
              ],
              "type": "object"
            }
          },
          {
            "name": "verify_trial_email",
            "description": "Verify a trial account email with the verification code sent to the user. Call this after create_trial_account. The user must provide the code from their email. On success, the API key is automatically configured.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "email": {
                  "description": "The email address used to create the trial account",
                  "type": "string"
                },
                "verification_code": {
                  "description": "The verification code from the email",
                  "type": "string"
                }
              },
              "required": [
                "email",
                "verification_code"
              ],
              "type": "object"
            }
          },
          {
            "name": "resend_verification_code",
            "description": "Resend the email verification code for a trial account. Use this if the user did not receive the code or it expired.",
            "inputSchema": {
              "$schema": "http://json-schema.org/draft-07/schema#",
              "additionalProperties": false,
              "properties": {
                "email": {
                  "description": "The email address used to create the trial account",
                  "type": "string"
                }
              },
              "required": [
                "email"
              ],
              "type": "object"
            }
          }
        ]
      },
      "name": "AdButler",
      "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
      "packages": [
        {
          "registryType": "npm",
          "identifier": "@adbutler/mcp-server",
          "version": "2.4.2",
          "transport": "stdio"
        }
      ],
      "pageJsonUrl": "https://www.anchorterminal.com/tools/adbutler-mcp-server.json",
      "popularity": {
        "githubStars": 0,
        "npmWeekly": 172
      },
      "registryName": "com.adbutler/mcp-server",
      "remotes": [
        {
          "type": "streamable-http",
          "url": "https://mcp.adbutler.com/mcp"
        },
        {
          "type": "sse",
          "url": "https://mcp.adbutler.com/sse"
        }
      ],
      "repository": "https://github.com/adbutler/mcp-server",
      "reviewed": false,
      "slug": "adbutler-mcp-server",
      "source": "the official MCP registry",
      "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=com.adbutler/mcp-server",
      "summary": "Manage AdButler campaigns, zones, ad items, VAST, and reports from Claude, ChatGPT, and Cursor.",
      "updatedAt": "2026-04-28T04:01:51Z",
      "url": "https://www.anchorterminal.com/tools/adbutler-mcp-server",
      "vendor": "adbutler.com",
      "vendorUrl": "https://adbutler.com",
      "version": "2.4.2",
      "websiteUrl": "",
      "where": "both",
      "why": [
        "vendor"
      ]
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/adbutler-mcp-server",
    "json": "https://www.anchorterminal.com/tools/adbutler-mcp-server.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/adbutler-mcp-server.md",
    "slim": "https://www.anchorterminal.com/tools/adbutler-mcp-server.min.md"
  },
  "markdown": "# AdButler\n\n\u003e Indexed, not reviewed: facts from the official MCP registry and our own checks. No score, grade or rank, and not in the rankings until the panel reviews it. How the index works: https://www.anchorterminal.com/indexed/\n\n- Kind: MCP server, by adbutler.com (https://adbutler.com)\n- Category: Model APIs \u0026 inference (https://www.anchorterminal.com/categories/inference.md)\n- Listed because: It's published in the registry under adbutler.com, a namespace the registry only gives to whoever proves they control that domain.\n- What the official MCP registry says: Manage AdButler campaigns, zones, ad items, VAST, and reports from Claude, ChatGPT, and Cursor.\n\n## Facts\n\n- MCP registry: `com.adbutler/mcp-server` 2.4.2\n- Endpoint: https://mcp.adbutler.com/mcp (streamable HTTP)\n- Package: npm `@adbutler/mcp-server` (stdio)\n- Source: https://github.com/adbutler/mcp-server\n- npm downloads a week: 172\n- GitHub stars: 0\n- Registry entry updated: 2026-04-28\n\n## Tools\n\n- Tools it lists (627, about 80,939 tokens of context, `tools/list` without credentials over MCP 2025-11-25, checked 2026-10-04 22:21 UTC):\n  - `list_advertisers`: List all advertisers in your AdButler account\n  - `get_advertiser`: Get details of a specific advertiser by ID\n  - `create_advertiser`: Create a new advertiser\n  - `update_advertiser`: Update an existing advertiser\n  - `delete_advertiser`: Delete an advertiser\n  - `archive_advertiser`: Archive an advertiser (soft-delete, can be restored later)\n  - `list_archived_advertisers`: List all archived advertisers\n  - `get_archived_advertiser`: Get details of a specific archived advertiser\n  - `unarchive_advertiser`: Restore an archived advertiser back to active status\n  - `list_all_campaigns`: List all campaigns across all types\n  - `list_campaigns`: List all standard campaigns\n  - `get_campaign`: Get details of a specific standard campaign\n  - `create_campaign`: Create a new standard campaign\n  - `update_campaign`: Update an existing standard campaign\n  - `delete_campaign`: Delete a standard campaign\n  - `archive_campaign`: Archive a standard campaign (soft-delete, can be restored later)\n  - `list_archived_campaigns`: List all archived standard campaigns\n  - `get_archived_campaign`: Get details of a specific archived standard campaign\n  - `delete_archived_campaign`: Permanently delete an archived standard campaign\n  - `unarchive_campaign`: Restore an archived standard campaign back to active status\n  - `get_campaign_conversion_tag`: Get conversion tag for a campaign\n  - `get_campaign_eligible_zones`: Get eligible zones for a campaign\n  - `campaign_bulk_create_catalog_ad_items`: Bulk create catalog ad items in a campaign\n  - `campaign_bulk_delete_catalog_ad_items`: Bulk delete catalog ad items from a campaign\n  - `list_campaign_assignments`: List all campaign assignments (ad items assigned to campaigns)\n  - `get_campaign_assignment`: Get details of a specific campaign assignment\n  - `create_campaign_assignment`: Create a new campaign assignment (assign an ad item to a campaign)\n  - `update_campaign_assignment`: Update an existing campaign assignment\n  - `delete_campaign_assignment`: Delete a campaign assignment\n  - `list_channels`: List all channels\n  - `get_channel`: Get details of a specific channel\n  - `create_channel`: Create a new channel\n  - `update_channel`: Update an existing channel\n  - `delete_channel`: Delete a channel\n  - `archive_channel`: Archive a channel (soft-delete, can be restored later)\n  - `list_archived_channels`: List all archived channels\n  - `get_archived_channel`: Get details of a specific archived channel\n  - `delete_archived_channel`: Permanently delete an archived channel\n  - `unarchive_channel`: Restore an archived channel back to active status\n  - `list_channel_zone_assignments`: List all channel zone assignments\n  - `get_channel_zone_assignment`: Get details of a specific channel zone assignment\n  - `create_channel_zone_assignment`: Assign a zone to a channel\n  - `delete_channel_zone_assignment`: Remove a zone from a channel\n  - `list_all_zones`: List all zones across all types (standard, email, catalog)\n  - `list_zones`: List all standard zones\n  - `get_zone`: Get details of a specific standard zone\n  - `create_zone`: Create a new standard zone. Set dimensions to \"dynamic\" for a dynamic zone (width/height must be 0), or \"fixed\" (default) for a fixed-size zone.\n  - `update_zone`: Update an existing standard zone\n  - `delete_zone`: Delete a standard zone\n  - `get_zone_tag`: Get the ad serving tag (embed code) for a zone\n  - `get_zone_conversion_tag`: Get the conversion tracking tag for a standard zone\n  - `generate_bulk_zone_tags`: Generate ad serving tags for multiple zones at once\n  - `archive_zone`: Archive a standard zone (soft-delete, can be restored later)\n  - `list_archived_zones`: List all archived standard zones\n  - `get_archived_zone`: Get details of a specific archived standard zone\n  - `unarchive_zone`: Restore an archived standard zone back to active status\n  - `list_email_zones`: List all email zones\n  - `get_email_zone`: Get details of a specific email zone\n  - `create_email_zone`: Create a new email zone for serving ads in email newsletters\n  - `update_email_zone`: Update an existing email zone\n  - `delete_email_zone`: Delete an email zone\n  - `get_email_zone_tag`: Get the ad serving tag for an email zone\n  - `get_email_zone_conversion_tag`: Get the conversion tracking tag for an email zone\n  - `archive_email_zone`: Archive an email zone\n  - `list_archived_email_zones`: List all archived email zones\n  - `get_archived_email_zone`: Get details of a specific archived email zone\n  - `unarchive_email_zone`: Restore an archived email zone back to active status\n  - `list_catalog_zones`: List all catalog zones (for product/retail ad serving)\n  - `get_catalog_zone`: Get details of a specific catalog zone\n  - `create_catalog_zone`: Create a new catalog zone for product/retail ad serving\n  - `update_catalog_zone`: Update an existing catalog zone\n  - `delete_catalog_zone`: Delete a catalog zone\n  - `get_catalog_zone_tag`: Get the ad serving tag for a catalog zone\n  - `list_publishers`: List all publishers in your AdButler account\n  - `get_publisher`: Get details of a specific publisher\n  - `create_publisher`: Create a new publisher\n  - `update_publisher`: Update an existing publisher\n  - `delete_publisher`: Delete a publisher\n  - `archive_publisher`: Archive a publisher (soft-delete, can be restored later)\n  - `list_archived_publishers`: List all archived publishers\n  - `get_archived_publisher`: Get details of a specific archived publisher\n  - `unarchive_publisher`: Restore an archived publisher back to active status\n  - `list_ad_items`: List all ad items (banners) across all types (image, custom HTML, rich media, native, catalog)\n  - `list_image_ad_items`: List all image ad items\n  - `get_image_ad_item`: Get details of a specific image ad item\n  - `create_image_ad_item`: Create a new image ad item (banner)\n  - `update_image_ad_item`: Update an existing image ad item\n  - `delete_image_ad_item`: Delete an image ad item\n  - `get_image_ad_item_conversion_tag`: Get conversion tracking tag for an image ad item\n  - `list_custom_html_ad_items`: List all custom HTML ad items\n  - `get_custom_html_ad_item`: Get details of a specific custom HTML ad item\n  - `create_custom_html_ad_item`: Create a new custom HTML ad item\n  - `update_custom_html_ad_item`: Update an existing custom HTML ad item\n  - `delete_custom_html_ad_item`: Delete a custom HTML ad item\n  - `get_custom_html_ad_item_conversion_tag`: Get conversion tracking tag for a custom HTML ad item\n  - `list_rich_media_ad_items`: List all rich media ad items\n  - `get_rich_media_ad_item`: Get details of a specific rich media ad item\n  - `create_rich_media_ad_item`: Create a new rich media ad item\n  - `update_rich_media_ad_item`: Update an existing rich media ad item\n  - `delete_rich_media_ad_item`: Delete a rich media ad item\n  - `get_rich_media_ad_item_conversion_tag`: Get conversion tracking tag for a rich media ad item\n  - `list_native_ad_items`: List all native ad items\n  - `get_native_ad_item`: Get details of a specific native ad item\n  - `create_native_ad_item`: Create a new native ad item using a native template\n  - `update_native_ad_item`: Update an existing native ad item\n  - `delete_native_ad_item`: Delete a native ad item\n  - `get_native_ad_item_conversion_tag`: Get conversion tracking tag for a native ad item\n  - `list_catalog_ad_items`: List all catalog ad items\n  - `get_catalog_ad_item`: Get details of a specific catalog ad item\n  - `create_catalog_ad_item`: Create a new catalog ad item\n  - `update_catalog_ad_item`: Update an existing catalog ad item\n  - `delete_catalog_ad_item`: Delete a catalog ad item\n  - `convert_native_to_image`: Convert a native ad item to an image ad item\n  - `list_all_creatives`: List all creatives across all types (image, rich media, video, audio)\n  - `list_creatives`: List all image creatives\n  - `get_creative`: Get details of a specific image creative\n  - `create_creative`: Create a new image creative. The API uses multipart file upload — pass the media group ID and file attributes.\n  - `update_creative`: Update an existing image creative\n  - `delete_creative`: Delete an image creative\n  - `list_rich_media_creatives`: List all rich media creatives\n  - `get_rich_media_creative`: Get details of a specific rich media creative\n  - `create_rich_media_creative`: Create a new rich media creative. The API uses multipart file upload (ZIP for HTML5).\n  - `update_rich_media_creative`: Update an existing rich media creative\n  - `delete_rich_media_creative`: Delete a rich media creative\n  - `list_video_creatives`: List all video creatives\n  - `get_video_creative`: Get details of a specific video creative\n  - `create_video_creative`: Create a new video creative. The API uses multipart file upload.\n  - `update_video_creative`: Update an existing video creative\n  - `delete_video_creative`: Delete a video creative\n  - `list_audio_creatives`: List all audio creatives\n  - `get_audio_creative`: Get details of a specific audio creative\n  - `create_audio_creative`: Create a new audio creative. The API uses multipart file upload.\n  - `update_audio_creative`: Update an existing audio creative\n  - `delete_audio_creative`: Delete an audio creative\n  - `replace_image_creative_file`: Replace the file on an image creative\n  - `replace_rich_media_creative_file`: Replace the file on a rich media creative\n  - `replace_video_creative_file`: Replace the file on a video creative\n  - `replace_audio_creative_file`: Replace the file on an audio creative\n  - `list_placements`: List all placements (assignments of ad items to zones)\n  - `get_placement`: Get details of a specific placement\n  - `create_placement`: Create a new placement (assign an ad item or campaign to a zone or channel)\n  - `update_placement`: Update an existing placement\n  - `delete_placement`: Delete a placement (remove an ad item from a zone)\n  - `get_placement_conversion_tag`: Get conversion tracking tag for a placement\n  - `list_native_templates`: List all native ad templates\n  - `get_native_template`: Get details of a specific native template\n  - `create_native_template`: Create a new native ad template with HTML and variable placeholders\n  - `update_native_template`: Update an existing native template. Variables uses add/remove format for updates.\n  - `delete_native_template`: Delete a native template\n  - `list_schedules`: List all schedules (time-based delivery rules for ad items)\n  - `get_schedule`: Get details of a specific schedule\n  - `create_schedule`: Create a new schedule for time-based ad delivery. Schedules are automatically linked to ad items via placements.\n  - `update_schedule`: Update an existing schedule\n  - `delete_schedule`: Delete a schedule\n  - `list_media_groups`: List all media groups (collections of creatives)\n  - `get_media_group`: Get details of a specific media group\n  - `create_media_group`: Create a new media group\n  - `update_media_group`: Update an existing media group\n  - `delete_media_group`: Delete a media group\n  - `list_data_keys`: List all data keys (custom key-value targeting variables)\n  - `get_data_key`: Get details of a specific data key\n  - `create_data_key`: Create a new data key for custom targeting\n  - `update_data_key`: Update an existing data key\n  - `delete_data_key`: Delete a data key\n  - `list_data_key_targets`: List all data key targets (targeting rules using data key values)\n  - `get_data_key_target`: Get details of a specific data key target\n  - `create_data_key_target`: Create a new data key target (targeting rule)\n  - `update_data_key_target`: Update an existing data key target\n  - `delete_data_key_target`: Delete a data key target\n  - `list_day_partings`: List all day parting rules (time-of-day targeting)\n  - `get_day_parting`: Get details of a specific day parting rule\n  - `create_day_parting`: Create a new day parting rule for time-of-day targeting. Ranges is an object with day names as keys and arrays of time range strings (e.g. \"09:00:00-17:00:00\")…\n  - `update_day_parting`: Update an existing day parting rule\n  - `delete_day_parting`: Delete a day parting rule\n  - `list_geo_targets`: List all geo targets (geographic targeting rules)\n  - `get_geo_target`: Get details of a specific geo target\n  - `create_geo_target`: Create a new geo target for geographic targeting. Areas is an array of objects with continent, country (2-letter code), region, city fields.\n  - `update_geo_target`: Update an existing geo target\n  - `delete_geo_target`: Delete a geo target\n  - `list_postal_code_targets`: List all postal code targets\n  - `get_postal_code_target`: Get details of a specific postal code target\n  - `create_postal_code_target`: Create a new postal code target\n  - `update_postal_code_target`: Update an existing postal code target\n  - `delete_postal_code_target`: Delete a postal code target\n  - `list_list_targets`: List all list targets (allowlist/blocklist targeting)\n  - `get_list_target`: Get details of a specific list target\n  - `create_list_target`: Create a new list target (inclusion/exclusion using a data list)\n  - `update_list_target`: Update an existing list target\n  - `delete_list_target`: Delete a list target\n  - `list_platform_targets`: List all platform targets (device/OS/browser targeting)\n  - `get_platform_target`: Get details of a specific platform target\n  - `create_platform_target`: Create a new platform target for device/OS/browser targeting\n  - `update_platform_target`: Update an existing platform target\n  - `delete_platform_target`: Delete a platform target\n  - `list_data_targets`: List all data targets\n  - `remove_list_target_usages`: Remove all usages of a list target\n  - `get_display_report`: Get display advertising report with impressions, clicks, and CTR\n  - `get_vast_report`: Get VAST video advertising report\n  - `get_event_logs`: Get event logs for account activity (changes, logins, etc.)\n  - `get_click_details_report`: Get click details report\n  - `get_conversion_details_report`: Get conversion details report\n  - `get_demand_source_report`: Get demand source statistics report\n  - `get_display_platform_estimate`: Get display platform estimate statistics\n  - `get_vast_platform_estimate`: Get VAST platform estimate statistics\n  - `get_geo_summary_report`: Get geographic summary report\n  - `get_auction_placements_report`: Get auction placement statistics report\n  - `get_placement_forecast`: Get placement forecast report\n  - `get_display_forecast`: Get display forecast report\n  - `get_display_channel_forecast`: Get display channel forecast report\n  - `get_vast_forecast`: Get VAST forecast report\n  - `get_vast_channel_forecast`: Get VAST channel forecast report\n  - `get_vast_auction_placements_report`: Get VAST auction placements report\n  - `get_vast_geo_summary_report`: Get VAST geographic summary report\n  - `get_live_website_preview`: Get live website preview URL\n  - `get_manual_tracking_links`: Generate manual tracking links for an ad item\n  - `list_custom_reports`: List all saved report configurations\n  - `get_custom_report`: Get details of a specific report configuration\n  - `create_custom_report`: Create a new report configuration\n  - `update_custom_report`: Update an existing report configuration\n  - `delete_custom_report`: Delete a report configuration\n  - `list_vast_custom_reports`: List all VAST report data\n  - `get_vast_custom_report`: Get a specific VAST report\n  - `create_vast_custom_report`: Create a new VAST report configuration\n  - `list_all_generated_reports`: List all generated reports across all configurations\n  - `list_all_report_schedules`: List all report schedules across all configurations\n  - `list_report_generated`: List generated reports for a specific report configuration\n  - `get_report_generated`: Get a specific generated report\n  - `list_report_schedules`: List schedules for a specific report configuration\n  - `get_report_schedule`: Get a specific report schedule\n  - `create_report_schedule`: Create a new report schedule\n  - `update_report_schedule`: Update a report schedule\n  - `delete_report_schedule`: Delete a report schedule\n  - `list_report_schedule_generated`: List generated reports for a specific schedule\n  - `get_report_schedule_generated`: Get a specific generated report from a schedule\n  - `revoke_report_schedule_historical_access`: Revoke historical access for a report schedule\n  - `serve_ad`: Request ad delivery for a zone. Returns the ad(s) that would be served, useful for verifying ad setup. Uses POST /adserve.\n  - `get_ad`: Retrieve an ad via GET request. Same parameters as serve_ad but uses GET instead of POST.\n  - `vast_list_ad_items`: List all VAST ad items\n  - `vast_get_ad_item`: Get details of a specific VAST ad item\n  - `vast_create_ad_item`: Create a new VAST ad item\n  - `vast_update_ad_item`: Update an existing VAST ad item\n  - `vast_delete_ad_item`: Delete a VAST ad item\n  - `vast_list_campaigns`: List all VAST campaigns\n  - `vast_get_campaign`: Get details of a specific VAST campaign\n  - `vast_create_campaign`: Create a new VAST campaign\n  - `vast_update_campaign`: Update an existing VAST campaign\n  - `vast_delete_campaign`: Delete a VAST campaign\n  - `vast_archive_campaign`: Archive a VAST campaign (soft-delete, can be restored later)\n  - `vast_list_archived_campaigns`: List all archived VAST campaigns\n  - `vast_get_archived_campaign`: Get details of a specific archived VAST campaign\n  - `vast_delete_archived_campaign`: Permanently delete an archived VAST campaign\n  - `vast_unarchive_campaign`: Restore an archived VAST campaign back to active status\n  - `vast_list_channels`: List all VAST channels\n  - `vast_get_channel`: Get details of a specific VAST channel\n  - `vast_create_channel`: Create a new VAST channel\n  - `vast_update_channel`: Update an existing VAST channel\n  - `vast_delete_channel`: Delete a VAST channel\n  - `vast_archive_channel`: Archive a VAST channel (soft-delete, can be restored later)\n  - `vast_list_archived_channels`: List all archived VAST channels\n  - `vast_get_archived_channel`: Get details of a specific archived VAST channel\n  - `vast_delete_archived_channel`: Permanently delete an archived VAST channel\n  - `vast_unarchive_channel`: Restore an archived VAST channel back to active status\n  - `vast_list_channel_zone_assignments`: List all VAST channel zone assignments\n  - `vast_get_channel_zone_assignment`: Get details of a specific VAST channel zone assignment\n  - `vast_create_channel_zone_assignment`: Assign a VAST zone to a VAST channel\n  - `vast_update_channel_zone_assignment`: Update a VAST channel zone assignment\n  - `vast_delete_channel_zone_assignment`: Remove a VAST zone from a VAST channel\n  - `vast_list_zones`: List all VAST zones\n  - `vast_get_zone`: Get details of a specific VAST zone\n  - `vast_create_zone`: Create a new VAST zone\n  - `vast_update_zone`: Update an existing VAST zone\n  - `vast_delete_zone`: Delete a VAST zone\n  - `vast_archive_zone`: Archive a VAST zone (soft-delete, can be restored later)\n  - `vast_list_archived_zones`: List all archived VAST zones\n  - `vast_get_archived_zone`: Get details of a specific archived VAST zone\n  - `vast_delete_archived_zone`: Permanently delete an archived VAST zone\n  - `vast_unarchive_zone`: Restore an archived VAST zone back to active status\n  - `vast_list_placements`: List all VAST placements (assignments of VAST ad items to VAST zones)\n  - `vast_get_placement`: Get details of a specific VAST placement\n  - `vast_create_placement`: Create a new VAST placement (assign a VAST ad item or campaign to a VAST zone or channel)\n  - `vast_update_placement`: Update an existing VAST placement\n  - `vast_delete_placement`: Delete a VAST placement\n  - `vast_list_campaign_assignments`: List all VAST campaign assignments\n  - `vast_get_campaign_assignment`: Get details of a specific VAST campaign assignment\n  - `vast_create_campaign_assignment`: Create a VAST campaign assignment (assign an ad item to a campaign)\n  - `vast_update_campaign_assignment`: Update a VAST campaign assignment\n  - `vast_delete_campaign_assignment`: Delete a VAST campaign assignment\n  - `vast_list_schedules`: List all VAST schedules\n  - `vast_get_schedule`: Get details of a specific VAST schedule\n  - `vast_create_schedule`: Create a new VAST schedule for time-based ad delivery\n  - `vast_update_schedule`: Update an existing VAST schedule\n  - `vast_delete_schedule`: Delete a VAST schedule\n  - `vast_list_companions`: List all VAST companions\n  - `vast_get_companion`: Get details of a specific VAST companion\n  - `vast_create_companion`: Create a new VAST companion\n  - `vast_update_companion`: Update an existing VAST companion\n  - `vast_delete_companion`: Delete a VAST companion\n  - `vast_list_media`: List all VAST media (linear and non-linear)\n  - `vast_list_linear_media`: List all VAST linear media\n  - `vast_get_linear_media`: Get details of a specific VAST linear media\n  - `vast_create_linear_media`: Create a new VAST linear media\n  - `vast_update_linear_media`: Update an existing VAST linear media\n  - `vast_delete_linear_media`: Delete a VAST linear media\n  - `vast_list_non_linear_media`: List all VAST non-linear media\n  - `vast_get_non_linear_media`: Get details of a specific VAST non-linear media\n  - `vast_create_non_linear_media`: Create a new VAST non-linear media\n  - `vast_update_non_linear_media`: Update an existing VAST non-linear media\n  - `vast_delete_non_linear_media`: Delete a VAST non-linear media\n  - `vast_list_tracking`: List all VAST tracking entries\n  - `vast_get_tracking`: Get details of a specific VAST tracking entry\n  - `vast_create_tracking`: Create a new VAST tracking entry\n  - `vast_update_tracking`: Update an existing VAST tracking entry\n  - `vast_delete_tracking`: Delete a VAST tracking entry\n  - `get_vast_zone_tags`: Get VAST zone serving tags\n  - `get_vast_zone_conversion_tag`: Get VAST zone conversion tracking tag\n  - `get_vast_ad_item_conversion_tag`: Get conversion tracking tag for a VAST ad item\n  - `get_vast_campaign_conversion_tag`: Get conversion tracking tag for a VAST campaign\n  - `get_vast_placement_conversion_tag`: Get conversion tracking tag for a VAST placement\n  - `list_contracts`: List all contracts\n  - `get_contract`: Get details of a specific contract\n  - `create_contract`: Create a new contract\n  - `update_contract`: Update an existing contract\n  - `delete_contract`: Delete a contract\n  - `list_archived_contracts`: List all archived contracts\n  - `get_archived_contract`: Get details of a specific archived contract\n  - `delete_archived_contract`: Permanently delete an archived contract\n  - `list_contract_templates`: List all contract templates\n  - `get_contract_template`: Get details of a specific contract template\n  - `create_contract_template`: Create a new contract template. Requires name, file, attributes (JSON string), email_subject, and email_body.\n  - `update_contract_template`: Update an existing contract template\n  - `delete_contract_template`: Delete a contract template\n  - `list_contract_documents`: List all documents for a contract\n  - `get_contract_document`: Get details of a specific contract document\n  - `create_contract_document`: Create a new document for a contract\n  - `update_contract_document`: Update an existing contract document\n  - `delete_contract_document`: Delete a contract document\n  - `list_contract_payments`: List all payments for a contract\n  - `get_contract_payment`: Get details of a specific contract payment\n  - `create_contract_payment`: Create a new payment for a contract\n  - `delete_contract_payment`: Delete a contract payment\n  - `list_signature_requests`: List all signature requests for a contract\n  - `get_signature_request`: Get details of a specific signature request\n  - `create_signature_request`: Create a new signature request for a contract\n  - `update_signature_request`: Update an existing signature request\n  - `delete_signature_request`: Delete a signature request\n  - `archive_contract`: Archive a contract (soft-delete, can be restored later)\n  - `unarchive_contract`: Unarchive a contract (restore from archive)\n  - `get_contract_assigned_campaigns`: Get campaigns assigned to a contract\n  - `get_contract_active_signature_request`: Get the active signature request for a contract\n  - `create_contract_document_from_template`: Create a contract document from a template\n  - `replace_contract_document_file`: Replace the file on a contract document\n  - `replace_contract_document_file_from_template`: Replace a contract document file from a template\n  - `list_contract_document_file_revisions`: List file revisions for a contract document\n  - `get_contract_document_file_revision`: Get a specific file revision for a contract document\n  - `download_contract_document_file_revision`: Download a file revision for a contract document\n  - `list_signature_request_recipients`: List all recipients for a signature request\n  - `get_signature_request_recipient`: Get a specific recipient for a signature request\n  - `update_signature_request_recipient`: Update a recipient for a signature request\n  - `delete_signature_request_recipient`: Delete a recipient from a signature request\n  - `cancel_signature_request`: Cancel a signature request\n  - `resend_signature_request`: Resend a signature request\n  - `list_managers`: List all managers in your AdButler account\n  - `get_manager`: Get details of a specific manager by ID\n  - `create_manager`: Create a new manager\n  - `update_manager`: Update an existing manager\n  - `delete_manager`: Delete a manager\n  - `list_roles`: List all roles in your AdButler account\n  - `get_role`: Get details of a specific role by ID\n  - `create_role`: Create a new role with permission settings\n  - `update_role`: Update an existing role\n  - `delete_role`: Delete a role\n  - `list_contacts`: List all contacts in your AdButler account\n  - `get_contact`: Get details of a specific contact by ID\n  - `create_contact`: Create a new contact\n  - `update_contact`: Update an existing contact\n  - `delete_contact`: Delete a contact\n  - `get_contact_report_schedules`: List report schedules for a contact\n  - `list_demand_sources`: List all demand sources in your AdButler account\n  - `get_demand_source`: Get details of a specific demand source by ID\n  - `create_demand_source`: Create a new demand source\n  - `update_demand_source`: Update an existing demand source\n  - `delete_demand_source`: Delete a demand source\n  - `list_demand_endpoints`: List all demand endpoints in your AdButler account\n  - `get_demand_endpoint`: Get details of a specific demand endpoint by ID\n  - `create_demand_endpoint`: Create a new demand endpoint\n  - `update_demand_endpoint`: Update an existing demand endpoint\n  - `delete_demand_endpoint`: Delete a demand endpoint\n  - `list_pmp_deals`: List all PMP deals in your AdButler account\n  - `get_pmp_deal`: Get details of a specific PMP deal by ID\n  - `create_pmp_deal`: Create a new PMP deal\n  - `update_pmp_deal`: Update an existing PMP deal\n  - `delete_pmp_deal`: Delete a PMP deal\n  - `list_ortb_native_templates`: List all OpenRTB native templates in your AdButler account\n  - `get_ortb_native_template`: Get details of a specific OpenRTB native template by ID\n  - `create_ortb_native_template`: Create a new OpenRTB native template\n  - `update_ortb_native_template`: Update an existing OpenRTB native template\n  - `delete_ortb_native_template`: Delete an OpenRTB native template\n  - `list_user_dbs`: List all user databases in your AdButler account\n  - `get_user_db`: Get details of a specific user database by ID\n  - `create_user_db`: Create a new user database\n  - `list_user_attributes`: List all user attributes in a user database\n  - `get_user_attribute`: Get details of a specific user attribute in a user database\n  - `create_user_attribute`: Create a new user attribute in a user database\n  - `update_user_attribute`: Update an existing user attribute in a user database\n  - `delete_user_attribute`: Delete a user attribute from a user database\n  - `list_audiences`: List all audiences in a user database\n  - `get_audience`: Get details of a specific audience in a user database\n  - `create_audience`: Create a new audience in a user database\n  - `update_audience`: Update an existing audience in a user database\n  - `delete_audience`: Delete an audience from a user database\n  - `get_user`: Get a single user from a user database\n  - `create_user`: Create a new user in a user database\n  - `bulk_upload_replace_user_db`: Bulk upload to replace all user data in a user database\n  - `add_user_list_attribute_values`: Add values to a list attribute for a user\n  - `remove_user_list_attribute_values`: Remove values from a list attribute for a user\n  - `list_data_lists`: List all data lists in your AdButler account\n  - `get_data_list`: Get details of a specific data list by ID\n  - `create_data_list`: Create a new data list\n  - `update_data_list`: Update an existing data list\n  - `delete_data_list`: Delete a data list\n  - `bulk_upload_add_data_list`: Bulk add entries to a data list\n  - `bulk_upload_remove_data_list`: Bulk remove entries from a data list\n  - `bulk_upload_replace_data_list`: Bulk replace all entries in a data list\n  - `list_beacon_signing_keys`: List all beacon signing keys in your AdButler account\n  - `get_beacon_signing_key`: Get details of a specific beacon signing key by ID\n  - `create_beacon_signing_key`: Create a new beacon signing key\n  - `update_beacon_signing_key`: Update an existing beacon signing key\n  - `delete_beacon_signing_key`: Delete a beacon signing key\n  - `list_trusted_redirect_domains`: List all trusted redirect domains in your AdButler account\n  - `get_trusted_redirect_domain`: Get details of a specific trusted redirect domain by ID\n  - `create_trusted_redirect_domain`: Create a new trusted redirect domain\n  - `update_trusted_redirect_domain`: Update an existing trusted redirect domain\n  - `delete_trusted_redirect_domain`: Delete a trusted redirect domain\n  - `validate_beacon_signing_key`: Validate a beacon signing key\n  - `draft_list_campaigns`: List all draft standard campaigns\n  - `draft_get_campaign`: Get details of a specific draft standard campaign\n  - `draft_create_campaign`: Create a new draft standard campaign. Fields go inside a \"draft\" object wrapper.\n  - `draft_update_campaign`: Update an existing draft standard campaign\n  - `draft_delete_campaign`: Delete a draft standard campaign\n  - `draft_list_ad_items`: List all draft ad items across all types\n  - `draft_get_ad_item`: Get a draft ad item of any type by ID\n  - `draft_list_image_ad_items`: List all draft image ad items\n  - `draft_get_image_ad_item`: Get details of a specific draft image ad item\n  - `draft_create_image_ad_item`: Create a new draft image ad item\n  - `draft_update_image_ad_item`: Update an existing draft image ad item\n  - `draft_delete_image_ad_item`: Delete a draft image ad item\n  - `draft_list_rich_media_ad_items`: List all draft rich media ad items\n  - `draft_get_rich_media_ad_item`: Get details of a specific draft rich media ad item\n  - `draft_create_rich_media_ad_item`: Create a new draft rich media ad item\n  - `draft_update_rich_media_ad_item`: Update an existing draft rich media ad item\n  - `draft_delete_rich_media_ad_item`: Delete a draft rich media ad item\n  - `draft_list_custom_html_ad_items`: List all draft custom HTML ad items\n  - `draft_get_custom_html_ad_item`: Get details of a specific draft custom HTML ad item\n  - `draft_create_custom_html_ad_item`: Create a new draft custom HTML ad item\n  - `draft_update_custom_html_ad_item`: Update an existing draft custom HTML ad item\n  - `draft_delete_custom_html_ad_item`: Delete a draft custom HTML ad item\n  - `draft_list_native_ad_items`: List all draft native ad items\n  - `draft_get_native_ad_item`: Get details of a specific draft native ad item\n  - `draft_create_native_ad_item`: Create a new draft native ad item\n  - `draft_update_native_ad_item`: Update an existing draft native ad item\n  - `draft_delete_native_ad_item`: Delete a draft native ad item\n  - `draft_list_catalog_ad_items`: List all draft catalog ad items\n  - `draft_get_catalog_ad_item`: Get details of a specific draft catalog ad item\n  - `draft_create_catalog_ad_item`: Create a new draft catalog ad item\n  - `draft_update_catalog_ad_item`: Update an existing draft catalog ad item\n  - `draft_delete_catalog_ad_item`: Delete a draft catalog ad item\n  - `draft_list_campaign_assignments`: List all draft campaign assignments\n  - `draft_get_campaign_assignment`: Get details of a specific draft campaign assignment\n  - `draft_create_campaign_assignment`: Create a new draft campaign assignment\n  - `draft_update_campaign_assignment`: Update an existing draft campaign assignment\n  - `draft_delete_campaign_assignment`: Delete a draft campaign assignment\n  - `draft_list_placements`: List all draft placements\n  - `draft_get_placement`: Get details of a specific draft placement\n  - `draft_create_placement`: Create a new draft placement\n  - `draft_update_placement`: Update an existing draft placement\n  - `draft_delete_placement`: Delete a draft placement\n  - `draft_list_schedules`: List all draft schedules\n  - `draft_get_schedule`: Get details of a specific draft schedule\n  - `draft_create_schedule`: Create a new draft schedule\n  - `draft_update_schedule`: Update an existing draft schedule\n  - `draft_delete_schedule`: Delete a draft schedule\n  - `draft_save_campaign`: Save/publish a draft campaign (converts draft to live campaign)\n  - `list_product_catalogs`: List all product catalogs for a publisher\n  - `get_product_catalog`: Get details of a specific product catalog\n  - `create_product_catalog`: Create a new product catalog for a publisher\n  - `update_product_catalog`: Update an existing product catalog\n  - `search_product_catalog_items`: Search for items in a product catalog\n  - `get_product_catalog_item`: Get details of a specific product catalog item\n  - `create_product_catalog_item`: Create a new item in a product catalog\n  - `update_product_catalog_item`: Update an existing product catalog item\n  - `bulk_upload_product_catalog`: Bulk upload items to a product catalog\n  - `list_product_sources`: List all product sources for a publisher\n  - `get_product_source`: Get details of a specific product source\n  - `create_product_source`: Create a new product source for a publisher\n  - `update_product_source`: Update an existing product source\n  - `delete_product_source`: Delete a product source\n  - `bulk_create_product_sources`: Bulk create product sources for a publisher\n  - `list_product_source_targets`: List all product source targets for a publisher\n  - `get_product_source_target`: Get details of a specific product source target\n  - `create_product_source_target`: Create a new product source target for a publisher\n  - `update_product_source_target`: Update an existing product source target\n  - `delete_product_source_target`: Delete a product source target\n  - `list_bidders`: List all bidders in your AdButler account\n  - `get_bidder`: Get details of a specific bidder by ID\n  - `create_bidder`: Create a new bidder\n  - `update_bidder`: Update an existing bidder\n  - `delete_bidder`: Delete a bidder\n  - `list_sftp_connections`: List all SFTP connections in your AdButler account\n  - `get_sftp_connection`: Get details of a specific SFTP connection by ID\n  - `create_sftp_connection`: Create a new SFTP connection\n  - `update_sftp_connection`: Update an existing SFTP connection\n  - `delete_sftp_connection`: Delete an SFTP connection\n  - `test_sftp_connection`: Test an SFTP connection with the provided credentials\n  - `list_event_log_upload_configs`: List all event log upload configurations\n  - `get_event_log_upload_config`: Get details of a specific event log upload configuration\n  - `create_event_log_upload_config`: Create a new event log upload configuration\n  - `update_event_log_upload_config`: Update an existing event log upload configuration\n  - `delete_event_log_upload_config`: Delete an event log upload configuration\n  - `list_event_log_upload_logs`: List all event log upload logs\n  - `get_event_log_upload_log`: Get details of a specific event log upload log entry\n  - `vast42_list_ads`: List all VAST 4.2 ad items\n  - `vast42_get_ad`: Get a single VAST 4.2 ad item\n  - `vast42_create_ad`: Create a VAST 4.2 ad item\n  - `vast42_update_ad`: Update a VAST 4.2 ad item\n  - `vast42_delete_ad`: Delete a VAST 4.2 ad item\n  - `vast42_list_creatives`: List all VAST 4.2 creatives\n  - `vast42_get_creative`: Get a single VAST 4.2 creative\n  - `vast42_create_creative`: Create a VAST 4.2 creative\n  - `vast42_update_creative`: Update a VAST 4.2 creative\n  - `vast42_delete_creative`: Delete a VAST 4.2 creative\n  - `vast42_list_linears`: List all VAST 4.2 linear media\n  - `vast42_get_linear`: Get a single VAST 4.2 linear media\n  - `vast42_create_linear`: Create a VAST 4.2 linear media\n  - `vast42_update_linear`: Update a VAST 4.2 linear media\n  - `vast42_delete_linear`: Delete a VAST 4.2 linear media\n  - `vast42_list_non_linears`: List all VAST 4.2 non-linear media\n  - `vast42_get_non_linear`: Get a single VAST 4.2 non-linear media\n  - `vast42_create_non_linear`: Create a VAST 4.2 non-linear media\n  - `vast42_update_non_linear`: Update a VAST 4.2 non-linear media\n  - `vast42_delete_non_linear`: Delete a VAST 4.2 non-linear media\n  - `vast42_list_companions`: List all VAST 4.2 companions\n  - `vast42_get_companion`: Get a single VAST 4.2 companion\n  - `vast42_create_companion`: Create a VAST 4.2 companion\n  - `vast42_update_companion`: Update a VAST 4.2 companion\n  - `vast42_delete_companion`: Delete a VAST 4.2 companion\n  - `vast42_list_media_files`: List all VAST 4.2 media files\n  - `vast42_get_media_file`: Get a single VAST 4.2 media file\n  - `vast42_create_media_file`: Create a VAST 4.2 media file\n  - `vast42_update_media_file`: Update a VAST 4.2 media file\n  - `vast42_delete_media_file`: Delete a VAST 4.2 media file\n  - `vast42_list_mezzanines`: List all VAST 4.2 mezzanines\n  - `vast42_get_mezzanine`: Get a single VAST 4.2 mezzanine\n  - `vast42_create_mezzanine`: Create a VAST 4.2 mezzanine\n  - `vast42_update_mezzanine`: Update a VAST 4.2 mezzanine\n  - `vast42_delete_mezzanine`: Delete a VAST 4.2 mezzanine\n  - `vast42_list_resources`: List all VAST 4.2 resources\n  - `vast42_get_resource`: Get a single VAST 4.2 resource\n  - `vast42_create_resource`: Create a VAST 4.2 resource\n  - `vast42_update_resource`: Update a VAST 4.2 resource\n  - `vast42_delete_resource`: Delete a VAST 4.2 resource\n  - `vast42_list_icons`: List all VAST 4.2 icons\n  - `vast42_get_icon`: Get a single VAST 4.2 icon\n  - `vast42_create_icon`: Create a VAST 4.2 icon\n  - `vast42_update_icon`: Update a VAST 4.2 icon\n  - `vast42_delete_icon`: Delete a VAST 4.2 icon\n  - `vast42_list_icon_click_fallback_images`: List all VAST 4.2 icon click fallback images\n  - `vast42_get_icon_click_fallback_image`: Get a single VAST 4.2 icon click fallback image\n  - `vast42_create_icon_click_fallback_image`: Create a VAST 4.2 icon click fallback image\n  - `vast42_update_icon_click_fallback_image`: Update a VAST 4.2 icon click fallback image\n  - `vast42_delete_icon_click_fallback_image`: Delete a VAST 4.2 icon click fallback image\n  - `vast42_list_closed_caption_files`: List all VAST 4.2 closed caption files\n  - `vast42_get_closed_caption_file`: Get a single VAST 4.2 closed caption file\n  - `vast42_create_closed_caption_file`: Create a VAST 4.2 closed caption file\n  - `vast42_update_closed_caption_file`: Update a VAST 4.2 closed caption file\n  - `vast42_delete_closed_caption_file`: Delete a VAST 4.2 closed caption file\n  - `vast42_list_interactive_creative_files`: List all VAST 4.2 interactive creative files\n  - `vast42_get_interactive_creative_file`: Get a single VAST 4.2 interactive creative file\n  - `vast42_create_interactive_creative_file`: Create a VAST 4.2 interactive creative file\n  - `vast42_update_interactive_creative_file`: Update a VAST 4.2 interactive creative file\n  - `vast42_delete_interactive_creative_file`: Delete a VAST 4.2 interactive creative file\n  - `vast42_list_universal_ad_ids`: List all VAST 4.2 universal ad IDs\n  - `vast42_get_universal_ad_id`: Get a single VAST 4.2 universal ad ID\n  - `vast42_create_universal_ad_id`: Create a VAST 4.2 universal ad ID\n  - `vast42_update_universal_ad_id`: Update a VAST 4.2 universal ad ID\n  - `vast42_delete_universal_ad_id`: Delete a VAST 4.2 universal ad ID\n  - `vast42_list_placements`: List all VAST 4.2 placements\n  - `vast42_get_placement`: Get a single VAST 4.2 placement\n  - `vast42_create_placement`: Create a VAST 4.2 placement\n  - `vast42_update_placement`: Update a VAST 4.2 placement\n  - `vast42_delete_placement`: Delete a VAST 4.2 placement\n  - `vast42_list_campaign_assignments`: List all VAST 4.2 campaign assignments\n  - `vast42_get_campaign_assignment`: Get a single VAST 4.2 campaign assignment\n  - `vast42_create_campaign_assignment`: Create a VAST 4.2 campaign assignment\n  - `vast42_update_campaign_assignment`: Update a VAST 4.2 campaign assignment\n  - `vast42_delete_campaign_assignment`: Delete a VAST 4.2 campaign assignment\n  - `list_ortb_native_data_assets`: List all data assets for an ORTB native template\n  - `get_ortb_native_data_asset`: Get details of a specific data asset for an ORTB native template\n  - `create_ortb_native_data_asset`: Create a new data asset for an ORTB native template\n  - `update_ortb_native_data_asset`: Update an existing data asset for an ORTB native template\n  - `delete_ortb_native_data_asset`: Delete a data asset from an ORTB native template\n  - `list_ortb_native_image_assets`: List all image assets for an ORTB native template\n  - `get_ortb_native_image_asset`: Get details of a specific image asset for an ORTB native template\n  - `create_ortb_native_image_asset`: Create a new image asset for an ORTB native template\n  - `update_ortb_native_image_asset`: Update an existing image asset for an ORTB native template\n  - `delete_ortb_native_image_asset`: Delete an image asset from an ORTB native template\n  - `list_ortb_native_title_assets`: List all title assets for an ORTB native template\n  - `get_ortb_native_title_asset`: Get details of a specific title asset for an ORTB native template\n  - `create_ortb_native_title_asset`: Create a new title asset for an ORTB native template\n  - `update_ortb_native_title_asset`: Update an existing title asset for an ORTB native template\n  - `delete_ortb_native_title_asset`: Delete a title asset from an ORTB native template\n  - `list_zone_ortb_native_ads`: List all ORTB native ads for a standard zone\n  - `get_zone_ortb_native_ad`: Get details of a specific ORTB native ad for a standard zone\n  - `create_zone_ortb_native_ad`: Create a new ORTB native ad for a standard zone\n  - `update_zone_ortb_native_ad`: Update an existing ORTB native ad for a standard zone\n  - `delete_zone_ortb_native_ad`: Delete an ORTB native ad from a standard zone\n  - `get_kogan_report`: Get a Kogan marketplace advertising report (includes Value Catcher stats merged with display stats). Kogan marketplace accounts only — requires the Kogan…\n  - `get_kogan_dashboard_report`: Get the Kogan self-serve dashboard report, including overview and Value Catcher ad item stats. Kogan marketplace accounts only — requires the Kogan self-serve…\n  - `sync_kogan_stats`: Push externally-tracked Kogan stats (impressions, clicks, conversions, quantity sold, sales) into AdButler for a set of ad items over a time window. Kogan…\n  - `get_kogan_product`: Get a Kogan marketplace product by seller ID and SKU (title, brand, category, stock, offers, store URLs, images). Kogan marketplace accounts only — requires…\n  - `update_kogan_product_category`: Update the category and category slug of a Kogan marketplace product. Kogan marketplace accounts only — requires the Kogan self-serve feature; other accounts…\n  - `search_adbutler_api`: Find AdButler API endpoints by keyword when no specific tool matches what you need. Returns matching endpoints with their HTTP method, path, and a brief…\n  - `describe_adbutler_api`: Get the full schema (parameters, request body shape, response shape) for one AdButler API endpoint. Use after search_adbutler_api to understand exactly what to…\n  - `call_adbutler_api`: Call any AdButler API endpoint directly. Use this only when no specific tool wraps the endpoint you need. The session's configured API key is used…\n  - `setup_api_key`: Configure AdButler with an existing API key. Use this if the user already has an AdButler account and API key. Note: this configures the key for the current…\n  - `create_trial_account`: Create a free AdButler trial account. Use this when the user does NOT have an AdButler account yet. Collects their info and creates the account. After calling…\n  - `verify_trial_email`: Verify a trial account email with the verification code sent to the user. Call this after create_trial_account. The user must provide the code from their…\n  - `resend_verification_code`: Resend the email verification code for a trial account. Use this if the user did not receive the code or it expired.\n- How its tools read to an agent (0 errors, 728 warnings, 2 notes, about 80,939 tokens; rules at https://www.anchorterminal.com/check.md; not part of the score):\n  - warn TC06 archive_email_zone: the description is \"Archive an email zone\"\n  - warn TC06 cancel_signature_request: the description is \"Cancel a signature request\"\n  - warn TC06 create_advertiser: the description is \"Create a new advertiser\"\n  - warn TC06 create_bidder: the description is \"Create a new bidder\"\n  - warn TC06 create_channel: the description is \"Create a new channel\"\n  - warn TC06 create_contact: the description is \"Create a new contact\"\n  - warn TC06 create_contract: the description is \"Create a new contract\"\n  - warn TC06 create_contract_document_from_template: the description is \"Create a contract document from a template\"\n  - warn TC06 create_data_list: the description is \"Create a new data list\"\n  - warn TC06 create_manager: the description is \"Create a new manager\"\n  - warn TC06 create_media_group: the description is \"Create a new media group\"\n  - warn TC06 create_pmp_deal: the description is \"Create a new PMP deal\"\n  - warn TC06 create_publisher: the description is \"Create a new publisher\"\n  - warn TC06 delete_advertiser: the description is \"Delete an advertiser\"\n  - warn TC06 delete_audio_creative: the description is \"Delete an audio creative\"\n  - warn TC06 delete_beacon_signing_key: the description is \"Delete a beacon signing key\"\n  - warn TC06 delete_bidder: the description is \"Delete a bidder\"\n  - warn TC06 delete_campaign_assignment: the description is \"Delete a campaign assignment\"\n  - warn TC06 delete_catalog_ad_item: the description is \"Delete a catalog ad item\"\n  - warn TC06 delete_catalog_zone: the description is \"Delete a catalog zone\"\n  - warn TC06 delete_channel: the description is \"Delete a channel\"\n  - warn TC06 delete_contact: the description is \"Delete a contact\"\n  - warn TC06 delete_contract: the description is \"Delete a contract\"\n  - warn TC06 delete_contract_document: the description is \"Delete a contract document\"\n\n- JSON: https://www.anchorterminal.com/api/v1/tools/adbutler-mcp-server.json\n- Being indexed says nothing about quality, and nobody can pay for it. Ask for a review: https://www.anchorterminal.com/builders/#claiming\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Indexed",
        "url": "https://www.anchorterminal.com/indexed/"
      },
      {
        "name": "AdButler",
        "url": ""
      }
    ],
    "description": "AdButler, an MCP server by adbutler.com, listed from the official MCP registry. Indexed, not reviewed: facts and our own checks, no score or ranking. Manage AdButler campaigns, zones, ad items, VAST, and reports from Claude, ChatGPT, and Cursor.",
    "facts": [
      "not reviewed",
      "not ranked",
      "facts only"
    ],
    "h1": "AdButler",
    "image": "https://www.anchorterminal.com/assets/og/indexed.png",
    "path": "/tools/adbutler-mcp-server",
    "published": "",
    "section": "indexed",
    "title": "AdButler: MCP server, indexed from the official MCP registry",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/tools/adbutler-mcp-server"
  },
  "tokens": {
    "markdown": 12300,
    "slim": 12230
  },
  "version": 1
}
