Skip to main content
Glama

Sponsor a LinkedIn Page post

ads_create_linkedin_campaign

Sponsor an existing post by the LinkedIn ad account's own Page as a campaign group, campaign and ad, all drafts. Nothing spends until ads_set_status sets the campaign group ACTIVE. postUrn is urn:li:share: or urn:li:ugcPost:; text, image, article and video posts are supported. Location URNs come from ads_list_targeting (type locations); job functions, seniorities, industries and company sizes are optional. dailyBudget is whole currency units, at least 10 USD; bid is optional and defaults to LinkedIn's suggestion. politicalIntent must be NOT_POLITICAL. Reuse the same idempotencyKey when retrying.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "adAccountId": "<adAccountId>",
      "campaignName": "<campaignName>",
      "goal": "<goal>",
      "postUrn": "<postUrn>",
      "dailyBudget": "<dailyBudget>",
      "startDate": "<startDate>",
      "endDate": "<endDate>",
      "targeting": "<targeting>",
      "politicalIntent": "<politicalIntent>",
      "idempotencyKey": "<idempotencyKey>"
    },
    "name": "ads_create_linkedin_campaign"
  }
}

Input Schema

NameRequiredDescriptionDefault
bidNo
goalYes
endDateYes
postUrnYes
platformNometa_ads, tiktok_ads or linkedin_ads. Needed only when the profile has more than one ad network and no accountId is given.
accountIdNoThe Facebook accountId from list_accounts. Without it, pass profileId to use that profile's Facebook connection.
profileIdNoA profileId from list_profiles. Optional when accountId is given, which names its profile; if both are given they must agree.
startDateYes
targetingYes
adAccountIdYes
dailyBudgetYes
campaignNameYes
idempotencyKeyYesA unique value per intended campaign, such as a UUID. Sent as the Idempotency-Key header.
politicalIntentYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations (readOnlyHint=false, destructiveHint=false, openWorldHint=true) by disclosing that everything is created as a draft with no spend until activated, which post types are accepted, the minimum budget, the default bid behavior, the NOT_POLITICAL constraint, and idempotency-retry guidance. These are exactly the mutation-safety and side-effect facts an agent needs.

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 most decision-relevant fact (draft creation, no spend until ACTIVE) and every subsequent sentence adds operational value. It is a single dense block rather than clearly grouped, which slightly hurts scanability but there is little filler.

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?

For a 10-required-parameter mutation tool with a nested targeting object and no output schema, it covers safety, post-type support, budget semantics and the targeting source tool. Gaps remain around how adAccountId is discovered, what the four goal values mean for creative requirements, and date-range validity, but the core is covered.

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

Parameters4/5

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

Schema coverage is only 29% across 14 parameters, so the description carries real weight and does: it pins postUrn to urn:li:share / urn:li:ugcPost formats, marks job functions, seniorities, industries and company sizes as optional, specifies dailyBudget units and the 10 USD floor, and says bid defaults to LinkedIn's suggestion. It leaves goal enum meanings, date range semantics and adAccountId sourcing unexplained.

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 ('Sponsor an existing post ... as a campaign group, campaign and ad, all drafts') and implicitly distinguishes itself from the sibling generic creators (ads_create_campaign, ads_create_tiktok_campaign) by naming the LinkedIn sponsored-post path. An agent can tell what object hierarchy gets created without opening the schema.

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

Usage Guidelines4/5

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

Gives concrete operating guidance: drafts only, nothing spends until ads_set_status sets the campaign group ACTIVE, and location URNs must come from ads_list_targeting (type locations). It does not explicitly contrast itself against ads_create_campaign or state prerequisites such as ad account discovery, so it stops short of full when/when-not routing.

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.

Resources