MCP tools reference
Finchreach's MCP server registers 27 tools: 13 reads and 14 writes. Writes wait in the approval queue when approval is on. Beta tools use LinkedIn request shapes not yet verified against a capture: they work but may change or fail.
linkedin_list_accounts
ReadList LinkedIn accounts. Lists the LinkedIn accounts connected to this tenant: id, status (active / unverified / expired / checkpoint), member urn, exit country and whether the account is paused.
Scopes: accounts:read
No parameters.
linkedin_get_profile
ReadGet my LinkedIn profile. The connected member's own profile (/me plus the full profile): name, headline, public id, urns.
Scopes: linkedin:read
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
linkedin_get_feed
ReadRead the LinkedIn feed. Posts from the member's home feed. Pass the previous page's `next` as cursor for more.
Scopes: linkedin:read
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| sort | "relevance" or "recent" | relevance (default) or recent |
| cursor | object | The `next` object of the previous page |
linkedin_get_notifications
ReadRead LinkedIn notifications. The member's latest notifications and unseen badge counts.
Scopes: linkedin:read
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
linkedin_get_conversations
ReadList LinkedIn conversations. The member's messaging inbox: conversations with participants and the last message. Pass the previous page's cursor for older ones.
Scopes: linkedin:read
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| cursor | string | max 2000 chars |
linkedin_get_messages
ReadRead a LinkedIn conversation. Messages of one conversation (conversationUrn from linkedin_get_conversations).
Scopes: linkedin:read
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| conversationUrn * | string | urn:li:msg_conversation:(urn:li:fsd_profile:<id>,<thread>); max 400 chars |
| syncToken | string | max 2000 chars |
linkedin_search
ReadSearch LinkedIn. LinkedIn search by keywords. vertical: all (default, blended) or content (posts) — page with cursor; people (optional filters: network F=1st, S=2nd, O=3rd+; geoUrn location ids; currentCompany ids) or companies — page with page.
Scopes: linkedin:read
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| keywords * | string | max 200 chars |
| vertical | "all" or "content" or "people" or "companies" | |
| page | integer | |
| cursor | object | all/content: the `next` object of the previous page |
| network | "F" or "S" or "O"[] | max 3 items |
| geoUrn | string[] | people: location geo ids (e.g. "100446943" = Argentina); max 10 items |
| currentCompany | string[] | people: current company organization ids (e.g. "1441" = Google); max 10 items |
linkedin_get_post_comments
ReadRead comments on a LinkedIn post. Comments on a post (most relevant first): author (name, headline, degree, profile), text, age, reaction counts and reply counts. Pass the previous page's `next` as cursor for more.
Scopes: linkedin:read
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| activityId * | string | The post: its numeric activity id or urn:li:activity:<id> (from linkedin_get_feed / linkedin_search); max 64 chars |
| trackingId | string | The feed item's trackingId, when known (from linkedin_get_feed); max 300 chars |
| cursor | object | The `next` object of the previous page |
linkedin_get_post_reactions
ReadRead reactions on a LinkedIn post. Who reacted to a post: name, reaction, degree, headline and profile. Optionally only one reactionType. Pass the previous page's next.pageToken for more.
Scopes: linkedin:read
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| activityId * | string | The post: numeric activity id, urn:li:activity:<id> or urn:li:ugcPost:<id> (from linkedin_get_feed / linkedin_search); max 64 chars |
| reactionType | "LIKE" or "PRAISE" or "APPRECIATION" or "EMPATHY" or "INTEREST" or "ENTERTAINMENT" | |
| pageToken | string | max 2000 chars |
linkedin_get_person_profile
ReadView a person's LinkedIn profile. Another member's profile card by URL (https://www.linkedin.com/in/<id>/) or public id: name, headline, location, followers, connections, profile urn and connection state. LinkedIn shows the member that you viewed them; this has a tighter daily budget than other reads.
Scopes: linkedin:read
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| profile * | string | linkedin.com/in/<public id> URL or the public id; max 400 chars |
linkedin_create_post
Write · approvalPublish a LinkedIn post. Publishes a post as the member (LIVE on LinkedIn): text, text with up to 9 images (https URL or base64; JPEG, PNG or GIF, max 10 MB each, 40 MB together), or text with an article link (LinkedIn builds its preview from the URL; description and thumbnailUrl are not sent and produce a warning). If approval mode is on for this account, nothing is sent yet: the result is { status: "pending_approval", action } and a human approves it in Finchreach; poll it with linkedin_get_action.
Scopes: linkedin:write
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| text * | string | max 3000 chars |
| visibility | "Anyone" or "Connections Only" | Default: Connections Only |
| images | object[] | Images to attach; each needs exactly one of url or base64; max 9 items |
| article | object | Article link preview (cannot be combined with images) |
linkedin_send_dm
Write · approvalSend a LinkedIn message. Sends a direct message as the member: into an existing conversation (conversationUrn) or to new recipients (recipientUrns, urn:li:fsd_profile:…). If approval mode is on for this account, nothing is sent yet: the result is { status: "pending_approval", action } and a human approves it in Finchreach; poll it with linkedin_get_action.
Scopes: linkedin:write
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| text * | string | max 8000 chars |
| conversationUrn | string | max 400 chars |
| recipientUrns | string[] | max 20 items |
linkedin_send_invitation
Write · approvalSend a LinkedIn connection invitation. Sends a connection invitation, optionally with a note (max 300 characters). If approval mode is on for this account, nothing is sent yet: the result is { status: "pending_approval", action } and a human approves it in Finchreach; poll it with linkedin_get_action.
Scopes: linkedin:write
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| fsdProfileId * | string | The ACoA… profile id (or urn:li:fsd_profile:ACoA…); max 200 chars |
| note | string | max 300 chars |
linkedin_react_to_post
Write · approvalReact to a LinkedIn post. Reacts to a post as the member (default LIKE). If approval mode is on for this account, nothing is sent yet: the result is { status: "pending_approval", action } and a human approves it in Finchreach; poll it with linkedin_get_action.
Scopes: linkedin:write
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| activityId * | string | The post: its numeric activity id or urn:li:activity:<id> (from linkedin_get_feed / linkedin_search); max 64 chars |
| reactionType | "LIKE" or "PRAISE" or "APPRECIATION" or "EMPATHY" or "INTEREST" or "ENTERTAINMENT" | Default: LIKE |
linkedin_unreact
Write · approvalRemove a reaction from a LinkedIn post. Removes the member's reaction from a post; pass the reactionType that was given (default LIKE). If approval mode is on for this account, nothing is sent yet: the result is { status: "pending_approval", action } and a human approves it in Finchreach; poll it with linkedin_get_action.
Scopes: linkedin:write
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| activityId * | string | The post: its numeric activity id or urn:li:activity:<id> (from linkedin_get_feed / linkedin_search); max 64 chars |
| reactionType | "LIKE" or "PRAISE" or "APPRECIATION" or "EMPATHY" or "INTEREST" or "ENTERTAINMENT" | Default: LIKE |
linkedin_comment_on_post
Write · approvalComment on a LinkedIn post. Posts a comment on a post as the member (LIVE on LinkedIn). The result's outcome.ids.commentId is what linkedin_delete_comment takes. If approval mode is on for this account, nothing is sent yet: the result is { status: "pending_approval", action } and a human approves it in Finchreach; poll it with linkedin_get_action.
Scopes: linkedin:write
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| activityId * | string | The post: its numeric activity id or urn:li:activity:<id> (from linkedin_get_feed / linkedin_search); max 64 chars |
| text * | string | max 1250 chars |
| trackingId | string | The feed item's trackingId, when known (from linkedin_get_feed); max 300 chars |
linkedin_delete_comment
Write · approvalDelete a LinkedIn comment. Deletes one of the member's comments on a post. If approval mode is on for this account, nothing is sent yet: the result is { status: "pending_approval", action } and a human approves it in Finchreach; poll it with linkedin_get_action.
Scopes: linkedin:write
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| activityId * | string | The post: its numeric activity id or urn:li:activity:<id> (from linkedin_get_feed / linkedin_search); max 64 chars |
| commentId * | string | The comment id (outcome.ids.commentId of linkedin_comment_on_post); max 300 chars |
| trackingId | string | The feed item's trackingId, when known (from linkedin_get_feed); max 300 chars |
linkedin_edit_post
Write · approvalBetaEdit the text of one of the member's LinkedIn posts. Replaces the text of a post the member published (LIVE on LinkedIn). Unverified LinkedIn request shape: refused live (501 unverified_operation) unless the server enables it. If approval mode is on for this account, nothing is sent yet: the result is { status: "pending_approval", action } and a human approves it in Finchreach; poll it with linkedin_get_action.
Scopes: linkedin:write
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| activityId * | string | The post: its numeric activity id or urn:li:activity:<id> (from linkedin_get_feed / linkedin_search); max 64 chars |
| text * | string | max 3000 chars |
| trackingId | string | The feed item's trackingId, when known (from linkedin_get_feed); max 300 chars |
linkedin_delete_post
Write · approvalDelete one of the member's LinkedIn posts. Deletes a post the member published (LIVE on LinkedIn; LinkedIn refuses posts that are not the member's). If approval mode is on for this account, nothing is sent yet: the result is { status: "pending_approval", action } and a human approves it in Finchreach; poll it with linkedin_get_action.
Scopes: linkedin:write
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| activityId * | string | The post: its numeric activity id or urn:li:activity:<id> (from linkedin_get_feed / linkedin_search); max 64 chars |
| trackingId | string | The feed item's trackingId, when known (from linkedin_get_feed); max 300 chars |
linkedin_reply_to_comment
Write · approvalBetaReply to a LinkedIn comment. Posts a threaded reply under a comment as the member (LIVE on LinkedIn). parentCommentId is the comment's id or urn:li:comment:(activity:<postId>,<commentId>) (from linkedin_get_post_comments). Unverified LinkedIn request shape: refused live (501 unverified_operation) unless the server enables it. If approval mode is on for this account, nothing is sent yet: the result is { status: "pending_approval", action } and a human approves it in Finchreach; poll it with linkedin_get_action.
Scopes: linkedin:write
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| activityId * | string | The post: its numeric activity id or urn:li:activity:<id> (from linkedin_get_feed / linkedin_search); max 64 chars |
| parentCommentId * | string | The comment to reply to: its numeric id or urn:li:comment:(activity:<postId>,<commentId>); max 300 chars |
| text * | string | max 1250 chars |
| trackingId | string | The feed item's trackingId, when known (from linkedin_get_feed); max 300 chars |
linkedin_mark_conversation_read
Write · approvalBetaMark a LinkedIn conversation as read. Marks one of the member's conversations as read (conversationUrn from linkedin_get_conversations). Unverified LinkedIn request shape: refused live (501 unverified_operation) unless the server enables it. If approval mode is on for this account, nothing is sent yet: the result is { status: "pending_approval", action } and a human approves it in Finchreach; poll it with linkedin_get_action.
Scopes: linkedin:write
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| conversationUrn * | string | urn:li:msg_conversation:(urn:li:fsd_profile:<own id>,<thread>); max 400 chars |
linkedin_get_received_invitations
ReadBetaList received LinkedIn invitations. Pending invitations sent to the member: inviter (name, headline, profile), note, sent time and the `accept` arguments ({ invitationId, sharedSecret }) for linkedin_accept_invitation / linkedin_decline_invitation. Page with start (the previous page's next.start).
Scopes: linkedin:read
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| start | integer | |
| count | integer | Default: 10 |
linkedin_accept_invitation
Write · approvalBetaAccept a LinkedIn invitation. Accepts a received invitation (the member gains a connection). Pass the invitation's accept arguments from linkedin_get_received_invitations. If approval mode is on for this account, nothing is sent yet: the result is { status: "pending_approval", action } and a human approves it in Finchreach; poll it with linkedin_get_action.
Scopes: linkedin:write
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| invitationId * | string | accept.invitationId from linkedin_get_received_invitations; max 80 chars |
| sharedSecret * | string | accept.sharedSecret from linkedin_get_received_invitations; max 200 chars |
linkedin_decline_invitation
Write · approvalBetaDecline (ignore) a LinkedIn invitation. Ignores a received invitation (LinkedIn's Ignore button; the inviter is not notified). Pass the invitation's accept arguments from linkedin_get_received_invitations. If approval mode is on for this account, nothing is sent yet: the result is { status: "pending_approval", action } and a human approves it in Finchreach; poll it with linkedin_get_action.
Scopes: linkedin:write
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| invitationId * | string | accept.invitationId from linkedin_get_received_invitations; max 80 chars |
| sharedSecret * | string | accept.sharedSecret from linkedin_get_received_invitations; max 200 chars |
linkedin_get_sent_invitations
ReadList sent LinkedIn invitations. Pending connection invitations the member sent: invitee (name, headline, profile), sent age, note and the `withdraw` arguments for linkedin_withdraw_invitation. Page with startIndex (the previous page's next.startIndex).
Scopes: linkedin:read
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| startIndex | integer |
linkedin_withdraw_invitation
Write · approvalWithdraw a sent LinkedIn invitation. Withdraws a pending invitation the member sent. Pass the invitation's withdraw arguments from linkedin_get_sent_invitations. If approval mode is on for this account, nothing is sent yet: the result is { status: "pending_approval", action } and a human approves it in Finchreach; poll it with linkedin_get_action.
Scopes: linkedin:write
| Parameter | Type | Description |
|---|---|---|
| accountId | string | The LinkedIn account id (from linkedin_list_accounts). May be omitted when the tenant has exactly one connected account.; max 64 chars |
| invitationId * | string | withdraw.invitationId; max 80 chars |
| profileUrn * | string | withdraw.profileUrn (the ACoA… profile id); max 200 chars |
| inviteeVanityName * | string | withdraw.inviteeVanityName; max 200 chars |
| firstName * | string | withdraw.firstName; max 200 chars |
| lastName * | string | withdraw.lastName; max 200 chars |
linkedin_get_action
ReadGet a pending action. The status of a write queued for approval (pending_approval, approved, rejected, executed, failed, expired) and, once run, its result. A key can read the actions it proposed.
Scopes: actions:read or linkedin:write
| Parameter | Type | Description |
|---|---|---|
| actionId * | string | max 64 chars |
Updated · Markdown version
