LinkedIn Ads MCP by AdPlug

Hosted LinkedIn Ads MCP server by AdPlug, connecting LinkedIn Ads to Claude, ChatGPT and other MCP-compatible AI assistants.

Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeRead-only

What it can do

  • Adplug Get Status: Check whether LinkedIn Ads is connected to this AdPlug account. IMPORTANT: Call this tool FIRST before using any other tools on this server. If LinkedIn Ads is not connected, surfac
  • Linkedin Ads List Accounts: Lists all LinkedIn Ad Accounts accessible to the authenticated user (LinkedIn Ads tool). Returns each account with: id, name, currency, status, and type. Use this first to
  • Linkedin Ads Performance: Unified analytics tool — returns performance data for any LinkedIn Ads report type (LinkedIn Ads tool). One tool for all performance reporting. The report_type parameter sele

What data it sees

Do you need an account

No: the server works without sign-in

Hosted LinkedIn Ads MCP server by AdPlug, connecting LinkedIn Ads to Claude, ChatGPT and other MCP-compatible AI assistants. Analyse performance, audiences, creatives and conversions. Generate reports and manage campaigns, budgets and ads using natural language. Secure OAuth, read-only access by default and previews before changes. No coding or server setup required.

Server tool list (10)

Raw names from tools/list. Only developers need these.

