Skip to main content
LinkedIn Ads is a read + guardrailed write connector. Tools are called via tools/call over POST /linkedin-ads/mcp. The connector is connected with OAuth (LinkedIn login). See Forbind din konto.
Endpoint: https://mcp.consile.ai/linkedin-ads/mcp. LinkedIn Ads is its own named connector with only its own tools. Tool names are namespaced as linkedin-ads__<tool> in the transport (e.g. linkedin-ads__list_ad_accounts); the AI resolves these automatically.
This connector can write. Ad-management write tools create objects in DRAFT by default (no serving, no spend). Any action that spends (status → ACTIVE), changes a budget or bid, archives/deletes, or publishes public content requires explicit confirm: true; otherwise the tool returns a dry-run preview and calls no upstream API. See Handlinger & guardrails.

Scopes & authentication

The connector requests three OAuth scopes from LinkedIn:
ScopeWhat it enables
r_adsRead ad accounts, campaign groups, campaigns, creatives, users
rw_adsAll ad-management write tools (create/update/status/budget)
r_ads_reportingAll analytics, demographics, ROAS, forecasts, audiences, conversions, lead forms
The organic-social and member-profile scopes (r_organization_admin, r_organization_social, w_organization_social, w_member_social, r_basicprofile, r_1st_connections_size) are not requested in v1 because LinkedIn rejects the full authorization if any requested scope is unapproved. Until the app receives Community Management API approval, the 8 organic-social write tools are exposed but fail with HTTP 403. All read tools for organization pages, posts, comments, reactions, member profile, and connection count still work within the r_ads surface.
LinkedIn access tokens do not come with a standard refresh_token unless the app is in the LinkedIn Marketing Developer Program (MDP). Re-authorize in the portal approximately every 60 days if the connector stops responding.

Guardrail model (write tools)

All 19 write tools pass through the connector-local applyOrPreview guardrail. The rules are:
  1. New ad objects (create_campaign_group, create_campaign) are created in DRAFT status by default. They do not serve and do not spend.
  2. New organic posts (create_organization_post, create_member_post) default to DRAFT lifecycle. They are not publicly visible.
  3. Confirmation required (confirm: true) whenever the action:
    • sets status to ACTIVE (starts serving / spending);
    • sets status to ARCHIVED (destructive);
    • changes a budget or bid amount;
    • publishes public content (a post, comment, or reaction);
    • removes a campaign↔conversion association.
  4. Without confirm: true, the tool returns a WritePreview object (the exact method, path, and body it would send) and calls no upstream API.
  5. Setting status to PAUSED or DRAFT is always safe and applies without confirmation (stops serving/spend immediately).
These are designed-in safety defaults enforced in connector application logic, not an unbreakable platform gate. See Handlinger & guardrails for the full model.

WritePreview shape

When a confirmation-gated tool is called without confirm: true, it returns:
{
  "preview": {
    "action": "create_campaign",
    "summary": "Create campaign \"Q3 brand\" under group 456 as DRAFT.",
    "request": {
      "method": "POST",
      "path": "/rest/adAccounts/123/adCampaigns",
      "body": { "...": "..." }
    },
    "confirmHint": "Re-run the same call with confirm: true to apply this change."
  }
}

Shared parameters

Numeric ids

Most tools take bare numeric id strings (digits only, no URN prefix). The connector builds the required URNs internally.
adAccountId
string
required
LinkedIn ad account id (digits only). Obtain from list_ad_accounts or search_ad_accounts.
campaignGroupId
string
Campaign group id (digits only). From list_campaign_groups.
campaignId
string
Campaign id (digits only). From list_campaigns.
organizationId
string
Organization (Company Page) id (digits only). From list_administered_organizations.

Money format

All money values (budgets, bids, conversion values) use LinkedIn’s major-unit format: a decimal string plus a currency code (not micros).
{ "amount": "500.00", "currencyCode": "DKK" }
The currencyCode must match the ad account’s currency. Supply amounts as dailyBudgetAmount / totalBudgetAmount / unitCostAmount (string) plus currencyCode (ISO 4217 three-letter code).

