Skip to content

Releases: adwarp-dev/adwarp

Adwarp 0.4.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 00:55
4989534

Adwarp can now build LinkedIn matched audiences straight from HubSpot, the same way it already does from Salesforce.

HubSpot audiences

  • New MCP tool audience_from_hubspot and CLI command adwarp audience from-hubspot. Point it at a HubSpot list or a set of property filters, pick contacts or companies, and it uploads the result as a LinkedIn matched audience.
  • It reads HubSpot with a private app token you create in your own HubSpot account, with read-only scopes for contacts, companies and lists. Put the token in ~/.adwarp/hubspot.json or ADWARP_HUBSPOT_TOKEN.
  • Contacts go through the same cleaning as CSV uploads, and only SHA-256 hashes of the emails leave your machine. --dry-run shows the counts and a masked sample, and uploads nothing.
  • It runs locally only. The hosted endpoint doesn't register it.
  • Setup and examples: https://adwarp.dev/docs/hubspot

Docs and the hosted endpoint

  • The docs now live at https://adwarp.dev/docs, with new setup pages for Claude Code, Claude Desktop, Codex, Cursor and the CLI, and a LinkedIn Ads overview.
  • docs/tools.json now marks the tools that need your machine (CSV and Salesforce uploads, HubSpot audiences and the change journal) as not hosted.
  • The hosted app at mcp.adwarp.dev is now just the MCP endpoint. Its old pages redirect to adwarp.dev, and https://mcp.adwarp.dev/api/mcp works as before.

Other changes

  • Company list uploads now check LinkedIn's 300,000 row limit, as contact lists already did.
  • docs/tools.json lists 37 tools: 28 for LinkedIn Ads and 9 for Google Ads.

What's Changed

  • Send the endpoint's homepage to adwarp.dev and fix its tab by @stan-rym in #42
  • Docs: client setup pages, LinkedIn Ads overview and copy fixes by @stan-rym in #43
  • Endpoint-only hosted app and links to adwarp.dev by @stan-rym in #44
  • HubSpot audiences by @stan-rym in #45
  • Release 0.4.0 by @stan-rym in #46

Full Changelog: v0.3.0...v0.4.0

Adwarp 0.3.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 21:17
0c1fb87

Adwarp can now pause, resume and archive a single LinkedIn ad, without touching the rest of its ad group.

What changed

  • New MCP tool update_ad sets an ad's status to PAUSED, ACTIVE or ARCHIVED. It accepts a numeric creative id or a full urn:li:sponsoredCreative, and it works on the hosted endpoint too. The status is required, so leaving it out can never switch an ad on.
  • New CLI commands adwarp ad pause <creativeId>, adwarp ad resume <creativeId> and adwarp ad archive <creativeId>. Each previews the change and sends it only with --apply. Resume says that it starts spend, and warns when the ad is still a draft.
  • The change journal now records ads by their numeric id, so adwarp lift creative <id> finds ad creations and status changes.
  • docs/tools.json lists 36 tools, 27 of them on the hosted endpoint.

Setting an ad to ACTIVE starts spend, so your assistant does it only when you explicitly ask. An active ad serves only while its ad group is active, and LinkedIn refuses to pause an ad that is still in review.

What's Changed

Full Changelog: v0.2.0...v0.3.0

Adwarp 0.2.0

Choose a tag to compare

@github-actions github-actions released this 18 Oct 20:05
968a3ba

Liam is now Adwarp, the open-source ad agent for LinkedIn Ads and Google Ads. This is its first release on npm and in the official MCP Registry.

Install

  • npx -y adwarp --help runs the CLI without installing anything.
  • claude mcp add adwarp -- npx -y adwarp mcp registers the local MCP server with Claude Code. Other MCP clients run npx with the arguments -y adwarp mcp.
  • npm install -g adwarp installs the adwarp, adwarp-mcp and liam commands.
  • The Dockerfile at the root of the repo builds an image that runs the MCP server on stdio.

