Skip to main content
Glama
adops-tool

LinkedIn Ads MCP Toolkit

by adops-tool

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
DASHBOARD_OPENNoExact value `true` opens the generated dashboard in the default browser
LINKEDIN_SCOPESNoSpace-separated approved OAuth scope namesrw_ads r_ads_reporting r_organization_social w_organization_social
DASHBOARD_END_DATENoDashboard end date in `YYYY-MM-DD` format; default is today
LINKEDIN_CLIENT_IDYesDeveloper application client ID; required for login and refresh
LINKEDIN_MAX_PAGESNoMaximum pages per collection traversal; integer 1–10,0001000
LINKEDIN_PAGE_SIZENoCollection request page size; integer 1–100100
LINKEDIN_READ_ONLYNoExact `true` or `false`; hides and blocks mutation toolsfalse
TOKEN_STORAGE_PATHNoToken-file path; an absolute path is recommended~/.linkedin-ads-mcp/tokens.json
DASHBOARD_START_DATENoDashboard start date in `YYYY-MM-DD` format; default is 90 days before today
LINKEDIN_API_VERSIONNoMarketing API version in `YYYYMM` format202601
LINKEDIN_MAX_RETRIESNoExtra GET attempts; integer 0–10. `0` means one attempt3
DASHBOARD_OUTPUT_PATHNoGenerated HTML output pathdashboard.html
LINKEDIN_REDIRECT_URINoHTTP loopback URL with a registered host, port, and path; no credentials, query, or fragmenthttp://localhost:3000/callback
LINKEDIN_CLIENT_SECRETYesDeveloper application secret; required for login and refresh
LINKEDIN_ADS_ACCOUNT_IDNoPositive numeric account ID; required for dashboard generation
LINKEDIN_AUTH_NO_BROWSERNoExact value `true` disables automatic browser opening
LINKEDIN_MAX_CONCURRENCYNoSimultaneous API attempts per client; integer 1–505
LINKEDIN_ADS_ACCOUNT_NAMENoDashboard display nameLinkedIn Ads
LINKEDIN_MAX_UPLOAD_BYTESNoLocal upload byte limit; integer 1–104,857,600. LinkedIn restrictions also apply20971520
LINKEDIN_OAUTH_TIMEOUT_MSNoAuthorization flow deadline; integer 1–1,800,000 ms300000
LINKEDIN_REQUEST_TIMEOUT_MSNoPer-attempt request/body deadline; integer 1–300,000 ms30000
LINKEDIN_RETRY_MAX_DELAY_MSNoMaximum retry delay; integer from the base delay to 60,000 ms30000
LINKEDIN_RETRY_BASE_DELAY_MSNoInitial retry delay; integer 1–60,000 ms1000

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_server_statusA

Returns local configuration and token expiration status without exposing secrets or making API calls.

list_ad_accountsA

Lists all LinkedIn Ad Accounts accessible to the authenticated user. Returns account names, IDs, status, currency, and serving statuses. Use this to get an overview of all accounts or find a specific account ID.

get_account_detailsA

Retrieves detailed information about a specific LinkedIn Ad Account including status, currency, notification settings, and linked organization.

get_campaign_performanceA

Retrieves performance metrics for campaigns within a specified date range. Returns key metrics like impressions, clicks, spend, CTR, conversions, audience penetration, and average dwell time. The primary tool for daily campaign monitoring and optimization decisions.

get_creative_performanceB

Retrieves performance metrics for individual ad creatives. Shows which specific ads are performing best, including engagement metrics (likes, comments, shares), video metrics, and average dwell time. Essential for creative optimization.

get_campaign_groupsB

Lists all campaign groups for an account with their configuration and optionally aggregated performance. Campaign groups help organize campaigns and control budget at a higher level.

get_audience_demographicsA

Retrieves demographic breakdown of who saw or interacted with your ads. Shows performance segmented by job function, seniority, industry, company size, or geographic location. Essential for understanding if you're reaching your target audience. Note: Demographic data has a 12-24 hour delay.

get_audience_reachA

Shows unique member reach and native audience penetration for campaigns. Returns LinkedIn's native audiencePenetration metric (approximate unique members reached / total target audience size). Helps understand what percentage of your target audience you've reached. Note: Date range must be 92 days or less.

list_saved_audiencesA

Lists saved/matched audiences available in the account for targeting. Shows audience names, sizes, and statuses to help plan campaign targeting.

get_conversion_performanceB

Retrieves conversion metrics broken down by conversion type/action. Shows which conversions are being driven by which campaigns, with cost per conversion and conversion value.

list_conversionsB

