MARKETING · MESSAGING
The connected member’s profile, and posts shared on their behalf.
Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.
Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.
Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
linkedin_create_postWRITEDESTRUCTIVE -- publish a post to LinkedIn as the connected MEMBER (a person, not a company page). The post is visible the moment it is created; it appears in followers' feeds and generates notifications, and deleting it afterwards does not retract those. Attach media by uploading it first with 'Upload an image' or 'Upload a document' and passing the URN returned -- this connector ships no video upload, so a video cannot be attached. One post per call: LinkedIn's API Terms of Use prohibit using the API to automate posting, so Agentic Fabriq ships no scheduling, queueing or bulk primitive, and this action is intended to be run in response to a person's instruction. KEEP THE POST URN IT RETURNS: LinkedIn requires the closed `r_member_social` permission to list a member's posts, so a URN that is not kept cannot be looked up again, and every later comment, reaction, edit, delete and analytics call needs it.
linkedin_create_reshareWRITEDESTRUCTIVE -- reshare an existing LinkedIn post as the connected MEMBER, with the member's own commentary on top. This is the amplification action: the original author is notified and the reshare is public immediately. It is a separate action from 'Publish a post' because it puts the customer's name behind SOMEBODY ELSE's words, which is a different decision from publishing their own.
linkedin_delete_postWRITEDESTRUCTIVE -- permanently delete a post the connected member published. LinkedIn publishes no undelete and no recycle bin, and deletion does NOT retract what has already happened: reshares, screenshots, notifications and anything a reader saved all survive. The reversible alternative is 'Edit one of the member's posts', which corrects the words in place and is what should be used for a typo. Requires the confirmation token `delete-post-permanently` so the loss cannot be agreed to by emitting a bare true.
linkedin_get_meREADReturn the LinkedIn member this connection authenticates as. The fields are exactly the OpenID Connect claims: `sub` (the member id), `name`, `given_name`, `family_name`, `picture` (profile photo URL), `locale`, and `email` with `email_verified` when LinkedIn chooses to include them -- LinkedIn documents the email pair as OPTIONAL and omits it from some responses. THERE IS NO HEADLINE, no vanity name and no public profile URL here: LinkedIn's userinfo endpoint does not carry them, and asking this action for one returns nothing rather than an error. A headline comes only from 'Read the connected member's profile', which needs the `r_basicprofile` permission and therefore Community Management API approval. START HERE anyway: `sub` is what becomes `urn:li:person:{id}`, and nearly every other LinkedIn action needs a URN rather than a name or an email address. Uses LinkedIn's OpenID Connect userinfo endpoint, which is granted by the instant self-serve Sign In with LinkedIn product, so this works on a brand-new LinkedIn app before any review.
linkedin_get_postREADRead one post the connected member authored, by its URN: commentary, visibility, lifecycle state, creation time, whether the author has edited it and any attached content. Use it after publishing to confirm the post actually went live -- LinkedIn's lifecycle state can be PUBLISH_FAILED, which is silent otherwise. THE POST URN COMES FROM 'Publish a post as the member', which returns it: LinkedIn requires the closed `r_member_social` permission to LIST a person's posts, so there is no 'show me my recent posts' action and no way to recover a URN nobody kept. A LinkedIn web URL is not a URN and is refused with an explanation of where to get one.
linkedin_update_postWRITEEdit the commentary of a post the connected member already published, or publish one that is still a draft. LinkedIn shows an 'edited' marker to everyone who sees it, and editing does not un-send the notifications the original already generated -- so this corrects the record, it does not undo a mistake. Not marked destructive: the post already exists and this changes its words rather than its existence. LinkedIn also permits editing `contentCallToActionLabel`, `contentLandingPage` and `adContext` here; all three are withheld -- the first two are sponsored-content controls and `adContext` re-points the post at an ad account, which belongs to Agentic Fabriq's separate LinkedIn advertising connection.
linkedin_upload_documentWRITEUpload a PDF, Word or PowerPoint document owned by the connected member and return its URN, for attaching to a post as a LinkedIn carousel. LinkedIn's limits are 100 MB and 300 pages. Uploading publishes nothing by itself. The filename matters: LinkedIn uses its extension to decide the document type.
linkedin_upload_imageWRITEUpload an image owned by the connected MEMBER and return its image URN, ready to pass as `media_urn` to 'Publish a post as the member'. Uploading publishes nothing on its own -- the image sits in the member's asset store until a post carries it. JPG, PNG and GIF; LinkedIn's documented limits are fewer than 36,152,320 pixels and at most 250 GIF frames. The bytes are passed base64-encoded because a tool call is JSON, and Agentic Fabriq checks the DECODED size against its own 10 MB ceiling -- base64 is a third larger, so a check on the encoded string would let an over-limit file through. LinkedIn's pre-authenticated upload URL is used inside Agentic Fabriq and never returned.
Put LinkedIn behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.