Meta Ads MCP vs Campaign Link Validation: What Each Does (And What You Still Need)

Meta launched "Meta Ads AI Connectors" on April 29, 2026: an MCP server at mcp.facebook.com/ads and an npm CLI (@meta/ads-cli) exposing 29 tools for ad reporting, campaign creation, catalog management, and account diagnostics. Every campaign it creates lands in a PAUSED state by default — Meta's safety gate before any spend is committed. What that safety gate doesn't cover is the destination URL the ad will point to. Meta's tooling manages what happens inside Meta's platform. It has no mechanism to verify whether the landing page is HTTPS, whether the OG tags are present for a rich ad preview, whether UTM parameters survive the redirect chain, or whether the destination even resolves. That gap is where mlz preflight fits. This article explains what each layer covers and why they work together rather than in competition.

Two panels side by side: Meta Ads MCP showing campaign creation checkmarks and missing validation marks, MissingLinkz showing validation checkmarks, connected by a plus sign with 'complete pre-launch stack' label

What Meta Ads AI Connectors does

Meta's AI Connectors release gives AI agents programmatic access to Meta's ad platform through both MCP and a standalone npm CLI. When connected to Claude, Cursor, or any MCP-compatible client, the @meta/ads-cli tool exposes 29 tools covering the full ad management lifecycle:

Ad campaign and ad set creation
The agent can create campaigns, define ad sets with targeting parameters (audience, placement, schedule), and configure ads with creative assets — all through structured tool calls rather than manual UI navigation. Everything created starts PAUSED, requiring explicit activation.
Budget and bid management
Set daily budgets, lifetime spend caps, and bid strategies for individual ad sets. The CLI exposes update endpoints so an agent can adjust spend without logging into Ads Manager.
Performance reporting and analytics
Pull impressions, clicks, conversions, and spend data from active campaigns. Useful for an agent that needs to monitor campaign performance, surface insights, or trigger budget adjustments based on results.
Catalog and creative management
Manage product catalogs, upload creative assets, and configure ad formats. The catalog tools cover the content side of campaign setup.
Account diagnostics
Check ad account health, payment status, policy flags, and account-level settings through the CLI's diagnostic tools.

These are all platform-internal operations. The CLI talks to Meta's APIs to configure what happens on Meta's side: the campaign structure, the targeting, the budget, the creative. That's exactly what it's designed to do.

The gap: what Meta Ads AI Connectors doesn't check

Meta's tooling accepts a destination URL as a parameter when creating an ad. It does not make HTTP requests to that URL to verify what the destination actually serves. Before any campaign goes live, four destination-side checks matter that the Meta CLI cannot perform:

SSL / HTTPS verification
A campaign pointing to an HTTP-only destination triggers security warnings in modern browsers. Some ad platforms automatically reject HTTP destinations at campaign review. The Meta CLI accepts whatever URL you pass — it does not validate whether that URL serves HTTPS before pausing the campaign for review.
Open Graph tag inspection
When Meta's ad delivery system fetches a destination URL to generate an ad preview, it reads og:title, og:description, and og:image. If these tags are missing, the preview renders with a broken or placeholder image and blank description. This happens after the campaign is created — often discovered only when a human reviews the ad preview in Ads Manager. The Meta CLI does not pre-check whether OG tags are present and valid before the campaign is submitted.
UTM parameter integrity
Campaign links built with UTM parameters need to be verified for formatting consistency, case normalization, and parameter conflicts before being used as ad destinations. A single inconsistency — utm_source=Facebook vs utm_source=facebook — creates a separate fragmented row in GA4 reports. Meta's tools create and manage campaigns; they do not validate the UTM parameter quality of the destination URL.
Redirect chain analysis
Landing pages frequently sit behind redirect chains: vanity domains, CDN rewrites, or link shorteners. Any hop in that chain that strips query strings silently drops all UTM parameters before GA4 records the session. Without following the complete redirect chain, there is no confirmation that tracking parameters survive to the final destination. Meta's CLI follows the URL you specify — it does not trace what happens at each redirect hop.

