linkedin_create_ commentComment on a post, or reply to a comment.
Post as yourself or as your Company Page, reply to comments, see which Page posts earned the most engagement, pull this week's Lead Gen Form leads, and break down Page followers by industry.
PopMCPLinkedIn
Every posting, social, Page analytics, lead, event and advertising tool on the connection, plus the webhooks and checks PopMCP can watch for you.
146 tools in the full catalog: 91 read and 55 write. 38 load by default, and the rest are found with tool search.
linkedin_create_ commentComment on a post, or reply to a comment.
linkedin_create_ reactionReact to (like) a post or comment.
linkedin_delete_ commentDelete a comment from a post.
linkedin_delete_ reactionRemove a reaction (unlike) that one actor left on a post or comment.
linkedin_find_ commentsRead the comments on a post (or the replies under a comment).
linkedin_find_ reactionsList the reactions on a post or comment, with who reacted and which reaction type.
linkedin_get_ social_ actionsLive like/comment counts for a post, matching what the LinkedIn feed shows.
linkedin_find_ my_ organizationsSTART HERE for anything Company Page related.
linkedin_find_ organization_ by_ vanity_ nameLook up an organization by the slug in its public URL (linkedin.com/company/<vanityName>).
linkedin_get_ organizationFull detail for one LinkedIn Page: localizedName, vanityName, description, website, logoV2, staffCountRange, industries, locations, primaryOrganizationType.
linkedin_get_ organization_ follower_ countTotal follower count for one Page.
linkedin_create_ campaignCreate a campaign.
linkedin_create_ campaign_ groupCreate a campaign group (the container for campaigns).
linkedin_find_ campaign_ groupsList campaign groups in an ad account.
linkedin_find_ campaignsList campaigns in an ad account.
linkedin_get_ campaignFull detail for one campaign, including its targetingCriteria.
linkedin_update_ campaignChange a campaign — status, budget, schedule or targeting.
linkedin_find_ ad_ accountsList the ad accounts the signed-in member can reach — start here for anything advertising.
linkedin_initialize_ document_ uploadStep 1 of 2 for a document (PDF carousel) post.
linkedin_initialize_ image_ uploadStep 1 of 2 for an image post.
linkedin_get_ page_ follower_ statisticsFollower analytics for a Page.
linkedin_get_ page_ share_ statisticsOrganic engagement for a Page's content: impressions, unique impressions, clicks, likes, comments, shares and engagement rate.
linkedin_get_ page_ statisticsPage VIEW analytics: views and unique visitors for the Page overall and per tab (careers, jobs, life, people, about), optionally broken down by demographic or over time.
linkedin_create_ postPublish a post to a LinkedIn feed — the main content tool.
linkedin_delete_ postPermanently delete a post.
linkedin_find_ lead_ form_ responsesRetrieve the LEADS captured by your Lead Gen Forms — the tool for syncing LinkedIn leads into a CRM.
linkedin_find_ lead_ formsList Lead Gen Forms owned by an ad account or an organization.
linkedin_find_ posts_ by_ authorList every post published by one member or Page, newest first — the tool for 'show me our recent LinkedIn posts'.
linkedin_get_ audience_ countEstimate how many LinkedIn members match a targeting spec — check this BEFORE creating a campaign, and before targeting an organic post (which needs an audience above 300).
linkedin_get_ postFetch one post by URN.
linkedin_search_ targeting_ entitiesTypeahead search within a targeting facet — the way to turn 'United States' or 'software engineer' into the URN a campaign needs.
linkedin_update_ postEdit a published post.
linkedin_create_ creativeCreate a creative (an ad) inside a campaign.
linkedin_find_ creativesList creatives (the ads themselves) in an ad account, optionally filtered to specific campaigns.
linkedin_update_ creativeChange a creative — usually its intendedStatus (DRAFT to ACTIVE, or PAUSED).
linkedin_get_ ad_ analyticsAd performance report broken down by ONE pivot (campaign, creative, account, member demographics …).
linkedin_get_ ad_ statisticsAd performance report broken down by SEVERAL pivots at once (e.g. account + campaign group + campaign in one response).
linkedin_get_ current_ memberWho am I? Returns the signed-in member's OpenID Connect profile: `sub` (the person id — build the author URN as urn:li:person:{sub}), name, given_name, family_name, picture, email, locale.
linkedin_batch_ get_ commentsFetch several comments on a post by their numeric ids.
linkedin_batch_ get_ social_ metadataComment and reaction summaries for several posts in one call.
linkedin_get_ commentFetch one comment by its numeric id under a post.
linkedin_get_ reactionCheck whether one actor has reacted to one entity, and how.
linkedin_get_ social_ metadataComment/reaction summary for a post, plus whether commenting is enabled and the comment moderation setting.
linkedin_search_ people_ typeaheadSearch the members who follow one of your Pages, to @mention them in a post or comment.
linkedin_update_ commentEdit a comment's text.
linkedin_update_ social_ metadataTurn the comments section on or off for a post, or restrict who may comment.
linkedin_batch_ get_ inmail_ contentsFetch several Message Ad (sponsored InMail) creative bodies in one call.
linkedin_create_ conversation_ adCreate a conversation ad (a branching Message Ad).
linkedin_create_ inmail_ contentCreate a Message Ad (sponsored InMail) creative body.
linkedin_create_ sponsored_ messageAdd a message node (with its reply buttons) to a conversation ad.
linkedin_delete_ sponsored_ messageRemove a message node from a conversation ad's reply tree.
linkedin_find_ conversation_ adsFetch conversation ad trees by URN, including their message nodes and reply branches.
linkedin_find_ sponsored_ messagesList the message nodes inside a conversation ad.
linkedin_get_ conversation_ adOne conversation ad, including its message tree.
linkedin_get_ inmail_ contentOne Message Ad (sponsored InMail) creative body.
linkedin_get_ sponsored_ messageOne message node inside a conversation ad, with its body copy and reply buttons.
linkedin_send_ test_ inmailSend yourself a test copy of a Message Ad before launching it.
linkedin_update_ conversation_ adChange a conversation ad.
linkedin_update_ inmail_ contentChange a Message Ad creative.
linkedin_update_ sponsored_ messageChange one message node in a conversation ad.
linkedin_add_ dmp_ segment_ companiesAdd companies to a COMPANY matched audience, matched by name, website or LinkedIn organization URN.
linkedin_add_ dmp_ segment_ usersAdd people to a USER matched audience.
linkedin_batch_ get_ organization_ brandsFetch several Showcase Pages in one call by their numeric organizationBrand ids.
linkedin_batch_ get_ organizationsFetch several organizations in one call.
linkedin_create_ dmp_ segmentCreate a matched audience to upload contacts or companies into.
linkedin_create_ dmp_ segment_ destinationShare a matched audience with another ad account.
linkedin_create_ dmp_ segment_ list_ uploadMark the start/end of a bulk list upload into a matched audience, so LinkedIn can report on match rates.
linkedin_create_ predictive_ audienceCreate a Predictive Audience from a seed matched audience and a business objective.
linkedin_find_ ad_ segmentsList the ad segments (retargeting audiences built from website or engagement activity) on an ad account.
linkedin_find_ child_ organizationsList the child organizations (subsidiaries / showcase parents) of one organization.
linkedin_find_ dmp_ segment_ destinationsList the destinations a matched audience has been shared to.
linkedin_find_ dmp_ segmentsList matched audiences (DMP segments) on an ad account.
linkedin_find_ organization_ administratorsList the members who have a role on one organization.
linkedin_find_ organization_ brand_ by_ vanity_ nameLook up a Showcase Page by its vanity slug.
linkedin_find_ organization_ by_ email_ domainFind organizations whose registered email domain matches.
linkedin_get_ audience_ insightsAudience Insights: the demographic and firmographic makeup of a targeting spec or matched audience.
linkedin_get_ dmp_ segmentDetail and match status for one matched audience.
linkedin_get_ organization_ brandDetail for one Showcase Page (organizationBrand).
linkedin_get_ predictive_ audienceStatus and size of one Predictive Audience.
linkedin_lookup_ organization_ brandsDecorated batch lookup of Showcase Pages by URN.
linkedin_lookup_ organizationsDecorated batch lookup of organizations by URN — returns the same records as batch_get but keyed by full URN.
linkedin_update_ dmp_ segmentRename or re-describe a matched audience.
linkedin_batch_ get_ campaign_ groupsFetch several campaign groups in one call by their numeric ids.
linkedin_batch_ get_ campaignsFetch several campaigns in one call by their numeric ids, instead of one request each.
linkedin_delete_ campaignDelete a campaign.
linkedin_delete_ campaign_ groupDelete a campaign group.
linkedin_get_ campaign_ groupFull detail for one campaign group: status, budget, run schedule and the campaigns it contains.
linkedin_update_ campaign_ groupChange a campaign group — most often its `status` (DRAFT to ACTIVE, or PAUSED).
linkedin_batch_ get_ documentsFetch several uploaded documents in one call by their document URNs.
linkedin_batch_ get_ imagesFetch several uploaded images in one call by their image URNs, including processing status and downloadUrl.
linkedin_batch_ get_ videosFetch several uploaded videos in one call by their video URNs, including processing status and duration.
linkedin_create_ ad_ accountCreate a sponsored ad account.
linkedin_create_ ad_ account_ userGrant a member a role on an ad account, so they can view or manage its campaigns.
linkedin_delete_ ad_ account_ userRevoke a member's access to an ad account.
linkedin_finalize_ video_ uploadStep 3 of 3 for a video: commit the uploaded parts.
linkedin_find_ ad_ account_ usersList everyone with access to the given ad accounts, and their roles.
linkedin_find_ my_ ad_ account_ rolesWhich ad accounts does the signed-in member have a role on, and which role? The advertising counterpart to linkedin_find_my_organizations.
linkedin_get_ ad_ accountDetail for one ad account: name, currency, status, type, reference (the owning organization) and servingStatuses.
linkedin_get_ ad_ account_ userThe role one member holds on one ad account.
linkedin_get_ documentStatus and metadata for one uploaded document.
linkedin_get_ imageStatus and metadata for one uploaded image, including downloadUrl.
linkedin_get_ videoStatus and metadata for one uploaded video.
linkedin_initialize_ video_ uploadStep 1 of 3 for a video post.
linkedin_update_ ad_ accountChange an ad account's name, status or notification settings.
linkedin_update_ ad_ account_ userChange a member's role on an ad account.
linkedin_get_ my_ follower_ countFollower count for the signed-in member's own profile (creator analytics).
linkedin_get_ my_ follower_ count_ historyThe signed-in member's follower count over a date range.
linkedin_get_ my_ post_ analyticsAnalytics across the signed-in member's own posts (impressions, reactions, comments, reshares) over a date range.
linkedin_get_ my_ video_ analyticsVideo analytics for one of the signed-in member's video posts.
linkedin_get_ post_ analytics_ for_ entityAnalytics for ONE of the signed-in member's posts.
linkedin_get_ video_ analyticsVideo performance for one video or post: views, time watched, viewers.
linkedin_associate_ campaign_ conversionAttach a conversion rule to a campaign so its conversions are attributed there.
linkedin_create_ conversionCreate a conversion rule to send offline/CRM conversions against.
linkedin_delete_ campaign_ conversionDetach a conversion rule from a campaign so its conversions are no longer attributed there.
linkedin_delete_ conversionDelete a conversion rule.
linkedin_find_ conversionsList conversion rules on an ad account, with their type, attribution window and enabled state.
linkedin_get_ conversionDetail for one conversion rule: its type, attribution windows, enabled state and the campaigns it is attached to.
linkedin_send_ conversion_ eventsConversions API: send offline or server-side conversion events back to LinkedIn for attribution.
linkedin_update_ conversionChange a conversion rule (enable/disable, rename, adjust the attribution window).
linkedin_batch_ get_ postsFetch several posts in one call.
linkedin_create_ lead_ notificationRegister a webhook that fires whenever a new lead is captured — the push alternative to polling find_lead_form_responses.
linkedin_delete_ lead_ notificationRemove a lead webhook subscription so LinkedIn stops pushing new leads to that URL.
linkedin_find_ lead_ notificationsList the lead webhook subscriptions registered for an owner.
linkedin_find_ posts_ by_ ad_ accountList Direct Sponsored Content (dark posts) belonging to one ad account.
linkedin_find_ similar_ targeting_ entitiesGiven some targeting entities, suggest similar ones (e.g. companies like these) to widen an audience.
linkedin_find_ targeting_ entitiesList the allowed values for one targeting facet — e.g. every seniority or industry, with the URN you put into a campaign's targetingCriteria.
linkedin_get_ ad_ supply_ forecastForecast available impressions/spend for a targeting spec and budget over a date window.
linkedin_get_ lead_ formDetail for one Lead Gen Form, including its questions and their ids.
linkedin_get_ lead_ form_ responseOne captured lead, including the answers the member submitted.
linkedin_list_ targeting_ facetsList every targeting dimension LinkedIn supports (locations, industries, seniorities, jobFunctions, titles, skills, interests, memberBehaviors, staffCountRanges, degrees, employers, …) with its facet URN.
linkedin_resolve_ targeting_ entitiesResolve targeting URNs back to human-readable names — use it to explain an existing campaign's targeting.
linkedin_batch_ get_ creativesFetch several creatives in one call by their sponsoredCreative URNs, instead of one request each.
linkedin_create_ eventCreate a LinkedIn Event on behalf of an organization.
linkedin_delete_ creativeDelete a creative.
linkedin_delete_ eventDelete a LinkedIn Event.
linkedin_find_ events_ by_ organizerList the Events organized by one organization, with filters for past/upcoming and entry criteria.
linkedin_find_ lead_ gen_ eventsList an organization's Events that have a Lead Gen Form attached — pair with linkedin_find_lead_form_responses to sync event registrations.
linkedin_get_ creativeFull detail for one creative (ad): its campaign, intendedStatus, review status and the post it promotes.
linkedin_get_ eventFull detail for one LinkedIn Event: name, description, schedule, mode, visibility and registration settings.
linkedin_update_ eventChange an Event (name, description, schedule, visibility) or cancel it.
linkedin_get_ ad_ budget_ pricingSuggested bid range and daily budget floor for a targeting spec — use it to pick a sensible bid before creating a campaign.
linkedin_get_ attributed_ revenueRevenue attributed to LinkedIn ads (Revenue Attribution Report).
linkedin_create_ event_ subscriptionSubscribe to push notifications for an organization's social activity.
linkedin_delete_ event_ subscriptionUnsubscribe from an organization's social activity notifications.
linkedin_find_ event_ subscriptionsList this app's webhook subscriptions for the signed-in member (e.g. notifications when someone comments on your Page).
linkedin_get_ member_ profileThe signed-in member's LinkedIn profile (legacy /v2/me): id, localizedFirstName, localizedLastName, headline, vanityName, profilePicture.
Authorize once, then an endpoint your client signs into. Nothing to deploy, and nothing to install on the LinkedIn side.
Create an app at linkedin.com/developers/apps, add PopMCP's callback URL to its Auth tab's authorized redirect URLs, paste the Client ID and Primary Client Secret, and list the API products the app holds (leave blank for Sign In and Share).
86abc1def2ghij••••••••••••3f7ashare, community, advertisingcreate_post, delete_post, create_comment and update_campaign go live the moment the AI calls them. New connections are read-only until an owner allows writes, and only clients you tick for LinkedIn on the PopMCP consent screen reach it.
Drop the PopMCP URL into Claude, ChatGPT, Claude Code, Codex or any other supported client. It signs in through PopMCP with OAuth, so your LinkedIn credential never leaves the server.
app.popmcp.com/mcpAsk for something harmless before the agent changes anything. Writes run as soon as it calls them, so confirm it reads the right account first.
Post this launch announcement on our Company Page and mention our partner's Page
linkedin_find_my_organizationsok
Then just ask for the work
“Post this launch announcement on our Company Page and mention our partner's Page”
“Which of our Page posts this quarter got the most comments, and what did people say?”
“How many followers did our Page gain each day last month, and which industries do our followers work in?”
“Pull every lead from our webinar Lead Gen Form this week so I can add them to the CRM”
One hosted endpoint, registered once per client. The same tools and the same permissions, whichever window the request comes from.
Add the PopMCP URL under Customize → Connectors and the tools appear in every chat.
The same endpoint, registered in the browser. Nothing to install on the machine you are working from.
Register PopMCP as a custom connector, then let ChatGPT read and update the account.
Wire the endpoint into Codex or the Codex CLI when a task needs live business context, not a fixture.
Register the remote MCP server in OpenCode's config for terminal-first and scripted agent runs.
Add PopMCP as an MCP server in Z.ai's desktop app and work the account from the same window.
FAQ
What teams ask before putting LinkedIn behind an AI client.
It depends on the job. Sign In with LinkedIn and Share on LinkedIn are self-serve and cover your profile and posting as yourself. Company Page posts, comments, reactions and Page analytics need the Community Management API. Campaigns and ad reporting need the Advertising API, and Lead Gen Form leads need Lead Sync. Conversions, Events and Matched Audiences are separate products too. LinkedIn grants each one to your app after review, and the products field tells PopMCP which ones you hold.
Because PopMCP asked for a permission from a product your app does not hold. LinkedIn fails the whole sign-in rather than granting a subset, and the products you list on the connect form decide which permissions are requested. Open your app at linkedin.com/developers/apps, check the Products tab for what is actually enabled, and reconnect listing only those, for example share, community. Leaving the field blank requests just the self-serve Sign In and Share permissions.
Yes, once your app has the Community Management API and you hold a role on the Page. find_my_organizations lists your Pages and roles; posting as a Page needs ADMINISTRATOR or DIRECT_SPONSORED_CONTENT_POSTER. create_post takes the Page as author, and a text post needs only that and the commentary. Images, video and documents need their bytes sent to LinkedIn's upload URL outside the connector, so without that the AI posts text or an article link.
LinkedIn access tokens last 60 days. Refresh tokens only go to apps LinkedIn approved for programmatic refresh, and those last 365 days from when you authorized, a fixed date that use does not extend, so you reconnect within a year either way. Without one, the 60-day access token is the credential and you reconnect when it runs out. The connection profile tells the AI how many days are left, so it can warn you before the deadline.
38 of the 146 operations load by default: posting, comments and reactions, Page and follower analytics, lead forms, and the core campaign, creative and ad reporting tools. The rest of the 17 modules, including conversation ads, matched audiences, conversions, events and webhook subscriptions, stay searchable. 91 operations read and 55 write. A tool from a product your app was not approved for reaches LinkedIn but comes back with a permission error.
Seventeen. Webhooks cover a comment or a reaction on a Page post and a lead captured from a sponsored ad. Polling picks up new Lead Gen Form responses, including organic Page forms. Change detection spots a new Page post, a new campaign, a campaign status change, an ad review result, a new event, a new lead form, a Page admin change, a matched audience ready and a new conversion. Thresholds cover follower milestones, engagement drops, ad spend and cost per result.
No. PopMCP hosts it and gives you a Streamable HTTP MCP URL. There is nothing to deploy, no callback URL to register, and no infrastructure to keep running or patch.
Any client that supports a remote Streamable HTTP MCP server: Claude Desktop, Claude Web, Claude Code, ChatGPT custom connectors, Codex and the Codex CLI, OpenCode and Z.ai's ZCode, as well as editors such as Cursor, Windsurf and Zed. Your client signs in to PopMCP with OAuth; the provider credential never leaves the server.
Connect LinkedIn in PopMCP first, then run claude mcp add --transport http popmcp https://app.popmcp.com/mcp in a terminal. Inside Claude Code, run /mcp and sign in to PopMCP in the browser window it opens, ticking LinkedIn on the consent screen. The LinkedIn tools are then available in that session, and no LinkedIn credential is stored on your machine.
Loading 146 tool definitions into every conversation burns context before the work starts. PopMCP loads a curated 38-tool set covering the everyday workflows and keeps the rest searchable, so your AI pulls a specialist tool only when a task needs it. Every tool stays searchable, and on Scale the owner can load the full catalog for a teammate's connection.
A tool is something your AI calls, and there are 146 here. A trigger is something PopMCP watches for you: 17 LinkedIn events that can start work on the PopMCP side. Triggers never enter your AI client's context, and none of them ask you to paste a callback URL into LinkedIn.
Launch a hosted MCP endpoint for LinkedIn, keep tool access under control, and start testing real workflow prompts right away.