Limit

limit
integer
default:"100"
Maximum rows returned by list/finder tools (max 1000). The client paginates internally and returns up to limit elements.

Analytics facet

The analytics tools (get_ad_analytics, get_ad_statistics, get_ad_demographics, get_attributed_revenue) require exactly one of these facets:
accounts
string[]
Ad account ids to report on (most common).
campaigns
string[]
Campaign ids to report on.
campaignGroups
string[]
Campaign group ids to report on.

Read tools (45)

Ad accounts & structure

list_ad_accounts

List every ad account the connected member can access, with account URN and role. The entry point that yields the account ids all other tools take.
limit
integer
default:"100"

search_ad_accounts

Search accessible ad accounts with full detail (currency, status, servingStatuses, type). No filter returns all accessible accounts.
status
string[]
Filter by account status. Enum: ACTIVE DRAFT CANCELED PENDING_DELETION REMOVED.
limit
integer
default:"100"

get_ad_account

Fetch one ad account by id: currency, status, type, servingStatuses, reference, notification flags, test flag.
adAccountId
string
required

list_ad_account_users

List all users and roles on a given ad account (audit who has access). Inverse of list_ad_accounts.
adAccountId
string
required
limit
integer
default:"100"

list_campaign_groups

Search/list campaign groups under an account (the budget/status container above campaigns): name, status, runSchedule, totalBudget/dailyBudget, objective.
adAccountId
string
required
status
string[]
Filter by status. Enum: ACTIVE PAUSED DRAFT ARCHIVED REMOVED.
limit
integer
default:"100"

get_campaign_group

Fetch one campaign group: name, status, runSchedule, totalBudget/dailyBudget, servingStatuses, objective.
adAccountId
string
required
campaignGroupId
string
required

list_campaigns

Search/list campaigns within an account: status, type, objectiveType, costType, budgets, bid (unitCost), runSchedule, targetingCriteria, servingStatuses.
adAccountId
string
required
status
string[]
Filter by status. Enum: ACTIVE PAUSED DRAFT ARCHIVED COMPLETED REMOVED.
campaignGroupId
string
Scope to one campaign group id.
limit
integer
default:"100"

get_campaign

Fetch one campaign with full targetingCriteria, budgets, bid (unitCost), runSchedule, objectiveType, optimizationTargetType, servingStatuses, versionTag.
adAccountId
string
required
campaignId
string
required

list_creatives

Search/list creatives (ads) under an account: reference, status (intendedStatus), variant content.
adAccountId
string
required
limit
integer
default:"100"

get_creative

Fetch one creative by its URN (status, content reference, variant/intendedStatus).
adAccountId
string
required
creativeUrn
string
required
The creative URN, e.g. urn:li:sponsoredCreative:123.

get_ad_preview

Render a preview of an existing creative in a placement, matching the render LinkedIn Campaign Manager shows.
adAccountId
string
required
creativeUrn
string
required
urn:li:sponsoredCreative:123 to preview.

Reporting & analytics

get_ad_analytics

Core single-pivot performance report: group metrics by one dimension over a date range and time granularity. Cost fields are decimal strings in the account currency (not micros).
pivot
string
required
Dimension to group by. One of: COMPANY ACCOUNT SHARE CAMPAIGN CREATIVE CAMPAIGN_GROUP CONVERSION CONVERSION_COMPONENT OBJECTIVE_TYPE SERVING_LOCATION PLACEMENT_NAME IMPRESSION_DEVICE_TYPE, plus the MEMBER_* demographic set (see get_ad_demographics).
timeGranularity
string
default:"ALL"
Time bucketing: ALL (one total) | DAILY | MONTHLY | YEARLY.
fromYmd
string
required
Report window start (YYYY-MM-DD).
toYmd
string
required
Report window end (YYYY-MM-DD).
accounts
string[]
Ad account ids (most common facet; provide exactly one facet).
campaigns
string[]
Campaign ids (alternative facet).
campaignGroups
string[]
Campaign group ids (alternative facet).
fields
string
CSV of metric fields (max 20). Defaults to: impressions,clicks,costInLocalCurrency,externalWebsiteConversions,oneClickLeads,landingPageClicks.