Lists all conversion tracking rules configured for an account. Shows conversion names, types, attribution windows, and enabled status.

get_lead_gen_performanceB

Retrieves lead generation form performance including form submissions, qualified leads, and cost per lead. Essential for B2B marketers running lead gen campaigns.

list_lead_formsB

Lists all lead generation forms configured for an account with their questions and settings. Helps understand what forms are available and their configuration.

compare_performanceB

Compares performance between two time periods, campaigns, or campaign groups. Calculates percentage changes and highlights significant differences. Essential for reporting on performance trends.

get_daily_trendsA

Retrieves daily performance trends over a specified period. Returns time-series data for visualizing performance patterns, identifying anomalies, and understanding day-of-week effects.

create_campaign_groupB

Creates a new LinkedIn campaign group for organizing campaigns. Campaign groups manage status, budget, and performance across multiple related campaigns.

update_campaign_groupB

Updates an existing LinkedIn campaign group. Can change status (ACTIVE/PAUSED/ARCHIVED/DRAFT), budget, name, or end date.

delete_campaign_groupA

Deletes a LinkedIn campaign group. Draft groups are deleted immediately. Non-draft groups are set to PENDING_DELETION status.

create_campaignB

Creates a new LinkedIn ad campaign within a campaign group. Requires targeting criteria, budget, and objective type.

update_campaignA

Updates an existing LinkedIn campaign. Can change status (ACTIVE/PAUSED/ARCHIVED), budget, name, targeting, bid amount, and other settings. Uses partial update - only specified fields are changed.

delete_campaignA

Deletes a LinkedIn campaign. Draft campaigns are deleted immediately. Non-draft campaigns are set to PENDING_DELETION status.

update_creative_statusA

Updates the intended status of a LinkedIn creative/ad. Can activate, pause, or archive creatives.

create_creativeA

Creates a new LinkedIn creative/ad under a campaign. Requires a content reference (post/share URN) or will be created as a reference to existing content.

create_inline_adB

Creates a new LinkedIn ad with inline content directly (without needing a pre-existing post). This creates the ad content (text, image/video, landing page, CTA) and the creative in a single call. Use this to create sponsored content ads from scratch.

list_campaignsA

Lists campaigns for a LinkedIn Ad Account. Unlike get_campaign_performance (which only returns campaigns with analytics data), this tool returns ALL campaigns including DRAFT and PAUSED campaigns with zero impressions. Supports filtering by campaign group and status.

upload_imageA

Uploads an image file to LinkedIn for use in ads. Supports PNG, JPG, and GIF formats. Returns the image URN that can be used as the mediaId when creating inline ads. The image is uploaded in two steps: initialize upload (get URL + URN), then upload binary.

search_ad_libraryA

Searches the LinkedIn Ad Library for ads matching criteria. Find and analyze real ads from any advertiser across different countries and time periods. Supports filtering by keyword, advertiser name, country, date range, targeting facets, and impression range. Returns ad preview URLs, advertiser details, targeting information, and impression statistics. Maximum 25 results per request (use pagination).

get_analyticsA

Query raw LinkedIn analytics with custom metrics, entity or demographic pivots, filters, and time granularity. Large metric selections are split and merged automatically.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.6/5.0

Scored across 28 tools

Disambiguation4/5

Most tools have clearly distinct purposes (CRUD on campaigns/groups vs. specialized performance retrievals), and descriptions proactively distinguish look-alikes like get_campaign_performance vs. list_campaigns. However, the cluster of performance tools (get_campaign_performance, get_creative_performance, get_audience_demographics, get_conversion_performance, get_lead_gen_performance, get_daily_trends, get_analytics) has overlapping boundaries where an agent could easily pick the wrong one.

Naming Consistency5/5

Nearly every tool follows a clean snake_case verb_noun pattern (get_, list_, create_, update_, delete_, upload_, compare_, search_). The convention is applied consistently across all 28 tools with no camelCase or naming-style deviations.

Tool Count3/5

28 tools is a large surface that sits just above the comfortable 15-25 range, and several performance tools could plausibly be consolidated under get_analytics. The broad LinkedIn Ads domain (campaigns, creatives, audiences, conversions, lead gen, ad library) does justify most of them, so it's borderline rather than bloated.

Completeness4/5

Core lifecycle coverage is strong: full CRUD for campaigns and campaign groups, creative creation and status changes, plus extensive read/analytics for audiences, conversions, and lead gen. Minor gaps exist (no create/update for lead forms, audiences, or conversions; no creative delete beyond status), but agents can work around these.

Maintenance

ActivityMaintained
ResponsivenessNo issues