Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Adwarp

NPM · ADWARP · 2 COMPONENTS

Open-source ad agent for LinkedIn Ads and Google Ads. Drafts campaigns, audiences and reports.

72 Trust /100

Last scanned (5 hours ago)

Scores higher than 44% of npm servers

Category Marketing and SEO

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security81
  • No malware found by supply-chain analysis.Pass
  • CVE check failed: a known high-severity CVE affects zod 3.25.76, a direct dependency. A fixed version is available. View diagnostics → Fail
  • No install/post-install scripts declared.Pass
  • 32 of 105 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to adwarp-dev/adwarp). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 6 days ago).Pass
  • Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability60
  • AI-judged instruction clarity (good).Pass
  • Context-footprint check failed: tool/resource definitions use about 4568 tokens (~123/item across 37 items; 37 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management20
  • Stability observed for 6 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage82
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 46% of tool parameters carry a description.Partial
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "delete_ad" implies "delete" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 37 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 24 Oct 26 −1
    • CVE-2023-54404 affects this package: high ▼ security
  • 21 Oct 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

  • 20 Oct 26 +8
    • CVE-2026-85063 affects this package: medium ▼ security
    • Known CVEs: unverified → fail ▼ security
    • Dependency health: unverified → 0.86 ▲ functional
  • 19 Oct 26 64

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 25 Oct 2026 · Analysed npm/adwarp@0.4.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo adwarp-dev/adwarp
Certificate issuer https://token.actions.githubusercontent.com
Certificate SAN https://github.com/adwarp-dev/adwarp/.github/workflows/release.yml@refs/tags/v0.4.0
Rekor log index 3318824565
Predicate type SLSA build provenance https://slsa.dev/provenance/v1
Subject digest sha512:0ea15083e6088fe5b5bacb871e44c9dd9be02cbba8a76161198ebfb7e3b22e8dd57aa1b6a5ab944b5eab0a644ac8a8c32b3dc7923f91ec805957d74fe

Background: How many MCP packages publish verified provenance →

Vulnerabilities 2 findings
ID CVE Severity Vector Fix available
GHSA-8cw4-87c7-c6xx CVE-2026-85063 medium yes
GHSA-mrhx-c7xc-m3w5 CVE-2023-54404 high CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H yes

Background: What a vulnerability scan can and cannot prove →

Dependencies 105 packages
Packages resolved 105
Stale 32
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 37 exposed · ~4,568 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
audience_from_hubspot ~265

Build a matched audience from HubSpot contacts or companies. Pass exactly 1 source: a HubSpot listId (its members), or filters for a CRM search (all ANDed). Reads every page, cleans the records like a CSV upload, and uploads only SHA256 email hashes for contacts (name and website for companies). Pass dryRun=true first: it returns counts and a masked sample and uploads nothing. Needs a HubSpot private app token on this machine (ADWARP_HUBSPOT_TOKEN or ~/.adwarp/hubspot.json); matching takes up to 48h.

NameTypeReqDescription
accountIdstring–LinkedIn ad account id; defaults to config defaultAccountId
dryRunboolean–Return counts and a masked sample without uploading anything
filtersarray–CRM search filters, all ANDed (HubSpot allows up to 6 per group). Pass this or listId, not both.
listIdstring–HubSpot list id (the ILS list id). Pass this or filters, not both.
namestringyesAudience/segment name
typestring–contact or company. With listId it defaults to the list's object type; with filters it defaults to contact.

No output schema declared.

No examples provided.

audience_from_salesforce ~108

Build a matched audience from a Salesforce SOQL query that selects an email column. Closes the loop: flagged accounts/contacts -> DMP segment. Requires the local `sf` CLI to be authenticated.

NameTypeReqDescription
accountIdstringyes–
emailFieldstring–Email column name if not 'Email'
namestringyesAudience/segment name
soqlstringyesSOQL selecting an email column, e.g. SELECT Email FROM Contact WHERE ...

No output schema declared.

No examples provided.

compute_lift ~171

For each recorded change to an entity, compare performance in the window before the change against the window after it (default 14 days each side). Returns before/after KPI windows and per-metric relative deltas (CTR, CPC, conversion rate, cost-per-conversion, etc.). This is a directional pre/post comparison, NOT a controlled experiment. It is confounded by seasonality, the LinkedIn learning phase after edits, and concurrent budget changes; present it as a signal and call out partial after-windows on recent changes.

NameTypeReqDescription
entityIdstringyes–
entityTypestringyescampaignGroup (the 'campaign'), campaign (the 'ad group'), or creative (the 'ad')
windowDaysinteger–Days on each side of a change (default 14)

No output schema declared.

No examples provided.

create_campaign ~348

Create a campaign (the 'ad group') with targeting, budget, bid or bidding strategy (optimizationTargetType MAX_CLICK = Maximum Delivery on landing page clicks), schedule, and optional ad rotation (creativeSelection: OPTIMIZED or ROUND_ROBIN = rotate ads evenly). Defaults to DRAFT.

NameTypeReqDescription
accountIdstringyes–
applyDefaultConversionboolean––
applyDefaultExclusionsboolean––
audienceSegmentUrnstring–urn:li:adSegment:... to target a matched audience
campaignGroupIdstringyesNumeric campaign group id
conversionIdsarray––
costTypestring––
creativeSelectionstring–Ad rotation: OPTIMIZED (LinkedIn default, favors the predicted winner) or ROUND_ROBIN (rotate ads evenly)
dailyBudgetobject––
geoUrnsarray–urn:li:geo:... locations to include
localeobject––
namestringyes–
objectiveTypestring–Campaign objective. Required to be ENGAGEMENT to sponsor another member's post (thought-leader ads).
optimizationTargetTypestring–Bidding strategy. MAX_CLICK = Maximum Delivery optimized for landing page clicks (automated bid, charged CPM, unitCost ignored). Omit or NONE for a manual bid.
politicalIntentstring––
runScheduleobjectyes–
statusstring––
targetingobject––
targetingCriteriaobject––
totalBudget–––
typestring––
unitCost––Bid amount

No output schema declared.

No examples provided.

create_campaign_group ~71

Create a campaign group (the top-level 'campaign'). Defaults to DRAFT.

NameTypeReqDescription
accountIdstringyesNumeric ad account id (no urn prefix)
namestringyes–
runScheduleobject––
statusstring––
totalBudgetobject––

No output schema declared.

No examples provided.

create_image_ad ~141

Create a single-image Sponsored Content creative (DRAFT). Omit imagePath to leave the campaign ready for an image later.

NameTypeReqDescription
accountIdstringyes–
callToActionstring–Call-to-action button label
campaignIdstringyes–
clickUristringyes–
commentarystringyesThe post body / ad intro text
headlinestringyes–
imagePathstring––
namestring–Ad name shown in Campaign Manager
organizationUrnstringyesurn:li:organization:... that owns the post
statusstring––

No output schema declared.

No examples provided.

create_text_ad ~65

Create a Text Ad creative (DRAFT by default).

NameTypeReqDescription
accountIdstringyes–
campaignIdstringyes–
clickUristringyes–
statusstring––
textstringyes–
titlestringyes–

No output schema declared.

No examples provided.

delete_ad ~91

Delete an ad: removes the creative and (best-effort) the Direct Sponsored Content post behind it. Accepts a numeric creative id or a full urn:li:sponsoredCreative URN. Use for cleaning up drafts or replacing an ad whose copy must change (Campaign Manager's editor does not reflect post edits, so recreate instead).

NameTypeReqDescription
accountIdstring––
creativeIdstringyes–

No output schema declared.

No examples provided.

estimate_audience ~70

Estimate audience size for a structured targeting spec (facet short name -> entity URNs). A campaign needs >=300 members to serve.

NameTypeReqDescription
excludeobject–facet short name -> entity URNs to exclude
includeobjectyesfacet short name -> entity URNs (ANDed across facets)

No output schema declared.

No examples provided.

gads_keyword_ideas ~98

Keyword research: search volume, competition, and top-of-page bid range for seed terms and/or a landing page. The sizing step before committing budget, equivalent to estimating audience reach on LinkedIn.

NameTypeReqDescription
customerIdstring––
languagesarray––
limitinteger––
locationsarray––
pageUrlstring––
seedsarrayyesSeed keywords or phrases

No output schema declared.

No examples provided.

gads_launch_search_campaign ~344

Create a PAUSED Search campaign from a brief: budget, campaign, geo/language targeting, ad groups, keywords, and responsive search ads, all in one atomic mutate. Defaults to validateOnly=true, which asks Google to validate the whole batch and persist nothing. Show the returned plan to the user and only re-call with validateOnly=false after they confirm. House rules are applied automatically and cannot be overridden: search network only (display expansion and search partners off), physical-presence-only location targeting, and Manual CPC. Nothing created here can serve. Activation is a human step in the Google Ads UI.

NameTypeReqDescription
adGroupsarrayyes–
budgetNamestring–Defaults to the campaign name
campaignNamestringyes–
conversionActionNamesarray–Conversion actions to set as this campaign's goals; falls back to the config default
cpcBid––Amount in the ad account's currency, e.g. 150 for $150
customerIdstring–10-digit customer id; falls back to config default
dailyBudgetnumberyesAmount in the ad account's currency, e.g. 150 for $150
endDateTimestring––
finalUrlstringyesLanding page for ads that do not override it
languagesarray–ISO language codes
locationsarray–ISO country codes (US, GB) or raw geoTargetConstant ids
negativeKeywordListIdstring––
negativeKeywordsarray––
startDateTimestring––
validateOnlyboolean––

No output schema declared.

No examples provided.

gads_list_accounts ~39

List every Google Ads customer this login can reach. Run this first: it proves the OAuth client, developer token, and account access all work.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

gads_list_ads ~41

Ads in an ad group, with their responsive-search headlines and descriptions.

NameTypeReqDescription
adGroupIdstringyes–
customerIdstring––

No output schema declared.

No examples provided.

gads_list_campaigns ~43

Account structure: campaigns with their ad groups nested. Paused campaigns are included.

NameTypeReqDescription
customerIdstring––
includeRemovedboolean––

No output schema declared.

No examples provided.

gads_list_client_accounts ~40

List the client accounts under a Google Ads manager (MCC) account.

NameTypeReqDescription
managerIdstringyesManager customer id, digits only

No output schema declared.

No examples provided.

gads_list_conversion_actions ~37

Conversion actions on the account, so a launch can name one instead of guessing an id.

NameTypeReqDescription
customerIdstring––

No output schema declared.

No examples provided.

gads_performance ~99

Performance rows at campaign, ad_group, ad, keyword, or search_term level, with totals and derived KPIs (CTR, CPC, CPM, conversion rate, cost per conversion).

NameTypeReqDescription
campaignIdstring––
customerIdstring––
endDatestring–YYYY-MM-DD
levelstring––
periodstring––
startDatestring–YYYY-MM-DD

No output schema declared.

No examples provided.

gads_search ~58

Run a raw GAQL query against the account. Read-only escape hatch for anything the other tools do not cover.

NameTypeReqDescription
customerIdstring––
querystringyesA GAQL query. Read-only: SELECT ... FROM ...

No output schema declared.

No examples provided.

get_audience_status ~30

Check a DMP segment's matching status and resolved size.

NameTypeReqDescription
segmentIdstringyes–

No output schema declared.

No examples provided.

get_competitor_creatives ~53

Read remote creative job status and cached copy by ad IDs. Read-only: does not enqueue work or visit LinkedIn. Screenshots are available through the authenticated worker endpoint.

NameTypeReqDescription
idsarrayyes–

No output schema declared.

No examples provided.

get_performance ~150

Per-entity performance with derived KPIs (CTR, CPC, CPM, CPL, conversion rate). level: campaign_group (campaign), campaign (ad group), or creative (ad). Pass parentId to scope campaigns to a group or creatives to a campaign.

NameTypeReqDescription
accountIdstring––
endDatestring–YYYY-MM-DD
levelstring–campaign_group=campaign, campaign=ad group, creative=ad
parentIdstring–Parent group id (for level=campaign) or campaign id (for level=creative)
periodstring––
startDatestring–YYYY-MM-DD; with endDate, overrides period

No output schema declared.

No examples provided.

inspect_competitor_ads ~269

Discover competitor ads through the official API. auto optionally queues up to 10 creatives on the remote worker; api returns metadata only. Always provide advertiser plus companyId to filter unrelated name matches before collection. No local browser or scraper fallback. Read pending results with get_competitor_creatives. Cached screenshots require worker authentication. Report sample coverage and collection dates; never retry a blocked worker or use another browser/client. Synthesize findings rather than dumping rows.

NameTypeReqDescription
advertiserstring–Competitor/advertiser display name (accountOwner)
companyIdstring–Numeric LinkedIn company id, more precise than name
concurrencynumber–Remote worker concurrency is fixed at one.
copyMaxinteger–Creative sample size, capped at 10. Worker budgets cannot be overridden.
countriesarray–ISO-3166 country codes to scope, e.g. ['US','GB']
deepboolean–Enqueue up to 10 verified company ads on the remote worker; reuse cached creatives.
enginestring–auto = official API plus remote creative worker; api = metadata only. Local scraping is disabled.
keywordstring–Free-text keyword search across ad copy
maxinteger–Max ads to collect

No output schema declared.

No examples provided.

launch_from_brief ~157

End-to-end: optional audience upload -> campaign group -> campaign -> draft creatives. Everything DRAFT. Returns Campaign Manager review links.

NameTypeReqDescription
accountIdstringyes–
audienceobject––
bid–––
campaignGroupNamestringyes–
campaignNamestringyes–
conversionIdsarray––
conversionNamestring–e.g. 'Demo Booked - Insight Tag'
creativeSelectionstring––
creativesarray––
dailyBudgetobjectyes–
geoUrnsarray–Defaults to United States
runScheduleobjectyes–
targetingobject––
typestring––

No output schema declared.

No examples provided.

list_ad_accounts ~19

List LinkedIn ad accounts this app can access.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_ad_changes ~99

List recorded ad changes (newest first) from the local change journal. Filter by entity type/id or tag. Use this to see what's been changed before computing lift.

NameTypeReqDescription
entityIdstring––
entityTypestring–campaignGroup (the 'campaign'), campaign (the 'ad group'), or creative (the 'ad')
limitinteger–Max rows (default 50)
tagstring––

No output schema declared.

No examples provided.

list_ads ~51

List the creatives (ads) in a campaign (ad group), drafts included: id, name, status, and backing post urn.

NameTypeReqDescription
accountIdstring––
campaignIdstringyes–

No output schema declared.

No examples provided.

list_campaigns ~118

List the account structure: campaign groups (campaigns) and/or their campaigns (ad groups), DRAFTS INCLUDED, unlike performance reports, which only show entities with spend. Pass level=groups for campaign groups only, level=campaigns for ad groups (optionally scoped by groupId), or level=both (default) for the full tree.

NameTypeReqDescription
accountIdstring––
groupIdstring–Scope campaigns to one campaign group id
includeArchivedboolean––
levelstring––

No output schema declared.

No examples provided.

list_conversions ~49

List the account's existing conversions (insight tags) so you can select one to track on a campaign. Pass accountId or omit to use the default.

NameTypeReqDescription
accountIdstring––

No output schema declared.

No examples provided.

list_facet_entities ~50

List all entities of a small facet (e.g. seniorities, functions, degrees) to pick URNs from.

NameTypeReqDescription
facetstringyesshort facet name, e.g. seniorities

No output schema declared.

No examples provided.

list_targeting_facets ~69

List LinkedIn targeting facets you can target on. Common short names: locations, profileLocations, seniorities, titles, functions, industries, staffCountRanges, skills, employers, employersPast, audienceMatchingSegments, dynamicSegments, interests, degrees, fieldsOfStudy, schools, groups.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

log_ad_change ~252

Record a change to an ad entity in the local change journal, so a later lift report can compare performance before vs. after it. Adwarp logs its own changes automatically. Use this for changes made elsewhere (e.g. in Campaign Manager) or to attach a hypothesis/label. Provide field+after for a field change, or note for a freeform annotation.

NameTypeReqDescription
afterstring–New value
atstring–ISO 8601 time the change took effect; defaults to now
beforestring–Prior value, if known
entityIdstringyesNumeric id of the campaign group / campaign / creative
entityTypestringyescampaignGroup (the 'campaign'), campaign (the 'ad group'), or creative (the 'ad')
fieldstring–Field that changed, e.g. dailyBudget, headline, status
labelstring–Hypothesis/label, e.g. 'outcome-led headline test'
namestring–Human name of the entity (for nicer listings)
notestring–Freeform note (used when there is no specific field)
tagsarray––

No output schema declared.

No examples provided.

performance_summary ~105

Account performance rollup over a period: totals + KPIs, top campaigns by spend/CTR, worst by cost-per-conversion, and flagged campaigns (spend with no conversions, high CPC, low CTR). Start here for 'how are my ads doing'.

NameTypeReqDescription
accountIdstring––
endDatestring–YYYY-MM-DD
periodstring––
startDatestring–YYYY-MM-DD; with endDate, overrides period

No output schema declared.

No examples provided.

performance_trend ~113

Weekly or monthly trend for one entity, with period-over-period deltas on impressions, clicks, spend, conversions, and CTR. Use to spot momentum or creative fatigue.

NameTypeReqDescription
bucketstring––
endDatestring–YYYY-MM-DD
entityIdstringyesNumeric id of the account/group/campaign/creative to trend
levelstring––
periodstring––
startDatestring–YYYY-MM-DD; with endDate, overrides period

No output schema declared.

No examples provided.

search_targeting ~94

Typeahead-search entities within a facet to get their URNs (e.g. facet='titles', query='marketing' -> Marketing Manager urn). Use 'list_facet_entities' for small fixed sets like seniorities. These URNs go into a targeting spec.

NameTypeReqDescription
facetstringyesshort facet name, e.g. titles, industries, skills, staffCountRanges, locations
querystringyes–

No output schema declared.

No examples provided.

update_ad ~234

Change a single ad's (creative's) status in place: PAUSED stops it serving, ACTIVE starts it serving, ARCHIVED retires it. Use PAUSED to stop an ad without touching the rest of its ad group. Accepts a numeric creative id or a full urn:li:sponsoredCreative URN. Setting ACTIVE starts spend, so set it only when the user explicitly asks to turn the ad on, never as a side effect of another request. An ACTIVE ad still only serves while its campaign (ad group) is ACTIVE. LinkedIn refuses to pause an ad that is still in review. Pass dryRun=true to preview the patch without sending it.

NameTypeReqDescription
accountIdstring–Numeric ad account id; defaults to the configured account
creativeIdstringyesNumeric creative (ad) id or a full urn:li:sponsoredCreative URN
dryRunboolean–Return the patch without sending it
statusstringyesPAUSED stops the ad serving. ACTIVE starts it serving and spending: set it only when the user explicitly asks. ARCHIVED retires it.

No output schema declared.

No examples provided.

update_campaign ~400

Update an existing campaign (the 'ad group') in place: change its targeting and/or name, status, budget, bid, bidding strategy (optimizationTargetType, costType), schedule, ad rotation (creativeSelection: OPTIMIZED or ROUND_ROBIN = rotate ads evenly). Only the fields you pass change. Targeting is REPLACED when you pass any targeting form: a structured `targeting` spec, the `audienceSegmentUrn` (+ optional `geoUrns`) shorthand, or a raw `targetingCriteria`, and default exclusions are re-applied unless applyDefaultExclusions=false. Audience Expansion / Audience Network stay off. Pass dryRun=true first to preview the patch before touching a live campaign.

NameTypeReqDescription
accountIdstringyes–
applyDefaultExclusionsboolean––
audienceSegmentUrnstring–urn:li:adSegment:... (or bare id) matched audience to target, which replaces existing targeting
campaignIdstringyesNumeric campaign (ad group) id to update
costTypestring–Change the cost type (CPM for Maximum Delivery)
creativeSelectionstring–Ad rotation: OPTIMIZED (favors the predicted winner) or ROUND_ROBIN (rotate ads evenly)
dailyBudgetobject––
dryRunboolean––
geoUrnsarray–urn:li:geo:... locations to include alongside the audience
namestring––
optimizationTargetTypestring–Bidding strategy. MAX_CLICK = Maximum Delivery optimized for landing page clicks (automated bid, charged CPM, unitCost ignored). Omit or NONE for a manual bid.
runScheduleobject––
statusstring––
targetingobject––
targetingCriteriaobject––
totalBudget–––
unitCost––Bid amount

No output schema declared.

No examples provided.

upload_audience_csv ~127

Clean a CSV at csvPath and upload it as a matched-audience DMP segment. Auto-detects contact (email) vs company (account) lists, normalizes column names, drops non-matcher columns, hashes emails, and converts company domains to website URLs. Requires the Audiences product; matching takes up to 48h.

NameTypeReqDescription
accountIdstring––
csvPathstringyesPath to the CSV file on the server
namestringyes–
typestring–Force the list type; auto-detected if omitted

No output schema declared.

No examples provided.

Install

How do I install the Adwarp MCP server?

Adwarp runs locally as an npm package, launched with npx -y adwarp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · adwarp

# add to Claude Code
claude mcp add adwarp-dev-adwarp -- npx -y adwarp
Common questions

What is the Adwarp MCP server?

Adwarp is an MCP server listed in the public MCP registry as io.github.adwarp-dev/adwarp. Open-source ad agent for LinkedIn Ads and Google Ads. Drafts campaigns, audiences and reports. This page covers its npm package (adwarp).

Is the Adwarp MCP server safe to use?

Adwarp scores 72 out of 100 on VerifyMCP. We recorded 2 known advisories against it as of 25 October 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Adwarp MCP server expose?

Adwarp exposes 37 tools: gads_list_accounts, gads_list_client_accounts, gads_keyword_ideas, gads_list_campaigns, gads_list_ads, and 32 more. Their descriptions and schemas cost roughly 4,568 tokens of context every time the server is loaded.

Is the Adwarp MCP server still maintained?

Adwarp is still listed as active in the MCP registry. We last reached this channel on 25 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Adwarp MCP server under?

Adwarp declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.