get_ad_statistics

Multi-dimensional report: group metrics by up to three pivots at once (e.g. CAMPAIGN × CREATIVE × SERVING_LOCATION) for cross-tabs the single-pivot finder cannot express.
pivots
string[]
required
1–3 dimensions from the same enum as get_ad_analytics.
timeGranularity
string
default:"ALL"
fromYmd
string
required
toYmd
string
required
accounts
string[]
campaigns
string[]
campaignGroups
string[]
fields
string

get_ad_demographics

Professional-demographic breakdown: analytics pivoted by a MEMBER_* dimension (company/size/industry/seniority/job title/function/country/region): “who saw or engaged with my ads”. Data is delayed approximately 12–24 hours; resolve the returned URNs with resolve_targeting_urns.
pivot
string
required
One of: MEMBER_COMPANY MEMBER_COMPANY_SIZE MEMBER_INDUSTRY MEMBER_SENIORITY MEMBER_JOB_TITLE MEMBER_JOB_FUNCTION MEMBER_COUNTRY_V2 MEMBER_REGION_V2 MEMBER_COUNTY.
fromYmd
string
required
toYmd
string
required
accounts
string[]
campaigns
string[]
campaignGroups
string[]
fields
string
Defaults to impressions,clicks,costInLocalCurrency.

get_attributed_revenue

CRM revenue-attribution report (ROAS, won/open opportunities, deal size, days-to-close) by ACCOUNT / CAMPAIGN_GROUP / CAMPAIGN. Returns empty results unless the advertiser has connected a CRM to Business Manager.
adAccountId
string
required
pivots
string[]
default:"[\"CAMPAIGN\"]"
1–3 from ACCOUNT CAMPAIGN_GROUP CAMPAIGN.
fromYmd
string
required
toYmd
string
required
fields
string
CSV of revenueAttributionMetrics fields.

get_budget_pricing

Suggested, minimum and maximum bids plus daily-budget limits for a bid/campaign type on an account. Forecast only. No spend.
adAccountId
string
required
bidType
string
required
e.g. CPM, CPC, CPV.
campaignType
string
required
e.g. SPONSORED_UPDATES, TEXT_AD, DYNAMIC.
matchType
string
Optional bid match type.
targetingCriteria
string
Advanced: a pre-built RestLi targetingCriteria fragment (passed verbatim).
Returns {amount, currencyCode} money objects.

forecast_ad_supply

Forecast impressions, clicks, spend, reach, and leads for a hypothetical campaign’s targeting + competing bid over a time range.
campaignType
string
required
e.g. SPONSORED_UPDATES.
target
string
required
A pre-built RestLi targeting fragment (target.includedTargetingFacets:...).
startMs
integer
required
Forecast window start (epoch ms).
endMs
integer
required
Forecast window end (epoch ms).
competingBid
string
Optional competing bid fragment.

get_organization_page_statistics

Organization page view and click statistics. Lifetime breakdown (by geo, country, function, industry, seniority, staffCountRange) is shown when no time interval is given.
organizationId
string
required

get_organization_follower_statistics

Follower demographics (lifetime, by 7 facets). The total count is not here. Use get_organization_follower_count for that.
organizationId
string
required

get_organization_share_statistics

Organic engagement stats for an org’s posts: aggregate lifetime stats (impressions, clicks, likes, comments, shares, engagement rate). Organic only. For sponsored content use get_ad_analytics.
organizationId
string
required

Audiences & targeting

get_audience_count

Estimate the reachable LinkedIn audience size (active + total) for a targetingCriteria expression. Validates the 300-member campaign minimum before launch. Returns total: 0 when the audience is below LinkedIn’s privacy floor.
targetingCriteria
string
required
A pre-built RestLi targetingCriteria fragment. Build facet URNs with the targeting tools below.

list_targeting_facets