What changed

  • Commands, the MCP server name, setup prompts and links now say Adwarp. liam keeps working as an alias.
  • Every internal name now says adwarp too: the ~/.adwarp folder, ADWARP_* variables and X-Adwarp-Linkedin-* headers. Your setup carries over unchanged, because the old ~/.liads folder, LIADS_* and GADS_* variables and X-Liads-* headers all still work.
  • The hosted endpoint is https://mcp.adwarp.dev/api/mcp. https://liam-mcp.vercel.app/api/mcp keeps working.
  • The docs live as Markdown in docs/, and docs/tools.json lists all 35 tools and which ones the hosted endpoint serves.
  • Adwarp is listed in the official MCP Registry as io.github.adwarp-dev/adwarp, with the npm package and the hosted endpoint.

Everything Adwarp creates on LinkedIn starts as a draft and goes live only when you explicitly ask. Google Ads campaigns are created paused and can only be switched on in Google Ads.

What's Changed

  • Salesforce → audience loop + conversion selection by @stan-rym in #1
  • Redesign the hosted app homescreen by @stan-rym in #2
  • Performance reporting + insights by @stan-rym in #3
  • Auto-clean CSVs on audience upload (contact + company) by @stan-rym in #5
  • Add ROADMAP.md by @stan-rym in #6
  • Keep LinkedIn company page URL in company matched-audience uploads by @stan-rym in #7
  • Add ENGAGEMENT objective; force Audience Expansion + Audience Network off by @stan-rym in #8
  • Auto-apply default audience exclusions and default conversion by @stan-rym in #10
  • Competitor ad intelligence: read any company's ads from the LinkedIn Ad Library by @stan-rym in #11
  • Add change journal and lift comparison by @stan-rym in #12
  • fix(creatives): send landing page, CTA, and headline on image ads by @stan-rym in #13
  • feat: list campaigns (drafts included), delete ads, retry transient createInline 404s by @stan-rym in #14
  • Public-readiness docs + Ad Library rate-limit handling by @stan-rym in #16
  • Document the two ways to use Liam: CLI and MCP by @stan-rym in #17
  • One-prompt setup and an FAQ on the landing page by @stan-rym in #18
  • README: two explicit install paths (MCP server and terminal CLI) by @stan-rym in #19
  • Six portable analysis skills on top of Liam by @stan-rym in #20
  • Hosted MCP: bring your own credentials (multi-tenant) by @stan-rym in #21
  • fix(creatives): URL-encode creative URN in setCreativeStatus by @stan-rym in #15
  • Docs page and nav button mirroring the repo README by @stan-rym in #22
  • Add Vercel Analytics to the site and the hosted MCP server by @stan-rym in #23
  • Harden hosted MCP auth: header-only, timing-safe, fail closed by @stan-rym in #24
  • Support multiple default conversions on new campaigns by @stan-rym in #25
  • Add update_campaign: patch existing ad-set targeting and fields by @stan-rym in #26
  • Add Terms of Service and Privacy Policy pages by @stan-rym in #27
  • Pace the Ad Library scraper so it cannot get the user's IP blocked by @stan-rym in #29
  • Google Ads: paused-only Search campaign creation, keywords, and reporting by @stan-rym in #28
  • Isolate competitor creative collection in a remote worker by @stan-rym in #30
  • Expose ad rotation (creativeSelection) on campaigns by @stan-rym in #31
  • Add optimizationTargetType and costType to campaign create/update by @stan-rym in #32
  • Rename Liam to Adwarp in everything users see by @stan-rym in #33
  • Move docs to Markdown and generate tools.json by @stan-rym in #34
  • Publishable adwarp npm package (CLI and MCP server) and a root Dockerfile by @stan-rym in #35
  • Release workflow: npm, GitHub release, MCP Registry and website rebuild by @stan-rym in #36
  • Rename internal names to adwarp, keep every old name working by @stan-rym in #37
  • Rename the skills to adwarp-*, keep the old names as links by @stan-rym in #38

New Contributors

Full Changelog: https://github.com/adwarp-dev/adwarp/commits/v0.2.0