Skip to main content
Glama

Opus Growth, Ad Platforms MCP Connector

LinkedIn Campaigns

list_linkedin_campaigns
Read-onlyIdempotent

Lists ALL API-level campaigns in a LinkedIn ad account (fully paginated).

⚠️ TERMINOLOGY — read before answering. LinkedIn renamed its Campaign Manager levels in October 2025 but did NOT rename the API. The rows this tool returns are what the user's screen calls "Ad sets". What the UI calls a "Campaign" is an API campaign group (list_linkedin_campaign_groups).

API campaign group  →  UI "Campaign"
API campaign        →  UI "Ad set"   ← this tool

So when the user says "my campaigns" / "aktif kampanyalarım", they almost always mean CAMPAIGN GROUPS. This tool therefore also returns ui_campaigns (the group-level answer) so you can answer at the level the user actually sees. Lead with that; mention ad sets only as the level below. Do not claim the UI is wrong or that the user is confused.

Each row also carries DELIVERY + TARGETING settings read-only: audience_expansion, offsite_delivery (LinkedIn Audience Network), story_delivery, connected_tv_only, optimization_target, format, creative_selection and targeting (full targetingCriteria). Use these to answer "is audience expansion on?" or "what is this targeting?" — do NOT call update_linkedin_campaign_targeting to find out: that tool REPLACES targeting and its preview shows what you WOULD set, not what is set.

ACTIVE = status is ACTIVE and serving_statuses contains RUNNABLE. Something can be ACTIVE yet not serve (group paused → CAMPAIGN_GROUP_STATUS_HOLD, billing/budget hold). Never answer "none are active" from status alone. If a row has _truncated, the list is INCOMPLETE — say so.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
account_idYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added
  2. Removed
  3. Added
  4. Removed
  5. Added
  6. Removed
  7. Added
  8. Removed
  9. Added
  10. Removed
  11. Added
  12. Removed
  13. Added
  14. Removed
  15. Added
  16. Removed
  17. Added
  18. Removed
  19. Added
  20. Removed
  21. Added
  22. Removed
  23. Added
  24. Removed
  25. Added
  26. Removed
  27. Added
  28. Removed
  29. Added
  30. Removed
  31. Added
  32. Removed
  33. Added
  34. Removed
  35. Added
  36. Removed
  37. Added
  38. Removed
  39. Added

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly/idempotent/non-destructive), but the description adds substantial behavior beyond them: full pagination, a `_truncated` signal meaning the list is incomplete, and the ACTIVE + serving_statuses=RUNNABLE rule for true delivery status. It also discloses extra read-only payload (delivery/targeting settings, ui_campaigns) that annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the core statement in the first line, then uses short labeled blocks for terminology, returned fields, and the ACTIVE rule. It is longer than typical but nearly every line carries decision-relevant information; the emoji/bold formatting adds noise without much waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, yet the description usefully explains the two most confusing return aspects (ui_campaigns level mapping and the ACTIVE vs. serving distinction) plus truncation. The only real omission is how to source `account_id`, which the single-parameter schema also leaves unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one required parameter (`account_id`) with 0% schema description coverage, and the description never mentions it or says how to obtain it (e.g., from list_linkedin_ad_accounts). It only implies an 'ad account' scope, so with low coverage the description fails to compensate for the gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Lists ALL API-level campaigns in a LinkedIn ad account') and explicitly disambiguates from the sibling list_linkedin_campaign_groups by mapping API campaign vs. campaign group onto UI labels. An agent can pick the right tool without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use routing: users saying 'my campaigns' mean campaign groups, so this tool surfaces `ui_campaigns` and the agent is told to lead with that. It also names an anti-pattern ('do NOT call update_linkedin_campaign_targeting to find out' targeting) and warns against answering activity from `status` alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.