List all targeting facet categories (industries, titles, seniorities, skills, locations, jobFunctions, staffCountRanges, interests, etc.) and which entity finders each supports. The catalog you build targetingCriteria from. No arguments.

list_targeting_entities

Enumerate all values for an enumerable facet (e.g. seniorities, genders, jobFunctions, ageRanges), resolving closed-list facets to URNs.
facet
string
required
The facet name (e.g. seniorities) or a full adTargetingFacet URN.
locale
string
Optional locale, e.g. en_US.
limit
integer
default:"100"

typeahead_targeting_entities

Free-text search for targeting entity URNs within a facet (find geo / skill / company / title / field-of-study URNs). The main way to turn natural-language words into targeting URNs.
facet
string
required
The facet name (e.g. locations, skills) or a full adTargetingFacet URN.
query
string
required
Free-text search, e.g. Copenhagen or machine learning.
locale
string
Optional locale, e.g. en_US.
limit
integer
default:"100"

similar_targeting_entities

Given seed entity URN(s) in a facet, return similar entities (lookalike companies / industries / skills / titles) for audience expansion.
facet
string
required
The facet name or a full adTargetingFacet URN.
entities
string[]
required
Seed entity URNs (at least one).
limit
integer
default:"100"

resolve_targeting_urns

Resolve a batch of entity URNs to human-readable names and facet membership (e.g. urn:li:geo:102095887"California, United States") to display a campaign’s stored targeting or demographics.
urns
string[]
required
Entity URNs to resolve (at least one).

Conversions & Insight Tag

list_conversion_rules

List all conversion rules for an ad account (including conversionMethod=CONVERSIONS_API and enabled flags). The value field is {currencyCode, amount} in major units.
adAccountId
string
required
limit
integer
default:"100"

get_conversion_rule

Fetch one conversion rule by id: type, attribution windows, value, urlMatchRuleExpression, associated campaigns, imagePixelTag.
adAccountId
string
required
conversionId
string
required
Numeric conversion id (digits only).

get_insight_tag

Find the Insight Tag for an ad account and retrieve its tracking snippet and firstParty state.
adAccountId
string
required

list_insight_tag_domains

List domains observed firing the account’s Insight Tag (most recent first) with blocked status and last-callback time. Verify tag installation.
adAccountId
string
required
limit
integer
default:"100"

list_campaign_conversions

List all conversion-rule associations for one or more campaigns (which campaigns attribute which conversions).
campaignIds
string[]
required
Campaign ids to look up (at least one).
limit
integer
default:"100"

Lead form definitions

These tools expose form structure only: questions, hidden fields, consent text, post-submission CTA. Retrieving actual submitted lead PII requires the separate LinkedIn Lead Sync API program (r_marketing_leadgen_automation), which is not part of this connector.

list_lead_forms

List lead gen form definitions for an ad account.
adAccountId
string
required
limit
integer
default:"100"

get_lead_form

Fetch one lead gen form definition by id (full questions, hidden fields, consents, post-submission CTA).
formId
string
required
Numeric form id (digits only).

Organization pages & organic content (read)

list_administered_organizations

List the organizations the connected member administers (org URN, role, state). The entry point for organization selection. Filter to ADMINISTRATOR + APPROVED for usable organizations.
role
string
default:"ADMINISTRATOR"
state
string
default:"APPROVED"
limit
integer
default:"100"

get_organization

Fetch full admin-visible org profile by id (name, website, industries, locations, logo, staffCountRange).
organizationId
string
required

find_organization_by_vanity_name

Resolve an organization by its vanityName (URL slug) to its URN and profile.
vanityName
string
required
The URL slug, e.g. microsoft.

get_organization_follower_count

Total first-degree follower count for an organization (the headline number).
organizationId
string
required

list_organization_posts

List organic posts authored by an organization (the page’s content feed), newest first.
organizationId
string
required
sortBy
string
default:"LAST_MODIFIED"
LAST_MODIFIED or CREATED.
limit
integer
default:"100"

get_post

Fetch a single organic post by its share/ugcPost URN (commentary, author, visibility, content).
postUrn
string
required
urn:li:share:123 or urn:li:ugcPost:123.

