Create LinkedIn comment
Leave ONE outbound comment on any LinkedIn post, addressed by its activity URN (wire create-comment). Outward and fire-on-success: the post does NOT need to be tracked or owned by us, and nothing is persisted on this service. Identity-bound and non-creditable: linkedin_account_sid REQUIRED, spends the messaging_general bucket, saturation returns 429 with no pool fallback. Reply to an existing comment by passing parent_comment_urn. The comment text comes in text; templates and AI generation are outside this API. Returns the created comment ref plus the activity-log row. To react instead use react_linkedin_post; to read a post’s existing comments or commenters use the linkedin-scraping get-post-comments / get-post-commenters tools; to resolve a post URL to its activity URN use get_activity_urn_by_url.
Contract:
- MCP tool
create_linkedin_comment, 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; mass action: this verb’s own request accepts a filter or targets[] set, which the owning service drains.
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_comment.
LinkedIn account sid (ln_ac_…), the authoring account. Identity-bound and non-creditable: REQUIRED, never a pool account.
18^ln_ac_urn:li:activity:, the post handle. The post does NOT need to be tracked or owned by us. Resolve a linkedin.com post URL first with get_activity_urn_by_url.
1 - 512The comment body (caller-supplied, no templates or AI in-app).
1 - 1250Reply target: the comment URN to reply under. Omit or null for a top-level comment.
512Accepted for contract compatibility and NOT enforced by this service today: per-post dedup left with the content trio (gs.service.signals). Passing it changes nothing.