None of this is a criticism of Meta's tooling — it's an ad platform management tool, not a destination URL validator. But these are exactly the failure modes that cause campaigns to launch with broken ad previews, untracked sessions, or SSL warnings in browsers. The validation layer has to live outside the ad platform.

Capability comparison

Capability Meta Ads AI Connectors MissingLinkz
Ad campaign creation Core feature (29 tools) Out of scope
Budget & bid management Core feature Out of scope
Ad performance reporting Core feature Out of scope
Creative & catalog management Core feature Out of scope
SSL / HTTPS verification Not checked Validated
Open Graph tag inspection Not checked Full inspection
UTM parameter validation Not checked Enforced + normalized
Redirect chain analysis Not checked Full chain traced
Pre-launch ready verdict Not available JSON ready flag
Works without ad account Requires Meta account Any URL, no account
MCP tool interface mcp.facebook.com/ads mlz mcp (stdio)

The tools operate at different stages of the campaign lifecycle. Meta Ads AI Connectors manages what happens on Meta's platform after a URL is submitted. MissingLinkz validates what the URL itself serves before it ever reaches the ad platform.

What mlz preflight checks on the destination URL

The mlz preflight command performs all destination-side validation in a single call. Run it against the URL you plan to use as the ad destination:

mlz preflight --url "https://example.com/landing" --source "facebook" --medium "paid-social" --campaign "spring-launch"

The command returns a structured JSON response with a top-level ready boolean and a checks[] array:

mlz preflight — destination validation
{
  "ready": true,
  "tracked_url": "https://example.com/landing?utm_source=facebook&utm_medium=paid-social&utm_campaign=spring-launch",
  "checks": [
    { "check": "ssl", "status": "pass", "message": "URL uses HTTPS." },
    { "check": "resolution", "status": "pass", "message": "Destination responded with 200." },
    { "check": "redirects", "status": "pass", "message": "No redirects detected. UTM parameters preserved." },
    { "check": "og_tags", "status": "pass", "message": "Open Graph tags present: title, description, and image." },
    { "check": "twitter_card", "status": "pass", "message": "Twitter Card present (type: summary_large_image)." },
    { "check": "viewport", "status": "pass", "message": "Viewport meta tag present." }
  ],
  "summary": { "total": 12, "passed": 12, "warnings": 0, "failed": 0 },
  "recommendation": "All checks passed. Campaign link is ready to publish."
}

When "ready": true, the destination URL is confirmed safe to use as an ad destination. When "ready": false, the specific failing checks tell you exactly what needs to be fixed before the campaign launches — before any ad spend is committed.

For a full list of what preflight checks, see the campaign link validation guide. For OG tag validation specifically, see how to check OG tags on landing pages.

Using both together: the complete pre-launch stack

A developer using @meta/ads-cli to manage campaigns through an AI agent should add MissingLinkz validation as a step before the campaign URL is submitted to Meta. The workflow:

  1. Build the UTM link — use mlz build or mlz_build_link via MCP to generate a properly formatted, lowercase-normalized URL with UTM parameters attached
  2. Validate the destination — run mlz preflight against the destination URL to confirm SSL, OG tags, UTM integrity, and redirect chain preservation
  3. Gate on the ready flag — if "ready": false, the agent surfaces the specific failures before the URL is passed to the Meta CLI. If "ready": true, proceed
  4. Create the ad via Meta CLI — with a validated destination URL in hand, use @meta/ads-cli or the MCP server at mcp.facebook.com/ads to create the campaign with the confirmed URL as destination
  5. Activate and monitor — use Meta's tooling to move the campaign from PAUSED to active and monitor performance

Without step 2 and 3, the Meta CLI creates a campaign pointing to a destination that may have broken OG previews, missing SSL, or UTM parameters that get dropped by a redirect. Meta's safety gate (PAUSED default) prevents accidental spend — it does not prevent broken destination URLs from being submitted.