get_post_social_metadata

Reaction and comment summary for a post (commentsState, commentSummary, reactionSummaries by type). Works for organic and sponsored posts.
entityUrn
string
required
The post/share/ugcPost URN.

list_post_comments

List comments on a post (or nested replies on a comment).
entityUrn
string
required
The post/share/ugcPost URN.
limit
integer
default:"100"

list_post_reactions

List reactions on a post or comment with reactionType (LIKE / PRAISE / EMPATHY / INTEREST / APPRECIATION / ENTERTAINMENT).
entityUrn
string
required
The post/share/ugcPost URN.
limit
integer
default:"100"

Member profile

get_my_profile

The connected member’s own profile: id (person URN), name, headline, vanityName (public-URL slug), photo. Also useful as a connect-confirmation / whoami check. No arguments.

get_my_connections_count

The connected member’s number of first-degree connections (count only, not the list). The viewer is implied by the access token. No arguments.
count
integer
Number of first-degree connections.

Advanced: query (read escape-hatch)

query

GET any allow-listed LinkedIn REST or v2 path with a safelisted set of read parameters, for the long tail not covered by a dedicated tool. Read-only by construction (GET-only + path and param guard).
path
string
required
A bare path under /rest or /v2, e.g. /rest/adCampaigns/123 or /v2/me (no scheme, no traversal).
params
object
Read params as a string/number record. Only safelisted keys are forwarded; others are dropped silently. Percent-encode URN values. Allowed keys include: q, fields, projection, start, count, pageSize, pageToken, search, pivot, pivots, timeGranularity, dateRange, facet, query, urns, entities, ids, owner, account, organization, sort, sortBy, sortOrder, edgeType.
Allow-listed path resources: adAccounts, adAccountUsers, adCampaignGroups, adCampaigns, creatives, adPreviews, adAnalytics, adBudgetPricing, adSupplyForecasts, audienceCounts, adTargetingFacets, adTargetingEntities, conversions, insightTags, insightTagDomains, campaignConversions, leadForms, organizations, organizationAcls, organizationPageStatistics, organizationalEntityFollowerStatistics, organizationalEntityShareStatistics, networkSizes, posts, socialMetadata, socialActions, reactions, me, connections, geo.

Ad-management write tools (11)

All 11 tools go through the guardrail described above. See Handlinger & guardrails for the full model.

Campaign groups

create_campaign_group

Create a campaign group (the budget/status container above campaigns). Created DRAFT by default (no serving); status: "ACTIVE" requires confirm: true.
adAccountId
string
required
name
string
required
1–100 characters.
startMs
integer
required
runSchedule.start (epoch ms).
endMs
integer
runSchedule.end (epoch ms; required if totalBudget is set).
status
string
default:"DRAFT"
DRAFT | ACTIVE | PAUSED | ARCHIVED. ACTIVE requires confirm: true.
totalBudgetAmount
string
Total budget as a decimal string (major units).
currencyCode
string
ISO 4217 code; required when a budget amount is provided.
confirm
boolean
Set true to apply when confirmation is required.

update_campaign_group

Edit a campaign group’s name, schedule, or total budget. A budget change always requires confirm: true.
adAccountId
string
required
campaignGroupId
string
required
name
string
totalBudgetAmount
string
currencyCode
string
endMs
integer
New runSchedule.end (epoch ms).
confirm
boolean

set_campaign_group_status

Set a campaign group to DRAFT / ACTIVE / PAUSED / ARCHIVED. PAUSED stops serving immediately and applies without confirmation. ACTIVE and ARCHIVED require confirm: true.
adAccountId
string
required
campaignGroupId
string
required
status
string
required
DRAFT | ACTIVE | PAUSED | ARCHIVED.
confirm
boolean

Campaigns

create_campaign

