# How Adwarp works.

An open-source MCP server and CLI for LinkedIn Ads and Google Ads. It uses your own keys and never launches on its own.

## Same code, 2 ways in.

Both share your keys and your change journal.

### MCP server: Ask in plain words.

MCP is the open standard AI clients use to call outside tools. Adwarp's MCP server gives Claude Code, Claude Desktop, Codex and Cursor its 37 tools, and the client picks the calls.

Best for: Questions, exploring and drafting.

> You: How did the account do last week?
>
> Tool call: `adwarp.performance_summary last_7_days`
>
> Assistant: 14 ads ran in the last 7 days. 3 are under 0.4% click-through rate after 1,500 impressions, and the rest are on pace. Want those 3 as a list?

### CLI: Script it and schedule it.

The adwarp command runs every capability from your terminal with no AI client. Pipe its output into other tools, or let cron run it on a schedule.

Best for: Scripts, cron jobs and repeatable runs.

```text
$ crontab -l
0 9 * * 1  npx adwarp report summary -p last_7_days
$ npx adwarp report summary -p last_7_days
14 ads, 1,500+ impressions each
3 ads under 0.4% click-through rate
```

## Why it gets better results.

### Questions are instant

In your AI client, checking performance is 1 question, so it happens daily instead of at month end.

### Habits run on schedule

From cron, the weekly report and your rules run every time, with no reminder needed.

### 1 record of changes

The local server and the CLI write the same journal, so you can measure which changes moved results.

### Code you can read

It's open source, so you can see exactly what it does to your account and change it.

## Run it locally or on the hosted endpoint.

Every tool runs locally, and most LinkedIn tools also run hosted.

### Local MCP server (stdio)

Runs on your machine with all 37 tools, including the 9 Google tools, CSV uploads, Salesforce and HubSpot audiences and the change journal. Keys stay in ~/.adwarp on your machine.

