{
 "generated_from": "services/mcp-gateway/src/catalog",
 "count": 280,
 "sha256": "af3d86bbd8d9b395e49d6de68ae89ceafb1276cad8f8c8434ddb21682eef8e2e",
 "platforms": [
  "google",
  "meta",
  "oam",
  "reddit",
  "tiktok",
  "x"
 ],
 "tools": [
  {
   "name": "google_ads_act_on_recommendations",
   "title": "Google Ads: Act on recommendations",
   "platform": "google",
   "family": "Google Ads",
   "description": "Apply or dismiss Google's optimization recommendations. List them first with google_ads_search (SELECT recommendation.resource_name, recommendation.type, recommendation.impact FROM recommendation). Applying can raise budgets or change bids: only when the user explicitly asks.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "action",
    "recommendations",
    "partial_failure"
   ],
   "required": [
    "customer_id",
    "action",
    "recommendations"
   ]
  },
  {
   "name": "google_ads_add_ad_group_targeting",
   "title": "Google Ads: Add ad group targeting",
   "platform": "google",
   "family": "Google Ads",
   "description": "Add ad group audience and demographic targeting: user lists, interest and custom audiences, age ranges, genders, placements and topics. negative excludes them.",
   "risk": "write",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "ad_group",
    "user_lists",
    "user_interests",
    "custom_audiences",
    "age_ranges",
    "genders",
    "placements",
    "topics",
    "negative",
    "partial_failure",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "ad_group"
   ]
  },
  {
   "name": "google_ads_add_campaign_targeting",
   "title": "Google Ads: Add campaign targeting",
   "platform": "google",
   "family": "Google Ads",
   "description": "Add campaign targeting: locations and excluded locations (geo target ids from google_ads_search_geo_targets), languages, negative keywords, devices bid adjustments, ad schedule and audiences.",
   "risk": "write",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "campaign",
    "locations",
    "excluded_locations",
    "languages",
    "negative_keywords",
    "devices",
    "ad_schedule",
    "audiences",
    "partial_failure",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "campaign"
   ]
  },
  {
   "name": "google_ads_add_keywords",
   "title": "Google Ads: Add keywords",
   "platform": "google",
   "family": "Google Ads",
   "description": "Add keywords (or negative keywords) to an ad group. Bids are max CPC in account currency micros. Valid keywords are added even if some fail.",
   "risk": "write",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "ad_group",
    "keywords",
    "negative",
    "partial_failure",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "ad_group",
    "keywords"
   ]
  },
  {
   "name": "google_ads_apply_label",
   "title": "Google Ads: Apply label",
   "platform": "google",
   "family": "Google Ads",
   "description": "Apply a label to campaigns, ad groups, ads (adGroupAds) or keywords (adGroupCriteria).",
   "risk": "write",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "label",
    "resources",
    "partial_failure",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "label",
    "resources"
   ]
  },
  {
   "name": "google_ads_create_ad",
   "title": "Google Ads: Create ad",
   "platform": "google",
   "family": "Google Ads",
   "description": "Create any other ad type (video responsive, Demand Gen, app, call...) from Ad REST JSON. Use google_ads_set_status to turn it on.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "ad_group",
    "ad",
    "status",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "ad_group",
    "ad"
   ]
  },
  {
   "name": "google_ads_create_ad_group",
   "title": "Google Ads: Create ad group",
   "platform": "google",
   "family": "Google Ads",
   "description": "Create an ad group in a campaign. Use google_ads_set_status to turn it on.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "campaign",
    "name",
    "type",
    "cpc_bid_micros",
    "status",
    "fields",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "campaign",
    "name"
   ]
  },
  {
   "name": "google_ads_create_asset",
   "title": "Google Ads: Create asset",
   "platform": "google",
   "family": "Google Ads",
   "description": "Create other assets from Asset REST JSON: text, sitelink, callout, structured snippet, call, lead form, or a YouTube video ({youtubeVideoAsset: {youtubeVideoId}}; Google Ads plays video from YouTube).",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "assets",
    "partial_failure",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "assets"
   ]
  },
  {
   "name": "google_ads_create_audience",
   "title": "Google Ads: Create audience",
   "platform": "google",
   "family": "Google Ads",
   "description": "Create an audience segment from REST JSON: a user list (rule-based website/app visitors, logical combinations), a custom audience (keywords, URLs, apps), or an audience. Customer Match uploads go through Google's Data Manager API, not this tool.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "kind",
    "resource",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "kind",
    "resource"
   ]
  },
  {
   "name": "google_ads_create_bidding_strategy",
   "title": "Google Ads: Create bidding strategy",
   "platform": "google",
   "family": "Google Ads",
   "description": "Create a portfolio bidding strategy shared by campaigns. Targets in account currency micros.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "name",
    "strategy",
    "target_cpa_micros",
    "target_roas",
    "cpc_bid_ceiling_micros",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "name",
    "strategy"
   ]
  },
  {
   "name": "google_ads_create_budget",
   "title": "Google Ads: Create budget",
   "platform": "google",
   "family": "Google Ads",
   "description": "Create a campaign budget. amount_micros is the daily amount in account currency micros (1000000 = 1.00).",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "name",
    "amount_micros",
    "delivery_method",
    "explicitly_shared",
    "fields",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "name",
    "amount_micros"
   ]
  },
  {
   "name": "google_ads_create_campaign",
   "title": "Google Ads: Create campaign",
   "platform": "google",
   "family": "Google Ads",
   "description": "Create a campaign (Search, Display, Performance Max, Demand Gen, Shopping...). Use google_ads_set_status to turn it on. Create the budget first.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "name",
    "advertising_channel_type",
    "advertising_channel_sub_type",
    "campaign_budget",
    "status",
    "bidding",
    "contains_eu_political_advertising",
    "network",
    "fields",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "name",
    "advertising_channel_type",
    "campaign_budget",
    "bidding",
    "contains_eu_political_advertising"
   ]
  },
  {
   "name": "google_ads_create_client_account",
   "title": "Google Ads: Create client account",
   "platform": "google",
   "family": "Google Ads",
   "description": "Create a new client account under the connected user's own manager (MCC) account: customer_id is the manager. Currency and time zone cannot be changed later. email_address invites that person as an admin of the new account.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "descriptive_name",
    "currency_code",
    "time_zone",
    "email_address",
    "access_role",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "descriptive_name",
    "currency_code",
    "time_zone"
   ]
  },
  {
   "name": "google_ads_create_conversion_action",
   "title": "Google Ads: Create conversion action",
   "platform": "google",
   "family": "Google Ads",
   "description": "Create a conversion action (website tag, offline click import, phone calls...). Values in account currency units.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "name",
    "type",
    "category",
    "counting_type",
    "default_value",
    "currency_code",
    "primary_for_goal",
    "fields",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "name",
    "type",
    "category"
   ]
  },
  {
   "name": "google_ads_create_label",
   "title": "Google Ads: Create label",
   "platform": "google",
   "family": "Google Ads",
   "description": "Create a label to organise campaigns, ad groups, ads and keywords.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "name",
    "description",
    "background_color",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "name"
   ]
  },
  {
   "name": "google_ads_create_responsive_display_ad",
   "title": "Google Ads: Create responsive display ad",
   "platform": "google",
   "family": "Google Ads",
   "description": "Create a responsive display ad from image assets (upload them with google_ads_upload_image_asset). Use google_ads_set_status to turn it on.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "ad_group",
    "final_urls",
    "headlines",
    "long_headline",
    "descriptions",
    "business_name",
    "marketing_images",
    "square_marketing_images",
    "logo_images",
    "status",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "ad_group",
    "final_urls",
    "headlines",
    "long_headline",
    "descriptions",
    "business_name",
    "marketing_images",
    "square_marketing_images"
   ]
  },
  {
   "name": "google_ads_create_responsive_search_ad",
   "title": "Google Ads: Create responsive search ad",
   "platform": "google",
   "family": "Google Ads",
   "description": "Create a responsive search ad: 3-15 headlines (30 chars), 2-4 descriptions (90 chars), final URLs. Use google_ads_set_status to turn it on.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "ad_group",
    "headlines",
    "descriptions",
    "final_urls",
    "path1",
    "path2",
    "status",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "ad_group",
    "headlines",
    "descriptions",
    "final_urls"
   ]
  },
  {
   "name": "google_ads_customer_match_upload",
   "title": "Google Ads: Customer match upload",
   "platform": "google",
   "family": "Google Ads",
   "description": "Add or remove people on a Customer Match list (a CRM user list made with google_ads_create_audience) through Google's Data Manager API. Give plain email, phone (+ and country code), names and address; they are normalised and SHA-256 hashed here before they leave OpenAdManager. consent must say whether the people agreed to ad use of their data, as the user states it; adding also needs accept_terms: true from the user. Needs the Data Manager scope on the Google sign-in.",
   "risk": "write",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write",
    "oam:customer_data"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "user_list_id",
    "action",
    "members",
    "consent",
    "accept_terms",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "user_list_id",
    "action",
    "members",
    "consent"
   ]
  },
  {
   "name": "google_ads_experiment",
   "title": "Google Ads: Experiment",
   "platform": "google",
   "family": "Google Ads",
   "description": "Run a campaign experiment made with google_ads_mutate (experimentOperation, then experimentArmOperation for the control and treatment arms): schedule starts it (the treatment arm spends), promote applies the treatment to the base campaign, end stops it, async_errors lists why scheduling or promoting failed. Schedule and promote change spend: only when the user explicitly asks.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "action",
    "experiment",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "action",
    "experiment"
   ]
  },
  {
   "name": "google_ads_field_metadata",
   "title": "Google Ads: Field metadata",
   "platform": "google",
   "family": "Google Ads",
   "description": "Look up which GAQL fields a resource has (selectable, filterable, segments, metrics) before writing a query. Field reference: https://developers.google.com/google-ads/api/fields/latest/overview",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "resource"
   ],
   "required": [
    "resource"
   ]
  },
  {
   "name": "google_ads_generate_keyword_ideas",
   "title": "Google Ads: Generate keyword ideas",
   "platform": "google",
   "family": "Google Ads",
   "description": "Keyword ideas with search volume and competition, from seed keywords and/or a URL. Paginated.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "keywords",
    "url",
    "locations",
    "language",
    "include_search_partners",
    "page_size",
    "page_token"
   ],
   "required": [
    "customer_id"
   ]
  },
  {
   "name": "google_ads_get_audience_insights",
   "title": "Google Ads: Get audience insights",
   "platform": "google",
   "family": "Google Ads",
   "description": "Audience Insights: action attributes (find audience attributes by text), composition (what an audience is made of), suggested_targeting (audiences to target), insights_finder (report link). request is the method's body in REST JSON (customerInsightsGroup is filled in).",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "action",
    "request"
   ],
   "required": [
    "customer_id",
    "action",
    "request"
   ]
  },
  {
   "name": "google_ads_get_keyword_forecast",
   "title": "Google Ads: Get keyword forecast",
   "platform": "google",
   "family": "Google Ads",
   "description": "Forecast clicks, impressions, cost and conversions for a planned Search campaign (Keyword Planner forecast): campaign is a CampaignToForecast in REST JSON (keywordPlanNetwork, biddingStrategy, geoModifiers, languageConstants, adGroups with biddableKeywords).",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "campaign",
    "start_date",
    "end_date",
    "currency_code"
   ],
   "required": [
    "customer_id",
    "campaign"
   ]
  },
  {
   "name": "google_ads_get_keyword_historical_metrics",
   "title": "Google Ads: Get keyword historical metrics",
   "platform": "google",
   "family": "Google Ads",
   "description": "Past search volume (monthly, last 12 months), competition and top-of-page bid range for known keywords (Keyword Planner historical metrics).",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "keywords",
    "locations",
    "language",
    "include_search_partners",
    "include_average_cpc"
   ],
   "required": [
    "customer_id",
    "keywords"
   ]
  },
  {
   "name": "google_ads_get_reach_plan",
   "title": "Google Ads: Get reach plan",
   "platform": "google",
   "family": "Google Ads",
   "description": "Reach Planner for video and awareness: action locations (plannable locations), products (ad products for a location), forecast (reach, impressions and frequency for a budget; request is a GenerateReachForecastRequest in REST JSON with campaignDuration, plannedProducts, targeting). Google gives Reach Planner only to some accounts.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "action",
    "location_id",
    "request"
   ],
   "required": [
    "customer_id",
    "action"
   ]
  },
  {
   "name": "google_ads_link_assets",
   "title": "Google Ads: Link assets",
   "platform": "google",
   "family": "Google Ads",
   "description": "Attach assets to a campaign, ad group, asset group (Performance Max) or the whole account with a field type such as SITELINK, CALLOUT, HEADLINE, MARKETING_IMAGE, LOGO, YOUTUBE_VIDEO.",
   "risk": "write",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "level",
    "parent",
    "links",
    "partial_failure",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "level",
    "links"
   ]
  },
  {
   "name": "google_ads_link_client",
   "title": "Google Ads: Link client",
   "platform": "google",
   "family": "Google Ads",
   "description": "Manager and client account links. On the manager (customer_id = manager): invite sends a link request to client_customer_id; cancel withdraws a pending one; terminate unlinks a client. On the client (customer_id = client): accept or decline a manager's request. link is the link's resource name from google_ads_search (FROM customer_client_link or customer_manager_link).",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "action",
    "client_customer_id",
    "link",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "action"
   ]
  },
  {
   "name": "google_ads_list_accounts",
   "title": "Google Ads: List accounts",
   "platform": "google",
   "family": "Google Ads",
   "description": "List the Google Ads accounts the connected user can reach, with name, currency, time zone and whether each is a manager. Accounts the user reaches through their own manager account are in managed_accounts with the manager_id to pass as login_customer_id.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "login_customer_id"
   ],
   "required": []
  },
  {
   "name": "google_ads_list_invoices",
   "title": "Google Ads: List invoices",
   "platform": "google",
   "family": "Google Ads",
   "description": "Monthly invoices of an account on invoiced (monthly) billing: amounts, adjustments and PDF links. billing_setup from google_ads_search (SELECT billing_setup.resource_name FROM billing_setup).",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "billing_setup",
    "issue_year",
    "issue_month"
   ],
   "required": [
    "customer_id",
    "billing_setup",
    "issue_year",
    "issue_month"
   ]
  },
  {
   "name": "google_ads_list_leads",
   "title": "Google Ads: List leads",
   "platform": "google",
   "family": "Google Ads",
   "description": "Download lead form submissions (lead form assets): each lead's answers (name, email, phone...), campaign, ad group, asset and gclid, by submission date. format csv returns one CSV text with a column per answer. Google keeps only recent submissions, so download regularly. The data is personal: show or save it only as the user asks; OpenAdManager never logs or keeps it.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read",
    "oam:customer_data"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "since",
    "until",
    "campaign",
    "asset",
    "limit",
    "page_token",
    "format"
   ],
   "required": [
    "customer_id"
   ]
  },
  {
   "name": "google_ads_mutate",
   "title": "Google Ads: Mutate",
   "platform": "google",
   "family": "Google Ads",
   "description": "Advanced: several create/update/remove operations in one request (googleAds:mutate), e.g. a whole campaign with budget, ad groups, ads and Performance Max asset groups using temporary ids (customers/<id>/campaignBudgets/-1). Atomic unless partial_failure. Use google_ads_set_status to turn them on. API reference: https://developers.google.com/google-ads/api/reference/rpc/latest/GoogleAdsService.Mutate",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "mutate_operations",
    "partial_failure",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "mutate_operations"
   ]
  },
  {
   "name": "google_ads_remove",
   "title": "Google Ads: Remove",
   "platform": "google",
   "family": "Google Ads",
   "description": "Remove resources by resource name (campaigns, ad groups, ads, keywords, labels, asset links...). This cannot be undone.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "resource_names",
    "partial_failure",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "resource_names"
   ]
  },
  {
   "name": "google_ads_report",
   "title": "Google Ads: Report",
   "platform": "google",
   "family": "Google Ads",
   "description": "Performance report without writing GAQL: pick a level, metrics, segments and a date range. cost_micros is in account currency micros (1000000 = 1.00).",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "level",
    "metrics",
    "segments",
    "date_preset",
    "start_date",
    "end_date",
    "order_by",
    "limit"
   ],
   "required": [
    "customer_id",
    "level"
   ]
  },
  {
   "name": "google_ads_search",
   "title": "Google Ads: Search",
   "platform": "google",
   "family": "Google Ads",
   "description": "Run a Google Ads Query Language (GAQL) query, e.g. SELECT campaign.id, campaign.name, metrics.clicks FROM campaign WHERE segments.date DURING LAST_7_DAYS. Paginated: pass next_page_token back as page_token. GAQL reference: https://developers.google.com/google-ads/api/docs/query/overview",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "query",
    "page_token",
    "max_rows"
   ],
   "required": [
    "customer_id",
    "query"
   ]
  },
  {
   "name": "google_ads_search_geo_targets",
   "title": "Google Ads: Search geo targets",
   "platform": "google",
   "family": "Google Ads",
   "description": "Find geo target ids for cities, regions and countries by name, for location targeting.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "names",
    "country_code",
    "locale"
   ],
   "required": [
    "names"
   ]
  },
  {
   "name": "google_ads_set_status",
   "title": "Google Ads: Set status",
   "platform": "google",
   "family": "Google Ads",
   "description": "Pause or enable campaigns, ad groups, ads (adGroupAds), keywords (adGroupCriteria) or asset groups. ENABLED makes them eligible to spend: use it only when the user explicitly asks to launch.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "resources",
    "status",
    "partial_failure",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "resources",
    "status"
   ]
  },
  {
   "name": "google_ads_update",
   "title": "Google Ads: Update",
   "platform": "google",
   "family": "Google Ads",
   "description": "Update fields on any resource (campaign, ad group, ad, keyword bid, asset, conversion action, audience...) by resource name. fields are REST JSON (camelCase); only the given fields change.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "resource_name",
    "fields",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "resource_name",
    "fields"
   ]
  },
  {
   "name": "google_ads_update_budget",
   "title": "Google Ads: Update budget",
   "platform": "google",
   "family": "Google Ads",
   "description": "Change a campaign budget's amount (account currency micros, 1000000 = 1.00) or name.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "budget",
    "amount_micros",
    "name",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "budget"
   ]
  },
  {
   "name": "google_ads_upload_call_conversions",
   "title": "Google Ads: Upload call conversions",
   "platform": "google",
   "family": "Google Ads",
   "description": "Import conversions from phone calls (call tracking): caller id in E.164 (+819012345678), call start time and conversion time. Valid rows are kept even if others fail.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write",
    "oam:customer_data"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "conversions",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "conversions"
   ]
  },
  {
   "name": "google_ads_upload_click_conversions",
   "title": "Google Ads: Upload click conversions",
   "platform": "google",
   "family": "Google Ads",
   "description": "Import offline conversions by click id (gclid, gbraid or wbraid). conversion_date_time like 2026-10-27 13:45:00+09:00. Valid rows are kept even if others fail.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write",
    "oam:customer_data"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "conversions",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "conversions"
   ]
  },
  {
   "name": "google_ads_upload_conversion_adjustments",
   "title": "Google Ads: Upload conversion adjustments",
   "platform": "google",
   "family": "Google Ads",
   "description": "Adjust conversions already counted: RETRACTION (refunded, remove it), RESTATEMENT (new value) or ENHANCEMENT (add hashed email / phone for enhanced conversions for leads or web). Identify each by order_id or gclid + conversion_date_time. Email and phone are normalised and SHA-256 hashed here before they leave OpenAdManager.",
   "risk": "write",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write",
    "oam:customer_data"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "adjustments",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "adjustments"
   ]
  },
  {
   "name": "google_ads_upload_image_asset",
   "title": "Google Ads: Upload image asset",
   "platform": "google",
   "family": "Google Ads",
   "description": "Upload an image (at most 5 MB) as an image asset, from base64 or a public https URL. Returns the asset resource name for ads, asset groups and links.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "customer_id",
    "login_customer_id",
    "name",
    "image_base64",
    "image_url",
    "validate_only"
   ],
   "required": [
    "customer_id",
    "name"
   ]
  },
  {
   "name": "meta_ads_apply_labels",
   "title": "Meta Ads: Apply labels",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Apply ad labels to campaigns, ad sets or ads. Each id is reported separately.",
   "risk": "write",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ids",
    "label_ids"
   ],
   "required": [
    "ids",
    "label_ids"
   ]
  },
  {
   "name": "meta_ads_archive_lead_form",
   "title": "Meta Ads: Archive lead form",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Archive a lead form so no new ads can use it (Meta has no delete for forms that collected leads). Its leads stay readable.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "page_id",
    "form_id"
   ],
   "required": [
    "page_id",
    "form_id"
   ]
  },
  {
   "name": "meta_ads_copy",
   "title": "Meta Ads: Copy",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Duplicate a campaign, ad set or ad (deep_copy includes children).",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "id",
    "deep_copy",
    "rename_suffix",
    "campaign_id",
    "adset_id"
   ],
   "required": [
    "id"
   ]
  },
  {
   "name": "meta_ads_create_ad",
   "title": "Meta Ads: Create ad",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Create an ad in an ad set from a creative. Use meta_ads_set_status to turn it on.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "adset_id",
    "creative_id",
    "name",
    "status",
    "tracking_specs",
    "fields",
    "validate_only"
   ],
   "required": [
    "ad_account_id",
    "adset_id",
    "creative_id",
    "name"
   ]
  },
  {
   "name": "meta_ads_create_ad_set",
   "title": "Meta Ads: Create ad set",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Create an ad set: budget (minor units, unless the campaign has its own), schedule, optimization goal, billing event and targeting (geo_locations, age_min/max, genders, interests, custom_audiences, publisher_platforms...). Use meta_ads_set_status to turn it on.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "campaign_id",
    "name",
    "optimization_goal",
    "billing_event",
    "targeting",
    "daily_budget_cents",
    "lifetime_budget_cents",
    "bid_amount_cents",
    "bid_strategy",
    "start_time",
    "end_time",
    "promoted_object",
    "destination_type",
    "product_set_id",
    "budget_schedule_specs",
    "status",
    "fields",
    "validate_only"
   ],
   "required": [
    "ad_account_id",
    "campaign_id",
    "name",
    "optimization_goal",
    "targeting"
   ]
  },
  {
   "name": "meta_ads_create_audience",
   "title": "Meta Ads: Create audience",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Create a custom audience: a customer list (subtype CUSTOM, then add people with meta_ads_update_audience_users), website visitors or engagement (subtype WEBSITE/ENGAGEMENT with a rule).",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "name",
    "subtype",
    "description",
    "customer_file_source",
    "rule",
    "retention_days",
    "prefill",
    "fields"
   ],
   "required": [
    "ad_account_id",
    "name",
    "subtype"
   ]
  },
  {
   "name": "meta_ads_create_budget_schedule",
   "title": "Meta Ads: Create budget schedule",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Raise a campaign's or ad set's daily budget for a high-demand period (a sale, a holiday): ABSOLUTE adds budget_value in minor units (cents), MULTIPLIER adds a percentage. At least 3 hours long. This raises spend: only when the user explicitly asks. Needs an ad account with Meta's budget scheduling capability. Remove one with meta_ads_delete.",
   "risk": "high",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "object_id",
    "budget_value_type",
    "budget_value",
    "time_start",
    "time_end"
   ],
   "required": [
    "object_id",
    "budget_value_type",
    "budget_value",
    "time_start",
    "time_end"
   ]
  },
  {
   "name": "meta_ads_create_campaign",
   "title": "Meta Ads: Create campaign",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Create a campaign. Use meta_ads_set_status to turn it on. Budgets in minor units (cents). special_ad_categories is required ([] when none apply).",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "name",
    "objective",
    "special_ad_categories",
    "special_ad_category_country",
    "status",
    "daily_budget_cents",
    "lifetime_budget_cents",
    "spend_cap_cents",
    "bid_strategy",
    "buying_type",
    "is_adset_budget_sharing_enabled",
    "start_time",
    "stop_time",
    "product_catalog_id",
    "budget_schedule_specs",
    "fields",
    "validate_only"
   ],
   "required": [
    "ad_account_id",
    "name",
    "objective",
    "special_ad_categories"
   ]
  },
  {
   "name": "meta_ads_create_catalog",
   "title": "Meta Ads: Create catalog",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Create a product catalog on a business.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "business_id",
    "name",
    "vertical"
   ],
   "required": [
    "business_id",
    "name"
   ]
  },
  {
   "name": "meta_ads_create_creative",
   "title": "Meta Ads: Create creative",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Create an ad creative. Link or video ad: page_id, link, message and image_hash or video_id. Carousel: page_id, link, message and cards (2-10). Boost an existing post: post_id (from meta_ads_list_page_posts) or instagram_media_id with instagram_user_id. Instant Experience: page_id, message, instant_experience_id. Catalog (dynamic) ad: page_id, product_set_id and template. Anything else (Advantage+ asset feeds, collection): object_story_spec / asset_feed_spec in fields.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "name",
    "page_id",
    "instagram_user_id",
    "link",
    "message",
    "headline",
    "description",
    "image_hash",
    "video_id",
    "call_to_action",
    "url_tags",
    "cards",
    "post_id",
    "instagram_media_id",
    "instant_experience_id",
    "product_set_id",
    "template",
    "fields",
    "validate_only"
   ],
   "required": [
    "ad_account_id",
    "name"
   ]
  },
  {
   "name": "meta_ads_create_custom_conversion",
   "title": "Meta Ads: Create custom conversion",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Create a custom conversion from pixel events matching a URL or event rule.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "name",
    "pixel_id",
    "custom_event_type",
    "rule",
    "default_conversion_value_cents"
   ],
   "required": [
    "ad_account_id",
    "name",
    "pixel_id",
    "custom_event_type",
    "rule"
   ]
  },
  {
   "name": "meta_ads_create_label",
   "title": "Meta Ads: Create label",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Create an ad label on an ad account to organise campaigns, ad sets and ads.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "name"
   ],
   "required": [
    "ad_account_id",
    "name"
   ]
  },
  {
   "name": "meta_ads_create_lead_form",
   "title": "Meta Ads: Create lead form",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Create a lead (Instant) form on a Page for lead ads: questions (prefilled types such as FULL_NAME, EMAIL, PHONE, or CUSTOM with a label and options), the privacy policy link (required by Meta) and the thank-you screen. Use the form id in an ad set with optimization_goal LEAD_GENERATION and a creative's call_to_action value lead_gen_form_id.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "page_id",
    "name",
    "locale",
    "questions",
    "privacy_policy",
    "thank_you_page",
    "context_card",
    "follow_up_action_url",
    "is_optimized_for_quality",
    "block_display_for_non_targeted_viewer"
   ],
   "required": [
    "page_id",
    "name",
    "questions",
    "privacy_policy"
   ]
  },
  {
   "name": "meta_ads_create_lookalike_audience",
   "title": "Meta Ads: Create lookalike audience",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Create a lookalike audience from a source custom audience, for one or more countries and a size ratio (0.01 = top 1%).",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "name",
    "origin_audience_id",
    "countries",
    "ratio"
   ],
   "required": [
    "ad_account_id",
    "name",
    "origin_audience_id",
    "countries"
   ]
  },
  {
   "name": "meta_ads_create_pixel",
   "title": "Meta Ads: Create pixel",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Create a Meta Pixel (dataset) on an ad account for conversion tracking.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "name"
   ],
   "required": [
    "ad_account_id",
    "name"
   ]
  },
  {
   "name": "meta_ads_create_product_feed",
   "title": "Meta Ads: Create product feed",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Add a product feed to a catalog that Meta fetches from your https URL on a schedule (CSV, TSV, XML or Google Sheets). update_schedule refreshes prices and stock in between.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "catalog_id",
    "name",
    "schedule",
    "update_schedule",
    "country",
    "default_currency"
   ],
   "required": [
    "catalog_id",
    "name"
   ]
  },
  {
   "name": "meta_ads_create_product_set",
   "title": "Meta Ads: Create product set",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Create a product set in a catalog from a filter rule, e.g. {availability: {eq: 'in stock'}, price: {lt: 5000}}; catalog ad sets and creatives show a product set.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "catalog_id",
    "name",
    "filter"
   ],
   "required": [
    "catalog_id",
    "name",
    "filter"
   ]
  },
  {
   "name": "meta_ads_create_report",
   "title": "Meta Ads: Create report",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Start an asynchronous insights report for large date ranges or many rows. Poll it with meta_ads_get_report.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "object_id",
    "level",
    "fields",
    "date_preset",
    "time_range",
    "time_increment",
    "breakdowns",
    "action_breakdowns",
    "filtering",
    "sort",
    "action_attribution_windows",
    "use_unified_attribution_setting"
   ],
   "required": [
    "object_id"
   ]
  },
  {
   "name": "meta_ads_create_rule",
   "title": "Meta Ads: Create rule",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Create an automated rule on an ad account (adrules_library): e.g. pause ads whose cost per result passes a limit, or notify. evaluation_spec, execution_spec and schedule_spec follow the Marketing API. Created DISABLED unless status ENABLED is set. An ENABLED rule that raises budgets or bids, rebalances budget or turns ads on (execution_type INCREASE_BUDGET, CHANGE_BUDGET, CHANGE_BID, REBALANCE_BUDGET, UNPAUSE) spends money: enable it only when the user explicitly asks. List rules with meta_ads_list edge adrules_library.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "name",
    "evaluation_spec",
    "execution_spec",
    "schedule_spec",
    "status"
   ],
   "required": [
    "ad_account_id",
    "name",
    "evaluation_spec",
    "execution_spec"
   ]
  },
  {
   "name": "meta_ads_create_split_test",
   "title": "Meta Ads: Create split test",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Create an A/B test (split test) on a business: 2-5 cells, each with the ad sets or campaigns it tests and a share of the audience (treatment_percentage, together exactly 100). The test runs between start_time and end_time once its ad sets are ACTIVE, so it can spend: only when the user explicitly asks.",
   "risk": "high",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "business_id",
    "name",
    "description",
    "type",
    "start_time",
    "end_time",
    "cells",
    "objectives",
    "confidence_level"
   ],
   "required": [
    "business_id",
    "name",
    "start_time",
    "end_time",
    "cells"
   ]
  },
  {
   "name": "meta_ads_delete",
   "title": "Meta Ads: Delete",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Delete an object that has no status, such as a creative, custom audience, label or custom conversion. Cannot be undone.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "id"
   ],
   "required": [
    "id"
   ]
  },
  {
   "name": "meta_ads_delete_rule",
   "title": "Meta Ads: Delete rule",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Delete an automated rule. Cannot be undone; its history goes with it.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "rule_id"
   ],
   "required": [
    "rule_id"
   ]
  },
  {
   "name": "meta_ads_estimate_audience",
   "title": "Meta Ads: Estimate audience",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Estimate audience size and daily results for a targeting spec before creating an ad set.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "ad_account_id",
    "targeting",
    "optimization_goal"
   ],
   "required": [
    "ad_account_id",
    "targeting"
   ]
  },
  {
   "name": "meta_ads_execute_rule",
   "title": "Meta Ads: Execute rule",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Run an automated rule now, once, instead of waiting for its schedule. Its actions (pausing, budget or bid changes) apply immediately: only when the user explicitly asks.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "rule_id"
   ],
   "required": [
    "rule_id"
   ]
  },
  {
   "name": "meta_ads_get",
   "title": "Meta Ads: Get",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Read one object (campaign, ad set, ad, creative, video upload status, audience, pixel...) with the fields asked for.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "id",
    "fields"
   ],
   "required": [
    "id"
   ]
  },
  {
   "name": "meta_ads_get_account_overview",
   "title": "Meta Ads: Get account overview",
   "platform": "meta",
   "family": "Meta ads",
   "description": "An ad account's money and health: spend cap, amount spent, balance, minimum daily budget, payment type (never card numbers), status and why it is disabled, capabilities, and who has access (when it belongs to a business). Amounts are in minor units (cents).",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "ad_account_id"
   ],
   "required": [
    "ad_account_id"
   ]
  },
  {
   "name": "meta_ads_get_lead_form",
   "title": "Meta Ads: Get lead form",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Read one lead (Instant) form: questions, privacy policy, thank-you screen, context card, status and lead counts.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "page_id",
    "form_id"
   ],
   "required": [
    "page_id",
    "form_id"
   ]
  },
  {
   "name": "meta_ads_get_leads",
   "title": "Meta Ads: Get leads",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Download the leads a lead form (form_id) or one ad (ad_id) collected: name, email, phone and other answers, by date range. format csv returns one CSV text with a column per question. The data is personal: show or save it only as the user asks; OpenAdManager never logs or keeps it.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read",
    "oam:customer_data"
   ],
   "args": [
    "page_id",
    "form_id",
    "ad_id",
    "since",
    "until",
    "limit",
    "after",
    "max_pages",
    "format"
   ],
   "required": [
    "page_id"
   ]
  },
  {
   "name": "meta_ads_get_report",
   "title": "Meta Ads: Get report",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Status of an asynchronous report, and its rows once it is complete. Paginated with after.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "report_run_id",
    "limit",
    "after"
   ],
   "required": [
    "report_run_id"
   ]
  },
  {
   "name": "meta_ads_get_rule_history",
   "title": "Meta Ads: Get rule history",
   "platform": "meta",
   "family": "Meta ads",
   "description": "What automated rules did: one rule's history (rule_id), or every rule's on an ad account (ad_account_id): when it ran, the objects it changed and the result.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "rule_id",
    "ad_account_id",
    "limit",
    "after"
   ],
   "required": []
  },
  {
   "name": "meta_ads_get_study",
   "title": "Meta Ads: Get study",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Read an A/B test or lift study with its cells and objectives, including the results Meta has so far (winner and confidence once it ends). Lift studies are read only.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "study_id"
   ],
   "required": [
    "study_id"
   ]
  },
  {
   "name": "meta_ads_get_targeting",
   "title": "Meta Ads: Get targeting",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Targeting helpers on an ad account: browse (the interest, behavior and demographic tree), suggestions (related interests for targeting_list), sentence (a targeting spec in plain words), reach (audience size for a spec), validate (whether interest names or ids still exist).",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "action",
    "ad_account_id",
    "targeting",
    "targeting_list",
    "interest_list",
    "interest_fbid_list",
    "limit"
   ],
   "required": [
    "action"
   ]
  },
  {
   "name": "meta_ads_graph_get",
   "title": "Meta Ads: Graph get",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Advanced read of any Marketing API edge no other tool covers: path {id}, {id}/{edge} or act_{id}/{edge} (or search). The id must be an ad object, catalog, lead form, Page or business this connection can see; logins, roles, people, apps, payment details and leads are never reachable. fields are plain names only (no edge{...} expansion). as_page_id reads as that Page (lead forms, posts, canvases). Marketing API reference: https://developers.facebook.com/docs/marketing-api",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "path",
    "fields",
    "params",
    "as_page_id",
    "limit",
    "after"
   ],
   "required": [
    "path"
   ]
  },
  {
   "name": "meta_ads_graph_post",
   "title": "Meta Ads: Graph post",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Advanced change through any allowed Marketing API edge no other tool covers, e.g. {page_id}/canvases (create an Instant Experience), {catalog_id}/product_feeds rules, {audience_id}/usersreplace, or DELETE of an ad object. Needs Advanced changes on. It can only turn an existing object off (use meta_ads_set_status to turn on). Logins, roles, people, apps, ad account creation, payment details and spend caps are never reachable. Marketing API reference: https://developers.facebook.com/docs/marketing-api",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "path",
    "method",
    "params",
    "as_page_id"
   ],
   "required": [
    "path"
   ]
  },
  {
   "name": "meta_ads_insights",
   "title": "Meta Ads: Insights",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Performance insights for an ad account, campaign, ad set or ad: spend, impressions, clicks, ctr, cpc, actions, purchase_roas... by level, date range and breakdowns. Paginated with after. For big reports use meta_ads_create_report.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "object_id",
    "level",
    "fields",
    "date_preset",
    "time_range",
    "time_increment",
    "breakdowns",
    "action_breakdowns",
    "filtering",
    "sort",
    "action_attribution_windows",
    "use_unified_attribution_setting",
    "limit",
    "after"
   ],
   "required": [
    "object_id"
   ]
  },
  {
   "name": "meta_ads_link_catalog_pixel",
   "title": "Meta Ads: Link catalog pixel",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Connect pixels (or app event sources) to a catalog, so catalog ads can match site events to products.",
   "risk": "write",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "catalog_id",
    "pixel_ids"
   ],
   "required": [
    "catalog_id",
    "pixel_ids"
   ]
  },
  {
   "name": "meta_ads_list",
   "title": "Meta Ads: List",
   "platform": "meta",
   "family": "Meta ads",
   "description": "List objects under an ad account or another object: campaigns, adsets, ads, adcreatives, adimages, advideos, customaudiences, saved_audiences, adspixels, customconversions, adlabels, activities... Paginated with after.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "parent_id",
    "edge",
    "fields",
    "effective_status",
    "filtering",
    "limit",
    "after"
   ],
   "required": [
    "parent_id",
    "edge"
   ]
  },
  {
   "name": "meta_ads_list_ad_accounts",
   "title": "Meta Ads: List ad accounts",
   "platform": "meta",
   "family": "Meta ads",
   "description": "List the ad accounts this connection can manage, with currency, status, time zone and amount spent.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "limit",
    "after"
   ],
   "required": []
  },
  {
   "name": "meta_ads_list_budget_schedules",
   "title": "Meta Ads: List budget schedules",
   "platform": "meta",
   "family": "Meta ads",
   "description": "List a campaign's or ad set's budget schedules (high-demand periods).",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "object_id",
    "limit",
    "after"
   ],
   "required": [
    "object_id"
   ]
  },
  {
   "name": "meta_ads_list_businesses",
   "title": "Meta Ads: List businesses",
   "platform": "meta",
   "family": "Meta ads",
   "description": "List the Business Managers this connection belongs to; their ids open catalogs, A/B tests and business Pages.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "limit",
    "after"
   ],
   "required": []
  },
  {
   "name": "meta_ads_list_catalog_objects",
   "title": "Meta Ads: List catalog objects",
   "platform": "meta",
   "family": "Meta ads",
   "description": "List what is in a catalog (catalog_id: products, product_sets, product_feeds, product_groups, external_event_sources, diagnostics), a feed (feed_id: uploads, products, rules) or a product set (product_set_id: products). Paginated with after.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "catalog_id",
    "feed_id",
    "product_set_id",
    "edge",
    "fields",
    "filter",
    "limit",
    "after"
   ],
   "required": [
    "edge"
   ]
  },
  {
   "name": "meta_ads_list_catalogs",
   "title": "Meta Ads: List catalogs",
   "platform": "meta",
   "family": "Meta ads",
   "description": "List the product catalogs a business owns (owned) or manages for clients (client), for catalog (dynamic) ads.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "business_id",
    "which",
    "limit",
    "after"
   ],
   "required": [
    "business_id"
   ]
  },
  {
   "name": "meta_ads_list_instagram",
   "title": "Meta Ads: List instagram",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Instagram for ads: action accounts lists the Instagram accounts an ad account (ad_account_id) or Page (page_id) can advertise with; action media lists one account's posts (instagram_user_id) to use as instagram_media_id in a creative.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "action",
    "ad_account_id",
    "page_id",
    "instagram_user_id",
    "limit",
    "after"
   ],
   "required": [
    "action"
   ]
  },
  {
   "name": "meta_ads_list_instant_experiences",
   "title": "Meta Ads: List instant experiences",
   "platform": "meta",
   "family": "Meta ads",
   "description": "List a Page's Instant Experiences (full-screen canvases) for creatives' instant_experience_id. Create new ones with meta_ads_graph_post on {page_id}/canvases.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "page_id",
    "limit",
    "after"
   ],
   "required": [
    "page_id"
   ]
  },
  {
   "name": "meta_ads_list_lead_forms",
   "title": "Meta Ads: List lead forms",
   "platform": "meta",
   "family": "Meta ads",
   "description": "List the lead (Instant) forms of a Facebook Page the connected person manages, with status, lead counts, questions and privacy policy.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "page_id",
    "status",
    "limit",
    "after"
   ],
   "required": [
    "page_id"
   ]
  },
  {
   "name": "meta_ads_list_page_posts",
   "title": "Meta Ads: List page posts",
   "platform": "meta",
   "family": "Meta ads",
   "description": "List a Page's published posts (newest first) with whether each can be boosted; pass a post's id to meta_ads_create_creative post_id to advertise it.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "page_id",
    "since",
    "limit",
    "after"
   ],
   "required": [
    "page_id"
   ]
  },
  {
   "name": "meta_ads_list_pages",
   "title": "Meta Ads: List pages",
   "platform": "meta",
   "family": "Meta ads",
   "description": "List the Facebook Pages (and linked Instagram accounts) this connection can advertise for; ads need a page_id. With business_id: the Pages that Business Manager owns (owned_pages) or manages for clients (client_pages), for Pages the person has no personal role on.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "business_id",
    "business_pages",
    "limit",
    "after"
   ],
   "required": []
  },
  {
   "name": "meta_ads_list_studies",
   "title": "Meta Ads: List studies",
   "platform": "meta",
   "family": "Meta ads",
   "description": "List a business's A/B tests and lift studies with their dates and type.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "business_id",
    "limit",
    "after"
   ],
   "required": [
    "business_id"
   ]
  },
  {
   "name": "meta_ads_preview",
   "title": "Meta Ads: Preview",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Render a preview of an ad or creative in a placement; returns an iframe snippet.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "id",
    "ad_format"
   ],
   "required": [
    "id"
   ]
  },
  {
   "name": "meta_ads_search_ad_library",
   "title": "Meta Ads: Search ad library",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Search Meta's public Ad Library: competitors' ads by keyword or Page, for the countries they reached. Meta returns every ad type only for ads delivered in the EU (and political or issue ads everywhere). The connected person must have confirmed their identity at facebook.com/ID.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "search_terms",
    "search_page_ids",
    "ad_reached_countries",
    "ad_type",
    "ad_active_status",
    "ad_delivery_date_min",
    "ad_delivery_date_max",
    "media_type",
    "fields",
    "limit",
    "after"
   ],
   "required": [
    "ad_reached_countries"
   ]
  },
  {
   "name": "meta_ads_search_targeting",
   "title": "Meta Ads: Search targeting",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Find targeting ids: interests (adinterest), interest suggestions, locations (adgeolocation), locales, employers, job titles, schools, and behaviors/demographics (adTargetingCategory with class).",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "type",
    "q",
    "interest_list",
    "location_types",
    "class",
    "limit"
   ],
   "required": [
    "type"
   ]
  },
  {
   "name": "meta_ads_send_conversion_events",
   "title": "Meta Ads: Send conversion events",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Send server-side conversion events (Conversions API) to a pixel. user_data values are hashed here before sending. Use test_event_code to see them in Events Manager without counting them.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write",
    "oam:customer_data"
   ],
   "args": [
    "pixel_id",
    "events",
    "test_event_code"
   ],
   "required": [
    "pixel_id",
    "events"
   ]
  },
  {
   "name": "meta_ads_set_account_spend_cap",
   "title": "Meta Ads: Set account spend cap",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Set, reset or remove an ad account's spend cap (the most it may spend in total, after which every ad stops). spend_cap is in the currency's main unit (dollars, not cents). Removing or raising the cap allows more spend: only when the user explicitly asks.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "spend_cap",
    "action"
   ],
   "required": [
    "ad_account_id"
   ]
  },
  {
   "name": "meta_ads_set_status",
   "title": "Meta Ads: Set status",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Pause, activate, archive or delete campaigns, ad sets and ads. ACTIVE makes them eligible to spend: use it only when the user explicitly asks to launch. Each id is reported separately.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ids",
    "status"
   ],
   "required": [
    "ids",
    "status"
   ]
  },
  {
   "name": "meta_ads_update",
   "title": "Meta Ads: Update",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Update fields on a campaign, ad set, ad, creative name, audience or other object, e.g. {name}, {targeting}, {end_time}, {bid_strategy}. Status ACTIVE makes it eligible to spend: only when the user explicitly asks.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "id",
    "fields",
    "validate_only"
   ],
   "required": [
    "id",
    "fields"
   ]
  },
  {
   "name": "meta_ads_update_audience_users",
   "title": "Meta Ads: Update audience users",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Add or remove people on a customer list audience. Give plain values; they are normalised and SHA-256 hashed here before they leave OpenAdManager (already-hashed values pass through).",
   "risk": "write",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write",
    "oam:customer_data"
   ],
   "args": [
    "audience_id",
    "action",
    "schema",
    "data"
   ],
   "required": [
    "audience_id",
    "action",
    "schema",
    "data"
   ]
  },
  {
   "name": "meta_ads_update_budget",
   "title": "Meta Ads: Update budget",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Change a campaign or ad set budget. Amounts in the account currency's minor units (cents: 2500 = 25.00).",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "id",
    "daily_budget_cents",
    "lifetime_budget_cents",
    "spend_cap_cents",
    "bid_amount_cents",
    "validate_only"
   ],
   "required": [
    "id"
   ]
  },
  {
   "name": "meta_ads_update_catalog_items",
   "title": "Meta Ads: Update catalog items",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Create, update or delete catalog items in one batch (items_batch, at most 1000). DELETE removes products from every ad that shows them. Check the result with meta_ads_list_catalog_objects edge diagnostics.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "catalog_id",
    "item_type",
    "requests"
   ],
   "required": [
    "catalog_id",
    "requests"
   ]
  },
  {
   "name": "meta_ads_update_rule",
   "title": "Meta Ads: Update rule",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Change an automated rule: name, evaluation_spec, execution_spec, schedule_spec or status. Turning ON a rule whose execution_type is INCREASE_BUDGET, CHANGE_BUDGET, CHANGE_BID, REBALANCE_BUDGET, UNPAUSE lets it raise spend: only when the user explicitly asks.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "rule_id",
    "name",
    "evaluation_spec",
    "execution_spec",
    "schedule_spec",
    "status"
   ],
   "required": [
    "rule_id"
   ]
  },
  {
   "name": "meta_ads_update_study",
   "title": "Meta Ads: Update study",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Change an A/B test: name, description, a later end_time, or the cells (send every cell's percentage). Meta cannot delete a test; end it early by setting end_time.",
   "risk": "write",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "study_id",
    "name",
    "description",
    "end_time",
    "cells"
   ],
   "required": [
    "study_id"
   ]
  },
  {
   "name": "meta_ads_upload_image",
   "title": "Meta Ads: Upload image",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Upload an ad image (at most 30 MB) from base64 or a public https URL. Returns its image_hash for creatives.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "name",
    "image_base64",
    "image_url"
   ],
   "required": [
    "ad_account_id"
   ]
  },
  {
   "name": "meta_ads_upload_product_feed",
   "title": "Meta Ads: Upload product feed",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Fetch a feed file once now from a public https URL (a one-off upload). update_only changes only the listed items.",
   "risk": "write",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "feed_id",
    "url",
    "update_only"
   ],
   "required": [
    "feed_id",
    "url"
   ]
  },
  {
   "name": "meta_ads_upload_video",
   "title": "Meta Ads: Upload video",
   "platform": "meta",
   "family": "Meta ads",
   "description": "Upload an ad video from a public https URL (Meta downloads it) or inline as base64 (at most 30 MB, e.g. a file made on your computer). Returns the video id; check processing with meta_ads_get fields ['status'] before using it in a creative.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "file_url",
    "video_base64",
    "name",
    "title",
    "description"
   ],
   "required": [
    "ad_account_id"
   ]
  },
  {
   "name": "oam_get_playbook",
   "title": "OpenAdManager: Get playbook",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Without a name: the playbook index for this plan. With a name: that playbook.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "name"
   ],
   "required": []
  },
  {
   "name": "oam_leads_status",
   "title": "OpenAdManager: Leads status",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Says which connected ad accounts can download leads and, for each one that cannot, why and what to do. Google works once connected. Meta needs the leads permission on the connection. TikTok Ads, Reddit Ads and X Ads leads are not available here. Downloads no leads and makes no ad-platform call.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "platform"
   ],
   "required": []
  },
  {
   "name": "oam_list_accounts",
   "title": "OpenAdManager: List accounts",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Lists every ad account this token may use across platforms: platform, id, name, currency, time zone, manager flag and connection status. Served from the OpenAdManager database, so it costs no ad-platform calls.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "platform"
   ],
   "required": []
  },
  {
   "name": "oam_list_changes",
   "title": "OpenAdManager: List changes",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Lists recent changes (and, on Managed accounts, what waits for the customer) for the organisation, or one change by change_id: status, summary, result ids and whether it can be undone.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "change_id",
    "limit"
   ],
   "required": []
  },
  {
   "name": "oam_performance_report",
   "title": "OpenAdManager: Performance report",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Returns performance for chosen Google Ads, Meta Ads, TikTok Ads and Reddit Ads accounts side by side: spend, impressions, clicks, conversions. Pick a ready range or your own start_date and end_date, and break results down by campaign and by day. Results are grouped by platform; each platform keeps its own currency and Google rows are never blended into totals. For X Ads use x_get_account_stats.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "accounts",
    "level",
    "range",
    "start_date",
    "end_date",
    "breakdowns"
   ],
   "required": [
    "accounts"
   ]
  },
  {
   "name": "oam_set_status",
   "title": "OpenAdManager: Set status",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Pauses or enables up to 50 campaigns, ad groups or ads across Google Ads, Meta Ads, TikTok Ads and Reddit Ads. For X Ads use x_update_campaign. Reddit can only be paused here. Pausing needs Pause ads, enabling needs Turn ads on in the user's AI permissions.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "objects",
    "status"
   ],
   "required": [
    "objects",
    "status"
   ]
  },
  {
   "name": "oam_status",
   "title": "OpenAdManager: Status",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Shows the plan, usage this month (MCP requests and changes used, limit, reset date), this token's scopes, the allowed accounts per platform with connection health, Google access mode with its disclosure, what the AI may change (AI permissions), what waits for the customer on Managed accounts, and dashboard links. Makes no ad-platform call.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [],
   "required": []
  },
  {
   "name": "oam_tracking_add_site",
   "title": "OpenAdManager: Add website to tracking",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Creates a draft site and starts the scan. Returns the install line, the DNS record to add and a dashboard link to finish; keys are pasted in the dashboard, never here. Refused at the plan site limit.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "domain",
    "platform",
    "idempotency_key"
   ],
   "required": [
    "domain"
   ]
  },
  {
   "name": "oam_tracking_apply_fix",
   "title": "OpenAdManager: Apply tracking fix",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Fixes one problem that OpenAdManager can fix for you, then measures again. The result says what changed.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "site_id",
    "problem_id",
    "idempotency_key"
   ],
   "required": [
    "site_id",
    "problem_id"
   ]
  },
  {
   "name": "oam_tracking_get_site",
   "title": "OpenAdManager: Tracked website details",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Shows one site: events with honest status, destinations (status only, never keys), address and TLS state, install state and health.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "site_id"
   ],
   "required": [
    "site_id"
   ]
  },
  {
   "name": "oam_tracking_list_problems",
   "title": "OpenAdManager: Tracking problems",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Lists tracking problems with effect, cause, evidence and whether OpenAdManager can fix it for you.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "site_id",
    "state"
   ],
   "required": []
  },
  {
   "name": "oam_tracking_list_sites",
   "title": "OpenAdManager: List tracked websites",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Lists tracked websites with status, platforms, a one-line verdict and the number of open problems. Served from the OpenAdManager database.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "status"
   ],
   "required": []
  },
  {
   "name": "oam_tracking_remove_site",
   "title": "OpenAdManager: Remove tracked website",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Removes a tracked website and its servers. Needs Delete and archive in the user's AI permissions. An undo window applies.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "site_id",
    "idempotency_key"
   ],
   "required": [
    "site_id"
   ]
  },
  {
   "name": "oam_tracking_report",
   "title": "OpenAdManager: Tracking report",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Sales and leads per platform for a period: accepted, rejected, missing click ID and rescued, each with a source label and timestamp. No personal data. Google rows stay separate and are never blended into totals.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "site_id",
    "range",
    "platform"
   ],
   "required": []
  },
  {
   "name": "oam_tracking_send_test",
   "title": "OpenAdManager: Send tracking test",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Sends a test event through the whole path and returns per-platform proof. Free: test events are not metered.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "site_id",
    "event",
    "idempotency_key"
   ],
   "required": [
    "site_id"
   ]
  },
  {
   "name": "oam_tracking_set_paused",
   "title": "OpenAdManager: Pause or resume tracking",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Pauses or resumes sending to the ad platforms. Needs Website tracking in the user's AI permissions. Pausing can hurt ad optimisation.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "site_id",
    "paused",
    "idempotency_key"
   ],
   "required": [
    "site_id",
    "paused"
   ]
  },
  {
   "name": "oam_tracking_status",
   "title": "OpenAdManager: Tracking status",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Live status of tracked websites and apps: whether the script was seen on the site, what each platform (Google, Meta, TikTok) received in the last 24 hours, whether each connection was set up automatically and when it was last proven with a test event, and what still needs the customer. Counts come from the OpenAdManager sent-events log, not from the platforms. No keys, tokens or personal data.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "site_id"
   ],
   "required": []
  },
  {
   "name": "oam_tracking_update_events",
   "title": "OpenAdManager: Update tracked events",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Turns events on or off per platform, confirms or rejects suggested events, and sets the platform event mapping. Takes effect without a publish. The change can be undone with oam_undo_change.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "site_id",
    "changes",
    "idempotency_key"
   ],
   "required": [
    "site_id",
    "changes"
   ]
  },
  {
   "name": "oam_tracking_usage",
   "title": "OpenAdManager: Tracking usage",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Shows sites used of the plan limit, events used this month of the plan limit, the reset date and what happens over the limit.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [],
   "required": []
  },
  {
   "name": "oam_undo_change",
   "title": "OpenAdManager: Undo change",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Builds the inverse of an applied change from its stored before snapshot and runs it through the normal checks. The reverse needs its own permission (undoing a pause needs Turn ads on).",
   "risk": "write",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "change_id"
   ],
   "required": [
    "change_id"
   ]
  },
  {
   "name": "oam_update_budget",
   "title": "OpenAdManager: Update budget",
   "platform": "oam",
   "family": "Cross-platform (oam)",
   "description": "Sets the daily budget of one object (or its lifetime budget on Meta and TikTok), in account minor units, on Google Ads, Meta Ads and TikTok Ads. For Reddit Ads and X Ads use their own tools. Lowering needs Lower budgets, raising needs Raise budgets in the user's AI permissions.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "platform",
    "account_id",
    "level",
    "id",
    "daily_budget",
    "budget_kind"
   ],
   "required": [
    "platform",
    "account_id",
    "level",
    "id",
    "daily_budget"
   ]
  },
  {
   "name": "reddit_ads_account_history",
   "title": "Reddit Ads: Account history",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "The ad account's change log: who changed which campaign, ad group, ad, budget, bid, status or targeting, and when.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "ad_account_id",
    "start_time",
    "end_time",
    "change_types",
    "page_url"
   ],
   "required": [
    "ad_account_id"
   ]
  },
  {
   "name": "reddit_ads_activate",
   "title": "Reddit Ads: Turn on",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Launch: set campaigns, ad groups or ads of this account ACTIVE, which starts spending. Only after the user explicitly asks to launch. Each campaign and ad group carries confirm: its current goal_value, spend_cap and bid_value (null when unset), which the approval card shows and Reddit's live values must match. A campaign whose funding instrument cannot serve is refused. One result per item.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "items"
   ],
   "required": [
    "ad_account_id",
    "items"
   ]
  },
  {
   "name": "reddit_ads_archive",
   "title": "Reddit Ads: Archive",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Archive campaigns, ad groups or ads of this account (status ARCHIVED, stops them for good), or with delete true mark them DELETED. One result per item.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "items",
    "delete"
   ],
   "required": [
    "ad_account_id",
    "items"
   ]
  },
  {
   "name": "reddit_ads_bid_suggestion",
   "title": "Reddit Ads: Bid suggestion",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Suggested bid range (microcurrency) for an ad group setup: bid_type, objective, targeting and duration.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "ad_account_id",
    "data"
   ],
   "required": [
    "ad_account_id",
    "data"
   ]
  },
  {
   "name": "reddit_ads_create_ad",
   "title": "Reddit Ads: Create ad",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Create an ad in an ad group of this account, from a post (post_id from reddit_ads_create_post) with click_url and optional tracking parameters.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "data"
   ],
   "required": [
    "ad_account_id",
    "data"
   ]
  },
  {
   "name": "reddit_ads_create_ad_group",
   "title": "Reddit Ads: Create ad group",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Create an ad group in a campaign of this account: bid_type and bid_value (microcurrency), budget (unless the campaign optimises budget), schedule, conversion pixel and targeting (communities, interests, keywords, geolocations, devices, custom audiences, exclusions).",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "data"
   ],
   "required": [
    "ad_account_id",
    "data"
   ]
  },
  {
   "name": "reddit_ads_create_campaign",
   "title": "Reddit Ads: Create campaign",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Create a campaign. It spends nothing until reddit_ads_activate.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "data"
   ],
   "required": [
    "ad_account_id",
    "data"
   ]
  },
  {
   "name": "reddit_ads_create_custom_audience",
   "title": "Reddit Ads: Create custom audience",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Create a custom audience: CUSTOMER_LIST (then add hashed people with reddit_ads_update_audience_users), PIXEL_RETARGETING or ENGAGEMENT_RETARGETING.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "data"
   ],
   "required": [
    "ad_account_id",
    "data"
   ]
  },
  {
   "name": "reddit_ads_create_post",
   "title": "Reddit Ads: Create post",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Create an ad post (image, video, carousel or text) as a profile of this account, from library assets. Asynchronous: returns a receipt for reddit_ads_get_upload kind post_job, which gives the post_id for reddit_ads_create_ad.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "profile_id",
    "data"
   ],
   "required": [
    "ad_account_id",
    "profile_id",
    "data"
   ]
  },
  {
   "name": "reddit_ads_create_saved_audience",
   "title": "Reddit Ads: Create saved audience",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Save a reusable targeting set (communities, interests, geolocations and more) for ad groups.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "data"
   ],
   "required": [
    "ad_account_id",
    "data"
   ]
  },
  {
   "name": "reddit_ads_delete_custom_audience",
   "title": "Reddit Ads: Delete custom audience",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Delete a custom audience of this account. This cannot be undone.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "audience_id"
   ],
   "required": [
    "ad_account_id",
    "audience_id"
   ]
  },
  {
   "name": "reddit_ads_estimate_audience",
   "title": "Reddit Ads: Estimate audience size",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Audience size and delivery estimate (impressions, clicks, spend) for an objective, budget and targeting before anything is created.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "ad_account_id",
    "data"
   ],
   "required": [
    "ad_account_id",
    "data"
   ]
  },
  {
   "name": "reddit_ads_get",
   "title": "Reddit Ads: Get one item",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Read one campaign, ad group (with its targeting), ad, post, custom or saved audience, or lead form configuration, after checking it belongs to the ad account. Lead submissions are never returned.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "ad_account_id",
    "resource",
    "id"
   ],
   "required": [
    "ad_account_id",
    "resource",
    "id"
   ]
  },
  {
   "name": "reddit_ads_get_ad_account",
   "title": "Reddit Ads: Get ad account",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Read one ad account: name, currency, time zone, attribution and status.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "ad_account_id"
   ],
   "required": [
    "ad_account_id"
   ]
  },
  {
   "name": "reddit_ads_get_reporting_fields",
   "title": "Reddit Ads: Report fields",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Every report field and breakdown name reddit_ads_report accepts.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [],
   "required": []
  },
  {
   "name": "reddit_ads_get_upload",
   "title": "Reddit Ads: Upload status",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Poll an asynchronous job: kind asset_upload with the upload ids from reddit_ads_upload_media, or kind post_job with the receipt from reddit_ads_create_post.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "ad_account_id",
    "kind",
    "profile_id",
    "upload_ids",
    "receipt"
   ],
   "required": [
    "ad_account_id",
    "kind"
   ]
  },
  {
   "name": "reddit_ads_get_write_schema",
   "title": "Reddit Ads: Fields for a new ad",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Reddit's exact field schema for a create or update (OpenAdManager refuses billing and computed fields). Read it before building data for a write tool.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "operation"
   ],
   "required": [
    "operation"
   ]
  },
  {
   "name": "reddit_ads_keyword_suggestions",
   "title": "Reddit Ads: Keyword suggestions",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Suggest related keywords to target from seed keywords.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "seeds"
   ],
   "required": [
    "seeds"
   ]
  },
  {
   "name": "reddit_ads_list",
   "title": "Reddit Ads: List campaigns, ad groups and ads",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "List an ad account's campaigns, ad groups, ads, custom or saved audiences, pixels, profiles (the advertiser identities posts run as) or lead form configurations, with configured and effective status. Money is microcurrency.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "ad_account_id",
    "resource",
    "page_url"
   ],
   "required": [
    "ad_account_id",
    "resource"
   ]
  },
  {
   "name": "reddit_ads_list_ad_accounts",
   "title": "Reddit Ads: List ad accounts",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "List the ad accounts this sign-in reaches, with id, name, currency, time zone, business and status. Optionally only one business's.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "business_id"
   ],
   "required": []
  },
  {
   "name": "reddit_ads_list_businesses",
   "title": "Reddit Ads: List businesses",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "List the Reddit Ads businesses this sign-in belongs to.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [],
   "required": []
  },
  {
   "name": "reddit_ads_list_creatives",
   "title": "Reddit Ads: List creatives",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "List a profile's ad posts or its creative asset library (images, videos, headlines, calls to action). The profile must be attached to the ad account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "ad_account_id",
    "profile_id",
    "kind",
    "page_url"
   ],
   "required": [
    "ad_account_id",
    "profile_id",
    "kind"
   ]
  },
  {
   "name": "reddit_ads_list_funding_instruments",
   "title": "Reddit Ads: List funding instruments",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "List the ad account's funding instruments (read only): currency, credit limit, billable amount (microcurrency) and whether each can serve ads.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "ad_account_id",
    "page_url"
   ],
   "required": [
    "ad_account_id"
   ]
  },
  {
   "name": "reddit_ads_pause",
   "title": "Reddit Ads: Pause",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Pause campaigns, ad groups or ads of this account (stops spend). One result per item.",
   "risk": "write",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "items"
   ],
   "required": [
    "ad_account_id",
    "items"
   ]
  },
  {
   "name": "reddit_ads_pixel_status",
   "title": "Reddit Ads: Pixel status",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "When each conversion event last fired on a pixel of the ad account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "ad_account_id",
    "pixel_id"
   ],
   "required": [
    "ad_account_id",
    "pixel_id"
   ]
  },
  {
   "name": "reddit_ads_report",
   "title": "Reddit Ads: Performance report",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Performance report for the ad account: fields such as IMPRESSIONS, CLICKS, SPEND (microcurrency), CTR, CPC, ECPM, REACH, FREQUENCY, CONVERSION_* and VIDEO_*, broken down by up to three of CAMPAIGN_ID, AD_GROUP_ID, AD_ID, DATE, COUNTRY, COMMUNITY, KEYWORD, PLACEMENT and more. reddit_ads_get_reporting_fields lists every name.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "ad_account_id",
    "starts_at",
    "ends_at",
    "fields",
    "breakdowns",
    "filter",
    "time_zone_id",
    "page_url"
   ],
   "required": [
    "ad_account_id",
    "starts_at",
    "ends_at",
    "fields"
   ]
  },
  {
   "name": "reddit_ads_search_targeting",
   "title": "Reddit Ads: Targeting lookup",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Find targeting values: communities (subreddits, search by text), community_names (look up exact names, comma separated), community_suggestions (from names or a website_url), interests, geolocations (country, cities search or postal code), devices, carriers, languages, third_party_audiences, time_zones.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "type",
    "query",
    "country",
    "postal_code",
    "website_url",
    "page_url"
   ],
   "required": [
    "type"
   ]
  },
  {
   "name": "reddit_ads_send_conversion_events",
   "title": "Reddit Ads: Send conversion events",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Send conversion events (Conversions API) to a pixel of this account: event_at (ms), action_source, type.tracking_type, click_id, metadata (value, currency, order) and user. Email, phone, external id, IP and mobile ad ids are SHA-256 hashed by OpenAdManager first. Use test_id to try events without counting them.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "pixel_id",
    "events",
    "test_id"
   ],
   "required": [
    "ad_account_id",
    "pixel_id",
    "events"
   ]
  },
  {
   "name": "reddit_ads_update",
   "title": "Reddit Ads: Rename or edit",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Change a campaign, ad group, ad, saved audience or post of this account: names, targeting, schedule, click URLs, pixels and the like. Not budgets, bids, dates, status or the parent campaign/ad group (use reddit_ads_update_budget, pause, activate, archive). A live (ACTIVE) campaign, ad group or ad only takes a new name: pause it first for anything else. Nested objects such as targeting are replaced whole: read the object first.",
   "risk": "write",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "resource",
    "id",
    "data"
   ],
   "required": [
    "ad_account_id",
    "resource",
    "id",
    "data"
   ]
  },
  {
   "name": "reddit_ads_update_audience_users",
   "title": "Reddit Ads: Update audience users",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Add or remove people in a customer-list audience of this account. Emails and mobile ad ids are normalised and SHA-256 hashed by OpenAdManager before they leave (already hashed values pass through). At most 2500 rows a call.",
   "risk": "write",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "audience_id",
    "action",
    "column_order",
    "rows"
   ],
   "required": [
    "ad_account_id",
    "audience_id",
    "action",
    "column_order",
    "rows"
   ]
  },
  {
   "name": "reddit_ads_update_budget",
   "title": "Reddit Ads: Update budget",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Change a campaign's or ad group's money or dates: goal_type, goal_value (budget), spend_cap, bid_strategy, bid_type, bid_value (microcurrency), start_time, end_time, funding_instrument_id. Returns old and new values. Confirm amounts with the user first.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "resource",
    "id",
    "data"
   ],
   "required": [
    "ad_account_id",
    "resource",
    "id",
    "data"
   ]
  },
  {
   "name": "reddit_ads_upload_media",
   "title": "Reddit Ads: Upload media",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Import creative assets into a profile's library: images and videos by public https URL (Reddit fetches them), headlines and calls to action. Asynchronous: poll reddit_ads_get_upload.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "ad_account_id",
    "profile_id",
    "assets"
   ],
   "required": [
    "ad_account_id",
    "profile_id",
    "assets"
   ]
  },
  {
   "name": "reddit_ads_validate_targeting",
   "title": "Reddit Ads: Check targeting",
   "platform": "reddit",
   "family": "Reddit ads",
   "description": "Check targeting before use: keywords (brand safety per keyword) or geolocations (ids or city names; reports the ones Reddit cannot target).",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "type",
    "values"
   ],
   "required": [
    "type",
    "values"
   ]
  },
  {
   "name": "tiktok_ad_audience_size_estimate",
   "title": "TikTok Ads: Audience size",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Estimates how many people a TikTok targeting choice reaches. Changes nothing.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "targeting"
   ],
   "required": [
    "advertiser_id"
   ]
  },
  {
   "name": "tiktok_ad_create",
   "title": "TikTok Ads: Ad create",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Creates a TikTok ad. Use tiktok_ad_status_update to turn it on. Needs Create campaigns and ads in the user's AI permissions.",
   "risk": "high",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "adgroup_id",
    "creatives"
   ],
   "required": [
    "advertiser_id",
    "adgroup_id",
    "creatives"
   ]
  },
  {
   "name": "tiktok_ad_get",
   "title": "TikTok Ads: Ad get",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Lists or reads TikTok ads of an advertiser with their status.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "fields",
    "filtering",
    "page",
    "page_size"
   ],
   "required": [
    "advertiser_id"
   ]
  },
  {
   "name": "tiktok_ad_status_update",
   "title": "TikTok Ads: Ad status",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Pauses or enables TikTok ads. Pausing needs Pause ads, enabling needs Turn ads on in the user's AI permissions.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "ad_ids",
    "operation_status"
   ],
   "required": [
    "advertiser_id",
    "operation_status",
    "ad_ids"
   ]
  },
  {
   "name": "tiktok_ad_update",
   "title": "TikTok Ads: Ad update",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Changes an existing TikTok ad, for example its text or link. Needs the matching permission in the user's AI permissions (budget, bid, audience or ad text).",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "adgroup_id",
    "creatives"
   ],
   "required": [
    "advertiser_id",
    "adgroup_id"
   ]
  },
  {
   "name": "tiktok_adgroup_budget_update",
   "title": "TikTok Ads: Ad group budget",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Changes the budget of a TikTok ad group. Needs Raise budgets in the user's AI permissions.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "budget"
   ],
   "required": [
    "advertiser_id",
    "budget"
   ]
  },
  {
   "name": "tiktok_adgroup_create",
   "title": "TikTok Ads: Ad group create",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Creates a TikTok ad group. Use tiktok_adgroup_status_update to turn it on. Needs Create campaigns and ads in the user's AI permissions.",
   "risk": "high",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "campaign_id",
    "adgroup_name",
    "promotion_type",
    "placement_type",
    "placements",
    "location_ids",
    "budget_mode",
    "budget",
    "schedule_type",
    "schedule_start_time",
    "schedule_end_time",
    "optimization_goal",
    "billing_event",
    "bid_type",
    "bid_price",
    "pixel_id",
    "age_groups",
    "gender",
    "languages",
    "interest_category_ids",
    "audience_ids"
   ],
   "required": [
    "advertiser_id",
    "campaign_id",
    "adgroup_name",
    "budget_mode",
    "schedule_type",
    "schedule_start_time"
   ]
  },
  {
   "name": "tiktok_adgroup_get",
   "title": "TikTok Ads: Ad group get",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Lists or reads TikTok ad groups of an advertiser with their status, schedule and budget.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "fields",
    "filtering",
    "page",
    "page_size"
   ],
   "required": [
    "advertiser_id"
   ]
  },
  {
   "name": "tiktok_adgroup_status_update",
   "title": "TikTok Ads: Ad group status",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Pauses or enables TikTok ad groups. Pausing needs Pause ads, enabling needs Turn ads on in the user's AI permissions.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "adgroup_ids",
    "operation_status"
   ],
   "required": [
    "advertiser_id",
    "operation_status",
    "adgroup_ids"
   ]
  },
  {
   "name": "tiktok_adgroup_update",
   "title": "TikTok Ads: Ad group update",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Changes an existing TikTok ad group, for example its schedule, bid or audience. Needs the matching permission in the user's AI permissions (budget, bid, audience or ad text).",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "adgroup_id",
    "adgroup_name",
    "budget",
    "bid_price",
    "schedule_end_time"
   ],
   "required": [
    "advertiser_id",
    "adgroup_id"
   ]
  },
  {
   "name": "tiktok_advertiser_info_get",
   "title": "TikTok Ads: Advertiser info",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Reads basic details of a TikTok advertiser account: name, currency, time zone and status.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "fields"
   ],
   "required": [
    "advertiser_id"
   ]
  },
  {
   "name": "tiktok_campaign_copy_task_create",
   "title": "TikTok Ads: Campaign copy",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Duplicates a TikTok campaign. Use tiktok_campaign_status_update to turn it on. Needs Create campaigns and ads in the user's AI permissions.",
   "risk": "high",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "campaign_ids",
    "target_advertiser_id"
   ],
   "required": [
    "advertiser_id",
    "campaign_ids"
   ]
  },
  {
   "name": "tiktok_campaign_create",
   "title": "TikTok Ads: Campaign create",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Creates a TikTok campaign. Use tiktok_campaign_status_update to turn it on. Needs Create campaigns and ads in the user's AI permissions.",
   "risk": "high",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "campaign_name",
    "objective_type",
    "budget_mode",
    "budget",
    "campaign_type"
   ],
   "required": [
    "advertiser_id",
    "campaign_name",
    "objective_type"
   ]
  },
  {
   "name": "tiktok_campaign_get",
   "title": "TikTok Ads: Campaign get",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Lists or reads TikTok campaigns of an advertiser with their status and budget.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "fields",
    "filtering",
    "page",
    "page_size"
   ],
   "required": [
    "advertiser_id"
   ]
  },
  {
   "name": "tiktok_campaign_status_update",
   "title": "TikTok Ads: Campaign status",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Pauses or enables TikTok campaigns. Pausing needs Pause ads, enabling needs Turn ads on in the user's AI permissions.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "campaign_ids",
    "operation_status"
   ],
   "required": [
    "advertiser_id",
    "operation_status",
    "campaign_ids"
   ]
  },
  {
   "name": "tiktok_campaign_update",
   "title": "TikTok Ads: Campaign update",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Changes an existing TikTok campaign, for example its name or budget. Needs the matching permission in the user's AI permissions (budget, bid, audience or ad text).",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "campaign_id",
    "campaign_name",
    "budget_mode",
    "budget"
   ],
   "required": [
    "advertiser_id",
    "campaign_id"
   ]
  },
  {
   "name": "tiktok_creative_cta_recommend_get",
   "title": "TikTok Ads: Call to action ideas",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Suggests call-to-action buttons that fit a TikTok campaign objective.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "objective_type",
    "promotion_type"
   ],
   "required": [
    "advertiser_id"
   ]
  },
  {
   "name": "tiktok_dmp_custom_audience_get",
   "title": "TikTok Ads: Audience get",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Reads details of TikTok custom audiences: size and status.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "custom_audience_ids"
   ],
   "required": [
    "advertiser_id",
    "custom_audience_ids"
   ]
  },
  {
   "name": "tiktok_dmp_custom_audience_list_get",
   "title": "TikTok Ads: Audience list",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Lists the custom audiences of a TikTok advertiser.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "page",
    "page_size"
   ],
   "required": [
    "advertiser_id"
   ]
  },
  {
   "name": "tiktok_dmp_custom_audience_lookalike_create",
   "title": "TikTok Ads: Lookalike create",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Creates a TikTok lookalike audience from an existing custom audience. It only becomes live when an ad group uses it.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "custom_audience_id",
    "lookalike_spec"
   ],
   "required": [
    "advertiser_id",
    "custom_audience_id"
   ]
  },
  {
   "name": "tiktok_dmp_saved_audience_create",
   "title": "TikTok Ads: Saved audience create",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Saves a targeting choice (places, ages, interests) as a reusable TikTok audience.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "name",
    "targeting_spec"
   ],
   "required": [
    "advertiser_id",
    "name"
   ]
  },
  {
   "name": "tiktok_dmp_saved_audience_list_get",
   "title": "TikTok Ads: Saved audience list",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Lists the saved targeting audiences of a TikTok advertiser.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "page",
    "page_size"
   ],
   "required": [
    "advertiser_id"
   ]
  },
  {
   "name": "tiktok_file_image_ad_info_get",
   "title": "TikTok Ads: Image info",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Reads details of uploaded TikTok ad images: size, format and review status.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "image_ids"
   ],
   "required": [
    "advertiser_id",
    "image_ids"
   ]
  },
  {
   "name": "tiktok_file_image_ad_search",
   "title": "TikTok Ads: Image search",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Searches the images already uploaded to a TikTok advertiser account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "filtering",
    "page",
    "page_size"
   ],
   "required": [
    "advertiser_id"
   ]
  },
  {
   "name": "tiktok_file_image_ad_upload",
   "title": "TikTok Ads: Image upload",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Uploads an image for TikTok ads from a public web address and returns its image id, to use in tiktok_ad_create. Needs the user's own image address.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "upload_type",
    "image_url",
    "file_id",
    "file_name"
   ],
   "required": [
    "advertiser_id",
    "upload_type"
   ]
  },
  {
   "name": "tiktok_file_video_ad_info_get",
   "title": "TikTok Ads: Video info",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Reads details of uploaded TikTok ad videos: length, size, format and review status.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "video_ids"
   ],
   "required": [
    "advertiser_id",
    "video_ids"
   ]
  },
  {
   "name": "tiktok_file_video_ad_search",
   "title": "TikTok Ads: Video search",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Searches the videos already uploaded to a TikTok advertiser account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "filtering",
    "page",
    "page_size"
   ],
   "required": [
    "advertiser_id"
   ]
  },
  {
   "name": "tiktok_file_video_ad_upload",
   "title": "TikTok Ads: Video upload",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Uploads a video for TikTok ads from a public web address and returns its video id, to use in tiktok_ad_create. Needs the user's own video address.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "upload_type",
    "video_url",
    "file_id",
    "video_id",
    "file_name",
    "flaw_detect",
    "auto_fix_enabled"
   ],
   "required": [
    "advertiser_id",
    "upload_type"
   ]
  },
  {
   "name": "tiktok_identity_get",
   "title": "TikTok Ads: Identity list",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Lists the identities (the TikTok profile an ad is shown from) of an advertiser. An ad needs one.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "identity_type",
    "page",
    "page_size"
   ],
   "required": [
    "advertiser_id"
   ]
  },
  {
   "name": "tiktok_identity_info_get",
   "title": "TikTok Ads: Identity info",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Reads details of one TikTok ad identity.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "identity_id",
    "identity_type"
   ],
   "required": [
    "advertiser_id",
    "identity_id",
    "identity_type"
   ]
  },
  {
   "name": "tiktok_interest_keyword_search",
   "title": "TikTok Ads: Interest keywords",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Finds TikTok interests that match a word, with their ids, to use in an ad group.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "keyword",
    "language"
   ],
   "required": [
    "advertiser_id",
    "keyword"
   ]
  },
  {
   "name": "tiktok_pixel_event_create",
   "title": "TikTok Ads: Pixel event create",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Adds events to a TikTok pixel so conversions can be tracked. Does not spend money.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "pixel_id",
    "events"
   ],
   "required": [
    "advertiser_id",
    "pixel_id"
   ]
  },
  {
   "name": "tiktok_pixel_list_get",
   "title": "TikTok Ads: Pixel list",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Lists the TikTok pixels of an advertiser with their status and events, to check conversion tracking.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "pixel_ids",
    "name",
    "page",
    "page_size"
   ],
   "required": [
    "advertiser_id"
   ]
  },
  {
   "name": "tiktok_report_integrated_get",
   "title": "TikTok Ads: Integrated report",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Returns a TikTok performance report: spend, impressions, clicks and conversions by chosen dimensions and dates.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "report_type",
    "data_level",
    "dimensions",
    "metrics",
    "start_date",
    "end_date",
    "query_lifetime",
    "order_field",
    "order_type",
    "page",
    "page_size"
   ],
   "required": [
    "advertiser_id",
    "report_type",
    "dimensions"
   ]
  },
  {
   "name": "tiktok_smart_plus_ad_create",
   "title": "TikTok Ads: Smart+ ad create",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Creates an Upgraded Smart+ TikTok ad. Use tiktok_smart_plus_ad_status_update to turn it on. Needs Create campaigns and ads in the user's AI permissions.",
   "risk": "high",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "adgroup_id",
    "ad_name",
    "creative_list"
   ],
   "required": [
    "advertiser_id",
    "adgroup_id"
   ]
  },
  {
   "name": "tiktok_smart_plus_ad_get",
   "title": "TikTok Ads: Smart+ ad get",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Lists or reads Upgraded Smart+ ads of a TikTok advertiser with their status.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "fields",
    "filtering",
    "page",
    "page_size"
   ],
   "required": [
    "advertiser_id"
   ]
  },
  {
   "name": "tiktok_smart_plus_ad_status_update",
   "title": "TikTok Ads: Smart+ ad status",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Pauses or enables Upgraded Smart+ TikTok ads. Pausing needs Pause ads, enabling needs Turn ads on in the user's AI permissions.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "smart_plus_ad_ids",
    "operation_status"
   ],
   "required": [
    "advertiser_id",
    "operation_status",
    "smart_plus_ad_ids"
   ]
  },
  {
   "name": "tiktok_smart_plus_adgroup_budget_update",
   "title": "TikTok Ads: Smart+ ad group budget",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Changes the budget of an Upgraded Smart+ TikTok ad group. Needs Raise budgets in the user's AI permissions.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "budget"
   ],
   "required": [
    "advertiser_id",
    "budget"
   ]
  },
  {
   "name": "tiktok_smart_plus_adgroup_create",
   "title": "TikTok Ads: Smart+ ad group create",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Creates an Upgraded Smart+ TikTok ad group. Use tiktok_smart_plus_adgroup_status_update to turn it on. Needs Create campaigns and ads in the user's AI permissions.",
   "risk": "high",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "campaign_id",
    "adgroup_name",
    "budget_mode",
    "budget",
    "pixel_id"
   ],
   "required": [
    "advertiser_id",
    "campaign_id",
    "adgroup_name"
   ]
  },
  {
   "name": "tiktok_smart_plus_adgroup_get",
   "title": "TikTok Ads: Smart+ ad group get",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Lists or reads Upgraded Smart+ ad groups of a TikTok advertiser with their status and budget.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "fields",
    "filtering",
    "page",
    "page_size"
   ],
   "required": [
    "advertiser_id"
   ]
  },
  {
   "name": "tiktok_smart_plus_adgroup_status_update",
   "title": "TikTok Ads: Smart+ ad group status",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Pauses or enables Upgraded Smart+ TikTok ad groups. Pausing needs Pause ads, enabling needs Turn ads on in the user's AI permissions.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "adgroup_ids",
    "operation_status"
   ],
   "required": [
    "advertiser_id",
    "operation_status",
    "adgroup_ids"
   ]
  },
  {
   "name": "tiktok_smart_plus_campaign_create",
   "title": "TikTok Ads: Smart+ campaign create",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Creates an Upgraded Smart+ TikTok campaign. Use tiktok_smart_plus_campaign_status_update to turn it on. Needs Create campaigns and ads in the user's AI permissions.",
   "risk": "high",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "campaign_name",
    "objective_type",
    "budget_mode",
    "budget"
   ],
   "required": [
    "advertiser_id",
    "campaign_name",
    "objective_type"
   ]
  },
  {
   "name": "tiktok_smart_plus_campaign_get",
   "title": "TikTok Ads: Smart+ campaign get",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Lists or reads Upgraded Smart+ campaigns of a TikTok advertiser with their status and budget.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "fields",
    "filtering",
    "page",
    "page_size"
   ],
   "required": [
    "advertiser_id"
   ]
  },
  {
   "name": "tiktok_smart_plus_campaign_status_update",
   "title": "TikTok Ads: Smart+ campaign status",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Pauses or enables Upgraded Smart+ TikTok campaigns. Pausing needs Pause ads, enabling needs Turn ads on in the user's AI permissions.",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "advertiser_id",
    "campaign_ids",
    "operation_status"
   ],
   "required": [
    "advertiser_id",
    "operation_status",
    "campaign_ids"
   ]
  },
  {
   "name": "tiktok_tool_interest_category_get",
   "title": "TikTok Ads: Interest categories",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Lists TikTok interest categories ads can target, with their ids.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "placements",
    "language"
   ],
   "required": [
    "advertiser_id"
   ]
  },
  {
   "name": "tiktok_tool_language_get",
   "title": "TikTok Ads: Language search",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Lists the languages TikTok ads can target, with their codes.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id"
   ],
   "required": [
    "advertiser_id"
   ]
  },
  {
   "name": "tiktok_tool_region_get",
   "title": "TikTok Ads: Region search",
   "platform": "tiktok",
   "family": "TikTok ads",
   "description": "Lists the countries and regions TikTok ads can target, with the ids ad groups use.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "advertiser_id",
    "placements",
    "objective_type",
    "level_range"
   ],
   "required": [
    "advertiser_id",
    "placements",
    "objective_type"
   ]
  },
  {
   "name": "x_activate_campaign",
   "title": "X Ads: Activate campaign",
   "platform": "x",
   "family": "X ads",
   "description": "Turns on an X campaign so its line items can spend. Needs Turn ads on in the user's AI permissions.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_activate_line_item",
   "title": "X Ads: Activate line item",
   "platform": "x",
   "family": "X ads",
   "description": "Turns on an X line item so it can spend money. Needs Turn ads on in the user's AI permissions.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_add_targeting_criterion",
   "title": "X Ads: Add targeting criterion",
   "platform": "x",
   "family": "X ads",
   "description": "Adds a targeting choice (location, interest, audience and so on) to an X line item.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_batch_do_not_reach_list_users",
   "title": "X Ads: Batch do not reach list users",
   "platform": "x",
   "family": "X ads",
   "description": "Adds or removes people on an X do-not-reach list. Use only when the user asks and has the right to share the list.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_create_ad_post",
   "title": "X Ads: Create ad post",
   "platform": "x",
   "family": "X ads",
   "description": "Publishes a promoted-only Post (not shown on the profile timeline) from the brand account on X. Needs Create campaigns and ads and Turn ads on in the user's AI permissions.",
   "risk": "high",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_create_app_event_tag",
   "title": "X Ads: Create app event tag",
   "platform": "x",
   "family": "X ads",
   "description": "Creates an X app event tag so app conversions can be tracked. Does not spend money.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_create_app_list",
   "title": "X Ads: Create app list",
   "platform": "x",
   "family": "X ads",
   "description": "Creates an X app list used to target or exclude mobile apps.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_create_campaign",
   "title": "X Ads: Create campaign",
   "platform": "x",
   "family": "X ads",
   "description": "Creates an X campaign. Use x_activate_campaign to turn it on (needs Turn ads on in the user's AI permissions).",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_create_card",
   "title": "X Ads: Create card",
   "platform": "x",
   "family": "X ads",
   "description": "Creates an X card (website, app or video card) for use in a promoted Post. It does not spend by itself.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_create_custom_audience",
   "title": "X Ads: Create custom audience",
   "platform": "x",
   "family": "X ads",
   "description": "Creates an empty X custom audience. It only reaches people once a line item uses it.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_create_do_not_reach_list",
   "title": "X Ads: Create do not reach list",
   "platform": "x",
   "family": "X ads",
   "description": "Creates an empty X do-not-reach list.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_create_line_item",
   "title": "X Ads: Create line item",
   "platform": "x",
   "family": "X ads",
   "description": "Creates an X line item (ad group) with its objective, bid, budget and placements. Use x_activate_line_item to turn it on (needs Turn ads on in the user's AI permissions).",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_create_media_creative",
   "title": "X Ads: Create media creative",
   "platform": "x",
   "family": "X ads",
   "description": "Creates an X media creative (an image or video ad) on a line item.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_create_media_library_item",
   "title": "X Ads: Create media library item",
   "platform": "x",
   "family": "X ads",
   "description": "Adds an image or video to the X media library of an ads account.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_create_tracking_tag",
   "title": "X Ads: Create tracking tag",
   "platform": "x",
   "family": "X ads",
   "description": "Creates an X third-party tracking tag for a creative.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_create_web_event_tag",
   "title": "X Ads: Create web event tag",
   "platform": "x",
   "family": "X ads",
   "description": "Creates an X pixel event (web event tag) so conversions can be tracked. Does not spend money.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_delete_account_media",
   "title": "X Ads: Delete account media",
   "platform": "x",
   "family": "X ads",
   "description": "Deletes an X account media. Needs Delete and archive in the user's AI permissions, and it cannot be undone.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_delete_app_event_tag",
   "title": "X Ads: Delete app event tag",
   "platform": "x",
   "family": "X ads",
   "description": "Deletes an X app event tag. Needs Delete and archive in the user's AI permissions, and it cannot be undone.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_delete_app_list",
   "title": "X Ads: Delete app list",
   "platform": "x",
   "family": "X ads",
   "description": "Deletes an X app list. Needs Delete and archive in the user's AI permissions, and it cannot be undone.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_delete_card",
   "title": "X Ads: Delete card",
   "platform": "x",
   "family": "X ads",
   "description": "Deletes an X card. Needs Delete and archive in the user's AI permissions, and it cannot be undone.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_delete_custom_audience",
   "title": "X Ads: Delete custom audience",
   "platform": "x",
   "family": "X ads",
   "description": "Deletes an X custom audience. Needs Delete and archive in the user's AI permissions, and it cannot be undone.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_delete_do_not_reach_list",
   "title": "X Ads: Delete do not reach list",
   "platform": "x",
   "family": "X ads",
   "description": "Deletes an X do not reach list. Needs Delete and archive in the user's AI permissions, and it cannot be undone.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_delete_media_creative",
   "title": "X Ads: Delete media creative",
   "platform": "x",
   "family": "X ads",
   "description": "Deletes an X media creative. Needs Delete and archive in the user's AI permissions, and it cannot be undone.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_delete_media_library_item",
   "title": "X Ads: Delete media library item",
   "platform": "x",
   "family": "X ads",
   "description": "Deletes an X media library item. Needs Delete and archive in the user's AI permissions, and it cannot be undone.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_delete_tracking_tag",
   "title": "X Ads: Delete tracking tag",
   "platform": "x",
   "family": "X ads",
   "description": "Deletes an X tracking tag. Needs Delete and archive in the user's AI permissions, and it cannot be undone.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_delete_web_event_tag",
   "title": "X Ads: Delete web event tag",
   "platform": "x",
   "family": "X ads",
   "description": "Deletes an X web event tag. Needs Delete and archive in the user's AI permissions, and it cannot be undone.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_estimate_audience",
   "title": "X Ads: Estimate audience",
   "platform": "x",
   "family": "X ads",
   "description": "Estimates how many people an X targeting choice reaches. Changes nothing.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_get_account_media",
   "title": "X Ads: Get account media",
   "platform": "x",
   "family": "X ads",
   "description": "Reads one X account media of an ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_get_account_stats",
   "title": "X Ads: Get account stats",
   "platform": "x",
   "family": "X ads",
   "description": "Returns X performance numbers for campaigns, line items or ads over a date range: impressions, clicks, engagements and spend.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_get_active_entities",
   "title": "X Ads: Get active entities",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the X campaigns, line items and ads that served in a date range, to see what is really running.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_get_app_event_tag",
   "title": "X Ads: Get app event tag",
   "platform": "x",
   "family": "X ads",
   "description": "Reads one X app event tag of an ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_get_app_list",
   "title": "X Ads: Get app list",
   "platform": "x",
   "family": "X ads",
   "description": "Reads one X app list of an ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_get_campaign",
   "title": "X Ads: Get campaign",
   "platform": "x",
   "family": "X ads",
   "description": "Reads one X campaign: status, budget, dates and funding.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_get_campaign_reach",
   "title": "X Ads: Get campaign reach",
   "platform": "x",
   "family": "X ads",
   "description": "Returns how many people an X campaign reached and how often, for a date range.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_get_card",
   "title": "X Ads: Get card",
   "platform": "x",
   "family": "X ads",
   "description": "Reads one X card of an ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_get_custom_audience",
   "title": "X Ads: Get custom audience",
   "platform": "x",
   "family": "X ads",
   "description": "Reads one X custom audience of an ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_get_funding_instrument",
   "title": "X Ads: Get funding instrument",
   "platform": "x",
   "family": "X ads",
   "description": "Reads one funding instrument of an X ads account, read only.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_get_line_item",
   "title": "X Ads: Get line item",
   "platform": "x",
   "family": "X ads",
   "description": "Reads one X line item: status, objective, bid, budget, schedule and placements.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_get_media_creative",
   "title": "X Ads: Get media creative",
   "platform": "x",
   "family": "X ads",
   "description": "Reads one X media creative of an ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_get_media_library_item",
   "title": "X Ads: Get media library item",
   "platform": "x",
   "family": "X ads",
   "description": "Reads one X media library item of an ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_get_promoted_post",
   "title": "X Ads: Get promoted post",
   "platform": "x",
   "family": "X ads",
   "description": "Reads one promoted Post of an X ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_get_targeting_criterion",
   "title": "X Ads: Get targeting criterion",
   "platform": "x",
   "family": "X ads",
   "description": "Reads one targeting criterion of an X line item.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_get_tracking_tag",
   "title": "X Ads: Get tracking tag",
   "platform": "x",
   "family": "X ads",
   "description": "Reads one X tracking tag of an ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_get_web_event_tag",
   "title": "X Ads: Get web event tag",
   "platform": "x",
   "family": "X ads",
   "description": "Reads one X web event tag of an ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_account_media",
   "title": "X Ads: List account media",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the media uploaded to an X ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_account_posts",
   "title": "X Ads: List account posts",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the Posts of the account that can be promoted, including promoted-only posts.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_ads_accounts",
   "title": "X Ads: List ads accounts",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the X ads accounts this sign-in can use, with their ids, names, currencies and time zones.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [],
   "required": []
  },
  {
   "name": "x_list_app_event_tags",
   "title": "X Ads: List app event tags",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the X app event tags of an ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_app_lists",
   "title": "X Ads: List app lists",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the X app lists of an ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_campaigns",
   "title": "X Ads: List campaigns",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the campaigns of an X ads account with their status, budget and dates.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_cards",
   "title": "X Ads: List cards",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the X cards of an ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_custom_audience_targeted",
   "title": "X Ads: List custom audience targeted",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the X line items that target a custom audience.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_custom_audiences",
   "title": "X Ads: List custom audiences",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the X custom audiences of an ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_do_not_reach_lists",
   "title": "X Ads: List do not reach lists",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the do-not-reach lists of an X ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_funding_instruments",
   "title": "X Ads: List funding instruments",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the payment methods and credit lines of an X ads account, read only. They cannot be changed here.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_line_item_placements",
   "title": "X Ads: List line item placements",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the placements X offers for a product and objective, to use when creating a line item.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_line_items",
   "title": "X Ads: List line items",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the line items (X ad groups) of an ads account with their status, bid, budget, schedule and targeting summary.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_media_creatives",
   "title": "X Ads: List media creatives",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the X media creatives of an ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_media_library",
   "title": "X Ads: List media library",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the images and videos in the X media library of an ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_post_previews",
   "title": "X Ads: List post previews",
   "platform": "x",
   "family": "X ads",
   "description": "Shows how a Post looks as an X ad before it is promoted.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_promoted_posts",
   "title": "X Ads: List promoted posts",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the Posts promoted in an X ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_targeting_criteria",
   "title": "X Ads: List targeting criteria",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the targeting criteria of an X line item.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_tracking_tags",
   "title": "X Ads: List tracking tags",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the X tracking tags of an ads account.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_list_web_event_tags",
   "title": "X Ads: List web event tags",
   "platform": "x",
   "family": "X ads",
   "description": "Lists the X pixel events (web event tags) of an ads account, to check conversion tracking.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_promote_post",
   "title": "X Ads: Promote post",
   "platform": "x",
   "family": "X ads",
   "description": "Promotes an existing X Post as an ad on a line item, which can spend money. Needs Create campaigns and ads and Turn ads on in the user's AI permissions.",
   "risk": "high",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_remove_targeting",
   "title": "X Ads: Remove targeting",
   "platform": "x",
   "family": "X ads",
   "description": "Removes a targeting choice from an X line item.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_search_targeting_interests",
   "title": "X Ads: Search targeting interests",
   "platform": "x",
   "family": "X ads",
   "description": "Finds X interest and topic targeting options that match a word, with their ids.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_search_targeting_locations",
   "title": "X Ads: Search targeting locations",
   "platform": "x",
   "family": "X ads",
   "description": "Finds X locations (countries, regions, cities) that match a word, with their ids.",
   "risk": "read",
   "readOnly": true,
   "destructive": false,
   "scopes": [
    "oam:read"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_update_campaign",
   "title": "X Ads: Update campaign",
   "platform": "x",
   "family": "X ads",
   "description": "Pauses an X campaign, or renames it. Each change needs its switch in the user's AI permissions (Pause ads, Turn ads on, Raise budgets and so on).",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_update_custom_audience",
   "title": "X Ads: Update custom audience",
   "platform": "x",
   "family": "X ads",
   "description": "Renames an X custom audience.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_update_line_item",
   "title": "X Ads: Update line item",
   "platform": "x",
   "family": "X ads",
   "description": "Pauses an X line item, or renames it. Each change needs its switch in the user's AI permissions (Pause ads, Turn ads on, Change bids and so on).",
   "risk": "adaptive",
   "readOnly": false,
   "destructive": true,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_update_media_library_item",
   "title": "X Ads: Update media library item",
   "platform": "x",
   "family": "X ads",
   "description": "Changes the name or details of an item in the X media library.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_update_tracking_tag",
   "title": "X Ads: Update tracking tag",
   "platform": "x",
   "family": "X ads",
   "description": "Changes an X third-party tracking tag.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  },
  {
   "name": "x_update_web_event_tag",
   "title": "X Ads: Update web event tag",
   "platform": "x",
   "family": "X ads",
   "description": "Changes an X pixel event (web event tag), for example its name or attribution window.",
   "risk": "write",
   "readOnly": false,
   "destructive": false,
   "scopes": [
    "oam:write"
   ],
   "args": [
    "account_id"
   ],
   "required": [
    "account_id"
   ]
  }
 ]
}