Create a campaign under a group. Created DRAFT by default (no spend). status: "ACTIVE" requires confirm: true. Money is major units.
adAccountId
string
required
campaignGroupId
string
required
Parent campaign group id.
name
string
required
type
string
required
Campaign type, e.g. SPONSORED_UPDATES, TEXT_AD, DYNAMIC.
costType
string
required
Bidding cost type: CPM | CPC | CPV.
country
string
default:"us"
locale.country (ISO 3166-1 alpha-2).
language
string
default:"en"
locale.language (ISO 639-1).
dailyBudgetAmount
string
Daily budget (decimal string). Provide daily OR total.
totalBudgetAmount
string
Total budget (decimal string). Provide daily OR total.
currencyCode
string
Required when a budget amount is provided.
unitCostAmount
string
Bid (unitCost) amount (decimal string).
targetingCriteria
string
required
targetingCriteria as a JSON object string. Build URNs with the targeting read tools.
objectiveType
string
e.g. WEBSITE_VISITS, LEAD_GENERATION, BRAND_AWARENESS.
politicalIntent
string
Required by LinkedIn (2025-08+) on create; set the value appropriate to your account/region.
status
string
default:"DRAFT"
DRAFT | ACTIVE | PAUSED | ARCHIVED. ACTIVE requires confirm: true.
confirm
boolean

update_campaign

Edit a campaign’s name, budgets, bid (unitCost), or targetingCriteria. A budget or bid change always requires confirm: true.
adAccountId
string
required
campaignId
string
required
name
string
dailyBudgetAmount
string
totalBudgetAmount
string
unitCostAmount
string
currencyCode
string
targetingCriteria
string
New targetingCriteria as a JSON object string.
confirm
boolean

set_campaign_status

Set a campaign to DRAFT / ACTIVE / PAUSED / ARCHIVED. PAUSED stops spend immediately (no confirmation needed). ACTIVE and ARCHIVED require confirm: true.
adAccountId
string
required
campaignId
string
required
status
string
required
DRAFT | ACTIVE | PAUSED | ARCHIVED.
confirm
boolean

Creatives

set_creative_status

Set a creative (ad) to DRAFT / ACTIVE / PAUSED / ARCHIVED. PAUSED is immediate. ACTIVE (starts serving and spending) and ARCHIVED require confirm: true.
adAccountId
string
required
creativeUrn
string
required
urn:li:sponsoredCreative:123.
status
string
required
DRAFT | ACTIVE | PAUSED | ARCHIVED.
confirm
boolean

Conversion tracking

create_conversion_rule

Create a conversion rule for an account (measurement setup; does not spend). Returns the new id and the imagePixelTag snippet. Applies without confirm: true by default (measurement only, no spend or publish).
adAccountId
string
required
name
string
required
type
string
required
e.g. LEAD, PURCHASE, SIGN_UP, ADD_TO_CART, DOWNLOAD, KEY_PAGE_VIEW.
attributionType
string
default:"LAST_TOUCH_BY_CAMPAIGN"
LAST_TOUCH_BY_CAMPAIGN | LAST_TOUCH_BY_CONVERSION.
postClickAttributionWindowSize
integer
default:"30"
Post-click attribution window (days).
viewThroughAttributionWindowSize
integer
default:"7"
View-through attribution window (days).
valueAmount
string
Optional fixed conversion value (decimal string, major units).
currencyCode
string
Required when valueAmount is provided.
confirm
boolean

update_conversion_rule

Edit a conversion rule’s name, enabled state, or value. Editing the value does not retroactively re-attribute past events. Applies without confirm: true.
adAccountId
string
required
conversionId
string
required
name
string
enabled
boolean
valueAmount
string
currencyCode
string
confirm
boolean

associate_campaign_conversion

Attach a conversion rule to a campaign so that campaign attributes that conversion. Use the urn:lla conversion URN form (e.g. urn:lla:llaPartnerConversion:123). Applies without confirm: true.
campaignId
string
required
conversionUrn
string
required
urn:lla:llaPartnerConversion:123 (note the urn:lla namespace).
confirm
boolean

remove_campaign_conversion

Detach a conversion rule from a campaign (stops conversion attribution for that campaign). Destructive to reporting and optimization. Requires confirm: true.
campaignId
string
required
conversionUrn
string
required
urn:lla:llaPartnerConversion:123.
confirm
boolean