To connect the MissingLinkz MCP server alongside Meta's MCP server in the same client, add both entries to your MCP config file:

MCP config — both servers connected
{
  "mcpServers": {
    "missinglinkz": {
      "command": "mlz",
      "args": ["mcp"],
      "env": { "MLZ_API_KEY": "your_mlz_key" }
    },
    "meta-ads": {
      "command": "npx",
      "args": ["@meta/ads-cli", "mcp"],
      "env": { "META_ACCESS_TOKEN": "your_meta_token" }
    }
  }
}

With both servers connected, your AI agent has access to the full pre-launch stack: destination validation via MissingLinkz, ad management via Meta Ads AI Connectors. The agent can validate a destination URL, then immediately create the campaign using the confirmed-ready link — all in a single automated workflow.

For a broader view of how MCP tools fit together in marketing agent workflows, see what MCP servers are and how they work for marketing, and the similar breakdown in Synter Media MCP vs MissingLinkz for multi-platform ad management contexts.

Why Meta's PAUSED default doesn't replace destination validation

Meta's decision to land every AI-created campaign in a PAUSED state is a spend-protection measure, not a destination validation check. It prevents an agent from accidentally activating a campaign with a large budget. It does not prevent the campaign from being created with a broken destination.

The consequences of skipping destination validation show up after the campaign is activated:

  • Broken ad previews — if OG tags are missing, Meta's ad review fetches the URL and renders a broken preview. The ad may pass review (previews aren't always checked), go live, and drive traffic to a landing page that looks broken on link shares
  • Untracked sessions — if the destination URL has a redirect that strips query strings, every click attributed in Meta Ads Manager may show as Direct in GA4. The PAUSED gate would not catch this
  • SSL rejection downstream — some ad placements (particularly Audience Network and certain partner placements) reject HTTP-only destinations at delivery time, not at campaign creation time

Running mlz preflight before activating a campaign eliminates all three failure modes in under a second. For more on why these destination-side checks matter, see campaign link validation: the complete guide and the AI agent marketing stack.

FAQ

Does Meta Ads AI Connectors validate destination URLs?
No. Meta's MCP server and CLI accept a destination URL as input when creating ad creatives and campaigns. They do not make HTTP requests to that URL to verify SSL, OG tags, UTM parameters, or redirect chain behavior. That validation layer is outside the scope of ad platform management tools.
Can I run mlz preflight inside a GitHub Actions pipeline triggered by the Meta CLI?
Yes. mlz preflight is a CLI tool that runs anywhere Node.js is available. You can add it as a step in any CI workflow, including pipelines that interact with Meta's APIs. Run it against each destination URL in your campaign config before the campaign creation step. See the GitHub Actions campaign link validation guide for a complete workflow template.
What's the difference between this and UTMMind MCP?
UTMMind's MCP server focuses on UTM governance and naming convention enforcement. Meta Ads AI Connectors focuses on ad platform management. MissingLinkz focuses on destination URL validation: SSL, OG tags, redirect chain analysis, and UTM parameter integrity at the destination. These tools address distinct stages of the campaign lifecycle — governance, platform management, and pre-launch validation — and can be used together.
Does MissingLinkz integrate with Meta's Ads Manager?
No. MissingLinkz is a standalone campaign link infrastructure tool. It validates destination URLs without any ad platform integration. You run it against a URL and get a structured report. The URL is then ready to use in any ad platform, including via Meta's CLI.
How do I validate multiple campaign URLs at once?
Run mlz preflight in a shell loop over a list of URLs, or call the REST API endpoint (POST /v1/preflight) from a script to validate in parallel. See the MissingLinkz REST API guide for batch validation patterns.

Validate campaign destinations before Meta Ads sees them

Install MissingLinkz and run mlz preflight against every campaign URL before it reaches the ad platform. Catch broken OG tags, missing SSL, and UTM parameter issues before they become live campaign problems.

npm install -g missinglinkz

Connect the MCP server to Claude or Cursor alongside Meta Ads AI Connectors. See the MCP marketing tools guide for setup instructions.