adwarp

Start with 1 prompt.

Paste it into Claude Code, Codex or Cursor. Your agent installs Adwarp, walks you through your LinkedIn app and checks the connection.

setup prompt
Set up Adwarp for me. It's the open-source ad agent for LinkedIn Ads and Google Ads: https://github.com/adwarp-dev/adwarp

1. Check that Node.js 20 or newer is installed.
2. Walk me through creating my own LinkedIn developer app with the Advertising API product: https://github.com/adwarp-dev/adwarp/blob/main/docs/linkedin-app.md
3. Save the app's client ID and secret to ~/.adwarp/config.json as clientId and clientSecret.
4. Run "npx -y adwarp auth login" and wait while I approve access in my browser.
5. Add Adwarp to the AI client I'm using right now as an MCP server that runs "npx -y adwarp mcp". In Claude Code that's: claude mcp add adwarp -- npx -y adwarp mcp
6. Check the connection by listing my ad accounts, then save the one I pick as defaultAccountId in ~/.adwarp/config.json.

Don't create or change anything in my ad accounts during setup. LinkedIn campaigns start as drafts, so nothing spends until I turn it on.
adwarp
GitHub

Start with 1 prompt.

Paste it into Claude Code, Codex or Cursor. Your agent installs Adwarp, walks you through your LinkedIn app and checks the connection.

setup prompt
Set up Adwarp for me. It's the open-source ad agent for LinkedIn Ads and Google Ads: https://github.com/adwarp-dev/adwarp

1. Check that Node.js 20 or newer is installed.
2. Walk me through creating my own LinkedIn developer app with the Advertising API product: https://github.com/adwarp-dev/adwarp/blob/main/docs/linkedin-app.md
3. Save the app's client ID and secret to ~/.adwarp/config.json as clientId and clientSecret.
4. Run "npx -y adwarp auth login" and wait while I approve access in my browser.
5. Add Adwarp to the AI client I'm using right now as an MCP server that runs "npx -y adwarp mcp". In Claude Code that's: claude mcp add adwarp -- npx -y adwarp mcp
6. Check the connection by listing my ad accounts, then save the one I pick as defaultAccountId in ~/.adwarp/config.json.

Don't create or change anything in my ad accounts during setup. LinkedIn campaigns start as drafts, so nothing spends until I turn it on.

Google Ads reporting from your terminal.

Adwarp is an open-source MCP server and CLI that pulls Google Ads performance at 5 levels, from campaigns down to the search terms that triggered your ads. Ask in plain words or run 1 command, and a read-only GAQL query covers anything else.

$ claude mcp add adwarp -- npx -y adwarp mcp

Read the docs

claude ~ waste

$ claude

> Which keywords spent money without converting?

adwarp.gads_performance keyword, last_30_days: by cost

Keywords with cost and no conversions, each with its match type and ad group

Candidates to pause in Google Ads, highest cost first.

01What you can ask

What you can ask. Real requests, answered from your terminal.

claude ~ search terms

$ claude

> Which search terms spent the most last month?

adwarp.gads_performance search_term, last_month: by cost

Each term with spend, clicks, click-through rate and conversions, highest cost first

Ready to pick negatives from the top of the list.

02How it works

How it works.

  1. Ask

    Ask in plain words, or run npx adwarp google report perf from your terminal.

  2. Pick the level

    Campaign, ad group, ad, keyword or search term, for a named period or any 2 dates, narrowed to 1 campaign when you need it.

  3. Go deeper with GAQL

    Anything the reports don't cover, such as quality scores, is 1 read-only GAQL query away.

03Results

Why it gets better results.

  • Waste shows up weekly

    Search terms and keyword costs are 1 question away, so you check them every week instead of at month end.

  • The biggest costs lead

    Rows come back highest spend first, so the line items that matter most are on top.

  • Reading never changes anything

    Every reporting tool is read-only, and the GAQL tool only runs SELECT queries.

04FAQ

Questions, answered. From setup to the details.

Ask on GitHub
Can I see the search terms behind my ads?

Yes. The search_term level lists the searches that triggered your ads, with their cost and conversions, so you can spot the ones to add as negatives.

Does reporting need Basic access?

No. Reporting and campaign creation work on Explorer access. Only keyword research needs Basic access.

Does it work on the hosted endpoint?

No. The Google tools run on your machine, through the local MCP server or the CLI, with your own developer token and OAuth client.

Which metrics can I get?

Impressions, clicks, cost, conversions and conversion value, plus the rates worked out from them and totals for the whole report, over the period you pick.

Which metrics can I get?
PartOptions
MetricsImpressions, clicks, cost, conversions and conversion value
Worked outClick-through rate, cost per click, cost per 1,000 impressions, conversion rate and cost per conversion
TotalsThe whole report summed, with the same rates worked out from the totals
PeriodsLast 7, 30 or 90 days, month to date, last month, or any 2 dates through the MCP server
Filter1 campaign, for the levels under it
Which levels can I report on?

5: campaign, ad group, ad, keyword and search term, each row named the way Google Ads names it.

Which levels can I report on?
LevelWhat a row is
campaignA campaign, with its status.
ad_groupAn ad group, under its campaign.
adA responsive search ad, named by its first headline, under its campaign and ad group.
keywordA keyword with its match type, under its campaign and ad group.
search_termA search that triggered your ads, under the ad group it matched.
What is GAQL?

Google Ads Query Language, which the Google Ads API reads data with. gads_search runs any SELECT query, so anything the reports don't cover is still 1 question away, and it refuses anything that isn't a SELECT.

From the terminal, npx adwarp google query runs the same queries and returns the rows as they come from Google.

quality-scores.gaql
SELECT ad_group_criterion.keyword.text,
       ad_group_criterion.quality_info.quality_score
FROM ad_group_criterion
WHERE ad_group_criterion.type = KEYWORD
Which tools and commands does it use?

3 MCP tools and 3 CLI commands, with what each one does.

Which tools and commands does it use?
ToolWhat it does
gads_performanceRows at campaign, ad group, ad, keyword or search term level, with totals
gads_searchA raw, read-only GAQL query for anything else
gads_list_campaignsCampaigns with their ad groups, paused ones included

CLI

  • npx adwarp google report perf search_term -p last_month
  • npx adwarp google report perf keyword --campaign <id>
  • npx adwarp google query "<GAQL>"
What are the limits?

4 things to know before you start.

  • Reports skip rows with no impressions in the period. To see paused or new campaigns, use gads_list_campaigns.
  • Costs are in the ad account's currency, which Google fixes when the account is created.
  • Conversions only show when conversion tracking is set up.
  • The Google tools run locally. The hosted endpoint serves 0 of the 9 Google tools.