Create LinkedIn post (not shipped)
NOT SHIPPED YET: publish a LinkedIn post (text plus optional media) from one of the team’s accounts. The browser-plugin create-post verb is not built, so every valid call returns not_implemented (context.reason=blocked_on_plugin). Do not retry. The request contract is final and validated in full BEFORE the 501 (text ≤ 3000, media ≤ 9 items each content_base64 XOR url, visibility in the enum), so integrations can be built and tested against it today. Once live it is identity-bound and non-creditable: linkedin_account_sid REQUIRED, spends the posting bucket (5/day, 1200 s delay, the tightest write limit), saturation returns 429 with no pool fallback. Nothing is stored here; the response carries the published activity URN plus the activity-log row.
Not shipped yet. The registry marks this route availability=stub_501: the backend validates the whole request and then answers 501 not_implemented. The request contract is final, so integrations can be written and tested against it today. Marked deprecated so generated clients flag it at compile time; this is a NOT-YET flag, not a sunset.
Contract:
- MCP tool
create_linkedin_post, registry packagemcp.linkedin/linkedin_posting, mountlinkedin.content. - Operation
action, response envelopeaction. - Flags: dangerous: the MCP layer gates it behind a preview/commit token, and the effect cannot be undone through this API.
Authorizations
Access token issued by gtm.service.id. Its access_identity claim carries team_sid, actor_sid and actor_type, and that team scope is authoritative.
Team scope for tokens that do not carry one. Ignored when the token already names a team.
Body
Request body of create_linkedin_post.
LinkedIn account sid (ln_ac_…), the authoring account. Identity-bound and non-creditable: REQUIRED, never a pool account.
18^ln_ac_Post body (LinkedIn hard cap 3000).
1 - 3000Up to 9 images / documents, each item exactly one of content_base64 / url.
9anyone (public, the default) or connections_only.
anyone, connections_only