tools/call over POST /linkedin-ads/mcp. The connector is connected with OAuth
(LinkedIn login). See Forbind LinkedIn Ads.
Endpoint:
https://mcp.consile.ai/linkedin-ads/mcp. LinkedIn Ads is its own
named connector with only its own tools. Tools are listed and must be called
with the qualified name linkedin-ads__<tool> (e.g.
linkedin-ads__list_ad_accounts); a bare name such as list_campaigns returns
Unknown tool.. If the account has added extra LinkedIn portals in the Consile
portal, each one has its own endpoint (https://mcp.consile.ai/linkedin-ads-2/mcp,
-3, …) with the same tools under the prefix linkedin-ads-2__, each bound to
its own LinkedIn login. tools/list on every LinkedIn endpoint also includes the
unprefixed connect_account tool, which returns a link to (re)connect LinkedIn
that is valid for 10 minutes.Scopes & authentication
The connector requests three OAuth scopes from LinkedIn:The connector uses OAuth 2.0 authorization-code login with LinkedIn, and
Consile renews the access automatically. If the access has expired or been
revoked, the tool returns an error result whose text ends in
reconnect required (for example
LinkedIn access token has expired; reconnect required). Other LinkedIn errors
(for example invalid arguments or throttling) return the generic text
Tool invocation failed.; LinkedIn’s message and HTTP status are not passed to
the client. If every call fails, including list_ad_accounts, reconnect
LinkedIn Ads in the portal.Tools that are not available yet
22 of the 64 tools are listed intools/list but are not available yet: they
cannot read from or change anything on LinkedIn, and calls that need LinkedIn
fail with the tool error Tool invocation failed.. They are the 8 organic-social
write tools (create_organization_post, create_member_post, update_post,
delete_post, create_comment, delete_comment, create_reaction,
delete_reaction) and these 14 read tools: list_administered_organizations,
get_organization, find_organization_by_vanity_name,
get_organization_follower_count, list_organization_posts,
get_organization_page_statistics, get_organization_follower_statistics,
get_organization_share_statistics, get_post, get_post_social_metadata,
list_post_comments, list_post_reactions, get_my_profile,
get_my_connections_count. The other 42 tools are available.
Guardrail model (write tools)
All 19 write tools pass through the connector’s built-in guardrail. The rules are:- New ad objects (
create_campaign_group,create_campaign) are created inDRAFTstatus by default. They do not serve and do not spend. A create with statusDRAFTorPAUSEDis applied immediately, including any budget passed at creation; onlyACTIVEorARCHIVEDat creation requiresconfirm: true. - New organic posts (
create_organization_post,create_member_post) default toDRAFTlifecycle. They are not publicly visible. - 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);
- deletes a post or comment (
delete_post,delete_comment); - edits the
commentaryof a post (update_post); - removes a campaign↔conversion association.
- sets status to
- Without
confirm: true, a gated tool returns a preview object (the exact method, path, and body it would send) and sends no write to LinkedIn. - Setting status to
PAUSEDorDRAFTapplies without confirmation (stops serving/spend immediately). - Applied without confirmation: creates with status
DRAFTorPAUSED(including any budget set at creation), updates that change only name, end date or targeting,create_conversion_rule,update_conversion_rule(includingenabled: false),associate_campaign_conversion,delete_reaction, andupdate_postthat only setslifecycleState: "DRAFT".
confirm work across connectors.
Preview shape
When a confirmation-gated tool is called withoutconfirm: true, it returns:
create_campaign called with status: "ACTIVE"
and no confirm. The same call with the default DRAFT status is executed
immediately and returns { id, body, status }. The preview is a normal successful
tool result (isError is not set). action is the bare tool name.
Tool annotations
Every tool intools/list carries MCP annotations. The 45 read tools:
readOnlyHint: true, destructiveHint: false, openWorldHint: false. All 19
write tools: readOnlyHint: false, destructiveHint: true, openWorldHint: true.
MCP clients can use these hints to ask the user before each write call. The
annotations add to the confirm guardrail and do not replace it.
Shared parameters
Numeric ids
Most tools take bare numeric id strings (digits only, no URN prefix). The connector builds the required URNs internally.conversionId and formId are also digits
only.
string
required
LinkedIn ad account id (digits only). Obtain from
list_ad_accounts or
search_ad_accounts.string
Campaign group id (digits only). From
list_campaign_groups.string
Campaign id (digits only). From
list_campaigns.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).currencyCode must match the ad account’s currency. Supply amounts as
dailyBudgetAmount / totalBudgetAmount / unitCostAmount (string) plus
currencyCode (ISO 4217 three-letter code). currencyCode is required whenever
an amount is given; without it the call fails.
Limit
integer
default:"100"
Maximum rows returned by list/finder tools (1-1000). The connector follows
LinkedIn’s paging automatically and returns up to
limit elements.Analytics facet
get_ad_analytics, get_ad_statistics and get_ad_demographics take one facet.
Pass one of accounts, campaigns or campaignGroups. Passing none is an error.
If you pass several, only the first non-empty one is used, in the order
accounts, campaigns, campaignGroups. get_attributed_revenue instead takes a
single adAccountId.
string[]
Ad account ids to report on (most common).
string[]
Campaign ids to report on.
string[]
Campaign group ids to report on.
Response shapes
- Paginated list tools (
list_ad_accounts,search_ad_accounts,list_ad_account_users,list_campaign_groups,list_campaigns,list_creatives,list_targeting_entities,typeahead_targeting_entities,similar_targeting_entities,list_conversion_rules,list_insight_tag_domains,list_campaign_conversions,list_lead_forms,list_administered_organizations,find_organization_by_vanity_name,list_organization_posts,list_post_comments,list_post_reactions):{ count, elements, paging, metadata }, whereelementsholds LinkedIn’s objects unchanged andcountis the number of rows returned. - All other reads (single objects,
list_targeting_facets,resolve_targeting_urns,get_insight_tag, the analytics tools andquery): LinkedIn’s JSON response unchanged. Budgets are{ amount, currencyCode }and analytics cost fields are decimal strings, both in major units of the account currency.get_my_connections_countreturns{ count, paging }. - Applied writes:
{ id, body, status }.idis the new object’s id on create,statusis LinkedIn’s HTTP status (201 on create, 200 or 204 on update and delete), andbodyis often empty. - Gated writes without
confirm: the preview shown above.
Connector limits
List tools follow LinkedIn’s paging and return at mostlimit rows (default
100, max 1000).
The analytics response caps are set by LinkedIn: get_ad_analytics /
get_ad_statistics return a single, non-paginated response that LinkedIn caps at
15,000 elements, and accept at most 20 metric fields per call. Consile’s
own request limits are described in Errors & limits.
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.integer
default:"100"
search_ad_accounts
Search accessible ad accounts with full detail (currency, status, servingStatuses, type). No filter returns all accessible accounts.string[]
Filter by account status. Enum:
ACTIVE DRAFT CANCELED
PENDING_DELETION REMOVED.integer
default:"100"
get_ad_account
Fetch one ad account by id: currency, status, type, servingStatuses, reference, notification flags, test flag.string
required
list_ad_account_users
List all users and roles on a given ad account (audit who has access). Inverse oflist_ad_accounts.
string
required
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.string
required
string[]
Filter by status. Enum:
ACTIVE PAUSED DRAFT ARCHIVED REMOVED.integer
default:"100"
get_campaign_group
Fetch one campaign group: name, status, runSchedule, totalBudget/dailyBudget, servingStatuses, objective.string
required
string
required
list_campaigns
Search/list campaigns within an account: status, type, objectiveType, costType, budgets, bid (unitCost), runSchedule, targetingCriteria, servingStatuses.string
required
string[]
Filter by status. Enum:
ACTIVE PAUSED DRAFT ARCHIVED COMPLETED
REMOVED.string
Scope to one campaign group id.
integer
default:"100"
get_campaign
Fetch one campaign with full targetingCriteria, budgets, bid (unitCost), runSchedule, objectiveType, optimizationTargetType, servingStatuses, versionTag.string
required
string
required
list_creatives
Search/list creatives (ads) under an account: reference, status (intendedStatus), variant content.string
required
integer
default:"100"
get_creative
Fetch one creative by its URN (status, content reference, variant/intendedStatus).string
required
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.string
required
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).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).string
default:"ALL"
Time bucketing:
ALL (one total) | DAILY | MONTHLY | YEARLY.string
required
Report window start (YYYY-MM-DD).
string
required
Report window end (YYYY-MM-DD).
string[]
Ad account ids (most common facet; see Analytics facet).
string[]
Campaign ids (alternative facet).
string[]
Campaign group ids (alternative facet).
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.string[]
required
1–3 dimensions from the same enum as
get_ad_analytics.string
default:"ALL"
string
required
string
required
string[]
string[]
string[]
string
get_ad_demographics
Professional-demographic breakdown: analytics pivoted by aMEMBER_* 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. Time granularity is fixed to ALL.
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.string
required
string
required
string[]
string[]
string[]
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. Takes a singleadAccountId instead of the analytics facets.
string
required
string[]
default:"[\"CAMPAIGN\"]"
1–3 from
ACCOUNT CAMPAIGN_GROUP CAMPAIGN.string
required
string
required
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.string
required
string
required
e.g.
CPM, CPC, CPV.string
required
e.g.
SPONSORED_UPDATES, TEXT_AD, DYNAMIC.string
Optional bid match type.
string
Advanced: a pre-built RestLi targetingCriteria fragment (passed verbatim).
{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.string
required
e.g.
SPONSORED_UPDATES.string
required
A pre-built RestLi targeting fragment (
target.includedTargetingFacets:...).integer
required
Forecast window start (epoch ms).
integer
required
Forecast window end (epoch ms).
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. Not available yet.string
required
get_organization_follower_statistics
Follower demographics (lifetime, by 7 facets). The total count is not here. Useget_organization_follower_count for that. Not available yet.
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 useget_ad_analytics. Not available yet.
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. Returnstotal: 0 when the audience is below LinkedIn’s privacy floor.
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 buildtargetingCriteria 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.string
required
The facet name (e.g.
seniorities) or a full adTargetingFacet URN.string
Optional locale, e.g.
en_US.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.string
required
The facet name (e.g.
locations, skills) or a full adTargetingFacet URN.string
required
Free-text search, e.g.
Copenhagen or machine learning.string
Optional locale, e.g.
en_US.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.string
required
The facet name or a full adTargetingFacet URN.
string[]
required
Seed entity URNs (at least one).
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.
string[]
required
Entity URNs to resolve (at least one).
Conversions & Insight Tag
list_conversion_rules
List all conversion rules for an ad account (includingconversionMethod=CONVERSIONS_API
and enabled flags). The value field is {currencyCode, amount} in major units.
string
required
integer
default:"100"
get_conversion_rule
Fetch one conversion rule by id: type, attribution windows, value, urlMatchRuleExpression, associated campaigns, imagePixelTag.string
required
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.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.string
required
integer
default:"100"
list_campaign_conversions
List all conversion-rule associations for one or more campaigns (which campaigns attribute which conversions).string[]
required
Campaign ids to look up (at least one).
integer
default:"100"
Lead form definitions
These tools expose form structure only: questions, hidden fields,
consent text, post-submission CTA. Submitted leads are not available through
this connector.
list_lead_forms
List lead gen form definitions for an ad account.string
required
integer
default:"100"
get_lead_form
Fetch one lead gen form definition by id (full questions, hidden fields, consents, post-submission CTA).string
required
Numeric form id (digits only).
Organization pages & organic content (read)
Every tool in this section is not available yet, like the three
get_organization_*_statistics reads under Reporting & analytics. See
Tools that are not available yet.list_administered_organizations
List the organizations the connected member administers (org URN, role, state). The entry point for organization selection. Filter toADMINISTRATOR + APPROVED
for usable organizations. Not available yet.
string
default:"ADMINISTRATOR"
string
default:"APPROVED"
integer
default:"100"
get_organization
Fetch full admin-visible org profile by id (name, website, industries, locations, logo, staffCountRange). Not available yet.string
required
find_organization_by_vanity_name
Resolve an organization by its vanityName (URL slug) to its URN and profile. Not available yet.string
required
The URL slug, e.g.
example-company.get_organization_follower_count
Total first-degree follower count for an organization (the headline number). Not available yet.string
required
list_organization_posts
List organic posts authored by an organization (the page’s content feed), newest first. Not available yet.string
required
string
default:"LAST_MODIFIED"
LAST_MODIFIED or CREATED.integer
default:"100"
get_post
Fetch a single organic post by its share/ugcPost URN (commentary, author, visibility, content). Not available yet.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). Not available yet.string
required
The post/share/ugcPost URN.
list_post_comments
List comments on a post (or nested replies on a comment). Not available yet.string
required
The post/share/ugcPost URN.
integer
default:"100"
list_post_reactions
List reactions on a post or comment withreactionType
(LIKE / PRAISE / EMPATHY / INTEREST / APPRECIATION / ENTERTAINMENT). Not available yet.
string
required
The post/share/ugcPost URN.
integer
default:"100"
Member profile
Both member-profile reads are not available yet. Use
list_ad_accounts as a
connectivity check.get_my_profile
The connected member’s own profile: id (person URN), name, headline, vanityName (public-URL slug), photo. Not available yet. 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. Not available yet. No arguments.integer
Number of first-degree connections.
object
LinkedIn’s paging object from the connections finder.
Advanced: query (escape hatch)
query
Advanced read of a LinkedIn REST or v2 resource, for reads that no dedicated tool covers. It is read-only: it cannot create or change anything.string
required
A bare path under
/rest or /v2 without a query string, e.g.
/rest/adCampaigns/123. Pass parameters in params.object
Read params as a string/number record. Percent-encode URN values. Supported
keys:
q, fields, projection, start, count, pageSize, pageToken,
search, pivot, pivots, timeGranularity, dateRange, timeIntervals,
facet, query, urns, entities, ids, owner, account,
organization, organizationalEntity, sort, sortBy, sortOrder,
viewContext, edgeType. count and pageSize are at most 1000.query makes one request and returns LinkedIn’s response as-is; it does not
follow pagination. The first path segment after /rest or /v2 must be one of
these 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.
Reads of Company Page, post and member-profile resources (organizations,
organizationAcls, organizationPageStatistics,
organizationalEntityFollowerStatistics,
organizationalEntityShareStatistics, networkSizes, posts,
socialMetadata, socialActions, reactions, me, connections) are not
available yet, like the matching tools.
Ad-management write tools (11)
All 11 tools go through the guardrail described above. See Write tools & 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" or "ARCHIVED"
requires confirm: true; DRAFT and PAUSED create the group immediately,
including any total budget you pass.
string
required
string
required
1–100 characters.
integer
required
runSchedule.start (epoch ms).
integer
runSchedule.end (epoch ms; required if totalBudget is set).
string
default:"DRAFT"
DRAFT | ACTIVE | PAUSED | ARCHIVED. ACTIVE and ARCHIVED require confirm: true.string
Total budget as a decimal string (major units).
string
ISO 4217 code; required when a budget amount is provided.
boolean
Set
true to apply when confirmation is required.update_campaign_group
Edit a campaign group’s name, end date (endMs) or total budget. The start date
cannot be changed. A budget change requires confirm: true; name and end date
alone apply immediately. Pass at least one field.
string
required
string
required
string
string
string
integer
New runSchedule.end (epoch ms).
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 requireconfirm: true.
string
required
string
required
string
required
DRAFT | ACTIVE | PAUSED | ARCHIVED.boolean
Campaigns
create_campaign
Create a campaign under a group. Created DRAFT by default (no spend).status: "ACTIVE" or "ARCHIVED" requires confirm: true; DRAFT and PAUSED
create the campaign immediately. Money is major units. At least one of
dailyBudgetAmount and totalBudgetAmount is required. Without country and
language, the campaign locale is US / en.
string
required
string
required
Parent campaign group id.
string
required
string
required
Campaign type, e.g.
SPONSORED_UPDATES, TEXT_AD, DYNAMIC.string
required
Bidding cost type:
CPM | CPC | CPV.string
default:"us"
locale.country (ISO 3166-1 alpha-2).
string
default:"en"
locale.language (ISO 639-1).
string
Daily budget (decimal string). Provide daily, total, or both.
string
Total budget (decimal string). Provide daily, total, or both.
string
Required when a budget amount is provided.
string
Bid (unitCost) amount (decimal string).
string
required
targetingCriteria as a JSON object string. Build URNs with the targeting read tools.
string
e.g.
WEBSITE_VISITS, LEAD_GENERATION, BRAND_AWARENESS.string
Required by LinkedIn on create; set the value appropriate to your account/region.
string
default:"DRAFT"
DRAFT | ACTIVE | PAUSED | ARCHIVED. ACTIVE and ARCHIVED require confirm: true.boolean
update_campaign
Edit a campaign’s name, budgets, bid (unitCost), or targetingCriteria. A budget or bid change always requiresconfirm: true. Name and targeting changes
alone apply immediately, also on a live campaign. Pass at least one field.
string
required
string
required
string
string
string
string
string
string
New targetingCriteria as a JSON object string.
boolean
set_campaign_status
Set a campaign to DRAFT / ACTIVE / PAUSED / ARCHIVED. PAUSED stops spend immediately (no confirmation needed). ACTIVE and ARCHIVED requireconfirm: true.
string
required
string
required
string
required
DRAFT | ACTIVE | PAUSED | ARCHIVED.boolean
Creatives
set_creative_status
Set a creative (ad) to DRAFT / ACTIVE / PAUSED / ARCHIVED. PAUSED is immediate. ACTIVE (starts serving and spending) and ARCHIVED requireconfirm: true.
string
required
string
required
urn:li:sponsoredCreative:123.string
required
DRAFT | ACTIVE | PAUSED | ARCHIVED.boolean
Conversion tracking
create_conversion_rule
Create a conversion rule for an account (measurement setup; does not spend). Applies withoutconfirm: true (measurement only, no spend or publish). On
success the write result’s id holds the new rule’s id.
string
required
string
required
string
required
e.g.
LEAD, PURCHASE, SIGN_UP, ADD_TO_CART, DOWNLOAD, KEY_PAGE_VIEW.string
default:"LAST_TOUCH_BY_CAMPAIGN"
LAST_TOUCH_BY_CAMPAIGN | LAST_TOUCH_BY_CONVERSION.integer
default:"30"
Post-click attribution window (days).
integer
default:"7"
View-through attribution window (days).
string
Optional fixed conversion value (decimal string, major units).
string
Required when
valueAmount is provided.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 withoutconfirm: true,
also when it disables a rule (enabled: false). Pass at least one field.
string
required
string
required
string
boolean
string
string
boolean
associate_campaign_conversion
Attach a conversion rule to a campaign so that campaign attributes that conversion. Use theurn:lla conversion URN form (e.g.
urn:lla:llaPartnerConversion:123). Applies without confirm: true.
string
required
string
required
urn:lla:llaPartnerConversion:123 (note the urn:lla namespace).boolean
remove_campaign_conversion
Detach a conversion rule from a campaign (stops conversion attribution for that campaign). Destructive to reporting and optimization. Requiresconfirm: true.
string
required
string
required
urn:lla:llaPartnerConversion:123.boolean
Organic-social write tools (8): not available yet
They follow the same guardrail: new posts default to DRAFT lifecycle (not publicly visible), and publishing public content (a published post, a comment, or a reaction), editing a post’s text and deleting a post or comment requireconfirm: true. Removing a reaction applies without confirmation.
Posts
create_organization_post
Publish an organic post authored by an organization (Company Page). Defaults toDRAFT lifecycle (not publicly visible); lifecycleState: "PUBLISHED" publishes
public content under the brand and requires confirm: true.
string
required
string
required
Post text (supports #hashtags).
string
default:"PUBLIC"
PUBLIC | CONNECTIONS | LOGGED_IN.string
default:"DRAFT"
DRAFT | PUBLISHED. PUBLISHED requires confirm: true.boolean
create_member_post
Publish an organic post authored by the connected member (person). Defaults toDRAFT; PUBLISHED posts public content under the member’s name and requires
confirm: true. The author is always the connected member.
string
required
Post text.
string
default:"PUBLIC"
PUBLIC | CONNECTIONS | LOGGED_IN.string
default:"DRAFT"
DRAFT | PUBLISHED. PUBLISHED requires confirm: true.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. Setting only
lifecycleState: "DRAFT" applies without confirmation.
string
required
urn:li:share:123 or urn:li:ugcPost:123.string
string
DRAFT | PUBLISHED.boolean
delete_post
Permanently delete a post. Irreversible removal of (possibly public) content. Requiresconfirm: true.
string
required
urn:li:share:123 or urn:li:ugcPost:123.boolean
Comments & reactions
create_comment
Post a public comment on a post, as the organization (passorganizationId) or
the connected member. Public content under the brand or member identity. Requires
confirm: true.
string
required
The post/share/ugcPost URN to comment on.
string
required
The comment text.
string
Comment AS this organization; omit to comment as the connected member.
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. Requiresconfirm: true.
string
required
The post/share/ugcPost URN the comment is on.
string
required
The comment id (numeric id or full comment URN).
string
Acting AS this organization; omit to act as the connected member.
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. Requiresconfirm: true.
string
required
The post/share/ugcPost URN to react to.
string
default:"LIKE"
LIKE | PRAISE | EMPATHY | INTEREST | APPRECIATION | ENTERTAINMENT.string
React AS this organization; omit to react as the connected member.
boolean
delete_reaction
Remove a reaction previously made (as the organization or the connected member) from a post. Low-stakes cleanup. Applies withoutconfirm: true.
string
required
The post/share/ugcPost URN the reaction is on.
string
The reaction’s actor was this organization; omit for the connected member.
boolean
Code examples
Request bodies show theparams of a tools/call. The tool name must carry the
linkedin-ads__ prefix; a bare name returns Unknown tool..
LinkedIn errors surface as
isError: true with the text
Tool invocation failed.. The upstream HTTP status is not exposed. When the
access has expired or been revoked, the text instead ends in
reconnect required: reconnect LinkedIn Ads in the portal, or call the
connect_account tool on this endpoint to get a fresh connect link. See
Errors & limits.