[Install guide](https://adwarp.dev/docs/install)

### Hosted endpoint (HTTP)

Connect to https://mcp.adwarp.dev/api/mcp with your own LinkedIn app as request headers. It serves the 28 LinkedIn tools and 0 of the 9 Google tools. Keys travel with each request, are used in memory and are never stored.

[Connect to the hosted endpoint](https://adwarp.dev/docs/hosted#connect)

### Self-hosted (Vercel)

Deploy the same endpoint to your own Vercel project, so credentials never touch shared servers. 1 instance can serve a whole team, each on their own LinkedIn app. Keys live in your Vercel environment variables.

[Self-host guide](https://adwarp.dev/docs/hosted#self-host-on-vercel)

## Your keys, your account, your call.

Open source, with every guardrail written in code you can read.

### `~/.adwarp`

- `config.json`: your LinkedIn app, readable by you only
- `credentials.json`: your LinkedIn sign-in
- `google.json`: your Google Ads app and token
- `google-credentials.json`: your Google sign-in
- `changelog.jsonl`: the change journal, 1 line per change

Everything Adwarp keeps lives in 1 folder on your machine, and none of it goes in the repo.

### Your own developer apps

Adwarp connects through apps you create and control: a LinkedIn developer app with the Advertising API, and a Google Ads developer token with an OAuth client.

### Keys stay with you

Locally they live in ~/.adwarp. The hosted endpoint takes them per request, uses them in memory and never stores them.

### Drafts and approvals

LinkedIn campaigns and ads start as drafts and go live only when you explicitly ask. Google campaigns start paused, and Adwarp has no command to enable them.

### Every change journaled

Each create and update is logged with what changed, so you can measure the lift before and after. Changes made in Campaign Manager can be logged too.

### Skills hold your playbook

11 agent skills turn the tools into playbooks for reporting, launches and audits. Copy one and add your defaults. Credentials never go in a skill.

### MIT licensed

Read every line on GitHub, fork it and self-host it. No account and no sign-up.

## Questions, answered.

### What is an MCP server?

MCP, the Model Context Protocol, is the open standard AI clients use to call outside tools. Adwarp's MCP server gives your client its LinkedIn Ads and Google Ads tools, so you can ask in plain words.

### Do I need an AI client to use Adwarp?

No. The CLI runs every capability from your terminal on its own, in scripts or on a schedule.

### Can I run it in CI or cron?

Yes. Every capability is an adwarp command, so cron, CI or any script can run it. A Monday report is 1 cron line: 0 9 * * 1 npx adwarp report summary -p last_7_days.

### Is the hosted endpoint required?

No. The local MCP server and the CLI run entirely on your machine. The hosted endpoint is optional, for clients that connect over HTTP, and it serves the LinkedIn tools only.

### Can I use the MCP server and the CLI together?

Yes. They read the same ~/.adwarp folder, so you can draft in Claude Code and schedule the weekly report from cron on the same machine.

### When should I use the MCP server or the CLI?

Use the MCP server for questions and the CLI for anything repeatable.

| Job | Use |
| --- | --- |
| Ask how the account is doing | MCP server |
| Size an audience, narrowing as you go | MCP server |
| Draft a campaign from a conversation | MCP server |
| Run the weekly report every Monday | CLI, from cron |
| Launch many ad groups from a brief file | CLI, with launch --brief |
| Feed results into another tool | CLI, with --json where a command offers it |

### Which tools run on the hosted endpoint?

Most LinkedIn tools. Every tool runs locally, and the hosted endpoint skips anything that needs your machine.

| Feature | Local | Hosted |
| --- | --- | --- |
| LinkedIn campaigns, targeting and reporting | Yes | Yes |
| Ad Library metadata | Yes | Yes |
| CSV list uploads | Yes | No |
| Salesforce audiences | Yes | No |
| HubSpot audiences | Yes | No |
| Change journal and lift | Yes | No |
| Google Ads tools | Yes | No |

### What are the main CLI commands?

Commands for reports, launches, audiences, targeting, competitor ads and lift. Run any of them with npx adwarp, or install the adwarp command once.

| Command | What it does |
| --- | --- |
| `adwarp report summary` | Account rollup with top performers and flags |
| `adwarp report trend` | Weekly or monthly trend with deltas |
| `adwarp launch --brief` | Audience, campaign group, ad group and draft ads from a brief file |
| `adwarp audience upload` | Clean and upload a CSV as a matched audience |
| `adwarp targeting search` | Find titles, seniorities and regions by name |
| `adwarp competitor ads` | Any company's ads from the LinkedIn Ad Library |
| `adwarp lift` | Before and after performance for each recorded change |
| `adwarp google launch --brief` | A paused Search campaign, dry run unless --apply |

### What are the agent skills?

11 playbooks for reporting, launches and audits that work over the MCP tools or the CLI.

| Skill | Ask it |
| --- | --- |
| `adwarp-spend` | Analyze my spend |
| `adwarp-performance` | How are my ads doing? |
| `adwarp-leads` | Which ads drive leads, which don't? |
| `adwarp-competitors` | What is <company> running? |
| `adwarp-weekly` | Weekly snapshot |
| `adwarp-health` | Anything on fire? |
| `adwarp-launch` | Launch a campaign |
| `adwarp-experiments` | Did that change help? |
| `adwarp-audiences` | Audit my audiences |
| `adwarp-account-audit` | Is my account set up right? |
| `adwarp-gads-launch` | Launch a Google search campaign for... |

More: [Skills docs](https://adwarp.dev/docs/skills)

### Can I self-host the endpoint?

Yes. Deploy the same endpoint to your own Vercel project in 4 steps, so credentials never touch shared servers.

1. Print your environment values with npx -y adwarp auth export.
2. Deploy apps/web from the repo to Vercel.
3. Add the printed variables and a strong MCP_AUTH_TOKEN in the project settings.
4. Connect your client to your-app.vercel.app/api/mcp with the token as a Bearer header.

More: [Self-host guide](https://adwarp.dev/docs/hosted#self-host-on-vercel)

- [LinkedIn Ads](https://adwarp.dev/linkedin-ads): 28 tools, most also hosted
- [Google Ads](https://adwarp.dev/google-ads): Search campaigns, created paused
- [Docs](https://adwarp.dev/docs): Install, tools and every command

Unofficial. Not affiliated with or endorsed by LinkedIn or Google.

Canonical page: https://adwarp.dev/how-it-works
Last updated: 2026-10-18
