Open-source ad agent for LinkedIn Ads and Google Ads. Drafts campaigns, audiences and reports from Claude Code, Cursor, Codex or other MCP clients that can run a local server.
Inferred from the transports this listing declares (stdio, streamable-http). A client not listed here hasn’t been ruled out — it just isn’t something Forge can confirm.
ADWARP_LINKEDIN_CLIENT_SECRETOAuth appoptionalLinkedIn app Client Secret. Leave unset to use ~/.adwarp
ADWARP_LINKEDIN_REFRESH_TOKENOAuth appoptionalRefresh token from adwarp auth login. Leave unset to use ~/.adwarp
Declared by the author in the official MCP registry. Forge does not store, broker, or ever see these values — the config below is scaffolded with placeholders you fill in locally.
Verification confirms publisher identity (repo ownership), not code safety. The security scan covers known CVEs and suspicious install scripts.
Read out of the source npm actually ships, at scan time. The package was never executed. Tools registered dynamically at runtime, or hidden inside bundled or minified code, can be missed — so this is a floor on the tool surface, not a complete census of it.
gads_list_accountsList every Google Ads customer this login can reach. Run this first: it proves the OAuth client, developer token, and account access all work.List every Google Ads customer this login can reach. Run this first: it proves the OAuth client, developer token, and account access all work.
No input schema was published for this tool.
gads_list_client_accountsList the client accounts under a Google Ads manager (MCC) account.List the client accounts under a Google Ads manager (MCC) account.
No input schema was published for this tool.
gads_keyword_ideasKeyword 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.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.
No input schema was published for this tool.
gads_list_campaignsAccount structure: campaigns with their ad groups nested. Paused campaigns are included.Account structure: campaigns with their ad groups nested. Paused campaigns are included.
No input schema was published for this tool.
gads_list_adsAds in an ad group, with their responsive-search headlines and descriptions.Ads in an ad group, with their responsive-search headlines and descriptions.
No input schema was published for this tool.
gads_list_conversion_actionsConversion actions on the account, so a launch can name one instead of guessing an id.Conversion actions on the account, so a launch can name one instead of guessing an id.
No input schema was published for this tool.
gads_launch_search_campaignNo description publishedThis tool published no description. Forge does not invent one.
gads_performancePerformance rows at campaign, ad_group, ad, keyword, or search_term level, with totals and derived KPIs (CTR, CPC, CPM, conversion rate, cost per conversion).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).
No input schema was published for this tool.
gads_searchRun a raw GAQL query against the account. Read-only escape hatch for anything the other tools do not cover.Run a raw GAQL query against the account. Read-only escape hatch for anything the other tools do not cover.
No input schema was published for this tool.
list_ad_accountsList LinkedIn ad accounts this app can access.List LinkedIn ad accounts this app can access.
No input schema was published for this tool.
list_targeting_facetsNo description publishedThis tool published no description. Forge does not invent one.
search_targetingTypeahead-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.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.
No input schema was published for this tool.
list_facet_entitiesList all entities of a small facet (e.g. seniorities, functions, degrees) to pick URNs from.List all entities of a small facet (e.g. seniorities, functions, degrees) to pick URNs from.
No input schema was published for this tool.
estimate_audienceEstimate audience size for a structured targeting spec (facet short name -> entity URNs). A campaign needs >=300 members to serve.Estimate audience size for a structured targeting spec (facet short name -> entity URNs). A campaign needs >=300 members to serve.
No input schema was published for this tool.
upload_audience_csvprivilegedClean 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.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.
No input schema was published for this tool.
audience_from_salesforceBuild 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.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.
No input schema was published for this tool.
audience_from_hubspotBuild 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). Pa…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). Pa…
No input schema was published for this tool.
list_conversionsList 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.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.
No input schema was published for this tool.
list_campaignsList 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 (defa…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 (defa…
No input schema was published for this tool.
list_adsList the creatives (ads) in a campaign (ad group), drafts included: id, name, status, and backing post urn.List the creatives (ads) in a campaign (ad group), drafts included: id, name, status, and backing post urn.
No input schema was published for this tool.
delete_adprivilegedDelete 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 rec…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 rec…
No input schema was published for this tool.
update_adChange 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…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…
No input schema was published for this tool.
get_audience_statusCheck a DMP segment's matching status and resolved size.Check a DMP segment's matching status and resolved size.
No input schema was published for this tool.
create_campaign_groupCreate a campaign group (the top-level 'campaign'). Defaults to DRAFT.Create a campaign group (the top-level 'campaign'). Defaults to DRAFT.
No input schema was published for this tool.
create_campaignCreate 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.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.
No input schema was published for this tool.
update_campaignNo description publishedThis tool published no description. Forge does not invent one.
create_text_adCreate a Text Ad creative (DRAFT by default).Create a Text Ad creative (DRAFT by default).
No input schema was published for this tool.
create_image_adCreate a single-image Sponsored Content creative (DRAFT). Omit imagePath to leave the campaign ready for an image later.Create a single-image Sponsored Content creative (DRAFT). Omit imagePath to leave the campaign ready for an image later.
No input schema was published for this tool.
performance_summaryAccount 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'.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'.
No input schema was published for this tool.
get_performancePer-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.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.
No input schema was published for this tool.
performance_trendWeekly 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.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.
No input schema was published for this tool.
launch_from_briefEnd-to-end: optional audience upload -> campaign group -> campaign -> draft creatives. Everything DRAFT. Returns Campaign Manager review links.End-to-end: optional audience upload -> campaign group -> campaign -> draft creatives. Everything DRAFT. Returns Campaign Manager review links.
No input schema was published for this tool.
log_ad_changeRecord 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…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…
No input schema was published for this tool.
list_ad_changesList 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.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.
No input schema was published for this tool.
compute_liftFor 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…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…
No input schema was published for this tool.
inspect_competitor_adsDiscover 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 g…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 g…
No input schema was published for this tool.
get_competitor_creativesRead 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.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.
No input schema was published for this tool.
34 of 37 tools published a description.
Tool names and descriptions are written by the publisher and shown verbatim as inert text. They are the strings an MCP client passes to a model, so Forge scans them for prompt-injection patterns — any finding appears with the security scan above. “Privileged” is a keyword match on the tool name, not an audit of what the tool does: a benign-sounding name can still do anything.
Open-source ad agent for LinkedIn Ads and Google Ads. Drafts campaigns, audiences and reports from Claude Code, Cursor, Codex or other MCP clients that can run a local server.
Linked names open Forge’s index of every entry observed exposing that tool. Browse all indexed tools.
The crawl stopped at the 60-package limit. The rest of the tree was never resolved.
36 more resolved packages are not drawn here (display cap: 24). Every dependency carrying an advisory is drawn regardless of the cap. Full inventory (CycloneDX SBOM)
69 declared dependencies never landed in the tree. They are missing from Forge's resolution, not from the package.
+57 more not listed. The counts by reason above cover all of them.
Not followed: peerDependencies. This tree covers runtime dependencies only, so anything those pull in was never resolved.