# Adako — every tool > Adako is an MCP server and REST API that connects Claude, ChatGPT, Cursor and other assistants to Google Ads, > Meta Ads, ChatGPT Ads, TikTok Ads and LinkedIn Ads. Reads run instantly. Every write becomes a proposal the > operator approves, and everything Adako creates starts paused. MCP endpoint: https://adako.ai/mcp REST: POST https://adako.ai/api/v1/tools/{tool_name}/execute Documentation: https://adako.ai/docs · plain text: https://adako.ai/docs/llms.txt 231 tools. A client sees 22 entries: 15 callable by name and 7 routers. Anything not in the direct list is called as router(action="execute", tool_name="…", arguments={...}). A router also takes action="list_tools" and action="get_tool_schema", both free. A platform router takes accounts=["…"] or accounts="all_active" on READ tools: one task per account, at most 20. search_tools and get_tool_schema find a tool from plain wording. Both free. Never guess a tool name. Account arguments: customer_id (Google Ads), ad_account_id (Meta Ads, ChatGPT Ads, LinkedIn Ads), advertiser_id (TikTok Ads). Ids are strings. Money is a decimal in the account currency. ## Callable by name - approve_proposal — Approve and execute a pending proposal - get_connections_status — Connection health per platform - get_tool_schema — Get the exact arguments a tool takes - get_usage_status — Plan and task usage - list_connected_accounts — List ad accounts (active and inactive) - list_pending_proposals — List proposals waiting for approval - reject_proposal — Reject a pending proposal - search_tools — Find the right Adako tool for a job - start_here — Start here — personalised next step - switch_primary_account — Switch the primary ad account for a platform - google_get_campaign_performance — Google Ads campaign performance with period-over-period change - meta_get_campaign_performance — Meta campaign performance - chatgpt_get_performance — Read ChatGPT Ads performance - tiktok_get_campaign_performance — Read TikTok campaign performance - linkedin_get_campaign_performance — LinkedIn campaign performance ## Routers - google_ads — Google Ads, 69 tools - meta_ads — Meta Ads, 42 tools - chatgpt_ads — ChatGPT Ads, 22 tools - tiktok_ads — TikTok Ads, 29 tools - linkedin_ads — LinkedIn Ads, 33 tools - monitoring — Monitoring and reporting, 13 tools - diagnostics — Diagnostics, 8 tools ## Every tool Format: name [risk, cost] call line, then the first line of the tool description. ### Adako (31) #### proposals - approve_proposal [destructive-write, free] approve_proposal({...}) Executes a pending proposal exactly once and reads the object back. - list_pending_proposals [read-only, free] list_pending_proposals({...}) Lists writes that were proposed but not yet approved, with their preview and expiry (48 h). - reject_proposal [write, free] reject_proposal({...}) Marks a pending proposal as rejected so it will never execute. #### monitoring - create_monitor [write, free, pro plan] monitoring(action="execute", tool_name="create_monitor", arguments={...}) Saves a rule that Adako evaluates once a day against its synced copy of the account — no platform call, no task cost. - delete_monitor [destructive-write, free] monitoring(action="execute", tool_name="delete_monitor", arguments={...}) Removes a monitor and its evaluation history for good. - get_monitor_history [read-only, free] monitoring(action="execute", tool_name="get_monitor_history", arguments={...}) Returns one row per day the monitor was evaluated: the value, the baseline, whether the rule held and whether an alert was sent. - list_monitors [read-only, free] monitoring(action="execute", tool_name="list_monitors", arguments={...}) Lists every monitor with its rule, whether it is on, when it last ran and when it last fired. - list_pending_actions [read-only, free] monitoring(action="execute", tool_name="list_pending_actions", arguments={...}) Lists the proposals that monitors created when they fired: which monitor, which day, what it wants to change, and when it expires. - manage_action [destructive-write, free] monitoring(action="execute", tool_name="manage_action", arguments={...}) Applies or declines one proposal that a monitor created. - test_monitor [read-only, free] monitoring(action="execute", tool_name="test_monitor", arguments={...}) Runs a monitor — a saved one, or one described inline — against the synced data for each of the last 7 days and says which days it would have alerted on. - update_monitor [write, free, pro plan] monitoring(action="execute", tool_name="update_monitor", arguments={...}) Changes a monitor's threshold, rule or on/off state. #### diagnostics - explain_error [read-only, free] diagnostics(action="execute", tool_name="explain_error", arguments={...}) Translates a raw error from any connected ad platform into a plain-language cause, a concrete fix, and the Adako tool to call next. - get_campaign_spec [read-only, free] diagnostics(action="execute", tool_name="get_campaign_spec", arguments={...}) Returns the full specification for one campaign type: required and optional fields, text and asset limits, the objective matrix, the minimum budget, what Adako creates in what order, and the pitfalls that cause most rejections. - list_what_i_can_do [read-only, free] diagnostics(action="execute", tool_name="list_what_i_can_do", arguments={...}) Lists what Adako can actually do for THIS user: the tools available on the platforms they have connected, grouped by job, plus the Adako-level abilities that work without any platform. - suggest_next_action [read-only, free] diagnostics(action="execute", tool_name="suggest_next_action", arguments={...}) Looks at this user's actual state — connections, active accounts, pending approvals, the last ten calls and the remaining quota — and returns three concrete next steps, each with the tool to call and what it costs. - usage_value_summary [read-only, free] diagnostics(action="execute", tool_name="usage_value_summary", arguments={...}) Summarises this user's real activity over a period: tasks by platform and by kind of work, reads versus writes, proposals created, approved, rejected and executed, the five most-used tools, and a plain statement of what those calls did. - validate_campaign_draft [read-only, free] diagnostics(action="execute", tool_name="validate_campaign_draft", arguments={...}) Checks a campaign draft field by field against Adako's spec for that platform and campaign type, and returns every problem with a severity and what to do about it. - verify_campaign_is_live [read-only, free] diagnostics(action="execute", tool_name="verify_campaign_is_live", arguments={...}) Answers one question with real data: does this campaign exist, is it switched on, and does it have a budget it can spend? - why_did_this_fail [read-only, free] diagnostics(action="execute", tool_name="why_did_this_fail", arguments={...}) Reads this user's real Adako call log, finds the calls that failed or were blocked, and explains each one: the cause, the fix, and the tool to call next. #### reporting - generate_report_now [write, free, pro plan] monitoring(action="execute", tool_name="generate_report_now", arguments={...}) Composes a report from Adako's synced data and stores it, so it also has a permanent web page. - list_reports [read-only, free] monitoring(action="execute", tool_name="list_reports", arguments={...}) Lists reports — scheduled briefs and on-demand ones — newest first, with the period each covers and a link to its page. - list_scheduled_tasks [read-only, free] monitoring(action="execute", tool_name="list_scheduled_tasks", arguments={...}) Lists every recurring brief or report with its cadence, delivery address, last run and next run. - manage_scheduled_task [write, free] monitoring(action="execute", tool_name="manage_scheduled_task", arguments={...}) Pauses, resumes or deletes a recurring brief. - schedule_brief [write, free, pro plan] monitoring(action="execute", tool_name="schedule_brief", arguments={...}) Sets up a daily or weekly brief composed from Adako's synced data and emailed to the operator. #### system - get_connections_status [read-only, free] get_connections_status({...}) Shows every platform login the user has connected, its token health (active / needs re-authorisation / revoked), and the active + primary ad accounts under it. - get_usage_status [read-only, free] get_usage_status({...}) Returns the user's plan, tasks used vs limit for the current period, when it resets, active ad accounts vs the plan limit, and the upgrade link. - list_connected_accounts [read-only, free] list_connected_accounts({...}) Lists every ad account Adako knows for this user, with platform id, name, currency, timezone, and whether it is active and primary. - start_here [read-only, free] start_here({...}) Call this first in a new conversation, or whenever you are unsure what the user can do. - switch_primary_account [write, free] switch_primary_account({...}) Makes one account the primary account for its platform, the one later tools use when no account id is passed, and switches it on if it was inactive. #### discovery - get_tool_schema [read-only, free] get_tool_schema({...}) Returns the live JSON schema of one or more tools: required fields, enums, defaults, example prompts and the exact line to call it with. - search_tools [read-only, free] search_tools({...}) Finds the tools that do a job, ranked, from the user's own wording. ### Google Ads (70) #### audiences - google_add_audience_signal [write, 1 task] google_ads(action="execute", tool_name="google_add_audience_signal", arguments={...}) Adds an audience as a signal on a Performance Max asset group. - google_add_search_themes [write, 1 task] google_ads(action="execute", tool_name="google_add_search_themes", arguments={...}) Adds search themes to a Performance Max asset group. - google_get_search_themes [read-only, 1 task] google_ads(action="execute", tool_name="google_get_search_themes", arguments={...}) Lists the signals on a Performance Max asset group: the search themes and the audience signals, with Google's approval status for each. - google_remove_search_themes [destructive-write, 1 task] google_ads(action="execute", tool_name="google_remove_search_themes", arguments={...}) Removes search themes from a Performance Max asset group. - google_search_audiences [read-only, 1 task] google_ads(action="execute", tool_name="google_search_audiences", arguments={...}) Finds audiences usable in this account: the account's own audiences and remarketing/customer lists, plus Google's in-market and affinity interest segments when you pass a search term. #### assets - google_add_call_asset [write, 1 task] google_ads(action="execute", tool_name="google_add_call_asset", arguments={...}) Creates a call asset — a phone number shown next to the ad — and links it to the account, a campaign or an ad group. - google_add_callouts [write, 1 task] google_ads(action="execute", tool_name="google_add_callouts", arguments={...}) Creates callout assets — short, non-clickable phrases such as "Free shipping" or "Cancel anytime" — and links them to the account, a campaign or an ad group. - google_add_image_assets [write, 1 task] google_ads(action="execute", tool_name="google_add_image_assets", arguments={...}) Downloads images from https URLs, checks them against Google's rules (PNG/JPEG/static GIF, at most 5120 KB, the aspect ratio and minimum size of the slot they are for) and uploads the ones that pass as image assets. - google_add_sitelinks [write, 1 task] google_ads(action="execute", tool_name="google_add_sitelinks", arguments={...}) Creates sitelink assets and links them to the account, a campaign or an ad group. - google_add_structured_snippets [write, 1 task] google_ads(action="execute", tool_name="google_add_structured_snippets", arguments={...}) Creates a structured snippet asset — a fixed header such as "Types" or "Brands" followed by 3–10 values — and links it to the account, a campaign or an ad group. - google_get_asset_performance [read-only, 1 task] google_ads(action="execute", tool_name="google_get_asset_performance", arguments={...}) Returns Google's per-asset performance labels for responsive search ads — BEST, GOOD, LOW, LEARNING or PENDING — for each headline and description, with the impressions behind them. - google_list_assets [read-only, 1 task] google_ads(action="execute", tool_name="google_list_assets", arguments={...}) Lists the assets (extensions) that exist in the account and which campaigns or ad groups they are linked to. - google_remove_asset_links [destructive-write, 1 task] google_ads(action="execute", tool_name="google_remove_asset_links", arguments={...}) Removes the link between an asset and a campaign, ad group or the account, so the extension stops serving there. - google_set_business_name [write, 1 task] google_ads(action="execute", tool_name="google_set_business_name", arguments={...}) Creates a text asset holding the business name and links it as the BUSINESS_NAME asset of a campaign (or of the account). - google_validate_and_prepare_assets [read-only, free] google_ads(action="execute", tool_name="google_validate_and_prepare_assets", arguments={...}) Checks assets against Google's published rules without writing anything: image URLs are downloaded and measured (format, file size, dimensions, aspect ratio for the slot), text is length-checked, and every URL is checked for being a valid https address. #### keywords - google_add_keywords [write, 1 task] google_ads(action="execute", tool_name="google_add_keywords", arguments={...}) Adds keywords to one existing ad group, with an optional max CPC per keyword. - google_add_negative_keywords [write, 1 task] google_ads(action="execute", tool_name="google_add_negative_keywords", arguments={...}) Blocks queries from triggering ads anywhere in one campaign. - google_bulk_update_keyword_bids [destructive-write, 1 task] google_ads(action="execute", tool_name="google_bulk_update_keyword_bids", arguments={...}) Sets the maximum CPC on up to 300 keywords in one call. - google_bulk_update_keyword_status [destructive-write, 1 task] google_ads(action="execute", tool_name="google_bulk_update_keyword_status", arguments={...}) Pauses or enables up to 300 keywords in one call. - google_get_keyword_performance [read-only, 1 task] google_ads(action="execute", tool_name="google_get_keyword_performance", arguments={...}) Reports the highest-spending keywords for a period with match type, state, quality score, clicks, conversions, CPA and ROAS. - google_remove_negative_keywords [destructive-write, 1 task] google_ads(action="execute", tool_name="google_remove_negative_keywords", arguments={...}) Deletes negative keywords from a campaign so those queries can trigger ads again. - google_update_keyword [destructive-write, 1 task] google_ads(action="execute", tool_name="google_update_keyword", arguments={...}) Pauses, re-enables or re-bids one keyword. #### analysis - google_analyze_search_terms [read-only, 1 task] google_ads(action="execute", tool_name="google_analyze_search_terms", arguments={...}) Reads the actual queries people typed before an ad showed, then sorts them into three buckets: converting (at least one conversion), wasted (spend above the threshold with no conversions) and new (not yet added as a keyword or a negative). - google_analyze_wasted_spend [read-only, 1 task] google_ads(action="execute", tool_name="google_analyze_wasted_spend", arguments={...}) Finds keywords, and the campaigns they sit in, that spent real money over the period and recorded zero conversions. - google_explain_performance_anomaly [read-only, 1 task] google_ads(action="execute", tool_name="google_explain_performance_anomaly", arguments={...}) Decomposes a period-over-period change in one metric across campaigns, devices, networks, countries and search terms, and ranks the segments by how much of the total change each one accounts for. - google_get_benchmark_context [read-only, free] google_ads(action="execute", tool_name="google_get_benchmark_context", arguments={...}) Returns indicative Google Search medians — click-through rate, cost per click and landing-page conversion rate — for an industry. - google_get_geo_performance [read-only, 1 task] google_ads(action="execute", tool_name="google_get_geo_performance", arguments={...}) Splits spend, clicks, conversions, CPA and ROAS by country for the period, using Google's geographic report. - google_get_hourly_performance [read-only, 1 task] google_ads(action="execute", tool_name="google_get_hourly_performance", arguments={...}) Splits performance by hour of day and by day of week, in the account timezone. - google_optimize_budget_allocation [read-only, 1 task] google_ads(action="execute", tool_name="google_optimize_budget_allocation", arguments={...}) Produces a **plan** for moving budget between campaigns, based on what each one currently returns and whether it is actually budget-limited. #### management - google_apply_label [write, 1 task] google_ads(action="execute", tool_name="google_apply_label", arguments={...}) Applies an existing label to campaigns and/or ad groups. - google_create_label [write, 1 task] google_ads(action="execute", tool_name="google_create_label", arguments={...}) Creates a label in the account. - google_list_bidding_strategies [read-only, 1 task] google_ads(action="execute", tool_name="google_list_bidding_strategies", arguments={...}) Lists the portfolio (shared) bidding strategies in the account, their type, their target and how many campaigns use each one. - google_list_labels [read-only, 1 task] google_ads(action="execute", tool_name="google_list_labels", arguments={...}) Lists the labels defined in the account and the campaigns and ad groups each one is applied to. - google_pause_ad [destructive-write, 1 task] google_ads(action="execute", tool_name="google_pause_ad", arguments={...}) Stops one ad from serving, leaving the rest of the ad group running. - google_pause_ad_group [destructive-write, 1 task] google_ads(action="execute", tool_name="google_pause_ad_group", arguments={...}) Stops one ad group inside a campaign from serving, leaving the rest of the campaign running. - google_pause_campaign [destructive-write, 1 task] google_ads(action="execute", tool_name="google_pause_campaign", arguments={...}) Stops a live campaign from serving. - google_remove_label [destructive-write, 1 task] google_ads(action="execute", tool_name="google_remove_label", arguments={...}) Removes the link between a label and the campaigns or ad groups you list. - google_resume_ad [write, 1 task] google_ads(action="execute", tool_name="google_resume_ad", arguments={...}) Turns a paused ad back on. - google_resume_ad_group [write, 1 task] google_ads(action="execute", tool_name="google_resume_ad_group", arguments={...}) Turns a paused ad group back on. - google_resume_campaign [write, 1 task] google_ads(action="execute", tool_name="google_resume_campaign", arguments={...}) Turns a paused campaign back on. - google_set_device_bid_modifiers [destructive-write, 1 task] google_ads(action="execute", tool_name="google_set_device_bid_modifiers", arguments={...}) Sets the bid multiplier for phones, computers and tablets on one campaign. - google_update_bid_strategy [destructive-write, 1 task] google_ads(action="execute", tool_name="google_update_bid_strategy", arguments={...}) Changes how a campaign bids: maximise conversions (optionally with a target CPA), maximise conversion value (optionally with a target ROAS), maximise clicks, or manual CPC. - google_update_campaign [destructive-write, 1 task] google_ads(action="execute", tool_name="google_update_campaign", arguments={...}) Changes a campaign's name, on/off state, end date or Search-partner setting. - google_update_campaign_budget [destructive-write, 1 task] google_ads(action="execute", tool_name="google_update_campaign_budget", arguments={...}) Changes the average daily budget attached to one campaign. - google_update_campaign_networks [destructive-write, 1 task] google_ads(action="execute", tool_name="google_update_campaign_networks", arguments={...}) Turns a Search campaign's two extra networks on or off: Google search partners (other search sites) and display expansion (the Display Network with leftover budget). #### conversions - google_create_conversion_action [write, 1 task] google_ads(action="execute", tool_name="google_create_conversion_action", arguments={...}) Creates a website (WEBPAGE) conversion action so the account can record a goal. - google_get_conversion_action_performance [read-only, 1 task] google_ads(action="execute", tool_name="google_get_conversion_action_performance", arguments={...}) Reports, per conversion action, how many conversions it recorded in the period, their value, and whether it counts towards the "Conversions" column that Smart Bidding optimises against. - google_list_conversion_actions [read-only, 1 task] google_ads(action="execute", tool_name="google_list_conversion_actions", arguments={...}) Lists the conversion actions set up on the account: name, state, category, how each one counts (every conversion or one per click), whether it is included in the "Conversions" column, and the click-through lookback window. - google_update_conversion_action [destructive-write, 1 task] google_ads(action="execute", tool_name="google_update_conversion_action", arguments={...}) Changes one conversion action: its status, category, counting type, default value, click-through window, or whether it counts towards the Conversions column. #### creation - google_create_pmax_campaign [destructive-write, 1 task] google_ads(action="execute", tool_name="google_create_pmax_campaign", arguments={...}) Creates a whole Performance Max campaign in one atomic change: budget, campaign, location targeting, asset group, every text and image asset, and optional search themes and audience signal. - google_create_responsive_search_ad [write, 1 task] google_ads(action="execute", tool_name="google_create_responsive_search_ad", arguments={...}) Creates one responsive search ad inside an existing ad group. - google_create_search_campaign [write, 1 task] google_ads(action="execute", tool_name="google_create_search_campaign", arguments={...}) Creates a complete Search campaign in one atomic operation: daily budget, campaign, location and language targeting, ad groups, keywords, one responsive search ad per ad group and optional campaign-level negatives. #### structure - google_get_ad_creative [read-only, 1 task] google_ads(action="execute", tool_name="google_get_ad_creative", arguments={...}) Returns the actual copy of responsive search ads: every headline and description, the display paths, the final URLs, the ad strength and Google's approval status. - google_get_campaign_structure [read-only, 1 task] google_ads(action="execute", tool_name="google_get_campaign_structure", arguments={...}) Returns the inside of one campaign: its ad groups, the keywords in each (text, match type, state, quality score) and the responsive search ads (headlines, descriptions, display paths, final URL). - google_list_asset_groups [read-only, 1 task] google_ads(action="execute", tool_name="google_list_asset_groups", arguments={...}) Lists the asset groups in the account or in one Performance Max campaign, with their status, final URL and the ad strength Google assigns. - google_list_campaigns [read-only, 1 task] google_ads(action="execute", tool_name="google_list_campaigns", arguments={...}) Lists the campaigns in a Google Ads account with their state, campaign type, bidding strategy, daily budget (shared or not) and last-30-day spend, clicks and conversions. #### performance - google_get_ad_group_performance [read-only, 1 task] google_ads(action="execute", tool_name="google_get_ad_group_performance", arguments={...}) Reports spend, clicks, CTR, conversions, CPA and ROAS per ad group for a period, optionally inside one campaign, ordered by spend. - google_get_ad_performance [read-only, 1 task] google_ads(action="execute", tool_name="google_get_ad_performance", arguments={...}) Reports spend, clicks, CTR, conversions, CPA and ROAS for each ad, next to the immediately preceding period of the same length so the direction is visible. - google_get_asset_group_performance [read-only, 1 task] google_ads(action="execute", tool_name="google_get_asset_group_performance", arguments={...}) Reports spend, clicks, conversions, CPA and ROAS per Performance Max asset group for the period. - google_get_campaign_performance [read-only, 1 task] google_get_campaign_performance({...}) Reports spend, impressions, clicks, CTR, conversions, conversion value, CPA and ROAS per campaign for a period, plus the change against the immediately preceding period of the same length. - google_get_device_performance [read-only, 1 task] google_ads(action="execute", tool_name="google_get_device_performance", arguments={...}) Splits spend, clicks, conversions, CPA and ROAS by device (mobile, desktop, tablet) for the period, next to the previous period of the same length. #### targeting - google_get_ad_schedule [read-only, 1 task] google_ads(action="execute", tool_name="google_get_ad_schedule", arguments={...}) Returns the campaign's ad schedule: which days and hours it may serve, and the bid modifier on each block. - google_get_campaign_targeting [read-only, 1 task] google_ads(action="execute", tool_name="google_get_campaign_targeting", arguments={...}) Shows who and where a campaign is targeting: locations (with the resolved place names and any exclusions), languages, ad schedule, device bid adjustments and attached audiences. - google_list_languages [read-only, free] google_ads(action="execute", tool_name="google_list_languages", arguments={...}) Returns Google's language constant ids, which google_update_campaign_languages needs. - google_set_ad_schedule [destructive-write, 1 task] google_ads(action="execute", tool_name="google_set_ad_schedule", arguments={...}) Replaces a campaign's whole ad schedule with the blocks you pass. - google_update_campaign_languages [destructive-write, 1 task] google_ads(action="execute", tool_name="google_update_campaign_languages", arguments={...}) Replaces the set of languages a campaign targets. - google_update_campaign_locations [destructive-write, 1 task] google_ads(action="execute", tool_name="google_update_campaign_locations", arguments={...}) Adds or removes the locations a campaign targets. #### research - google_research_keywords [read-only, 1 task] google_ads(action="execute", tool_name="google_research_keywords", arguments={...}) Asks Google Keyword Planner for keyword ideas from seed terms or a landing page, and returns average monthly searches, competition and the top-of-page bid range for each. - google_resolve_locations [read-only, free] google_ads(action="execute", tool_name="google_resolve_locations", arguments={...}) Converts place names ("Berlin", "California", "United Kingdom") into the numeric geo target constant ids the write tools require. - google_validate_ad_copy [read-only, free] google_ads(action="execute", tool_name="google_validate_ad_copy", arguments={...}) Checks headlines, descriptions and display paths against the responsive search ad rules before anything is sent to Google: at most 15 headlines of 30 characters, at most 4 descriptions of 90, display paths of 15, at least 3 headlines and 2 descriptions, no duplicates, no shouting in capitals and no repeated or excessive punctuation. ### Meta Ads (43) #### creation - meta_add_ad [write, 2 tasks] meta_ads(action="execute", tool_name="meta_add_ad", arguments={...}) Creates one ad, PAUSED, inside an ad set that already exists. - meta_add_ad_set [write, 2 tasks] meta_ads(action="execute", tool_name="meta_add_ad_set", arguments={...}) Creates one new ad set, PAUSED, inside a campaign that already exists: its own audience, optimisation goal, budget and schedule. - meta_create_app_install_campaign [write, 3 tasks] meta_ads(action="execute", tool_name="meta_create_app_install_campaign", arguments={...}) Builds a complete app-install campaign: campaign, one ad set pointed at the right operating system, the image upload, the creative and one ad. - meta_create_carousel_campaign [write, 3 tasks] meta_ads(action="execute", tool_name="meta_create_carousel_campaign", arguments={...}) Builds a complete carousel campaign: campaign, one ad set, one image upload per card, the creative and one ad. - meta_create_flexible_ad [write, 2 tasks] meta_ads(action="execute", tool_name="meta_create_flexible_ad", arguments={...}) Creates one ad that carries several primary texts, headlines, descriptions and images; Meta assembles the combinations and learns which one works per person. - meta_create_image_campaign [write, 3 tasks] meta_ads(action="execute", tool_name="meta_create_image_campaign", arguments={...}) Builds a complete single-image campaign: campaign, one ad set, the image upload, the creative and one ad. - meta_create_video_campaign [write, 3 tasks] meta_ads(action="execute", tool_name="meta_create_video_campaign", arguments={...}) Builds a complete single-video campaign: campaign, one ad set, the video upload, the creative and one ad. #### analysis - meta_analyze_audiences [read-only, 2 tasks] meta_ads(action="execute", tool_name="meta_analyze_audiences", arguments={...}) Ranks the segments of one audience dimension against the account average on the metric that matches the objective: ROAS where revenue exists, otherwise cost per result. - meta_analyze_wasted_spend [read-only, 1 task] meta_ads(action="execute", tool_name="meta_analyze_wasted_spend", arguments={...}) Finds ad sets that spent money and produced no results in the window, and ad sets whose cost per result is far above the account's own average. - meta_detect_creative_fatigue [read-only, 2 tasks] meta_ads(action="execute", tool_name="meta_detect_creative_fatigue", arguments={...}) Compares the first days of a window with the last days, per ad, and flags creative fatigue: click-through rate falling while frequency and CPM rise. - meta_get_audience_insights [read-only, 2 tasks] meta_ads(action="execute", tool_name="meta_get_audience_insights", arguments={...}) Splits spend and results by one audience dimension: age, gender, age and gender together, country, region, platform, device or placement position. - meta_optimize_budget [read-only, 2 tasks] meta_ads(action="execute", tool_name="meta_optimize_budget", arguments={...}) Compares the ad sets in a campaign (or the whole account) on cost per result — or ROAS where revenue exists — and produces a reallocation plan: which budgets to raise, which to lower, by how much, and why. - meta_optimize_placements [read-only, 2 tasks] meta_ads(action="execute", tool_name="meta_optimize_placements", arguments={...}) Breaks spend and results down by placement (platform and position) and says which placements cost far more per result than the account average. #### targeting - meta_browse_targeting [read-only, free] meta_ads(action="execute", tool_name="meta_browse_targeting", arguments={...}) Walks Meta's targeting catalogue by category — interests, behaviours, demographics, life events, industries — instead of searching for a word. - meta_get_ad_set_delivery_estimate [read-only, 1 task] meta_ads(action="execute", tool_name="meta_get_ad_set_delivery_estimate", arguments={...}) Asks Meta how many people an ad set's current targeting could reach, and how many of them are reachable daily at the ad set's optimisation goal. - meta_get_ad_set_targeting [read-only, free] meta_ads(action="execute", tool_name="meta_get_ad_set_targeting", arguments={...}) Renders one ad set's targeting exactly as Meta holds it: locations, age, gender, detailed targeting, custom audiences, placements, devices and the Advantage+ audience setting. - meta_search_targeting [read-only, free] meta_ads(action="execute", tool_name="meta_search_targeting", arguments={...}) Turns a plain-language audience description into the ids Meta's write endpoints require: interest ids, behaviour ids, and location keys for countries, regions, cities, postcodes and media markets. #### management - meta_duplicate_campaign [write, 3 tasks] meta_ads(action="execute", tool_name="meta_duplicate_campaign", arguments={...}) Copies one campaign with Meta's own duplication, always PAUSED and always renamed with a suffix so the two are never confused. - meta_pause_entity [destructive-write, 1 task] meta_ads(action="execute", tool_name="meta_pause_entity", arguments={...}) Stops delivery on one campaign, ad set or ad by setting its status to PAUSED. - meta_resume_entity [write, 1 task] meta_ads(action="execute", tool_name="meta_resume_entity", arguments={...}) Sets one campaign, ad set or ad back to ACTIVE so it can deliver again. - meta_set_frequency_cap [write, 1 task] meta_ads(action="execute", tool_name="meta_set_frequency_cap", arguments={...}) Limits how often one person may see the ads in a reach-optimised ad set: at most max_frequency impressions every interval_days. - meta_update_ad [write, 1 task] meta_ads(action="execute", tool_name="meta_update_ad", arguments={...}) Changes one ad's name, status, creative or tracking parameters (url_tags). - meta_update_ad_set [destructive-write, 1 task] meta_ads(action="execute", tool_name="meta_update_ad_set", arguments={...}) Changes one ad set's targeting, optimisation goal, schedule or name. - meta_update_adset_budget [destructive-write, 1 task] meta_ads(action="execute", tool_name="meta_update_adset_budget", arguments={...}) Changes the daily or lifetime budget of one ad set. - meta_update_campaign [write, 1 task] meta_ads(action="execute", tool_name="meta_update_campaign", arguments={...}) Changes a campaign's name, status or lifetime spend cap. - meta_update_campaign_budget [destructive-write, 1 task] meta_ads(action="execute", tool_name="meta_update_campaign_budget", arguments={...}) Changes the daily or lifetime budget held at campaign level, which is how campaign budget optimisation (CBO) campaigns are funded: Meta distributes one budget across the ad sets. #### diagnostics - meta_explain_anomaly [read-only, 2 tasks] meta_ads(action="execute", tool_name="meta_explain_anomaly", arguments={...}) Compares a window with the equally long window before it and attributes the change to the ad sets, placements, countries or age-and-gender groups that caused it. - meta_validate_creative_url [read-only, free] meta_ads(action="execute", tool_name="meta_validate_creative_url", arguments={...}) Fetches a public image URL and reports whether it is reachable, what type and size it is, and its pixel dimensions, then checks any ad copy against Meta's length guidance. #### assets - meta_get_ad_creatives [read-only, 1 task] meta_ads(action="execute", tool_name="meta_get_ad_creatives", arguments={...}) Lists the creatives used by one ad, or by every ad in an ad set: headline, primary text, destination link, format and thumbnail. - meta_list_instagram_accounts [read-only, free] meta_ads(action="execute", tool_name="meta_list_instagram_accounts", arguments={...}) Lists the Instagram accounts this ad account may use as the ad's identity, both the ones linked directly to the ad account and the ones connected to its Pages. - meta_list_pages [read-only, 1 task] meta_ads(action="execute", tool_name="meta_list_pages", arguments={...}) Lists the Facebook Pages this ad account may advertise from, with any Instagram account linked to each one. - meta_list_promotable_apps [read-only, free] meta_ads(action="execute", tool_name="meta_list_promotable_apps", arguments={...}) Lists the mobile apps registered to this ad account's business that can be advertised, with their store URLs. #### performance - meta_get_ad_performance [read-only, 1 task] meta_ads(action="execute", tool_name="meta_get_ad_performance", arguments={...}) Ad-level results joined with the creative behind each ad (creative name and thumbnail), plus the previous-period comparison. - meta_get_adset_performance [read-only, 1 task] meta_ads(action="execute", tool_name="meta_get_adset_performance", arguments={...}) Ad-set level results with the objective's own KPI and a previous-period comparison, optionally split by a breakdown (age and gender, publisher platform and position, device, or country). - meta_get_campaign_performance [read-only, 1 task] meta_get_campaign_performance({...}) Campaign-level results for a window, next to the same-length window before it, with the KPI each campaign's objective is actually judged on: purchases and purchase ROAS for sales, leads and cost per lead for lead generation, link clicks and CPC for traffic, reach and CPM for awareness, engagements for engagement, installs for app promotion. #### structure - meta_get_lead_form_submissions [read-only, 2 tasks] meta_ads(action="execute", tool_name="meta_get_lead_form_submissions", arguments={...}) Reads the submissions of one lead form: when each lead arrived, which ad and campaign produced it, and the answers given. - meta_list_ad_sets [read-only, 1 task] meta_ads(action="execute", tool_name="meta_list_ad_sets", arguments={...}) Lists ad sets with budget, optimisation goal, billing event, a one-line targeting summary, schedule and learning-phase state. - meta_list_ads [read-only, 1 task] meta_ads(action="execute", tool_name="meta_list_ads", arguments={...}) Lists individual ads with delivery status, the creative behind each one and a preview link the user can open. - meta_list_campaigns [read-only, 1 task] meta_ads(action="execute", tool_name="meta_list_campaigns", arguments={...}) Lists the campaigns in a Meta ad account with objective, delivery status, budget (as a decimal in the account currency), bid strategy and any Advantage+ state the account exposes. - meta_list_lead_forms [read-only, 1 task] meta_ads(action="execute", tool_name="meta_list_lead_forms", arguments={...}) Lists the instant (lead gen) forms attached to the Pages this ad account can advertise from, with how many leads each has collected and what it asks for. #### audiences - meta_list_custom_audiences [read-only, 1 task] meta_ads(action="execute", tool_name="meta_list_custom_audiences", arguments={...}) Lists the saved custom and lookalike audiences on the ad account with their type, approximate size and whether Meta considers them usable right now. - meta_list_saved_audiences [read-only, free] meta_ads(action="execute", tool_name="meta_list_saved_audiences", arguments={...}) Lists the saved audiences in the ad account: the reusable targeting definitions someone built in Ads Manager, with their size estimate. #### conversions - meta_list_pixels [read-only, 1 task] meta_ads(action="execute", tool_name="meta_list_pixels", arguments={...}) Lists the pixels on the ad account with the time each one last received an event, and the standard events it has recently recorded where Meta exposes them. ### ChatGPT Ads (23) #### management - chatgpt_archive_campaign [destructive-write, 1 task] chatgpt_ads(action="execute", tool_name="chatgpt_archive_campaign", arguments={...}) Archives one campaign permanently. - chatgpt_pause_ad [destructive-write, 1 task] chatgpt_ads(action="execute", tool_name="chatgpt_pause_ad", arguments={...}) Stops delivery on one ad and leaves everything around it running. - chatgpt_pause_ad_group [destructive-write, 1 task] chatgpt_ads(action="execute", tool_name="chatgpt_pause_ad_group", arguments={...}) Stops delivery on one ad group without touching the rest of the campaign. - chatgpt_pause_campaign [destructive-write, 1 task] chatgpt_ads(action="execute", tool_name="chatgpt_pause_campaign", arguments={...}) Stops delivery on one campaign by setting it to paused. - chatgpt_resume_ad [write, 1 task] chatgpt_ads(action="execute", tool_name="chatgpt_resume_ad", arguments={...}) Sets one ad back to active so it can be shown again, inside whatever its ad group and campaign are doing. - chatgpt_resume_ad_group [write, 1 task] chatgpt_ads(action="execute", tool_name="chatgpt_resume_ad_group", arguments={...}) Sets one ad group back to active so it can deliver again. - chatgpt_resume_campaign [write, 1 task] chatgpt_ads(action="execute", tool_name="chatgpt_resume_campaign", arguments={...}) Sets one campaign back to active so it can deliver again. - chatgpt_update_ad [write, 1 task] chatgpt_ads(action="execute", tool_name="chatgpt_update_ad", arguments={...}) Changes the headline, body copy or destination URL on an existing chat card. - chatgpt_update_ad_group [write, 1 task] chatgpt_ads(action="execute", tool_name="chatgpt_update_ad_group", arguments={...}) Changes an ad group's name, bidding or context hints, and — because geo targeting is a campaign setting on this platform — optionally the locations the whole parent campaign runs in. - chatgpt_update_campaign [write, 1 task] chatgpt_ads(action="execute", tool_name="chatgpt_update_campaign", arguments={...}) Changes a campaign's name, status or spend limits. #### creation - chatgpt_create_ad [write, 3 tasks] chatgpt_ads(action="execute", tool_name="chatgpt_create_ad", arguments={...}) Adds one paused chat card ad to an ad group that already exists: the image is downloaded, checked and uploaded, then the ad is created. - chatgpt_create_ad_group [write, 2 tasks] chatgpt_ads(action="execute", tool_name="chatgpt_create_ad_group", arguments={...}) Adds one paused ad group to a campaign that already exists, with its own bidding configuration and optional context hints. - chatgpt_launch_ad [write, 8 tasks] chatgpt_ads(action="execute", tool_name="chatgpt_launch_ad", arguments={...}) Builds a complete, paused campaign on ChatGPT Ads: campaign, ad group, image upload and one chat card ad. #### targeting - chatgpt_geo_lookup [read-only, free] chatgpt_ads(action="execute", tool_name="chatgpt_geo_lookup", arguments={...}) Turns a place name into the location ids the platform targets by. #### discovery - chatgpt_get_account [read-only, free] chatgpt_ads(action="execute", tool_name="chatgpt_get_account", arguments={...}) Reads the advertiser account the stored key belongs to: id, name, website, currency, timezone, account status and the platform's review verdict on the account. - chatgpt_get_account_limits [read-only, free] chatgpt_ads(action="execute", tool_name="chatgpt_get_account_limits", arguments={...}) Lists what this advertiser account supports: the campaign objectives, what the platform can bid towards, what it bills on, the minimum spend limit, the chat card and image rules, and the account's own currency, timezone and review state. #### performance - chatgpt_get_performance [read-only, 1 task] chatgpt_get_performance({...}) Reports impressions, clicks, spend, conversions and the ratios derived from them (CTR, CPC, CPM, CPA, ROAS) for a window, broken down by campaign, ad group or ad — and compares every number with the equally long period immediately before it. #### conversions - chatgpt_get_pixel_settings [read-only, 1 task] chatgpt_ads(action="execute", tool_name="chatgpt_get_pixel_settings", arguments={...}) Reads one pixel in detail: when it last received an event, whether a Conversions API key exists, and the conversion event settings on it — the ids a conversions campaign optimises towards. - chatgpt_list_pixels [read-only, 1 task] chatgpt_ads(action="execute", tool_name="chatgpt_list_pixels", arguments={...}) Lists the measurement pixels on the advertiser account, when each last received an event, and whether a Conversions API key exists for it. #### structure - chatgpt_list_ad_groups [read-only, 1 task] chatgpt_ads(action="execute", tool_name="chatgpt_list_ad_groups", arguments={...}) Lists ad groups with status, bidding configuration (what the account is billed on, the strategy, and any fixed maximum bid as a decimal in the account currency), the free-text context hints that steer where the ads appear, and any serving issue. - chatgpt_list_ads [read-only, 1 task] chatgpt_ads(action="execute", tool_name="chatgpt_list_ads", arguments={...}) Lists individual ads with their status, the chat card behind each one (title, body, destination) and — most usefully — the platform's review verdict and reason. - chatgpt_list_campaigns [read-only, 1 task] chatgpt_ads(action="execute", tool_name="chatgpt_list_campaigns", arguments={...}) Lists the campaigns in the advertiser account with status, objective, what the platform bids towards, the lifetime and daily spend limits as decimals in the account currency, the schedule, where they are allowed to run, and any serving issue the platform reports. #### assets - chatgpt_validate_chat_card [read-only, free] chatgpt_ads(action="execute", tool_name="chatgpt_validate_chat_card", arguments={...}) Checks a chat card against the rules before anything is created: the headline is 3–50 characters, the body at most 100, the destination an https URL of at most 2048 characters, and the image square, at least 400 px a side, under 10 MB and one of image/jpeg, image/png, image/webp. ### TikTok Ads (30) #### creation - tiktok_add_ad [write, 2 tasks] tiktok_ads(action="execute", tool_name="tiktok_add_ad", arguments={...}) Creates one more ad inside an existing TikTok ad group, PAUSED, from a video already in the library or an organic post (Spark Ad). - tiktok_add_ad_group [write, 2 tasks] tiktok_ads(action="execute", tool_name="tiktok_add_ad_group", arguments={...}) Creates one more ad group inside an existing TikTok campaign, PAUSED, with its own budget, schedule and targeting. - tiktok_create_video_campaign [write, 3 tasks] tiktok_ads(action="execute", tool_name="tiktok_create_video_campaign", arguments={...}) Builds a complete TikTok campaign — campaign, one ad group and one in-feed video ad — from a video URL, an existing video id, or an organic post for a Spark Ad. #### analysis - tiktok_analyze_geo_performance [read-only, 1 task] tiktok_ads(action="execute", tool_name="tiktok_analyze_geo_performance", arguments={...}) Breaks spend, impressions, CTR, conversions and CPA down by country for a window, ranked by spend, and flags countries taking meaningful budget with nothing to show for it. - tiktok_get_audience_insights [read-only, 1 task] tiktok_ads(action="execute", tool_name="tiktok_get_audience_insights", arguments={...}) Breaks spend, impressions, CTR, conversions and CPA down by age, gender, placement, device OS or language for a window. #### diagnostics - tiktok_analyze_wasted_spend [read-only, 1 task] tiktok_ads(action="execute", tool_name="tiktok_analyze_wasted_spend", arguments={...}) Lists the ad groups and ads that spent real money over a window and produced no conversions, excluding anything still in its learning period or too thin to judge. - tiktok_detect_creative_fatigue [read-only, 1 task] tiktok_ads(action="execute", tool_name="tiktok_detect_creative_fatigue", arguments={...}) Compares the first and second halves of a window per ad and flags the ones whose hook rate, CTR or CPA have moved against them while frequency climbed — the signature of creative fatigue rather than a bad week. #### discovery - tiktok_explain_objective [read-only, free] tiktok_ads(action="execute", tool_name="tiktok_explain_objective", arguments={...}) Explains what each TikTok campaign objective buys, which optimisation goals and billing events it allows, what it requires before it can be created, and what Adako can build end to end. #### performance - tiktok_get_ad_group_performance [read-only, 1 task] tiktok_ads(action="execute", tool_name="tiktok_get_ad_group_performance", arguments={...}) Reports the same metrics one level down: per ad group, with the previous-period comparison. - tiktok_get_ad_performance [read-only, 1 task] tiktok_ads(action="execute", tool_name="tiktok_get_ad_performance", arguments={...}) Reports per ad: spend, impressions, clicks, conversions and the full set of video metrics, with the previous-period comparison. - tiktok_get_campaign_performance [read-only, 1 task] tiktok_get_campaign_performance({...}) Reports spend, impressions, reach, clicks, conversions and the TikTok video metrics — 2-second and 6-second views, completion, average watch time — per campaign, and compares every number with the equally long period immediately before it. #### structure - tiktok_get_campaign_details [read-only, 1 task] tiktok_ads(action="execute", tool_name="tiktok_get_campaign_details", arguments={...}) Reads one campaign together with every ad group under it: objective, budget and mode, and per ad group the optimisation goal, billing event, bid, schedule, placements and targeting (locations, ages, gender, languages, interests). - tiktok_list_ad_groups [read-only, 1 task] tiktok_ads(action="execute", tool_name="tiktok_list_ad_groups", arguments={...}) Lists ad groups with their on/off state, TikTok's delivery status, budget and mode, optimisation goal, billing event, bid and schedule. - tiktok_list_ads [read-only, 1 task] tiktok_ads(action="execute", tool_name="tiktok_list_ads", arguments={...}) Lists individual ads with their on/off state, delivery status, the video and cover images behind each one, the ad text and call to action, the destination URL and — most usefully — TikTok's review verdict and rejection reason. - tiktok_list_campaigns [read-only, 1 task] tiktok_ads(action="execute", tool_name="tiktok_list_campaigns", arguments={...}) Lists the campaigns in a TikTok advertiser account with objective, on/off state, budget and budget mode, and the delivery status TikTok computed for each one. #### assets - tiktok_list_ad_videos [read-only, free] tiktok_ads(action="execute", tool_name="tiktok_list_ad_videos", arguments={...}) Lists the videos already uploaded to the advertiser's creative library with their ids, dimensions, duration and file size, and flags any that break TikTok's in-feed rules. - tiktok_list_identities [read-only, free] tiktok_ads(action="execute", tool_name="tiktok_list_identities", arguments={...}) Lists the identities this advertiser can run ads as — the handle and avatar a viewer sees on the ad — including the custom identities created in Ads Manager and any TikTok accounts authorised through Business Center. - tiktok_list_lead_forms [read-only, free] tiktok_ads(action="execute", tool_name="tiktok_list_lead_forms", arguments={...}) Lists the instant pages and lead forms built on the advertiser account, with their ids and types. - tiktok_upload_images [write, 1 task] tiktok_ads(action="execute", tool_name="tiktok_upload_images", arguments={...}) Uploads one or more images to the advertiser's creative library from public URLs and returns their image ids, which tiktok_add_ad and tiktok_create_video_campaign take as the ad's cover. - tiktok_validate_assets [read-only, free] tiktok_ads(action="execute", tool_name="tiktok_validate_assets", arguments={...}) Checks a video or image URL before anything is uploaded: that it is reachable without a login, that it serves a format TikTok accepts, and that it is inside the size limit — then states the rules that can only be verified after upload. #### conversions - tiktok_list_pixels [read-only, free] tiktok_ads(action="execute", tool_name="tiktok_list_pixels", arguments={...}) Lists the pixels on the advertiser account and, for each one, the events it is configured for and when each event last fired. #### management - tiktok_pause_ad [destructive-write, 1 task] tiktok_ads(action="execute", tool_name="tiktok_pause_ad", arguments={...}) Stops delivery on one TikTok ad by setting its operation status to DISABLE. - tiktok_pause_ad_group [destructive-write, 1 task] tiktok_ads(action="execute", tool_name="tiktok_pause_ad_group", arguments={...}) Stops delivery on one TikTok ad group by setting its operation status to DISABLE. - tiktok_pause_campaign [destructive-write, 1 task] tiktok_ads(action="execute", tool_name="tiktok_pause_campaign", arguments={...}) Stops delivery on one TikTok campaign by setting its operation status to DISABLE. - tiktok_resume_ad [write, 1 task] tiktok_ads(action="execute", tool_name="tiktok_resume_ad", arguments={...}) Sets one TikTok ad back to ENABLE so it can deliver again. - tiktok_resume_ad_group [write, 1 task] tiktok_ads(action="execute", tool_name="tiktok_resume_ad_group", arguments={...}) Sets one TikTok ad group back to ENABLE so it can deliver again. - tiktok_resume_campaign [write, 1 task] tiktok_ads(action="execute", tool_name="tiktok_resume_campaign", arguments={...}) Sets one TikTok campaign back to ENABLE so it can deliver again. - tiktok_update_ad_group [write, 1 task] tiktok_ads(action="execute", tool_name="tiktok_update_ad_group", arguments={...}) Changes a TikTok ad group's name, daily budget, bid, schedule or targeting (locations, ages, gender, languages, interests). - tiktok_update_campaign [write, 1 task] tiktok_ads(action="execute", tool_name="tiktok_update_campaign", arguments={...}) Changes a TikTok campaign's name, daily budget or schedule. #### targeting - tiktok_search_targeting [read-only, free] tiktok_ads(action="execute", tool_name="tiktok_search_targeting", arguments={...}) Turns names into the ids TikTok targets by: places into location ids, interest names into interest category ids, keyword phrases into interest keyword ids, languages into language codes, and lists the device and network enums verbatim. ### LinkedIn Ads (34) #### creation - linkedin_add_creative [write, 1 task] linkedin_ads(action="execute", tool_name="linkedin_add_creative", arguments={...}) Adds one more creative to an existing campaign — either from a new image URL (uploaded and posted as a dark post) or from a post URN that already exists. - linkedin_create_campaign_group [write, 1 task] linkedin_ads(action="execute", tool_name="linkedin_create_campaign_group", arguments={...}) Creates a campaign group — the container every LinkedIn campaign must sit inside, and the place a shared lifetime budget can be set across several campaigns. - linkedin_create_carousel_campaign [write, 1 task] linkedin_ads(action="execute", tool_name="linkedin_create_carousel_campaign", arguments={...}) Builds a carousel sponsored-content campaign from two to ten square images, each with its own headline and destination — group, campaign, uploads, dark post and creative, all PAUSED. - linkedin_create_image_campaign [write, 1 task] linkedin_ads(action="execute", tool_name="linkedin_create_image_campaign", arguments={...}) Builds a complete single-image sponsored-content campaign: campaign group (reused or created), campaign, image upload, dark post authored by a company page, and the creative — all PAUSED. - linkedin_create_text_campaign [write, 1 task] linkedin_ads(action="execute", tool_name="linkedin_create_text_campaign", arguments={...}) Creates a TEXT_AD campaign — the small desktop-sidebar unit with a 25-character headline and a 75-character description. - linkedin_create_video_campaign [write, 1 task] linkedin_ads(action="execute", tool_name="linkedin_create_video_campaign", arguments={...}) Builds a video sponsored-content campaign: group, campaign, video upload (or an existing video URN), dark post and creative — all PAUSED. #### analysis - linkedin_analyze_creative_performance [read-only, 1 task] linkedin_ads(action="execute", tool_name="linkedin_analyze_creative_performance", arguments={...}) Ranks a campaign's creatives against each other on CTR and cost per lead, and flags the ones whose CTR fell sharply in the second half of the window — the signature of creative fatigue on LinkedIn's small, repeatedly-reached audiences. - linkedin_analyze_wasted_spend [read-only, 1 task] linkedin_ads(action="execute", tool_name="linkedin_analyze_wasted_spend", arguments={...}) Finds campaigns spending without result: impressions with no clicks, clicks with no leads or conversions, and cost per lead well above the account average or a ceiling you give. #### conversions - linkedin_associate_conversion [write, 1 task] linkedin_ads(action="execute", tool_name="linkedin_associate_conversion", arguments={...}) Attaches a conversion rule to a campaign, or detaches it, so LinkedIn reports that conversion against that campaign's spend. - linkedin_list_conversions [read-only, 1 task] linkedin_ads(action="execute", tool_name="linkedin_list_conversions", arguments={...}) Lists the account's conversion rules with their type, tracking method, attribution windows, assigned value and — most importantly — which campaigns each one is attached to. - linkedin_manage_conversions [write, 1 task] linkedin_ads(action="execute", tool_name="linkedin_manage_conversions", arguments={...}) Creates a conversion rule on the account, or edits an existing one's name, value, attribution windows or enabled state. #### management - linkedin_batch_update_campaigns [write, 1 task] linkedin_ads(action="execute", tool_name="linkedin_batch_update_campaigns", arguments={...}) Applies one status or one daily budget to up to 50 campaigns at once, reporting each campaign's result separately. - linkedin_clone_campaign [write, 1 task] linkedin_ads(action="execute", tool_name="linkedin_clone_campaign", arguments={...}) Copies an existing campaign's settings — objective, type, format, cost type, bid, budgets, schedule and targeting — into a new **PAUSED** campaign, with optional overrides for name, budget and targeting. - linkedin_delete_creative [destructive-write, 1 task] linkedin_ads(action="execute", tool_name="linkedin_delete_creative", arguments={...}) Permanently removes a creative from a campaign. - linkedin_pause_campaign [destructive-write, 1 task] linkedin_ads(action="execute", tool_name="linkedin_pause_campaign", arguments={...}) Stops delivery on one campaign by setting it to PAUSED. - linkedin_pause_creative [destructive-write, 1 task] linkedin_ads(action="execute", tool_name="linkedin_pause_creative", arguments={...}) Sets one creative to PAUSED so it stops serving while the campaign keeps running on its other creatives. - linkedin_resume_campaign [write, 1 task] linkedin_ads(action="execute", tool_name="linkedin_resume_campaign", arguments={...}) Sets a campaign to ACTIVE so it can deliver. - linkedin_resume_creative [write, 1 task] linkedin_ads(action="execute", tool_name="linkedin_resume_creative", arguments={...}) Sets one creative to ACTIVE so it can serve, subject to its campaign's status and LinkedIn's review. - linkedin_update_campaign [write, 1 task] linkedin_ads(action="execute", tool_name="linkedin_update_campaign", arguments={...}) Changes a campaign's name, daily or lifetime budget, bid, run dates, targeting or delivery settings. - linkedin_update_campaign_group [write, 1 task] linkedin_ads(action="execute", tool_name="linkedin_update_campaign_group", arguments={...}) Changes a campaign group's name, lifetime budget, run dates or status. #### targeting - linkedin_estimate_audience_size [read-only, 1 task] linkedin_ads(action="execute", tool_name="linkedin_estimate_audience_size", arguments={...}) Counts how many LinkedIn members a targeting spec reaches, before a campaign is created against it. - linkedin_forecast_campaign_supply [read-only, 1 task] linkedin_ads(action="execute", tool_name="linkedin_forecast_campaign_supply", arguments={...}) Asks LinkedIn what a targeting spec is likely to deliver and what the auction currently costs: an impression and click forecast, and the bid range for the objective and cost type you intend to use. - linkedin_search_targeting [read-only, free] linkedin_ads(action="execute", tool_name="linkedin_search_targeting", arguments={...}) Turns plain words into the LinkedIn targeting URNs a campaign actually accepts — job titles, industries, seniorities, company-size bands, locations, skills, interests, member behaviours, employers, degrees, fields of study and interface locales. #### discovery - linkedin_explain_objectives [read-only, free] linkedin_ads(action="execute", tool_name="linkedin_explain_objectives", arguments={...}) Explains LinkedIn's campaign objectives: what each one optimises towards, which ad formats and cost types it allows, when a marketer should pick it, and whether it needs a conversion rule to work at all. - linkedin_get_organizations [read-only, free] linkedin_ads(action="execute", tool_name="linkedin_get_organizations", arguments={...}) Lists the LinkedIn organizations (company pages) the connected login administers, with their URNs. #### audiences - linkedin_get_audience_insights [read-only, 1 task] linkedin_ads(action="execute", tool_name="linkedin_get_audience_insights", arguments={...}) Breaks delivery down by who saw it: job title, industry, seniority, company size, country, job function or company. #### performance - linkedin_get_campaign_performance [read-only, 1 task] linkedin_get_campaign_performance({...}) Reports spend, impressions, clicks, CTR, CPC, CPM, leads, cost per lead and website conversions for a window, next to the equally long window before it so every number has a baseline. - linkedin_get_creative_performance [read-only, 1 task] linkedin_ads(action="execute", tool_name="linkedin_get_creative_performance", arguments={...}) Reports spend, impressions, clicks, CTR, CPC, leads and cost per lead for each creative in a campaign. #### structure - linkedin_get_campaign_structure [read-only, 1 task] linkedin_ads(action="execute", tool_name="linkedin_get_campaign_structure", arguments={...}) Returns the whole account in one call: every campaign group, the campaigns inside it, and the creatives inside those, with status and budget at each level. - linkedin_list_campaign_groups [read-only, 1 task] linkedin_ads(action="execute", tool_name="linkedin_list_campaign_groups", arguments={...}) Lists the campaign groups in the ad account with their status, lifetime budget and run dates. - linkedin_list_campaigns [read-only, 1 task] linkedin_ads(action="execute", tool_name="linkedin_list_campaigns", arguments={...}) Lists campaigns with their group, status, objective, format, bid, daily and total budget, schedule, audience-expansion settings and a one-line targeting summary. - linkedin_list_creatives [read-only, 1 task] linkedin_ads(action="execute", tool_name="linkedin_list_creatives", arguments={...}) Lists the creatives attached to one or more campaigns, with their intended status, whether they are actually serving, their review verdict and any rejection reason. #### reporting - linkedin_get_engagement_metrics [read-only, 1 task] linkedin_ads(action="execute", tool_name="linkedin_get_engagement_metrics", arguments={...}) Reports the social half of LinkedIn delivery: reactions, comments, shares, page follows, total engagements and engagement rate, plus video views and completions where the creative is a video. #### assets - linkedin_validate_assets [read-only, free] linkedin_ads(action="execute", tool_name="linkedin_validate_assets", arguments={...}) Checks image URLs against LinkedIn's sponsored-content specs before anything is created: reachable over https, an accepted file type, under the size limit, and either 1.91:1 (1200×627) or square (1200×1200) so the feed does not choose its own crop.