adplug_get_statusCheck whether LinkedIn Ads is connected to this AdPlug account. IMPORTANT: Call this tool FIRST before using any other tools on this server. If LinkedIn Ads is not connected, surface the action_required steps so the user can connect it before you attempt platform-specific operations. Also reports write_access (read_write or read_only). read_only ('View only' in the dashboard) is a team setting: write tools are hidden and any write call is rejected, so do not attempt changes.
linkedin_ads_list_accountsLists all LinkedIn Ad Accounts accessible to the authenticated user (LinkedIn Ads tool). Returns each account with: id, name, currency, status, and type. Use this first to discover available LinkedIn Ad accounts.
linkedin_ads_performanceUnified analytics tool — returns performance data for any LinkedIn Ads report type (LinkedIn Ads tool). One tool for all performance reporting. The report_type parameter selects what data to return. report_type options: - "campaign": Per-campaign metrics (spend, impressions, clicks, CTR, CPC, conversions). Returns campaign names, IDs, status. - "creative": Per-creative metrics with engagement breakdown (likes, comments, shares) and video metrics. Returns creative type (DOCUMENT, SINGLE_IMAGE, VIDEO, CAROUSEL). - "daily": Day-by-day performance trends. - "conversion": Per-conversion-action breakdown (total conversions, post-click, post-view, cost per conversion). - "lead_gen": Lead generation metrics per campaign (leads, form opens, qualified leads, cost per lead). - "demographics": Audience demographics breakdown. Requires demographic_type: MEMBER_JOB_FUNCTION, MEMBER_SENIORITY, MEMBER_INDUSTRY, MEMBER_COMPANY_SIZE, MEMBER_JOB_TITLE, MEMBER_COMPANY, MEMBER_COUNTRY_V2, MEMBER_REGION_V2. - "reach": Audience reach and frequency (unique reach, impressions, frequency, penetration). Max 92-day range. Args: account_id: The LinkedIn Ad Account ID. start_date: Start date in YYYY-MM-DD format. end_date: End date in YYYY-MM-DD format. report_type: One of: campaign, creative, daily, conversion, lead_gen, demographics, reach. campaign_ids: Optional list of campaign IDs to filter. campaign_id: Optional single campaign ID to filter (convenience alias for campaign_ids). demographic_type: Required when report_type is "demographics". E.g. MEMBER_JOB_FUNCTION, MEMBER_SENIORITY.
linkedin_ads_listLists LinkedIn Ads entities of any type (LinkedIn Ads tool). IMPORTANT — LinkedIn UI naming vs API naming: - LinkedIn UI "Campaigns" = API "campaign_groups" (use entity_type="campaign_groups") - LinkedIn UI "Ad sets" = API "campaigns" (use entity_type="campaigns") - LinkedIn UI "Ads" = API "creatives" (use entity_type="creatives") When a user asks about "campaigns", they usually mean campaign_groups. entity_type options: - "campaign_groups": Lists campaigns (LinkedIn UI name). Supports status filter: ACTIVE, PAUSED, ARCHIVED, DRAFT. Supports include_performance with start_date/end_date. - "campaigns": Lists ad sets (LinkedIn UI name). Supports status filter and campaign_group_id to show ad sets under a specific campaign. - "creatives": Lists ads (LinkedIn UI name) with format detection (DOCUMENT, VIDEO, SINGLE_IMAGE, CAROUSEL, etc.). Supports campaign_ids filter and include_content. IMPORTANT: When status="ACTIVE", auto-filters to only include ads from ACTIVE ad sets — so you get truly serving ads. - "conversions": Lists conversion tracking rules. Status filter = enabled_only (pass status="enabled"). - "campaign_conversions": Lists conversion-rule ↔ campaign associations. Requires campaign_ids. Returns one row per (campaign_id, conversion_id) pairing. - "lead_forms": Lists lead generation forms. Supports status filter: DRAFT, PUBLISHED, ARCHIVED. - "saved_audiences": Lists matched/DMP audiences. Paginates fully across the account (no 10-row cap). Returns the LINKEDIN destination's status as `status` (typical values: READY, BUILDING, PROCESSING, ARCHIVED, FAILED) plus `destinationSegmentId` (the `urn:li:adSegment:...` URN to use in targeting criteria). Supports `name_contains` for client-side substring search (matched audiences are NOT typeahead-searchable via the LinkedIn API — list and filter is the supported pattern). - "targeting_audiences": Lists saved targeting audience templates. Supports name_contains. - "targeting_facets": Lists all available targeting facets/dimensions. No account_id needed. Args: entity_type: What to list. One of: campaign_groups, campaigns, creatives, conversions, lead_forms, saved_audiences, targeting_audiences, targeting_facets. account_id: The LinkedIn Ad Account ID (required for most entity types, not needed for targeting_facets). status: Optional status filter (meaning varies by entity type). For creatives with status="ACTIVE", cascades through campaign status. campaign_ids: Optional campaign ID filter (for creatives/ads). campaign_group_id: Optional campaign group ID filter (for campaigns/ad sets — show ad sets under a specific campaign). include_content: Include raw content details for creatives. Default: false. include_performance: Include performance metrics for campaign_groups (requires start_date/end_date). Default: false. start_date: Start date for performance data (YYYY-MM-DD). end_date: End date for performance data (YYYY-MM-DD). limit: Maximum number of results to return. Default: 100. name_contains: Case-insensitive substring filter on entity name (saved_audiences, targeting_audiences).
linkedin_ads_getGets details for a single LinkedIn Ads entity (LinkedIn Ads tool). entity_type options: - "campaign": Full campaign config (targeting, budget, format, schedule, etc.). - "campaign_group": Campaign group details. - "creative": Creative details with content. Pass raw=true to ALSO get the unflattened creative + underlying post JSON (raw_creative, raw_post) so you can verify the exact Destination URL (contentLandingPage), Headline (content.media.title) and CTA (contentCallToActionLabel) the way Campaign Manager reads them — not just the flattened ad_copy view. - "targeting_audience": Targeting audience template with criteria. - "saved_audience": Matched/DMP audience details (name, type, sourcePlatform, destinations[] with status and audienceSize, and `destinationSegmentId` — the `urn:li:adSegment:...` URN you'd use in targeting criteria). Pass the dmpSegment numeric ID as entity_id. - "lead_form_responses": Lead form submission data. entity_id = form_id (optional, pass "all" for all forms). Args: entity_type: What to get. One of: campaign, campaign_group, creative, targeting_audience, saved_audience, lead_form_responses. entity_id: The entity ID. For lead_form_responses, pass the form_id or "all". account_id: The LinkedIn Ad Account ID (required for campaign, campaign_group, creative, lead_form_responses). limit: Max responses for lead_form_responses. Default: 100. raw: For entity_type='creative', include the raw creative + raw post JSON. Default: false.
linkedin_ads_preview_mutationPreview a LinkedIn Ads write operation before executing it (LinkedIn Ads tool). Shows what API call will be made, validates parameters, and returns the payload for confirmation. Use linkedin_ads_execute_mutation to actually execute it. Available operations: - Campaign Groups: create_campaign_group, update_campaign_group, delete_campaign_group - Campaigns: create_campaign, update_campaign, delete_campaign - Creatives: create_creative, update_creative, delete_creative - Asset uploads: upload_image, upload_video, upload_document - Inline ads (one-shot create): create_inline_ad (ad_format: SINGLE_IMAGE/SINGLE_VIDEO/DOCUMENT/CAROUSEL/TEXT/SPOTLIGHT/MESSAGE/EVENT/TLA) - Lead Forms: create_lead_form, update_lead_form, delete_lead_form - Targeting: create_targeting_audience, update_targeting_audience, delete_targeting_audience, apply_targeting_audience - Conversions: create_conversion_rule, associate_conversion, dissociate_conversion - Audiences: create_saved_audience, add_audience_members Args: operation: The operation to preview. One of the operations listed above. params: Operation-specific parameters as a dict. Call with operation="help" to see required params for each operation.
linkedin_ads_execute_mutationExecute a LinkedIn Ads write operation (LinkedIn Ads write tool). Use linkedin_ads_preview_mutation first to validate and preview the operation. Args: operation: The operation to execute (same as preview). params: Operation-specific parameters (same as preview).
linkedin_ads_targeting_lookupTargeting lookup tool — search entities, resolve URNs, or estimate audience size (LinkedIn Ads tool). action options: - "search": Typeahead search for targeting entities — best for open-ended free-text facets (titles, employers, skills, industries, schools, groups, degrees, fieldsOfStudy, interests). Requires: query, facet. Facet name uses LinkedIn's URN form *without* the urn:li:adTargetingFacet: prefix (e.g. facet="titles", not "jobTitles"). Closed-set facets (seniorities, jobFunctions, staffCountRanges, ageRanges, genders, revenue, yearsOfExperienceRanges, interfaceLocales, etc.) are not typeahead-searchable — use entity_type=targeting_facets and consult Microsoft Learn's "Targeting Criteria Facet URNs" reference for valid URN values. Examples: • staffCountRanges → "urn:li:staffCountRange:(MIN,MAX)" compound URNs, e.g. (2,10), (501,1000), (5001,10000), (10001,2147483647 for "10K+"). • seniorities, jobFunctions, etc. → "urn:li:<facet>:<code>" with a fixed enum. Matched audiences (urn:li:adTargetingFacet:audienceMatchingSegments) are also NOT typeahead-searchable — LinkedIn exposes them with finder=[$UNKNOWN]. Use linkedin_ads_list entity_type=saved_audiences with `name_contains` instead. - "resolve_urns": Resolve targeting URNs to {urn, facetUrn, name, ...}. Requires: urns (array of URN strings). Optional: account_id (enables the destinationSegmentUrn → dmpSegment reverse lookup, which is what recovers names for adSegment URNs that were pulled from a campaign's targetingCriteria — those URNs use the destination segment id, NOT the top-level dmpSegment id, so /dmpSegments/{id} alone would 404). For urn:li:adSegment:* URNs the resolver tries (1) /dmpSegments/{id}, (2) when account_id is set, the dmpSegments listing's destinations[].destinationSegmentId, and (3) the bare adTargetingEntities finder. URNs that confirm targetable via (3) but lack a name land in `targetable_unnamed`. Anything truly unresolvable lands in `unresolved`. - "audience_count": Get estimated audience size for targeting criteria. Requires: account_id, targeting_criteria (object with include/exclude facets). Args: action: One of: search, resolve_urns, audience_count. query: Search query (for action=search). E.g. "marketing manager", "Google". facet: Targeting facet name (for action=search), without the urn:li:adTargetingFacet: prefix. E.g. titles, employers, skills, industries, schools. urns: Array of targeting URNs (for action=resolve_urns). account_id: LinkedIn Ad Account ID (for action=audience_count). targeting_criteria: Targeting criteria object (for action=audience_count).
linkedin_ads_send_conversion_eventSends conversion events via the Conversions API / CAPI (LinkedIn Ads write tool). Each event requires: conversionHappenedAt (epoch ms), user.userIds [{idType, idValue}]. Optional: eventId (dedup), conversionValue {amount, currencyCode}. idType options: SHA256_EMAIL, LINKEDIN_FIRST_PARTY_ADS_TRACKING_UUID, ACXIOM_ID, ORACLE_MOAT_ID. Args: conversion_id: Conversion rule ID (numeric). events: Array of conversion events (max 5000).
linkedin_ad_library_searchSearch LinkedIn's public Ad Library for ads from any advertiser (LinkedIn Ads tool). Returns ads run by ANY LinkedIn advertiser, not just the user's own accounts. Covers ads served since 2023-06-01, retained 1 year past the last impression. Use this for competitor research, brand monitoring, creative-format benchmarking, geographic-targeting analysis, and detecting whether a company is currently advertising on LinkedIn. For analytics on the USER'S own accounts, use linkedin_ads_performance instead. Ad copy, CTA text, and image/video assets are NOT in the API response — direct the user to the returned ad_url for those. mode options: - "summary": Returns total count + up to 3 sample ad URLs only. Use for "is X advertising?" / "how many ads is X running?" without burning context on full element bodies. - "standard": Returns formatted elements (epoch ms -> ISO 8601 UTC, snake_case keys, structured targeting facets). The default. - "raw": Returns LinkedIn's response body unchanged. Escape hatch when the formatter loses something or the schema evolves. Args: keyword: Full-text search across ad text and metadata. At least one of keyword or advertiser is required. Best signal for "find ads about X" queries. advertiser: Advertiser identifier - accepts a URN (urn:li:organization:1234), a LinkedIn company URL with a numeric ID (https://www.linkedin.com/company/1234), or a bare numeric ID (1234). Slug URLs (https://www.linkedin.com/company/microsoft) are not supported - pass the numeric ID instead. NOTE: LinkedIn's advertiser filter is sparse - many active advertisers return total=0 even when they clearly run ads (visible via keyword search). If advertiser-only returns 0, fall back to a keyword search of the company name. count: Page size, 1-25 (LinkedIn caps page size at 25). Default 10. start: Pagination offset. Default 0. mode: One of "summary", "standard", "raw". Default "standard".