Marketing Tools & Services
Custom LinkedIn Ads MCP server detecting wasted SaaS ad spend with AI-powered analysis

How We Built a Custom LinkedIn Ads MCP to Spot Wasted Spend in Seconds

Our LinkedIn Ads MCP spots waste Campaign Manager misses.

LinkedIn Ads is one of the most expensive B2B channels in paid media, and most of the waste sitting inside SaaS accounts stays invisible in Campaign Manager. We built a custom MCP server that connects Claude directly to client LinkedIn Ads accounts, so we can ask plain-English questions about spend, audience composition, frequency, and funnel alignment, and get answers in seconds.

This blog walks you through how the server works, what it catches that dashboards miss, and why this kind of tooling matters if you are running LinkedIn ads at any meaningful budget.

The spend leaks you can't see in Campaign Manager

LinkedIn CPMs often land in the low-to-high $30s, and CPCs commonly run between $5.50 and $8.50 depending on industry and seniority targeting. At those price points, wasted impressions add up fast, and the margin for error on audience setup is thin.

The structural problem is that most waste on LinkedIn starts at the planning and targeting layer, well upstream of creative. Campaign Manager does not surface much of it natively. The reports tell you what your CTR is on a specific campaign. They do not tell you that your matched audience is too small for the budget you are running, that you have shown the same six people the same ad twelve times this week, or that a demo request CTA is running against a cold audience with no brand exposure.

Audience over-narrowing is one of the biggest offenders. A SaaS company spending $30,000 or more per month can watch CPL climb past $400 per lead because the matched audience list is too small, frequency spikes, and the same buyers keep seeing the same creative. The cost-efficient audience range sits between roughly 50,000 and 300,000 members. Below 50K, you are paying a premium to reach the same people again.

Budget timing, funnel-stage mismatches, and audience composition drift show up the same way. The patterns are visible only when you look at spend, audience size, frequency, conversion data, and time period together. That cross-cut analysis is exactly what Campaign Manager makes painful, and exactly what we wanted to make fast.

MCP in plain English

Model Context Protocol, or MCP, is an open standard. It gives AI assistants a structured way to pull data from external tools in real time, without bespoke integrations for each new source.

The architecture has three parts. The host is the AI app you are working in, like Claude. The client lives inside the host and manages connections to outside data. The server is the custom piece you build, which connects to a specific data source and exposes the tools the AI is allowed to call.

When we prompt Claude to pull LinkedIn campaign performance, Claude recognizes that our custom LinkedIn Ads MCP server is connected, calls the right tool, and returns output grounded in live account data rather than guessing or summarizing what it has seen before.

LinkedIn does not offer a first-party MCP server. That is why we built our own.

How we built it

The server connects to the LinkedIn Marketing API, which exposes spend, impressions, clicks, CTR, professional demographic breakdowns, conversion data, and the rest of the marketing analytics surface.

Building it meant handling a few core jobs:

  • Writing the connector logic that talks to the LinkedIn API
  • Handling OAuth authentication and token refresh so the connection stays alive
  • Mapping LinkedIn's data schema into a structure that the AI can query naturally
  • Deploying the server so it stays running and accessible
  • Managing versioning, error handling, and rate limits

If the data connection breaks, nothing downstream works. We invested heavily in reliability for that reason. A flaky connection to a client's ad account is worse than no connection at all, because it produces output that looks authoritative and quietly is not.

The server is read-only by design. We can pull data and run analysis through it. We cannot use it to change bids, budgets, or creative. That is a deliberate constraint. We would rather build something reliable for analysis than let an automated system adjust live budgets without human review.

What it actually catches

Once the server is connected, we can ask Claude things like: show me campaigns where frequency is above threshold, CPL is above $150, and the audience is under 50K members. The query runs against live account data and the result comes back in seconds.

Here is what we are flagging across client accounts:

  • Frequency saturation on small audiences: Tight account lists paired with high daily budgets show the same ads to the same people repeatedly. The server surfaces these before CPL spirals.
  • Funnel mismatches: Demo request CTAs running to cold audiences with no prior brand exposure burn budget fast. The MCP cross-references campaign objective, audience engagement history, and conversion rates to spot bottom-of-funnel offers hitting top-of-funnel buyers.
  • Budget concentration issues: Pulling spend and performance data across time periods flags when too much budget is flowing to the least efficient campaigns or quarters.
  • Audience composition drift: LinkedIn's professional demographic data tells us who is actually seeing the ads. If a campaign targeting VPs is mostly reaching individual contributors, the MCP surfaces the mismatch before the monthly report does.