Organic-social write tools (8): requires Community Management API approval

These 8 tools are built and exposed but not yet active. They return HTTP 403 until Consile’s LinkedIn app is approved for the Community Management API. Until then the organic-social read tools (list_organization_posts, get_post, get_post_social_metadata, list_post_comments, list_post_reactions) work normally. The scopes w_organization_social and w_member_social are not requested in v1.
When activated, the same guardrail applies: new posts default to DRAFT lifecycle (not publicly visible), and publishing public content (a published post, a comment, or a reaction) and deleting content require confirm: true.

Posts

create_organization_post

Publish an organic post authored by an organization (Company Page). Defaults to DRAFT lifecycle (not publicly visible); lifecycleState: "PUBLISHED" publishes public content under the brand and requires confirm: true.
organizationId
string
required
commentary
string
required
Post text (supports #hashtags).
visibility
string
default:"PUBLIC"
PUBLIC | CONNECTIONS | LOGGED_IN.
lifecycleState
string
default:"DRAFT"
DRAFT | PUBLISHED. PUBLISHED requires confirm: true.
confirm
boolean

create_member_post

Publish an organic post authored by the connected member (person). Defaults to DRAFT; PUBLISHED posts public content under the member’s name and requires confirm: true. The author is resolved from /v2/me and is never taken from tool input.
commentary
string
required
Post text.
visibility
string
default:"PUBLIC"
PUBLIC | CONNECTIONS | LOGGED_IN.
lifecycleState
string
default:"DRAFT"
DRAFT | PUBLISHED. PUBLISHED requires confirm: true.
confirm
boolean

update_post

Edit a post’s commentary or lifecycleState. Editing the text of a (possibly public) post, or publishing a DRAFT (lifecycleState: "PUBLISHED"), mutates public content and requires confirm: true.
postUrn
string
required
urn:li:share:123 or urn:li:ugcPost:123.
commentary
string
lifecycleState
string
DRAFT | PUBLISHED.
confirm
boolean

delete_post

Permanently delete a post. Irreversible removal of (possibly public) content. Requires confirm: true.
postUrn
string
required
urn:li:share:123 or urn:li:ugcPost:123.
confirm
boolean

Comments & reactions

create_comment

Post a public comment on a post, as the organization (pass organizationId) or the connected member. Public content under the brand or member identity. Requires confirm: true.
postUrn
string
required
The post/share/ugcPost URN to comment on.
text
string
required
The comment text.
organizationId
string
Comment AS this organization; omit to comment as the connected member.
confirm
boolean

delete_comment

Delete a comment on a post (your own, or moderating others’ comments on your post), as the organization or the connected member. Destructive. Requires confirm: true.
postUrn
string
required
The post/share/ugcPost URN the comment is on.
commentId
string
required
The comment id (numeric id or full comment URN).
organizationId
string
Acting AS this organization; omit to act as the connected member.
confirm
boolean

create_reaction

React (LIKE / PRAISE / EMPATHY / INTEREST / APPRECIATION / ENTERTAINMENT) to a post, as the organization or the connected member. A public brand or member action. Requires confirm: true.
postUrn
string
required
The post/share/ugcPost URN to react to.
reactionType
string
default:"LIKE"
LIKE | PRAISE | EMPATHY | INTEREST | APPRECIATION | ENTERTAINMENT.
organizationId
string
React AS this organization; omit to react as the connected member.
confirm
boolean

delete_reaction

Remove a reaction previously made (as the organization or the connected member) from a post. Low-stakes cleanup. Applies without confirm: true.
postUrn
string
required
The post/share/ugcPost URN the reaction is on.
organizationId
string
The reaction’s actor was this organization; omit for the connected member.
confirm
boolean

Code examples

{
  "name": "list_campaigns",
  "arguments": {
    "adAccountId": "503456789",
    "status": ["ACTIVE", "PAUSED"],
    "limit": 50
  }
}
A revoked or expired access token returns an authentication error. Re-authorize in the portal (approximately every 60 days). See Errors & limits.