We pipe summaries into Slack so the team sees alerts without opening a separate tool. When something looks off, a human reviews it and makes the call on whether to adjust.

Why most teams don't build this themselves

Most marketing teams are not running this kind of tooling yet, and there are real reasons for that. Building a connector means writing API logic, handling authentication, testing edge cases, and committing to ongoing maintenance as the upstream API changes. That is engineering work, and most marketing teams do not have an engineer who can ship it and keep it running.

No off-the-shelf tool currently combines LinkedIn-specific spend monitoring, real-time alerting, and AI-native querying in a lightweight package. Some platforms address parts of the problem, but they tend to be expensive, channel-agnostic, or built for attribution rather than anomaly detection. The category gap is real.

Our paid media team was positioned to build this because Clay, Claude, and the LinkedIn Marketing API were already in our daily stack, and we run paid media across enough accounts that the investment pays back quickly. None of that makes the tool less useful for the broader market. It makes the gap more obvious.

Why this matters for SaaS growth teams

If you are spending $20K or more per month on LinkedIn Ads for B2B SaaS, the waste patterns above are almost certainly present in your account. SaaS CPL on LinkedIn typically sits in the low hundreds, and enterprise-targeted campaigns often push into the $150 to $300+ range. At those price points, a 10% reduction in wasted spend pays for itself quickly.

The traditional audit cycle is slow. Export data, analyze it, share findings, wait for next month. Waste compounds for weeks before anyone catches it. An MCP-connected AI that queries live account data and surfaces anomalies on demand changes that feedback loop from monthly to continuous.

We built this because we manage LinkedIn Ads across a wide portfolio of B2B SaaS clients, and manual audits at that scale were eating time that should have been spent on optimization. Same ICP work, same messaging discipline, same paid media team, with an AI layer on top that catches what humans miss when you are looking at fifty accounts instead of one.

Find wasted LinkedIn spend with Understory

Our paid media work for clients like Rivial Security, where we scaled monthly LinkedIn spend from $20K to $70K while improving lead quality, and RemoFirst, where coordinated paid media and outbound replaced an entire in-house SDR team, runs on this kind of infrastructure.

The custom LinkedIn Ads MCP is one piece of how we keep spend efficient across the portfolio, alongside paid media management across LinkedIn, Google, and Meta, Clay and Instantly-powered outbound, and creative services under one team.

Book a call with Understory to find the wasted spend hiding in your LinkedIn ad account.

Frequently asked questions

What is an MCP server, and how is it different from a normal API integration?

Model Context Protocol is an open standard that gives AI assistants a structured way to call external tools in real time. A traditional API integration sits between two specific systems and has to be rebuilt every time either side changes. An MCP server exposes a data source to any MCP-compatible AI host through a consistent interface, so we can ask Claude new questions against the LinkedIn API without writing a new integration each time our analysis evolves. The server is the custom piece that connects to the data source. The host is the AI you are working in. The protocol is what lets them talk reliably.

Why is your LinkedIn Ads MCP read-only?

We built the server to pull data and run analysis, not to change bids, budgets, or creative. That is a deliberate constraint. The risk of an automated system adjusting live client budgets without human review is higher than the risk of a paid media manager taking thirty extra seconds to push an exclusion themselves. Read-only also means the surface area for bugs is smaller, which matters when the same tool runs across many client accounts. When the MCP surfaces something worth acting on, a human reviews the data and makes the change.

What kinds of LinkedIn ad waste does the MCP actually catch?

The four patterns we flag most often are frequency saturation on small audiences, funnel-stage mismatches between offer and audience, budget concentration in underperforming campaigns or time periods, and audience composition drift away from the intended ICP. All four are visible only when you cross-cut spend, audience size, frequency, demographic breakdowns, and conversion data together. That cross-cut analysis is exactly what Campaign Manager makes painful, and exactly what the MCP makes fast.

What's the minimum LinkedIn Ads spend where this kind of tooling pays off?

Roughly $20,000 per month is where the math starts working. Below that, the waste patterns still exist, but the absolute dollars recovered from catching them faster do not justify the engineering build. Above $20K, the picture changes quickly. At $30K or more per month, a single audience over-narrowing problem can push CPL past $400, and a 10% reduction in wasted spend covers the cost of the tooling several times over. The case is strongest for teams running multiple accounts, where audit effort otherwise scales linearly with portfolio size.

Related Articles

logo

Let's Chat

Let’s start a conversation -your satisfaction is our top priority!