Serveur MCP

Reach MCP — LinkedIn for AI agents

com.reachmcp/linkedin
Ventes et CRM Réseaux sociaux Public et accessible MCP 2026-07-28

Ce que fait ce MCP

Operates LinkedIn accounts, including profiles, connections, invitations, messaging, Sales Navigator searches, posts, comments, and webhooks.

accept_invitation
Accept a pending received connection request. Use to accept a received invitation (invitation_secret from list_received_invitations). Ask the user which ones.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'linkedin_id_or_url'], 'properties': {'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}, 'linkedin_id_or_url': {'type': 'string', 'description': 'The LinkedIn member: profile URL, vanity name (the part after /in/), Sales Navigator URL, or internal member id.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'accepted': {'type': 'boolean'}}, 'additionalProperties': True}
archive_conversation
Archive or unarchive a LinkedIn conversation. Set archive=false to unarchive. conversation_linkedin_id is the conversation_id returned by list_conversations. Housekeeping in the classic inbox; reversible (archive=false). Not a delete, see delete_conversation.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'conversation_linkedin_id'], 'properties': {'archive': {'type': 'boolean', 'default': True, 'description': 'True to archive, False to unarchive.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}, 'conversation_linkedin_id': {'type': 'string', 'description': 'Conversation (thread) id, as returned by list_conversations.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'archived': {'type': 'boolean', 'description': 'Current archived state'}}, 'additionalProperties': True}
cancel_job
Cancel a job: its pending items will never run. Items already executed are unaffected. Cannot be undone. Irreversible for the pending items (executed ones stay); confirm with the user. To stop temporarily use pause_job.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['job_id'], 'properties': {'job_id': {'type': 'integer', 'description': 'Job id, as returned by create_job or list_jobs.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'id': {'type': 'integer'}, 'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'integer'}, 'error': {'type': ['object', 'null'], 'additionalProperties': True}, 'result': {'type': ['object', 'null'], 'additionalProperties': True}, 'status': {'enum': ['pending', 'sending', 'done', 'failed', 'skipped', 'cancelled'], 'type': 'string'}, 'attempt': {'type': 'integer'}, 'payload': {'type': 'object', 'additionalProperties': True}, 'position': {'type': 'integer'}, 'executed_at': {'type': ['string', 'null']}, 'scheduled_at': {'type': 'string'}}, 'additionalProperties': True}}, 'label': {'type': ['string', 'null']}, 'action': {'type': 'string'}, 'source': {'type': 'string'}, 'status': {'enum': ['scheduled', 'running', 'paused', 'completed', 'cancelled'], 'type': 'string'}, 'totals': {'type': 'object', 'properties': {'done': {'type': 'integer'}, 'total': {'type': 'integer'}, 'failed': {'type': 'integer'}, 'pending': {'type': 'integer'}, 'skipped': {'type': 'integer'}}, 'additionalProperties': True}, 'window': {'type': 'object', 'properties': {'end': {'type': 'string'}, 'days': {'type': 'array', 'items': {'type': 'integer'}}, 'start': {'type': 'string'}, 'timezone': {'type': 'string'}}, 'additionalProperties': True}, 'resume_at': {'type': ['string', 'null']}, 'account_id': {'type': 'integer'}, 'created_at': {'type': 'string'}, 'started_at': {'type': ['string', 'null']}, 'completed_at': {'type': ['string', 'null']}, 'next_item_at': {'type': ['string', 'null']}, 'pause_reason': {'type': ['string', 'null'], 'description': 'quota_reached | account_disconnected | billing | manual'}}, 'additionalProperties': True}
comment_post
Post a comment on a LinkedIn post on behalf of the connected account. Use to write a new top-level comment on a post; to answer an existing comment use reply_comment. Counts against the daily comments quota; the text is public, preview it with the user.
Accès externe
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'post_url_or_urn', 'text'], 'properties': {'text': {'type': 'string', 'description': 'Comment text.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}, 'post_url_or_urn': {'type': 'string', 'description': 'LinkedIn post URL, slug, or URN.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'commented': {'type': 'boolean'}}, 'additionalProperties': True}
create_job
Queue a batch of LinkedIn actions (messages, invitations, profile visits or comments) that Reach executes on its own over the following hours or days: spread across the account's activity window (set per account with update_account_quotas; default 09:00-18:00, Monday to Friday, in the account's timezone; overridable per job) with human-like gaps, never beyond the daily quota of the action. Returns immediately with a job_id and the planned schedule; the agent does not have to stay alive. The job pauses by itself when a quota is reached or the account disconnects and resumes when it can; webhooks job.started / job.progress / job.paused / job.completed report what happens. Use it for anything above a handful of actions instead of calling send_message or send_invitation in a loop. Always show the user the items before queuing them. Use for any batch above a handful of actions; returns at once with the schedule. Show the items to the user first. Not for a single action, call the direct tool.
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'action', 'items'], 'properties': {'days': {'type': 'array', 'items': {'type': 'string'}, 'description': "Weekdays the job may run: mon, tue, wed, thu, fri, sat, sun. Default: the account's window (Monday to Friday unless changed)."}, 'items': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'maxItems': 500, 'minItems': 1, 'description': 'One object per action, in the order to execute them; fields depend on the action (see action).'}, 'label': {'type': 'string', 'description': "Short free text shown in the dashboard and in webhook events, e.g. 'Follow-ups week 40'."}, 'action': {'enum': ['send_message', 'send_invitation', 'visit_profile', 'comment_post'], 'type': 'string', 'description': 'What every item does. send_message: text + conversation_linkedin_id (reply) or recipient_linkedin_id (new thread). send_invitation: linkedin_id_or_url + optional message (<200 chars). visit_profile: linkedin_id_or_url. comment_post: post_url_or_urn + text.'}, 'timezone': {'type': 'string', 'description': "IANA zone such as Europe/Paris. Default: the account's window setting, else the zone of its proxy country."}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'window_end': {'type': 'string', 'description': "HH:MM in the job's timezone; default: the account's window (18:00 unless changed)."}, 'window_start': {'type': 'string', 'description': "HH:MM in the job's timezone; default: the account's window (09:00 unless changed)."}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'id': {'type': 'integer'}, 'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'integer'}, 'error': {'type': ['object', 'null'], 'additionalProperties': True}, 'result': {'type': ['object', 'null'], 'additionalProperties': True}, 'status': {'enum': ['pending', 'sending', 'done', 'failed', 'skipped', 'cancelled'], 'type': 'string'}, 'attempt': {'type': 'integer'}, 'payload': {'type': 'object', 'additionalProperties': True}, 'position': {'type': 'integer'}, 'executed_at': {'type': ['string', 'null']}, 'scheduled_at': {'type': 'string'}}, 'additionalProperties': True}}, 'label': {'type': ['string', 'null']}, 'action': {'type': 'string'}, 'source': {'type': 'string'}, 'status': {'enum': ['scheduled', 'running', 'paused', 'completed', 'cancelled'], 'type': 'string'}, 'totals': {'type': 'object', 'properties': {'done': {'type': 'integer'}, 'total': {'type': 'integer'}, 'failed': {'type': 'integer'}, 'pending': {'type': 'integer'}, 'skipped': {'type': 'integer'}}, 'additionalProperties': True}, 'window': {'type': 'object', 'properties': {'end': {'type': 'string'}, 'days': {'type': 'array', 'items': {'type': 'integer'}}, 'start': {'type': 'string'}, 'timezone': {'type': 'string'}}, 'additionalProperties': True}, 'resume_at': {'type': ['string', 'null']}, 'account_id': {'type': 'integer'}, 'created_at': {'type': 'string'}, 'started_at': {'type': ['string', 'null']}, 'completed_at': {'type': ['string', 'null']}, 'next_item_at': {'type': ['string', 'null']}, 'pause_reason': {'type': ['string', 'null'], 'description': 'quota_reached | account_disconnected | billing | manual'}}, 'additionalProperties': True}
create_multi_photo
Create a LinkedIn multi-photo object from a list of digitalmediaAsset URNs. Returns an identifierUrn (urn:li:fsd_multiPhoto:…) to pass to create_post. author_urn is the urn:li:fsd_profile:… of the connected account (get it from get_me). Use after uploading two or more images with upload_media_from_url; returns the single URN create_post takes. Not for one image.
Accès externe
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'author_urn', 'media_urns'], 'properties': {'alt_texts': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Optional alt text per image (same order as media_urns).'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'author_urn': {'type': 'string', 'description': 'Only messages from this author URN.'}, 'media_urns': {'type': 'array', 'items': {'type': 'string'}, 'description': 'List of urn:li:digitalmediaAsset:… URNs.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'identifier_urn': {'type': 'string', 'description': 'URN to pass as media_urn of create_post'}}, 'additionalProperties': True}
create_post
Create or schedule a LinkedIn post, optionally with a media attachment. For a single image pass a urn:li:digitalmediaAsset:… URN; for multiple images pass a urn:li:fsd_multiPhoto:… URN from create_multi_photo. Set scheduled_at (Unix ms) to schedule; omit it to publish immediately. Publishes now or schedules (scheduled_time); counts against the daily posts quota. Show the user the full text before calling.
Accès externe
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'text'], 'properties': {'text': {'type': 'string', 'description': 'Plain text to send or post.'}, 'media_urn': {'type': 'string', 'description': 'Optional media URN to attach.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'visibility': {'type': 'string', 'default': 'ANYONE', 'description': "'ANYONE' or 'CONNECTIONS_ONLY'."}, 'scheduled_at': {'type': 'integer', 'description': 'Scheduled publish time in Unix milliseconds. Omit to publish now.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}, 'allowed_commenters_scope': {'type': 'string', 'default': 'ALL', 'description': "'ALL' or 'CONNECTIONS_ONLY'."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'resource_key': {'type': 'string', 'description': 'Identifier of the created or scheduled post'}}, 'additionalProperties': True}
create_webhook_endpoint
Register a URL to be called when something happens on LinkedIn, so an agent or an n8n/Make workflow can react instead of polling. Returns the signing secret ONCE; deliveries carry 'Reach-Signature: t=<unix>,v1=<hex HMAC-SHA256(secret, t + '.' + body)>'. Events: message.received, connection.new, account.status_changed, quota.threshold_reached, quota.reached, or '*' for all. Omit account_ids to subscribe for every account of the user. https only. Use when the user wants to react to a reply, a new connection, a quota alert or a job event from n8n, Make or their own code; needs an https URL they control. Not for the model to call itself.
Schéma d’entrée
{'type': 'object', 'required': ['url', 'events'], 'properties': {'url': {'type': 'string', 'description': 'https URL that accepts a JSON POST.'}, 'events': {'type': 'array', 'items': {'type': 'string'}, 'description': "Event types, or ['*']."}, 'account_ids': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Optional: only these LinkedIn account ids.'}, 'description': {'type': 'string', 'maxLength': 200, 'description': 'Free-text label for your own reference.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'id': {'type': 'integer'}, 'url': {'type': 'string'}, 'note': {'type': 'string'}, 'events': {'type': 'array', 'items': {'type': 'string'}}, 'secret': {'type': 'string', 'description': 'Signing secret, returned once'}, 'is_active': {'type': 'boolean'}, 'created_at': {'type': 'string'}, 'account_ids': {'type': ['array', 'null'], 'items': {'type': 'integer'}}, 'description': {'type': 'string'}, 'disabled_reason': {'type': 'string'}, 'last_delivery_at': {'type': 'string'}, 'consecutive_failures': {'type': 'integer'}}, 'additionalProperties': True}
decline_invitation
Decline/ignore a pending received connection request. Use to ignore a received invitation; the sender is not notified. Not for invitations the account sent, see withdraw_invitation.
Destructif Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'linkedin_id_or_url'], 'properties': {'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}, 'linkedin_id_or_url': {'type': 'string', 'description': 'The LinkedIn member: profile URL, vanity name (the part after /in/), Sales Navigator URL, or internal member id.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'declined': {'type': 'boolean'}}, 'additionalProperties': True}
delete_account
Delete a LinkedIn account by account_id. Also clears invitation references before deletion. Removes the account from Reach only (LinkedIn is untouched); irreversible, requires the user's explicit confirmation. Not for disconnecting temporarily.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id'], 'properties': {'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'deleted': {'type': 'boolean'}, 'account_id': {'type': 'integer'}}, 'additionalProperties': True}
delete_conversation
Permanently delete a LinkedIn conversation. conversation_linkedin_id is the conversation_id returned by list_conversations. Irreversible for this account; confirm with the user. To hide a thread without losing it use archive_conversation.
Destructif Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'conversation_linkedin_id'], 'properties': {'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}, 'conversation_linkedin_id': {'type': 'string', 'description': 'Conversation (thread) id, as returned by list_conversations.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'deleted': {'type': 'boolean'}}, 'additionalProperties': True}
delete_scheduled_post
Delete a scheduled LinkedIn post. post_urn is the URN returned by list_scheduled_posts (e.g. urn:li:ugcPost:…). Only for posts still scheduled; irreversible, confirm with the user. A published post cannot be deleted through Reach.
Destructif Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'post_urn'], 'properties': {'post_urn': {'type': 'string', 'description': 'URN of the scheduled post (urn:li:…), from list_scheduled_posts.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'deleted': {'type': 'boolean'}, 'post_urn': {'type': 'string'}}, 'additionalProperties': True}
delete_webhook_endpoint
Delete a webhook endpoint and its delivery history. Irreversible (the delivery history goes too); confirm with the user. To pause deliveries use update_webhook_endpoint with is_active=false.
Destructif Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['endpoint_id'], 'properties': {'endpoint_id': {'type': 'integer', 'description': 'Webhook endpoint id, from list_webhook_endpoints.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'deleted': {'type': 'boolean'}, 'endpoint_id': {'type': 'integer'}}, 'additionalProperties': True}
follow_member
Follow or unfollow a LinkedIn member without connecting. Set follow=false to unfollow. Use to follow someone's posts without a connection request (no quota); to connect use send_invitation.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'linkedin_id_or_url'], 'properties': {'follow': {'type': 'boolean', 'default': True, 'description': 'True to follow, False to unfollow.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}, 'linkedin_id_or_url': {'type': 'string', 'description': 'The LinkedIn member: profile URL, vanity name (the part after /in/), Sales Navigator URL, or internal member id.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'following': {'type': 'boolean', 'description': 'Current follow state'}}, 'additionalProperties': True}
get_account_quotas
Get the quotas configuration and usage counters for a LinkedIn account. Use before a batch to know what is left today; use update_account_quotas to change limits or the activity window.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id'], 'properties': {'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'id': {'type': 'integer', 'title': 'Id'}, 'window': {'type': 'object', 'properties': {'days': {'type': 'array', 'items': {'type': 'integer'}}, 'timezone': {'type': 'string'}, 'customised': {'type': 'boolean'}, 'window_end': {'type': 'string'}, 'window_start': {'type': 'string'}}, 'description': 'The activity window jobs run in by default.', 'additionalProperties': True}, 'timezone': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Timezone', 'default': None}, 'window_end': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Window End', 'default': None}, 'window_days': {'anyOf': [{'type': 'array', 'items': {'type': 'integer'}}, {'type': 'null'}], 'title': 'Window Days', 'default': None}, 'window_start': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Window Start', 'default': None}, 'daily_posts_conf': {'type': 'integer', 'title': 'Daily Posts Conf'}, 'daily_posts_used': {'type': 'integer', 'title': 'Daily Posts Used'}, 'daily_visits_conf': {'type': 'integer', 'title': 'Daily Visits Conf'}, 'daily_visits_used': {'type': 'integer', 'title': 'Daily Visits Used'}, 'daily_comments_conf': {'type': 'integer', 'title': 'Daily Comments Conf'}, 'daily_comments_used': {'type': 'integer', 'title': 'Daily Comments Used'}, 'daily_messages_conf': {'type': 'integer', 'title': 'Daily Messages Conf'}, 'daily_messages_used': {'type': 'integer', 'title': 'Daily Messages Used'}, 'daily_reactions_conf': {'type': 'integer', 'title': 'Daily Reactions Conf'}, 'daily_reactions_used': {'type': 'integer', 'title': 'Daily Reactions Used'}, 'daily_invitations_conf': {'type': 'integer', 'title': 'Daily Invitations Conf'}, 'daily_invitations_used': {'type': 'integer', 'title': 'Daily Invitations Used'}, 'daily_imports_salesnav_conf': {'type': 'integer', 'title': 'Daily Imports Salesnav Conf'}, 'daily_imports_salesnav_used': {'type': 'integer', 'title': 'Daily Imports Salesnav Used'}, 'daily_imports_standard_conf': {'type': 'integer', 'title': 'Daily Imports Standard Conf'}, 'daily_imports_standard_used': {'type': 'integer', 'title': 'Daily Imports Standard Used'}, 'daily_imports_recruiter_conf': {'type': 'integer', 'title': 'Daily Imports Recruiter Conf'}, 'daily_imports_recruiter_used': {'type': 'integer', 'title': 'Daily Imports Recruiter Used'}}, 'additionalProperties': True}
get_account_request_logs
Get request logs for a LinkedIn account with optional filtering by request_type and pagination using limit/offset. Use to debug a failing account (each LinkedIn call with its status); for totals use get_account_request_logs_stats.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id'], 'properties': {'limit': {'type': 'integer', 'description': 'Maximum number of rows to return.'}, 'offset': {'type': 'integer', 'description': 'Number of rows to skip.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'request_type': {'type': 'string', 'description': 'Only rows of this request type (for example send_message, list_conversations, connect).'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'result': {'type': 'array', 'items': {'type': 'object', 'title': 'RequestLogOut', 'properties': {'id': {'type': 'integer', 'title': 'Id'}, 'url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Url', 'default': None}, 'method': {'type': 'string', 'title': 'Method'}, 'created_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Created At', 'default': None}, 'status_code': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Status Code', 'default': None}, 'request_type': {'type': 'string', 'title': 'Request Type'}}, 'additionalProperties': True}, 'description': 'Request log rows, newest first.'}}, 'additionalProperties': True}
get_account_request_logs_stats
Get aggregated request-log statistics for a LinkedIn account, grouped by day, week, or month, with optional action and date-range filters. Use for the weekly review or to size an account's activity; for individual calls use get_account_request_logs.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id'], 'properties': {'end_date': {'type': 'string', 'format': 'date-time', 'description': 'End of the period, ISO 8601 (default: now).'}, 'group_by': {'enum': ['day', 'week', 'month'], 'type': 'string', 'description': 'Bucket size for the statistics: day, week or month.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'start_date': {'type': 'string', 'format': 'date-time', 'description': 'Start of the period, ISO 8601 (default: 30 days ago).'}, 'request_type': {'type': 'string', 'description': 'Only rows of this request type (for example send_message, list_conversations, connect).'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$defs': {'RequestLogStatsBucketOut': {'type': 'object', 'title': 'RequestLogStatsBucketOut', 'properties': {'count': {'type': 'integer', 'title': 'Count'}, 'action': {'type': 'string', 'title': 'Action'}, 'bucket_start': {'type': 'string', 'title': 'Bucket Start', 'format': 'date-time'}}, 'additionalProperties': True}}, 'title': 'RequestLogStatsOut', 'properties': {'buckets': {'type': 'array', 'items': {'$ref': '#/$defs/RequestLogStatsBucketOut'}, 'title': 'Buckets'}, 'end_date': {'type': 'string', 'title': 'End Date', 'format': 'date-time'}, 'group_by': {'type': 'string', 'title': 'Group By'}, 'start_date': {'type': 'string', 'title': 'Start Date', 'format': 'date-time'}, 'request_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Request Type', 'default': None}, 'available_actions': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Available Actions'}}, 'additionalProperties': True}
get_invitation_status
Get the connection and invitation status between the connected account and a LinkedIn member. Returns is_connection, invitation_type (SENT/PENDING/WITHDRAWN/REFUSED). Use before send_invitation or send_message to know the relationship (connected, invitation pending, refused). Read-only, cheap.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'linkedin_id_or_url'], 'properties': {'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'linkedin_id_or_url': {'type': 'string', 'description': 'The LinkedIn member: profile URL, vanity name (the part after /in/), Sales Navigator URL, or internal member id.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'title': 'LinkedInInvitationStatusOut', 'properties': {'degree': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Degree', 'default': None, 'description': 'Connection distance (1, 2 or 3).'}, 'invitation_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Invitation Id', 'default': None, 'description': 'Invitation URN, if any.'}, 'is_connection': {'type': 'boolean', 'title': 'Is Connection', 'description': 'True if the member is a 1st-degree connection.'}, 'invitation_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Invitation Type', 'default': None, 'description': "'SENT' (pending sent), 'PENDING' (received, awaiting acceptance), 'WITHDRAWN', or 'REFUSED'."}, 'invitation_secret': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Invitation Secret', 'default': None, 'description': 'Shared secret, required to accept a received invitation.'}}, 'description': 'Connection / invitation status between the connected account and a LinkedIn member.', 'additionalProperties': True}
get_job
One job with its status, totals, next execution time and every item (scheduled time, result or error). Use to report progress or to see why an item failed; for an overview of all jobs use list_jobs.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['job_id'], 'properties': {'job_id': {'type': 'integer', 'description': 'Job id, as returned by create_job or list_jobs.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'id': {'type': 'integer'}, 'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'integer'}, 'error': {'type': ['object', 'null'], 'additionalProperties': True}, 'result': {'type': ['object', 'null'], 'additionalProperties': True}, 'status': {'enum': ['pending', 'sending', 'done', 'failed', 'skipped', 'cancelled'], 'type': 'string'}, 'attempt': {'type': 'integer'}, 'payload': {'type': 'object', 'additionalProperties': True}, 'position': {'type': 'integer'}, 'executed_at': {'type': ['string', 'null']}, 'scheduled_at': {'type': 'string'}}, 'additionalProperties': True}}, 'label': {'type': ['string', 'null']}, 'action': {'type': 'string'}, 'source': {'type': 'string'}, 'status': {'enum': ['scheduled', 'running', 'paused', 'completed', 'cancelled'], 'type': 'string'}, 'totals': {'type': 'object', 'properties': {'done': {'type': 'integer'}, 'total': {'type': 'integer'}, 'failed': {'type': 'integer'}, 'pending': {'type': 'integer'}, 'skipped': {'type': 'integer'}}, 'additionalProperties': True}, 'window': {'type': 'object', 'properties': {'end': {'type': 'string'}, 'days': {'type': 'array', 'items': {'type': 'integer'}}, 'start': {'type': 'string'}, 'timezone': {'type': 'string'}}, 'additionalProperties': True}, 'resume_at': {'type': ['string', 'null']}, 'account_id': {'type': 'integer'}, 'created_at': {'type': 'string'}, 'started_at': {'type': ['string', 'null']}, 'completed_at': {'type': ['string', 'null']}, 'next_item_at': {'type': ['string', 'null']}, 'pause_reason': {'type': ['string', 'null'], 'description': 'quota_reached | account_disconnected | billing | manual'}}, 'additionalProperties': True}
get_me
Call LinkedIn Voyager /me for an account through the stored proxy/cookies and return the normalized profile (same fields as Kanbox uses from /me). Use to confirm which LinkedIn profile an account is (name, headline, premium); one LinkedIn call. Not needed before every action.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id'], 'properties': {'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'title': 'LinkedInMeProfileOut', 'properties': {'picture': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Picture', 'default': None, 'description': 'Profile picture URL derived from VectorImage artifacts.'}, 'headline': {'type': 'string', 'title': 'Headline', 'default': ''}, 'lastname': {'type': 'string', 'title': 'Lastname', 'default': ''}, 'firstname': {'type': 'string', 'title': 'Firstname', 'default': ''}, 'is_premium': {'type': 'boolean', 'title': 'Is Premium', 'default': False}, 'linkedin_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Linkedin Id', 'default': None, 'description': 'MiniProfile id (entityUrn suffix after fs_miniProfile:).'}, 'linkedin_plain_id': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Linkedin Plain Id', 'default': None, 'description': 'Numeric member id from objectUrn.'}, 'linkedin_public_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Linkedin Public Id', 'default': None, 'description': 'Public / vanity identifier.'}}, 'description': 'Profile fields extracted from Voyager ``GET /voyager/api/me``, matching what Kanbox persists on accounts.', 'additionalProperties': True}
like_post
Like a LinkedIn post on behalf of the connected account. Pass the post URL, slug, or URN. Use for a light touch on a post; idempotent on LinkedIn's side. Counts against the daily reactions quota.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'post_url_or_urn'], 'properties': {'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}, 'post_url_or_urn': {'type': 'string', 'description': 'LinkedIn post URL, slug, or urn:li:activity:….'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'liked': {'type': 'boolean'}}, 'additionalProperties': True}
list_accounts
Return LinkedIn accounts accessible with the provided API key. If the key is restricted, only allowed account IDs are returned. Use first in every session to get the account_id the other tools need; ask which account when several are listed.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'result': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'integer', 'description': 'Reach account id, the account_id every other tool takes.'}, 'city': {'type': 'string'}, 'status': {'type': 'string', 'description': 'connected, disconnected, proxy_error or pending'}, 'country': {'type': 'string'}, 'picture': {'type': 'string'}, 'headline': {'type': 'string'}, 'lastname': {'type': 'string'}, 'firstname': {'type': 'string'}, 'created_at': {'type': 'string'}, 'is_premium': {'type': 'boolean'}, 'linkedin_id': {'type': 'string'}, 'connected_at': {'type': 'string'}, 'has_sales_nav': {'type': 'boolean'}, 'linkedin_public_id': {'type': 'string', 'description': 'Vanity name'}}, 'additionalProperties': True}, 'description': 'Connected LinkedIn accounts visible to this key.'}}, 'additionalProperties': True}
list_connections
List LinkedIn 1st-degree connections for an account (Voyager dash connections), paged with start/count — same payload as GET /api/linkedin/{account_id}/connections. Use to walk the account's own 1st-degree network; for pending invitations use list_sent_invitations or list_received_invitations; for search use scrape_search.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id'], 'properties': {'count': {'type': 'integer', 'maximum': 100, 'minimum': 1, 'description': 'Page size.'}, 'start': {'type': 'integer', 'minimum': 0, 'description': 'Pagination offset, 0-based.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$defs': {'LinkedInConnectionItemOut': {'type': 'object', 'title': 'LinkedInConnectionItemOut', 'properties': {'picture': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Picture', 'default': None, 'description': 'Photo URL from profilePicture vectorImage.'}, 'headline': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Headline', 'default': None}, 'lastname': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Lastname', 'default': None}, 'firstname': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Firstname', 'default': None}, 'linkedin_id': {'type': 'string', 'title': 'Linkedin Id', 'description': 'Connection id from entityUrn (fsd_connection:…).'}, 'connected_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Connected At', 'default': None, 'description': 'Connection time from Voyager ``createdAt`` (UTC).'}, 'linkedin_public_id': {'type': 'string', 'title': 'Linkedin Public Id', 'description': 'Vanity id when known, else same as linkedin_id.'}}, 'description': 'One connection row: same extraction as Kanbox ``sync_connections`` (lead fields).', 'additionalProperties': True}}, 'title': 'LinkedInConnectionsPageOut', 'properties': {'count': {'type': 'integer', 'title': 'Count', 'description': 'Requested page size.'}, 'items': {'type': 'array', 'items': {'$ref': '#/$defs/LinkedInConnectionItemOut'}, 'title': 'Items'}, 'start': {'type': 'integer', 'title': 'Start', 'description': 'Offset used for this request.'}, 'total': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Total', 'default': None, 'description': 'Total connections reported by LinkedIn ``paging.total``.'}, 'next_start': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Start', 'default': None, 'description': 'If set, use as the ``start`` query param for the next page (Kanbox-style paging).'}}, 'description': 'Paged list of connections (Voyager dash connections API).', 'additionalProperties': True}
list_conversation_messages
List messages in a LinkedIn conversation via Voyager ``/messaging/conversations/{id}/events`` (Kanbox ``get_conversation_messages``), with optional created_before paging — same as GET /api/linkedin/{account_id}/conversations/{conversation_linkedin_id}/messages. Use after list_conversations to read a thread before replying; the conversation_linkedin_id comes from list_conversations.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'conversation_linkedin_id'], 'properties': {'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'created_before': {'type': 'string', 'description': 'Only messages created before this Unix timestamp in milliseconds, to page back in time.'}, 'conversation_linkedin_id': {'type': 'string', 'description': 'Conversation (thread) id, as returned by list_conversations.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$defs': {'LinkedInConversationMessageOut': {'type': 'object', 'title': 'LinkedInConversationMessageOut', 'properties': {'id': {'type': 'string', 'title': 'Id', 'description': 'Message id from ``backendUrn`` (messagingMessage:…).'}, 'html': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Html', 'default': None}, 'text': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Text', 'default': None}, 'created_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Created At', 'default': None}, 'is_inbound': {'type': 'boolean', 'title': 'Is Inbound', 'description': 'True when the sender is not the connected account (incoming message).'}, 'message_urn': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Message Urn', 'default': None, 'description': 'Full message URN (entityUrn) — pass this to proxy_react_message.'}, 'message_type': {'type': 'string', 'title': 'Message Type', 'default': 'text', 'description': 'e.g. text, html, gif, or media hint.'}, 'from_lastname': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'From Lastname', 'default': None}, 'attachment_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Attachment Url', 'default': None}, 'from_firstname': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'From Firstname', 'default': None}, 'attachment_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Attachment Name', 'default': None}, 'attachment_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Attachment Type', 'default': None}, 'from_linkedin_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'From Linkedin Id', 'default': None}}, 'description': 'One message from ``/messaging/conversations/{id}/events`` (Kanbox ``parse_linkedin_message``).', 'additionalProperties': True}}, 'title': 'LinkedInConversationMessagesPageOut', 'properties': {'has_more': {'type': 'boolean', 'title': 'Has More', 'description': 'True when LinkedIn likely has older events (page size 20).'}, 'messages': {'type': 'array', 'items': {'$ref': '#/$defs/LinkedInConversationMessageOut'}, 'title': 'Messages'}, 'total_count': {'type': 'integer', 'title': 'Total Count', 'description': 'Number of messages in this response.'}, 'next_created_before': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Next Created Before', 'default': None, 'description': 'Pass as ``created_before`` to fetch the next (older) page.'}, 'conversation_linkedin_id': {'type': 'string', 'title': 'Conversation Linkedin Id', 'description': 'Kanbox ``Conversation.linkedin_id`` / conversation key.'}}, 'description': 'Messages for a conversation (Kanbox ``get_conversation_messages`` + public API paging).', 'additionalProperties': True}
list_conversations
List LinkedIn messenger conversations (Voyager Messaging GraphQL), with optional archived, unread, starred filters and next_cursor paging — same as GET /api/linkedin/{account_id}/conversations. Each item returns conversation_id (the thread id — use this as conversation_linkedin_id when fetching messages or replying) and recipient_linkedin_id (the peer's fsd_profile id — use this as recipient_linkedin_id when sending a new message). Use for the classic LinkedIn inbox (this is the one that matters in 95% of cases); Sales Navigator threads are separate, see salesnav_list_messaging_threads.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id'], 'properties': {'count': {'type': 'integer', 'maximum': 25, 'minimum': 1, 'description': 'Page size.'}, 'unread': {'type': 'boolean', 'description': 'Only conversations with unread messages.'}, 'starred': {'type': 'boolean', 'description': 'Only starred conversations.'}, 'archived': {'type': 'boolean', 'description': 'Only archived conversations.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'next_cursor': {'type': 'string', 'description': 'Cursor returned by the previous page; omit for the first page.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$defs': {'LinkedInConversationListItemOut': {'type': 'object', 'title': 'LinkedInConversationListItemOut', 'properties': {'is_read': {'type': 'boolean', 'title': 'Is Read', 'default': True}, 'is_muted': {'type': 'boolean', 'title': 'Is Muted', 'default': False}, 'thread_id': {'type': 'string', 'title': 'Thread Id', 'description': 'Same as ``conversation_id`` — kept for backward compatibility.'}, 'is_starred': {'type': 'boolean', 'title': 'Is Starred', 'default': False}, 'is_archived': {'type': 'boolean', 'title': 'Is Archived', 'default': False}, 'is_groupchat': {'type': 'boolean', 'title': 'Is Groupchat', 'default': False}, 'last_read_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Last Read At', 'default': None}, 'unread_count': {'type': 'integer', 'title': 'Unread Count', 'default': 0}, 'conversation_id': {'type': 'string', 'title': 'Conversation Id', 'description': 'LinkedIn messaging thread id (``backendUrn`` → ``messagingThread:<id>``). Use this as ``conversation_linkedin_id`` when fetching messages or replying.'}, 'last_activity_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Last Activity At', 'default': None}, 'last_message_text': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Last Message Text', 'default': None}, 'participant_picture': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Participant Picture', 'default': None}, 'participant_headline': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Participant Headline', 'default': None}, 'participant_lastname': {'type': 'string', 'title': 'Participant Lastname', 'default': ''}, 'participant_firstname': {'type': 'string', 'title': 'Participant Firstname', 'default': ''}, 'recipient_linkedin_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Recipient Linkedin Id', 'default': None, 'description': '``fsd_profile`` id of the other participant (1:1 chats only; ``None`` for group chats). Use this as ``recipient_linkedin_id`` when sending a new message.'}, 'participant_linkedin_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Participant Linkedin Id', 'default': None, 'description': 'Same as ``recipient_linkedin_id`` — kept for backward compatibility.'}}, 'description': 'One conversation row — same core fields Kanbox fills from ``sync_linkedin_conversations_new_format``.', 'additionalProperties': True}}, 'title': 'LinkedInMessengerConversationsPageOut', 'properties': {'count': {'type': 'integer', 'title': 'Count', 'description': 'Requested page size (LinkedIn typically caps at 25).'}, 'items': {'type': 'array', 'items': {'$ref': '#/$defs/LinkedInConversationListItemOut'}, 'title': 'Items'}, 'unread': {'type': 'boolean', 'title': 'Unread', 'description': 'Matches query: unread filter (search query with ``read:false``).'}, 'starred': {'type': 'boolean', 'title': 'Starred', 'description': 'Matches query: starred folder or client filter when combined.'}, 'archived': {'type': 'boolean', 'title': 'Archived', 'description': 'Matches query: archived folder (``category:ARCHIVE``) when not unread.'}, 'next_cursor': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Next Cursor', 'default': None, 'description': 'Pass as ``next_cursor`` for the following page when present.'}}, 'description': 'Paged messenger list (Voyager Messaging GraphQL).', 'additionalProperties': True}
list_jobs
Jobs of this user, newest first, without their items. Filter by account or status (scheduled, running, paused, completed, cancelled). Use to find running or paused jobs before creating a new one on the same account; details and items are in get_job.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {'limit': {'type': 'integer', 'maximum': 200, 'minimum': 1, 'description': 'Maximum number of jobs; default 50.'}, 'status': {'enum': ['scheduled', 'running', 'paused', 'completed', 'cancelled'], 'type': 'string', 'description': 'Only jobs in this status.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'count': {'type': 'integer'}, 'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'integer'}, 'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'integer'}, 'error': {'type': ['object', 'null'], 'additionalProperties': True}, 'result': {'type': ['object', 'null'], 'additionalProperties': True}, 'status': {'enum': ['pending', 'sending', 'done', 'failed', 'skipped', 'cancelled'], 'type': 'string'}, 'attempt': {'type': 'integer'}, 'payload': {'type': 'object', 'additionalProperties': True}, 'position': {'type': 'integer'}, 'executed_at': {'type': ['string', 'null']}, 'scheduled_at': {'type': 'string'}}, 'additionalProperties': True}}, 'label': {'type': ['string', 'null']}, 'action': {'type': 'string'}, 'source': {'type': 'string'}, 'status': {'enum': ['scheduled', 'running', 'paused', 'completed', 'cancelled'], 'type': 'string'}, 'totals': {'type': 'object', 'properties': {'done': {'type': 'integer'}, 'total': {'type': 'integer'}, 'failed': {'type': 'integer'}, 'pending': {'type': 'integer'}, 'skipped': {'type': 'integer'}}, 'additionalProperties': True}, 'window': {'type': 'object', 'properties': {'end': {'type': 'string'}, 'days': {'type': 'array', 'items': {'type': 'integer'}}, 'start': {'type': 'string'}, 'timezone': {'type': 'string'}}, 'additionalProperties': True}, 'resume_at': {'type': ['string', 'null']}, 'account_id': {'type': 'integer'}, 'created_at': {'type': 'string'}, 'started_at': {'type': ['string', 'null']}, 'completed_at': {'type': ['string', 'null']}, 'next_item_at': {'type': ['string', 'null']}, 'pause_reason': {'type': ['string', 'null'], 'description': 'quota_reached | account_disconnected | billing | manual'}}, 'additionalProperties': True}, 'description': 'Jobs, newest first.'}}, 'additionalProperties': True}
list_received_invitations
List pending connection invitations received by the account (with invitation_secret to accept them). Use to triage invitations waiting for the account (then accept_invitation or decline_invitation); for those the account sent use list_sent_invitations.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id'], 'properties': {'count': {'type': 'integer', 'default': 20, 'description': 'Page size (max 100).'}, 'start': {'type': 'integer', 'default': 0, 'description': 'Pagination offset, 0-based.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$defs': {'LinkedInInvitationItemOut': {'type': 'object', 'title': 'LinkedInInvitationItemOut', 'properties': {'message': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Message', 'default': None, 'description': 'Personalised note attached to the invitation.'}, 'picture': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Picture', 'default': None}, 'sent_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Sent At', 'default': None, 'description': 'ISO 8601 UTC timestamp when the invitation was sent.'}, 'headline': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Headline', 'default': None}, 'full_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Full Name', 'default': None}, 'linkedin_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Linkedin Id', 'default': None, 'description': 'Internal LinkedIn member ID of the other party.'}, 'profile_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Profile Url', 'default': None}, 'invitation_id': {'type': 'string', 'title': 'Invitation Id', 'description': 'Invitation URN.'}, 'invitation_secret': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Invitation Secret', 'default': None, 'description': 'Shared secret (only on received invitations, needed to accept).'}, 'linkedin_public_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Linkedin Public Id', 'default': None, 'description': 'Vanity name of the other party.'}}, 'description': 'A single invitation entry (received or sent).', 'additionalProperties': True}}, 'title': 'LinkedInInvitationsPageOut', 'properties': {'count': {'type': 'integer', 'title': 'Count'}, 'start': {'type': 'integer', 'title': 'Start'}, 'total': {'type': 'integer', 'title': 'Total'}, 'invitations': {'type': 'array', 'items': {'$ref': '#/$defs/LinkedInInvitationItemOut'}, 'title': 'Invitations'}}, 'description': 'Paged list of invitations.', 'additionalProperties': True}
list_scheduled_posts
List scheduled LinkedIn posts for an account, paged. Returns post URNs, text content, and scheduled publish times. Use to see what is queued to publish; published posts are not listed here, use list_user_posts for those.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id'], 'properties': {'count': {'type': 'integer', 'default': 10, 'description': 'Page size.'}, 'start': {'type': 'integer', 'default': 0, 'description': 'Pagination offset, 0-based.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$defs': {'LinkedInScheduledPostOut': {'type': 'object', 'title': 'LinkedInScheduledPostOut', 'properties': {'post_urn': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Post Urn', 'default': None, 'description': 'Post URN (e.g. urn:li:ugcPost:…).'}, 'post_text': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Post Text', 'default': None, 'description': 'Text content of the post.'}, 'scheduled_at': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Scheduled At', 'default': None, 'description': 'Scheduled publish time as Unix timestamp in milliseconds.'}, 'scheduled_at_label': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Scheduled At Label', 'default': None, 'description': "Human-readable scheduled time (e.g. 'Publication le mer. 20 mai à 14:30')."}}, 'description': 'A scheduled post returned by the Voyager SharePreviews API.', 'additionalProperties': True}}, 'title': 'LinkedInScheduledPostsPageOut', 'properties': {'count': {'type': 'integer', 'title': 'Count'}, 'posts': {'type': 'array', 'items': {'$ref': '#/$defs/LinkedInScheduledPostOut'}, 'title': 'Posts'}, 'start': {'type': 'integer', 'title': 'Start'}, 'total': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Total', 'default': None, 'description': 'Total number of scheduled posts.'}}, 'description': 'Paged list of scheduled posts.', 'additionalProperties': True}
list_sent_invitations
List pending connection invitations sent by the account that have not yet been accepted. Use to find invitations the account sent that are still pending (then withdraw_invitation if stale); for received ones use list_received_invitations.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id'], 'properties': {'count': {'type': 'integer', 'default': 20, 'description': 'Page size (max 100).'}, 'start': {'type': 'integer', 'default': 0, 'description': 'Pagination offset, 0-based.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$defs': {'LinkedInInvitationItemOut': {'type': 'object', 'title': 'LinkedInInvitationItemOut', 'properties': {'message': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Message', 'default': None, 'description': 'Personalised note attached to the invitation.'}, 'picture': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Picture', 'default': None}, 'sent_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Sent At', 'default': None, 'description': 'ISO 8601 UTC timestamp when the invitation was sent.'}, 'headline': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Headline', 'default': None}, 'full_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Full Name', 'default': None}, 'linkedin_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Linkedin Id', 'default': None, 'description': 'Internal LinkedIn member ID of the other party.'}, 'profile_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Profile Url', 'default': None}, 'invitation_id': {'type': 'string', 'title': 'Invitation Id', 'description': 'Invitation URN.'}, 'invitation_secret': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Invitation Secret', 'default': None, 'description': 'Shared secret (only on received invitations, needed to accept).'}, 'linkedin_public_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Linkedin Public Id', 'default': None, 'description': 'Vanity name of the other party.'}}, 'description': 'A single invitation entry (received or sent).', 'additionalProperties': True}}, 'title': 'LinkedInInvitationsPageOut', 'properties': {'count': {'type': 'integer', 'title': 'Count'}, 'start': {'type': 'integer', 'title': 'Start'}, 'total': {'type': 'integer', 'title': 'Total'}, 'invitations': {'type': 'array', 'items': {'$ref': '#/$defs/LinkedInInvitationItemOut'}, 'title': 'Invitations'}}, 'description': 'Paged list of invitations.', 'additionalProperties': True}
list_user_posts
Get recent posts published by a LinkedIn member (via profileUpdatesV2). Paginate with start/count. Use to read what a member published recently (their content, not who engaged); to get likers and commenters of a post use scrape_post. Read-only.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'linkedin_id_or_url'], 'properties': {'count': {'type': 'integer', 'default': 10, 'description': 'Number of posts (max 50).'}, 'start': {'type': 'integer', 'default': 0, 'description': 'Pagination offset.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'linkedin_id_or_url': {'type': 'string', 'description': 'LinkedIn member ID, vanity name, or profile URL.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$defs': {'LinkedInUserPostOut': {'type': 'object', 'title': 'LinkedInUserPostOut', 'properties': {'post_url': {'type': 'string', 'title': 'Post Url', 'description': 'Public LinkedIn URL of the post.'}, 'post_urn': {'type': 'string', 'title': 'Post Urn'}, 'post_text': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Post Text', 'default': None, 'description': 'Post content text.'}, 'total_likes': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Total Likes', 'default': None}, 'total_comments': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Total Comments', 'default': None}, 'published_at_relative': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Published At Relative', 'default': None, 'description': "Human-readable relative publish time (e.g. '3 days ago')."}}, 'description': 'A post published by a LinkedIn member.', 'additionalProperties': True}}, 'title': 'LinkedInUserPostsOut', 'properties': {'posts': {'type': 'array', 'items': {'$ref': '#/$defs/LinkedInUserPostOut'}, 'title': 'Posts'}, 'total_posts': {'type': 'integer', 'title': 'Total Posts'}}, 'description': 'Recent posts published by a LinkedIn member.', 'additionalProperties': True}
list_webhook_endpoints
List the webhooks registered for this user: the URLs Reach calls when a conversation gets a new message (message.received), the account gains a 1st-degree connection (connection.new), an account changes connection state (account.status_changed) or a daily quota is close to or at its limit (quota.threshold_reached, quota.reached). Read-only. Use to see where Reach already posts events and which events; also returns the event catalogue.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'endpoints': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'integer'}, 'url': {'type': 'string'}, 'events': {'type': 'array', 'items': {'type': 'string'}}, 'is_active': {'type': 'boolean'}, 'created_at': {'type': 'string'}, 'account_ids': {'type': ['array', 'null'], 'items': {'type': 'integer'}}, 'description': {'type': 'string'}, 'disabled_reason': {'type': 'string'}, 'last_delivery_at': {'type': 'string'}, 'consecutive_failures': {'type': 'integer'}}, 'additionalProperties': True}}, 'event_types': {'type': 'object', 'additionalProperties': True}}, 'additionalProperties': True}
pause_job
Pause a job: nothing more runs until resume_job is called. Reach also pauses a job by itself when a quota is reached or the account disconnects, and resumes those on its own. Use to hold a job the user is unsure about; resume_job re-plans it. Reach pauses on quota or disconnection by itself.
Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['job_id'], 'properties': {'job_id': {'type': 'integer', 'description': 'Job id, as returned by create_job or list_jobs.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'id': {'type': 'integer'}, 'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'integer'}, 'error': {'type': ['object', 'null'], 'additionalProperties': True}, 'result': {'type': ['object', 'null'], 'additionalProperties': True}, 'status': {'enum': ['pending', 'sending', 'done', 'failed', 'skipped', 'cancelled'], 'type': 'string'}, 'attempt': {'type': 'integer'}, 'payload': {'type': 'object', 'additionalProperties': True}, 'position': {'type': 'integer'}, 'executed_at': {'type': ['string', 'null']}, 'scheduled_at': {'type': 'string'}}, 'additionalProperties': True}}, 'label': {'type': ['string', 'null']}, 'action': {'type': 'string'}, 'source': {'type': 'string'}, 'status': {'enum': ['scheduled', 'running', 'paused', 'completed', 'cancelled'], 'type': 'string'}, 'totals': {'type': 'object', 'properties': {'done': {'type': 'integer'}, 'total': {'type': 'integer'}, 'failed': {'type': 'integer'}, 'pending': {'type': 'integer'}, 'skipped': {'type': 'integer'}}, 'additionalProperties': True}, 'window': {'type': 'object', 'properties': {'end': {'type': 'string'}, 'days': {'type': 'array', 'items': {'type': 'integer'}}, 'start': {'type': 'string'}, 'timezone': {'type': 'string'}}, 'additionalProperties': True}, 'resume_at': {'type': ['string', 'null']}, 'account_id': {'type': 'integer'}, 'created_at': {'type': 'string'}, 'started_at': {'type': ['string', 'null']}, 'completed_at': {'type': ['string', 'null']}, 'next_item_at': {'type': ['string', 'null']}, 'pause_reason': {'type': ['string', 'null'], 'description': 'quota_reached | account_disconnected | billing | manual'}}, 'additionalProperties': True}
profile_viewers
Get the list of members who recently viewed the account's profile (requires LinkedIn Premium). Use for the 'who viewed my profile' list (needs LinkedIn Premium; empty or an error otherwise). Read-only.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id'], 'properties': {'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'total': {'type': 'integer'}, 'viewers': {'type': 'array', 'items': {'type': 'object', 'properties': {'headline': {'type': 'string'}, 'full_name': {'type': 'string'}, 'linkedin_id': {'type': 'string'}, 'profile_url': {'type': 'string'}, 'linkedin_public_id': {'type': 'string'}}, 'additionalProperties': True}}}, 'additionalProperties': True}
reach_playbooks
START HERE. Return the catalogue of ready-made LinkedIn playbooks — what this server can actually accomplish, as named workflows rather than raw endpoints. Each entry carries its tool sequence, its prerequisites, and the full instructions to run it. Call this first when the user asks what you can do with their LinkedIn account, or when a request is vague. Pass playbook_id to get one playbook's instructions and then follow them. Use first for a vague request or 'what can you do'; not needed when the user names a precise action.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'properties': {'playbook_id': {'type': 'string', 'description': 'Id of one playbook from the catalogue, to get its full instructions.'}, 'include_instructions': {'type': 'boolean', 'description': 'Also return the full instruction text of every playbook (longer output).'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'playbook': {'type': 'object', 'additionalProperties': True}, 'playbooks': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'how_to_use': {'type': 'string'}}, 'additionalProperties': True}
react_message
Add or remove an emoji reaction on a LinkedIn message. Set react=false to remove the reaction. message_urn is the message_urn returned by list_conversation_messages (e.g. urn:li:msg_message:(urn:li:fsd_profile:…,123456789)). emoji is a Unicode emoji character (e.g. 👍, ❤️). Pass conversation_linkedin_id to also mark the conversation as read. Use for an emoji reaction on one message inside a thread (message_urn from list_conversation_messages); to reply in words use send_message.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'message_urn', 'emoji'], 'properties': {'emoji': {'type': 'string', 'description': 'Unicode emoji character (e.g. 👍, ❤️).'}, 'react': {'type': 'boolean', 'default': True, 'description': 'True to add the reaction, False to remove it.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'message_urn': {'type': 'string', 'description': 'Full message URN to react to.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}, 'conversation_linkedin_id': {'type': 'string', 'description': 'Conversation ID — when provided the conversation is marked as read.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'emoji': {'type': 'string'}, 'reacted': {'type': 'boolean'}}, 'additionalProperties': True}
remove_connection
Remove an existing 1st-degree connection. Irreversible on LinkedIn (the person is not notified); confirm with the user. Not for pending invitations, see withdraw_invitation.
Destructif Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'linkedin_id_or_url'], 'properties': {'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}, 'linkedin_id_or_url': {'type': 'string', 'description': 'The LinkedIn member: profile URL, vanity name (the part after /in/), Sales Navigator URL, or internal member id.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'removed': {'type': 'boolean'}}, 'additionalProperties': True}
reply_comment
Post a reply to an existing LinkedIn comment. Pass the comment_id (URN) returned by scrape_post as comment_urn — it is used directly as threadUrn. Use to answer a specific comment (comment_urn from scrape_my_posts or scrape_post); for a new comment on the post itself use comment_post. Counts against the daily comments quota.
Accès externe
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'comment_urn', 'text'], 'properties': {'text': {'type': 'string', 'description': 'Reply text.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'comment_urn': {'type': 'string', 'description': 'URN of the comment to reply to (comment_id from scrape-post).'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'replied': {'type': 'boolean'}}, 'additionalProperties': True}
resume_job
Resume a paused job. Its pending items are re-planned from now, inside the window and the remaining quota. Use after a manual pause; jobs paused for quota or disconnection resume on their own and need no call.
Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['job_id'], 'properties': {'job_id': {'type': 'integer', 'description': 'Job id, as returned by create_job or list_jobs.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'id': {'type': 'integer'}, 'items': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'integer'}, 'error': {'type': ['object', 'null'], 'additionalProperties': True}, 'result': {'type': ['object', 'null'], 'additionalProperties': True}, 'status': {'enum': ['pending', 'sending', 'done', 'failed', 'skipped', 'cancelled'], 'type': 'string'}, 'attempt': {'type': 'integer'}, 'payload': {'type': 'object', 'additionalProperties': True}, 'position': {'type': 'integer'}, 'executed_at': {'type': ['string', 'null']}, 'scheduled_at': {'type': 'string'}}, 'additionalProperties': True}}, 'label': {'type': ['string', 'null']}, 'action': {'type': 'string'}, 'source': {'type': 'string'}, 'status': {'enum': ['scheduled', 'running', 'paused', 'completed', 'cancelled'], 'type': 'string'}, 'totals': {'type': 'object', 'properties': {'done': {'type': 'integer'}, 'total': {'type': 'integer'}, 'failed': {'type': 'integer'}, 'pending': {'type': 'integer'}, 'skipped': {'type': 'integer'}}, 'additionalProperties': True}, 'window': {'type': 'object', 'properties': {'end': {'type': 'string'}, 'days': {'type': 'array', 'items': {'type': 'integer'}}, 'start': {'type': 'string'}, 'timezone': {'type': 'string'}}, 'additionalProperties': True}, 'resume_at': {'type': ['string', 'null']}, 'account_id': {'type': 'integer'}, 'created_at': {'type': 'string'}, 'started_at': {'type': ['string', 'null']}, 'completed_at': {'type': ['string', 'null']}, 'next_item_at': {'type': ['string', 'null']}, 'pause_reason': {'type': ['string', 'null'], 'description': 'quota_reached | account_disconnected | billing | manual'}}, 'additionalProperties': True}
salesnav_build_search_url
Build a Sales Navigator people-search URL from structured lead-search filters, using as many filters as the request implies. RESOLUTION: `industry` accepts numeric ids OR names (auto-resolved via the taxonomy); `region` accepts numeric REGION ids OR location names (auto-resolved via geo typeahead — needs account_id). If a name is ambiguous, the tool returns {needs_disambiguation:[...]} with candidates instead of a URL — re-call with the chosen id. BOOLEAN: `keywords` and `current_title` accept LinkedIn boolean syntax (AND/OR/NOT, quotes, parentheses). EXCLUSION: any list value may be an object {id|name, exclude:true}. Set execute=true to also run the first page of results (reuses the live search) and return leads. Use after resolving the ids to get the Sales Navigator search URL, then scrape_search on it. Builds a URL only, no LinkedIn call.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': [], 'properties': {'count': {'type': 'integer', 'default': 25, 'maximum': 25, 'minimum': 1, 'description': 'Page size.'}, 'group': {'type': 'array', 'items': {}, 'description': 'LinkedIn groups: names or ids.'}, 'start': {'type': 'integer', 'default': 0, 'description': 'Pagination offset, 0-based.'}, 'region': {'type': 'array', 'items': {}, 'description': 'REGION ids (use salesnav_typeahead type=geo) or location names to auto-resolve. Items may be {id|name, exclude}.'}, 'school': {'type': 'array', 'items': {}, 'description': 'Resolved SCHOOL ids.'}, 'execute': {'type': 'boolean', 'default': False, 'description': 'Also run the first results page and return leads.'}, 'function': {'type': 'array', 'items': {}, 'description': 'FUNCTION 1-26: 1 Accounting 4 Business Dev 8 Engineering 10 Finance 12 HR 13 IT 15 Marketing 18 Operations 19 Product 25 Sales 26 Support (etc.).'}, 'industry': {'type': 'array', 'items': {}, 'description': 'Industry ids (use salesnav_resolve_industry) or names to auto-resolve. Items may be {id|name, exclude}.'}, 'keywords': {'type': 'string', 'description': 'Global keyword search; supports boolean operators.'}, 'last_name': {'type': 'string', 'description': 'Last name filter.'}, 'account_id': {'type': 'integer', 'description': 'Required when passing location/industry NAMES or execute=true.'}, 'first_name': {'type': 'string', 'description': 'First name filter.'}, 'past_title': {'type': 'string', 'description': 'Boolean search on past job titles.'}, 'company_type': {'type': 'array', 'items': {}, 'description': 'COMPANY_TYPE: C=Public P=Privately Held N=Non Profit D=Educational S=Partnership E=Self-Employed O=Self Owned G=Government.'}, 'past_company': {'type': 'array', 'items': {}, 'description': 'Past companies: names or ids; add exclude:true to exclude one.'}, 'relationship': {'type': 'array', 'items': {}, 'description': 'RELATIONSHIP: F=1st S=2nd A=Group members O=3rd+.'}, 'current_title': {'type': 'string', 'description': 'Current job title; free text + boolean (e.g. \'(CTO OR "VP Engineering") NOT interim\').'}, 'past_colleague': {'type': 'boolean', 'description': 'Only past colleagues.'}, 'current_company': {'type': 'array', 'items': {}, 'description': 'Resolved COMPANY ids (salesnav_typeahead type=company).'}, 'seniority_level': {'type': 'array', 'items': {}, 'description': 'SENIORITY: 320 Owner/Partner 310 CXO 300 VP 220 Director 210 Exp. Manager 200 Entry Manager 130 Strategic 120 Senior 110 Entry 100 Trainee.'}, 'profile_language': {'type': 'array', 'items': {}, 'description': 'ISO 639-1 codes: en fr es de it pt nl ... '}, 'company_headcount': {'type': 'array', 'items': {}, 'description': 'COMPANY_HEADCOUNT codes: A=Self-employed B=1-10 C=11-50 D=51-200 E=201-500 F=501-1000 G=1001-5000 H=5001-10000 I=10001+.'}, 'posted_on_linkedin': {'type': 'boolean', 'description': 'Only people who posted on LinkedIn in the last 30 days.'}, 'viewed_your_profile': {'type': 'boolean', 'description': 'Only people who viewed your profile recently.'}, 'years_of_experience': {'type': 'array', 'items': {}, 'description': '1=<1y 2=1-2y 3=3-5y 4=6-10y 5=>10y.'}, 'follows_your_company': {'type': 'boolean', 'description': 'Only people who follow your company page.'}, 'recently_changed_jobs': {'type': 'boolean', 'description': 'Only people who changed jobs in the last 90 days.'}, 'with_shared_experiences': {'type': 'boolean', 'description': 'Only people with shared experiences (school, company, group).'}, 'years_at_current_company': {'type': 'array', 'items': {}, 'description': '1=<1y 2=1-2y 3=3-5y 4=6-10y 5=>10y.'}, 'years_in_current_position': {'type': 'array', 'items': {}, 'description': '1=<1y 2=1-2y 3=3-5y 4=6-10y 5=>10y.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'Sales Navigator people-search URL'}, 'items': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'First page of results when execute=true'}, 'query': {'type': 'string'}, 'start': {'type': 'integer'}, 'total': {'type': 'integer'}, 'applied_filters': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, 'needs_disambiguation': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'Present instead of url when a name matched several ids'}}, 'additionalProperties': True}
salesnav_list_messaging_threads
List Sales Navigator messaging threads (salesApiMessagingThreads). Requires the account to have a Sales Navigator subscription (has_sales_nav). Returns threads with messages and participant profiles. Paginate by passing next_page_starts_at from the previous response as page_starts_at. Use only when the account has Sales Navigator and the user asks about that inbox; the classic inbox is list_conversations.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id'], 'properties': {'count': {'type': 'integer', 'default': 20, 'maximum': 50, 'minimum': 1, 'description': 'Threads per page.'}, 'filter': {'enum': ['INBOX', 'ARCHIVE', 'UNREAD', 'INMAIL_PENDING', 'INMAIL_ACCEPTED', 'INMAIL_DECLINED'], 'type': 'string', 'default': 'INBOX', 'description': 'Conversation folder.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'page_starts_at': {'type': 'integer', 'description': 'Pagination cursor — next_page_starts_at from the previous response.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$defs': {'SalesNavThreadOut': {'type': 'object', 'title': 'SalesNavThreadOut', 'properties': {'id': {'type': 'string', 'title': 'Id', 'description': 'Sales Navigator thread ID.'}, 'archived': {'type': 'boolean', 'title': 'Archived'}, 'messages': {'type': 'array', 'items': {'$ref': '#/$defs/SalesNavThreadMessageOut'}, 'title': 'Messages'}, 'participants': {'type': 'array', 'items': {'$ref': '#/$defs/SalesNavProfileOut'}, 'title': 'Participants'}, 'restrictions': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Restrictions'}, 'unread_count': {'type': 'integer', 'title': 'Unread Count'}, 'next_page_starts_at': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Page Starts At', 'default': None, 'description': 'Unix ms timestamp — value from the oldest thread, used as page_starts_at cursor.'}, 'total_message_count': {'type': 'integer', 'title': 'Total Message Count'}}, 'additionalProperties': True}, 'SalesNavProfileOut': {'type': 'object', 'title': 'SalesNavProfileOut', 'properties': {'degree': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Degree', 'default': None}, 'fullname': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Fullname', 'default': None}, 'lastname': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Lastname', 'default': None}, 'firstname': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Firstname', 'default': None}, 'entity_urn': {'type': 'string', 'title': 'Entity Urn', 'description': 'Full fs_salesProfile URN.'}, 'linkedin_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Linkedin Id', 'default': None, 'description': 'LinkedIn member ID (from objectUrn).'}, 'salesnav_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Salesnav Id', 'default': None, 'description': 'Sales Navigator ID (first segment of the URN).'}, 'inmail_restriction': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Inmail Restriction', 'default': None}, 'profile_picture_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Profile Picture Url', 'default': None}}, 'additionalProperties': True}, 'SalesNavAttachmentOut': {'type': 'object', 'title': 'SalesNavAttachmentOut', 'properties': {'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Name', 'default': None}, 'size': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Size', 'default': None}, 'asset_urn': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Asset Urn', 'default': None}, 'media_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Media Type', 'default': None}, 'download_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Download Url', 'default': None}}, 'additionalProperties': True}, 'SalesNavThreadMessageOut': {'type': 'object', 'title': 'SalesNavThreadMessageOut', 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'body': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Body', 'default': None}, 'type': {'type': 'string', 'title': 'Type', 'description': 'Message type: INMAIL, MESSAGE, INMAIL_ACCEPT, INMAIL_REPLY, etc.'}, 'subject': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Subject', 'default': None}, 'author_urn': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Author Urn', 'default': None, 'description': 'Full fs_salesProfile URN of the author.'}, 'attachments': {'type': 'array', 'items': {'$ref': '#/$defs/SalesNavAttachmentOut'}, 'title': 'Attachments'}, 'delivered_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Delivered At', 'default': None}, 'author_salesnav_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Author Salesnav Id', 'default': None, 'description': 'Sales Navigator ID extracted from author URN.'}}, 'additionalProperties': True}}, 'title': 'SalesNavThreadsPageOut', 'properties': {'count': {'type': 'integer', 'title': 'Count'}, 'items': {'type': 'array', 'items': {'$ref': '#/$defs/SalesNavThreadOut'}, 'title': 'Items'}, 'total': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Total', 'default': None, 'description': 'Total number of threads matching the filter.'}, 'filter': {'type': 'string', 'title': 'Filter', 'description': 'Filter used: INBOX or ARCHIVE.'}, 'page_starts_at': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Page Starts At', 'default': None, 'description': 'Cursor passed in the request (None for first page).'}, 'next_page_starts_at': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Page Starts At', 'default': None, 'description': 'Pass as page_starts_at to fetch the next (older) page. None when there are no more results.'}}, 'additionalProperties': True}
salesnav_list_thread_messages
Fetch a Sales Navigator thread with all its messages and participant profiles (salesApiMessagingThreads/{id}). Requires a Sales Navigator subscription. Use the thread id returned by salesnav_list_messaging_threads. message_count controls how many (most recent) messages are returned; compare with total_message_count in the response to know if more exist. Use to read one Sales Navigator thread (thread id from salesnav_list_messaging_threads); classic inbox threads use list_conversation_messages.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'thread_id'], 'properties': {'thread_id': {'type': 'string', 'description': 'Sales Navigator thread ID.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'message_count': {'type': 'integer', 'default': 20, 'maximum': 100, 'minimum': 1, 'description': 'Number of most-recent messages to return.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$defs': {'SalesNavProfileOut': {'type': 'object', 'title': 'SalesNavProfileOut', 'properties': {'degree': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Degree', 'default': None}, 'fullname': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Fullname', 'default': None}, 'lastname': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Lastname', 'default': None}, 'firstname': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Firstname', 'default': None}, 'entity_urn': {'type': 'string', 'title': 'Entity Urn', 'description': 'Full fs_salesProfile URN.'}, 'linkedin_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Linkedin Id', 'default': None, 'description': 'LinkedIn member ID (from objectUrn).'}, 'salesnav_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Salesnav Id', 'default': None, 'description': 'Sales Navigator ID (first segment of the URN).'}, 'inmail_restriction': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Inmail Restriction', 'default': None}, 'profile_picture_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Profile Picture Url', 'default': None}}, 'additionalProperties': True}, 'SalesNavAttachmentOut': {'type': 'object', 'title': 'SalesNavAttachmentOut', 'properties': {'name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Name', 'default': None}, 'size': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Size', 'default': None}, 'asset_urn': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Asset Urn', 'default': None}, 'media_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Media Type', 'default': None}, 'download_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Download Url', 'default': None}}, 'additionalProperties': True}, 'SalesNavThreadMessageOut': {'type': 'object', 'title': 'SalesNavThreadMessageOut', 'properties': {'id': {'type': 'string', 'title': 'Id'}, 'body': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Body', 'default': None}, 'type': {'type': 'string', 'title': 'Type', 'description': 'Message type: INMAIL, MESSAGE, INMAIL_ACCEPT, INMAIL_REPLY, etc.'}, 'subject': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Subject', 'default': None}, 'author_urn': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Author Urn', 'default': None, 'description': 'Full fs_salesProfile URN of the author.'}, 'attachments': {'type': 'array', 'items': {'$ref': '#/$defs/SalesNavAttachmentOut'}, 'title': 'Attachments'}, 'delivered_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Delivered At', 'default': None}, 'author_salesnav_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Author Salesnav Id', 'default': None, 'description': 'Sales Navigator ID extracted from author URN.'}}, 'additionalProperties': True}}, 'title': 'SalesNavThreadOut', 'properties': {'id': {'type': 'string', 'title': 'Id', 'description': 'Sales Navigator thread ID.'}, 'archived': {'type': 'boolean', 'title': 'Archived'}, 'messages': {'type': 'array', 'items': {'$ref': '#/$defs/SalesNavThreadMessageOut'}, 'title': 'Messages'}, 'participants': {'type': 'array', 'items': {'$ref': '#/$defs/SalesNavProfileOut'}, 'title': 'Participants'}, 'restrictions': {'type': 'array', 'items': {'type': 'string'}, 'title': 'Restrictions'}, 'unread_count': {'type': 'integer', 'title': 'Unread Count'}, 'next_page_starts_at': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Page Starts At', 'default': None, 'description': 'Unix ms timestamp — value from the oldest thread, used as page_starts_at cursor.'}, 'total_message_count': {'type': 'integer', 'title': 'Total Message Count'}}, 'additionalProperties': True}
salesnav_resolve_industry
Resolve an industry name (any language) to its LinkedIn Industry Code(s) using the bundled Industry Codes V2 taxonomy (offline, no LinkedIn call). Returns ranked candidates with id, label and hierarchy path. Use the returned id(s) in salesnav_build_search_url's `industry` filter. Call once per industry term; if several candidates look plausible, pick by the hierarchy path. Use for industries only (offline taxonomy, any language, no LinkedIn call); for locations, companies, schools and titles use salesnav_typeahead.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['query'], 'properties': {'limit': {'type': 'integer', 'default': 8, 'maximum': 25, 'minimum': 1, 'description': 'Maximum number of rows to return.'}, 'query': {'type': 'string', 'description': "Industry name to look up, e.g. 'software', 'banque', 'real estate'."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'query': {'type': 'string'}, 'candidates': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'label': {'type': 'string'}, 'score': {'type': 'number'}, 'hierarchy': {'type': 'string'}}, 'additionalProperties': True}}}, 'additionalProperties': True}
salesnav_send_message
Send a message in an existing Sales Navigator thread (salesApiMessageActions). Requires the account to have a Sales Navigator subscription. Use the thread id returned by salesnav_list_messaging_threads. Use only to reply inside an existing Sales Navigator thread; everything else (new messages, classic inbox) goes through send_message. Counts against the daily messages quota.
Accès externe
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'thread_id', 'text'], 'properties': {'text': {'type': 'string', 'description': 'Message body (plain text).'}, 'thread_id': {'type': 'string', 'description': 'Sales Navigator thread ID.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'copy_to_crm': {'type': 'boolean', 'default': False, 'description': 'Copy message to CRM.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'title': 'SalesNavSendMessageOut', 'properties': {'success': {'type': 'boolean', 'title': 'Success'}, 'thread_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Thread Id', 'default': None}, 'message_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Message Id', 'default': None}, 'status_code': {'type': 'integer', 'title': 'Status Code'}}, 'additionalProperties': True}
salesnav_typeahead
Live Sales Navigator autocomplete for facets whose ids are dynamic. Use type='geo' to resolve a location to its REGION id (the only reliable way — LinkedIn region ids are not enumerable), and type='company' / 'school' / 'title' for those entity facets. Returns [{id, displayValue, headline}]. Feed the chosen id into salesnav_build_search_url (region / current_company / school / current_title). Requires a connected account. Use for facets whose ids are dynamic (geo, company, school, title…); for industries use salesnav_resolve_industry. One LinkedIn call per lookup.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'query'], 'properties': {'type': {'enum': ['geo', 'company', 'school', 'title', 'group', 'industry'], 'type': 'string', 'default': 'geo', 'description': "Facet to autocomplete. 'geo' -> region ids."}, 'count': {'type': 'integer', 'default': 10, 'maximum': 25, 'minimum': 1, 'description': 'Page size.'}, 'query': {'type': 'string', 'description': "Text to autocomplete, e.g. 'Paris', 'Google', 'HEC'."}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'type': {'type': 'string'}, 'query': {'type': 'string'}, 'results': {'type': 'array', 'items': {'type': 'object', 'properties': {'id': {'type': 'string'}, 'headline': {'type': 'string'}, 'displayValue': {'type': 'string'}}, 'additionalProperties': True}}}, 'additionalProperties': True}
scrape_my_posts
Fetch likers and/or commenters for the account's own recent posts. since_hours limits to posts published in the last N hours (default 24). Use for engagement on the account's own posts (likers, commenters, comment URNs for reply_comment); for someone else's post use scrape_post.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id'], 'properties': {'liked': {'type': 'boolean', 'default': False, 'description': 'Include the people who liked.'}, 'comments': {'type': 'boolean', 'default': False, 'description': 'Include the people who commented, with their comment text.'}, 'max_posts': {'type': 'integer', 'default': 10, 'description': 'Max posts to process (max 20).'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'since_hours': {'type': 'integer', 'default': 24, 'description': 'Only posts from the last N hours (max 720).'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$defs': {'LinkedInMyPostOut': {'type': 'object', 'title': 'LinkedInMyPostOut', 'properties': {'items': {'type': 'array', 'items': {'$ref': '#/$defs/LinkedInPostEngagerOut'}, 'title': 'Items'}, 'post_url': {'type': 'string', 'title': 'Post Url', 'description': 'Public LinkedIn URL of the post.'}, 'post_urn': {'type': 'string', 'title': 'Post Urn'}, 'post_text': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Post Text', 'default': None, 'description': 'Excerpt of the post text (from the notification card).'}, 'total_likes': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Total Likes', 'default': None}, 'published_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Published At', 'default': None, 'description': 'ISO 8601 UTC timestamp of the post.'}, 'total_comments': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Total Comments', 'default': None}}, 'description': "One of the account owner's posts with its engagers.", 'additionalProperties': True}, 'LinkedInPostEngagerOut': {'type': 'object', 'title': 'LinkedInPostEngagerOut', 'properties': {'type': {'type': 'string', 'title': 'Type', 'description': '``like`` or ``comment``.'}, 'picture': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Picture', 'default': None}, 'headline': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Headline', 'default': None}, 'lastname': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Lastname', 'default': None}, 'firstname': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Firstname', 'default': None}, 'full_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Full Name', 'default': None}, 'comment_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Comment Id', 'default': None, 'description': 'Full comment URN (comments only).'}, 'created_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Created At', 'default': None, 'description': 'ISO 8601 UTC timestamp of the like or comment.'}, 'linkedin_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Linkedin Id', 'default': None}, 'comment_text': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Comment Text', 'default': None}, 'linkedin_public_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Linkedin Public Id', 'default': None}, 'reply_to_comment_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reply To Comment Id', 'default': None, 'description': 'URN of the parent comment when this item is a reply.'}}, 'description': 'A person who liked or commented on a LinkedIn post.', 'additionalProperties': True}}, 'title': 'LinkedInScrapeMyPostsOut', 'properties': {'posts': {'type': 'array', 'items': {'$ref': '#/$defs/LinkedInMyPostOut'}, 'title': 'Posts'}, 'total_posts': {'type': 'integer', 'title': 'Total Posts'}}, 'description': 'Engagers across recent posts published by the connected account.', 'additionalProperties': True}
scrape_post
Fetch likers and/or commenters for a LinkedIn post. Pass the full post URL or slug. Set liked=true and/or comments=true. Use to get the people who liked or commented on one post you have the URL of; for the account's own recent posts use scrape_my_posts. Counts against the imports quota.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'post_id_or_url'], 'properties': {'liked': {'type': 'boolean', 'default': False, 'description': 'Include likers.'}, 'comments': {'type': 'boolean', 'default': False, 'description': 'Include commenters.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'post_id_or_url': {'type': 'string', 'description': 'LinkedIn post URL or slug.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$defs': {'LinkedInPostEngagerOut': {'type': 'object', 'title': 'LinkedInPostEngagerOut', 'properties': {'type': {'type': 'string', 'title': 'Type', 'description': '``like`` or ``comment``.'}, 'picture': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Picture', 'default': None}, 'headline': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Headline', 'default': None}, 'lastname': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Lastname', 'default': None}, 'firstname': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Firstname', 'default': None}, 'full_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Full Name', 'default': None}, 'comment_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Comment Id', 'default': None, 'description': 'Full comment URN (comments only).'}, 'created_at': {'anyOf': [{'type': 'string', 'format': 'date-time'}, {'type': 'null'}], 'title': 'Created At', 'default': None, 'description': 'ISO 8601 UTC timestamp of the like or comment.'}, 'linkedin_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Linkedin Id', 'default': None}, 'comment_text': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Comment Text', 'default': None}, 'linkedin_public_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Linkedin Public Id', 'default': None}, 'reply_to_comment_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Reply To Comment Id', 'default': None, 'description': 'URN of the parent comment when this item is a reply.'}}, 'description': 'A person who liked or commented on a LinkedIn post.', 'additionalProperties': True}}, 'title': 'LinkedInScrapePostOut', 'properties': {'items': {'type': 'array', 'items': {'$ref': '#/$defs/LinkedInPostEngagerOut'}, 'title': 'Items'}, 'post_id': {'type': 'string', 'title': 'Post Id'}, 'total_likes': {'type': 'integer', 'title': 'Total Likes', 'default': 0}, 'total_comments': {'type': 'integer', 'title': 'Total Comments', 'default': 0}}, 'description': 'Aggregated likers and commenters for a LinkedIn post.', 'additionalProperties': True}
scrape_profile
Fetch a complete LinkedIn profile (name, headline, company, experience, skills…). Pass a LinkedIn URL, vanity name, internal member ID, or Sales Navigator lead URL. Uses SalesNav API when available for richer data. Use to read one person in depth (experience, skills, company); costly, one LinkedIn call per profile. For a list of people use scrape_search; to just check the relationship use get_invitation_status.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'linkedin_id_or_url'], 'properties': {'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'linkedin_id_or_url': {'type': 'string', 'description': 'LinkedIn profile URL, vanity name, Sales Navigator URL, or internal member ID.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'title': 'LinkedInScrapedUserOut', 'properties': {'job': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Job', 'default': None, 'description': 'Current job title.'}, 'degree': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Degree', 'default': None, 'description': 'Network degree: 1, 2, or 3.'}, 'skills': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Skills', 'default': None}, 'company': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company', 'default': None, 'description': 'Current company name.'}, 'picture': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Picture', 'default': None, 'description': 'Profile picture URL.'}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Summary', 'default': None}, 'headline': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Headline', 'default': None}, 'industry': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Industry', 'default': None}, 'lastname': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Lastname', 'default': None}, 'location': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Location', 'default': None}, 'firstname': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Firstname', 'default': None}, 'full_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Full Name', 'default': None, 'description': 'Full name as returned by LinkedIn (standard search only).'}, 'languages': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Languages', 'default': None}, 'company_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Id', 'default': None, 'description': 'LinkedIn company ID.'}, 'is_premium': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Is Premium', 'default': None}, 'connections': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Connections', 'default': None}, 'linkedin_id': {'type': 'string', 'title': 'Linkedin Id', 'description': 'Profile ID (fsd_profile or ts_profile suffix).'}, 'profile_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Profile Url', 'default': None, 'description': 'Public LinkedIn profile URL.'}, 'company_logo': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Logo', 'default': None}, 'company_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Type', 'default': None}, 'year_company': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Year Company', 'default': None, 'description': 'Tenure at current company (years).'}, 'is_opentowork': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Is Opentowork', 'default': None}, 'month_company': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Month Company', 'default': None, 'description': 'Tenure at current company (months).'}, 'year_position': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Year Position', 'default': None, 'description': 'Tenure at current position (years).'}, 'month_position': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Month Position', 'default': None, 'description': 'Tenure at current position (months).'}, 'company_website': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Website', 'default': None}, 'is_open_profile': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Is Open Profile', 'default': None}, 'job_description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Job Description', 'default': None}, 'company_industry': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Industry', 'default': None}, 'company_linkedin': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Linkedin', 'default': None, 'description': 'LinkedIn company page URL.'}, 'company_location': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Location', 'default': None}, 'linkedin_plain_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Linkedin Plain Id', 'default': None, 'description': 'Numeric member ID (objectUrn suffix).'}, 'linkedin_public_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Linkedin Public Id', 'default': None, 'description': 'Vanity URL slug (/in/<slug>).'}, 'salesnavigator_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Salesnavigator Url', 'default': None, 'description': 'Sales Navigator profile URL (SalesNav searches only).'}, 'startyear_position': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Startyear Position', 'default': None}, 'company_description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Description', 'default': None}, 'company_specialties': {'anyOf': [{}, {'type': 'null'}], 'title': 'Company Specialties', 'default': None}, 'startmonth_position': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Startmonth Position', 'default': None}, 'company_year_founded': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Year Founded', 'default': None}, 'company_employee_count': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Company Employee Count', 'default': None}, 'company_employee_range': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Employee Range', 'default': None}}, 'description': 'Normalized profile from a LinkedIn, Sales Navigator, or Recruiter search result.\n\nMirrors the fields Kanbox persists via ``scrap_leads`` / ``enrich_lead`` /\n``enrich_lead_talent``.  Fields not available for a given search type are ``None``.', 'additionalProperties': True}
scrape_search
Run one page of a LinkedIn, Sales Navigator, or Recruiter search and return normalized profile rows. Pass the full search URL. Use start+count to paginate (count ignored for standard LinkedIn, fixed ~10/page). Use to run a search URL you have (LinkedIn, Sales Navigator, Recruiter) one page at a time; build the Sales Navigator URL with salesnav_build_search_url first. Counts against the imports quota.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'url'], 'properties': {'url': {'type': 'string', 'description': 'Full LinkedIn / SalesNav / Recruiter search URL.'}, 'count': {'type': 'integer', 'default': 25, 'description': 'Page size (max 25). Ignored for standard LinkedIn.'}, 'start': {'type': 'integer', 'default': 0, 'description': 'Pagination offset.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$defs': {'LinkedInScrapedUserOut': {'type': 'object', 'title': 'LinkedInScrapedUserOut', 'properties': {'job': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Job', 'default': None, 'description': 'Current job title.'}, 'degree': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Degree', 'default': None, 'description': 'Network degree: 1, 2, or 3.'}, 'skills': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Skills', 'default': None}, 'company': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company', 'default': None, 'description': 'Current company name.'}, 'picture': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Picture', 'default': None, 'description': 'Profile picture URL.'}, 'summary': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Summary', 'default': None}, 'headline': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Headline', 'default': None}, 'industry': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Industry', 'default': None}, 'lastname': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Lastname', 'default': None}, 'location': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Location', 'default': None}, 'firstname': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Firstname', 'default': None}, 'full_name': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Full Name', 'default': None, 'description': 'Full name as returned by LinkedIn (standard search only).'}, 'languages': {'anyOf': [{'type': 'array', 'items': {'type': 'string'}}, {'type': 'null'}], 'title': 'Languages', 'default': None}, 'company_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Id', 'default': None, 'description': 'LinkedIn company ID.'}, 'is_premium': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Is Premium', 'default': None}, 'connections': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Connections', 'default': None}, 'linkedin_id': {'type': 'string', 'title': 'Linkedin Id', 'description': 'Profile ID (fsd_profile or ts_profile suffix).'}, 'profile_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Profile Url', 'default': None, 'description': 'Public LinkedIn profile URL.'}, 'company_logo': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Logo', 'default': None}, 'company_type': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Type', 'default': None}, 'year_company': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Year Company', 'default': None, 'description': 'Tenure at current company (years).'}, 'is_opentowork': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Is Opentowork', 'default': None}, 'month_company': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Month Company', 'default': None, 'description': 'Tenure at current company (months).'}, 'year_position': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Year Position', 'default': None, 'description': 'Tenure at current position (years).'}, 'month_position': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Month Position', 'default': None, 'description': 'Tenure at current position (months).'}, 'company_website': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Website', 'default': None}, 'is_open_profile': {'anyOf': [{'type': 'boolean'}, {'type': 'null'}], 'title': 'Is Open Profile', 'default': None}, 'job_description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Job Description', 'default': None}, 'company_industry': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Industry', 'default': None}, 'company_linkedin': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Linkedin', 'default': None, 'description': 'LinkedIn company page URL.'}, 'company_location': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Location', 'default': None}, 'linkedin_plain_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Linkedin Plain Id', 'default': None, 'description': 'Numeric member ID (objectUrn suffix).'}, 'linkedin_public_id': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Linkedin Public Id', 'default': None, 'description': 'Vanity URL slug (/in/<slug>).'}, 'salesnavigator_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Salesnavigator Url', 'default': None, 'description': 'Sales Navigator profile URL (SalesNav searches only).'}, 'startyear_position': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Startyear Position', 'default': None}, 'company_description': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Description', 'default': None}, 'company_specialties': {'anyOf': [{}, {'type': 'null'}], 'title': 'Company Specialties', 'default': None}, 'startmonth_position': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Startmonth Position', 'default': None}, 'company_year_founded': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Year Founded', 'default': None}, 'company_employee_count': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Company Employee Count', 'default': None}, 'company_employee_range': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Company Employee Range', 'default': None}}, 'description': 'Normalized profile from a LinkedIn, Sales Navigator, or Recruiter search result.\n\nMirrors the fields Kanbox persists via ``scrap_leads`` / ``enrich_lead`` /\n``enrich_lead_talent``.  Fields not available for a given search type are ``None``.', 'additionalProperties': True}}, 'title': 'LinkedInScrapeSearchPageOut', 'properties': {'count': {'type': 'integer', 'title': 'Count', 'description': 'Requested page size.'}, 'items': {'type': 'array', 'items': {'$ref': '#/$defs/LinkedInScrapedUserOut'}, 'title': 'Items'}, 'start': {'type': 'integer', 'title': 'Start', 'description': 'Offset used for this request.'}, 'total': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Total', 'default': None, 'description': 'Total results reported by LinkedIn.'}, 'next_start': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Next Start', 'default': None, 'description': 'Pass as ``start`` for the next page when present.'}}, 'description': 'Paged results from a LinkedIn, Sales Navigator, or Recruiter search URL.', 'additionalProperties': True}
send_invitation
Send a connection request to a LinkedIn member. Optional message capped at 300 chars (premium) or 200 chars. Use to connect with someone not yet a 1st-degree connection; check get_invitation_status first to avoid duplicates. Counts against the daily invitations quota; for more than ten use create_job. To follow without connecting use follow_member.
Accès externe
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'linkedin_id_or_url'], 'properties': {'message': {'type': 'string', 'description': 'Optional personalised invitation note.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}, 'linkedin_id_or_url': {'type': 'string', 'description': 'LinkedIn member ID, vanity name, or profile URL.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'connected': {'type': 'boolean', 'description': 'Invitation sent'}}, 'additionalProperties': True}
send_message
Send a LinkedIn DM via Voyager createMessage: use conversation_linkedin_id for an existing thread or recipient_linkedin_id for a new DM. Use for the classic inbox: conversation_linkedin_id to reply in a thread, recipient_linkedin_id for a new one (1st-degree connections, or InMail). Counts against the daily messages quota; for a Sales Navigator thread use salesnav_send_message; for more than ten messages use create_job.
Accès externe
Schéma d’entrée
{'type': 'object', 'required': ['account_id'], 'properties': {'text': {'type': 'string', 'description': 'Plain text to send or post.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}, 'in_mail_premium': {'type': 'boolean', 'description': 'Send as InMail to someone outside the network (premium accounts); requires recipient_linkedin_id.'}, 'recipient_linkedin_id': {'type': 'string', 'description': 'Recipient profile id (fsd_profile id) to start a new conversation; from list_conversations or scrape_profile. Omit when replying in an existing conversation.'}, 'conversation_linkedin_id': {'type': 'string', 'description': 'Conversation (thread) id, as returned by list_conversations.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'title': 'LinkedInSendMessageOut', 'properties': {'success': {'type': 'boolean', 'title': 'Success'}, 'status_code': {'type': 'integer', 'title': 'Status Code', 'description': 'HTTP status from LinkedIn (e.g. 201 on success).'}}, 'additionalProperties': True}
star_conversation
Star or unstar a LinkedIn conversation. Set star=false to remove the star. conversation_linkedin_id is the conversation_id returned by list_conversations. Housekeeping in the classic inbox; reversible (star=false). No quota.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'conversation_linkedin_id'], 'properties': {'star': {'type': 'boolean', 'default': True, 'description': 'True to star, False to unstar.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}, 'conversation_linkedin_id': {'type': 'string', 'description': 'Conversation (thread) id, as returned by list_conversations.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'starred': {'type': 'boolean', 'description': 'Current starred state'}}, 'additionalProperties': True}
test_webhook_endpoint
Send a signed 'ping' event to a webhook endpoint right now and report the HTTP status it answered. Use to check a receiver end to end (signed ping, HTTP status back); does not deliver real events.
Lecture seule Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['endpoint_id'], 'properties': {'endpoint_id': {'type': 'integer', 'description': 'Webhook endpoint id, from list_webhook_endpoints.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'response_status': {'type': ['integer', 'null']}, 'response_excerpt': {'type': 'string'}}, 'additionalProperties': True}
update_account_quotas
Update one or more quota configuration fields for a LinkedIn account, and its activity window (the hours, days and timezone jobs run in when a job does not set its own). Only provided fields are updated. Changes limits and the activity window for jobs; does not reset today's counters. Raising a limit is the user's decision, ask first.
Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id'], 'properties': {'timezone': {'type': 'string', 'description': "IANA zone for the window, e.g. Europe/Paris. Empty string resets to the zone of the account's proxy country."}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'window_end': {'type': 'string', 'description': 'HH:MM: jobs on this account stop at this time. Empty string resets to 18:00.'}, 'window_days': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Weekdays jobs may run: mon, tue, wed, thu, fri, sat, sun. Empty list resets to Monday–Friday.'}, 'window_start': {'type': 'string', 'description': "HH:MM, in the account's timezone: jobs on this account start no earlier. Empty string resets to 09:00."}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}, 'daily_posts_conf': {'type': 'integer', 'description': "Daily limit for 'posts' on this account; 0 means unlimited."}, 'daily_visits_conf': {'type': 'integer', 'description': "Daily limit for 'visits' on this account; 0 means unlimited."}, 'daily_comments_conf': {'type': 'integer', 'description': "Daily limit for 'comments' on this account; 0 means unlimited."}, 'daily_messages_conf': {'type': 'integer', 'description': "Daily limit for 'messages' on this account; 0 means unlimited."}, 'daily_reactions_conf': {'type': 'integer', 'description': "Daily limit for 'reactions' on this account; 0 means unlimited."}, 'daily_invitations_conf': {'type': 'integer', 'description': "Daily limit for 'invitations' on this account; 0 means unlimited."}, 'daily_imports_salesnav_conf': {'type': 'integer', 'description': "Daily limit for 'imports_salesnav' on this account; 0 means unlimited."}, 'daily_imports_standard_conf': {'type': 'integer', 'description': "Daily limit for 'imports_standard' on this account; 0 means unlimited."}, 'daily_imports_recruiter_conf': {'type': 'integer', 'description': "Daily limit for 'imports_recruiter' on this account; 0 means unlimited."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'quotas': {'type': 'object', 'additionalProperties': True}, 'window': {'type': 'object', 'additionalProperties': True}, 'updated': {'type': 'boolean'}, 'account_id': {'type': 'integer'}}, 'additionalProperties': True}
update_scheduled_post
Update the text and/or scheduled time of an existing scheduled LinkedIn post. post_urn is the URN returned by list_scheduled_posts (e.g. urn:li:ugcPost:…). At least one of text or scheduled_at must be provided. Only for posts still scheduled (post_urn from list_scheduled_posts); a published post cannot be edited through Reach.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'post_urn'], 'properties': {'text': {'type': 'string', 'description': 'Plain text to send or post.'}, 'post_urn': {'type': 'string', 'description': 'URN of the scheduled post (urn:li:…), from list_scheduled_posts.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'scheduled_at': {'type': 'integer', 'description': 'Unix timestamp in milliseconds.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'updated': {'type': 'boolean'}, 'post_urn': {'type': 'string'}}, 'additionalProperties': True}
update_webhook_endpoint
Change a webhook's url, events, account_ids, description or is_active. Only provided fields change. Re-enabling clears the failure counter. Use to change events, accounts or url, or to re-enable an endpoint disabled after failures; to stop deliveries temporarily set is_active=false rather than deleting.
Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['endpoint_id'], 'properties': {'url': {'type': 'string', 'description': 'https URL that receives the signed JSON POST (http accepted for localhost only).'}, 'events': {'type': 'array', 'items': {'type': 'string'}, 'description': "Event types to subscribe to (message.received, connection.new, account.status_changed, quota.threshold_reached, quota.reached) or ['*']."}, 'is_active': {'type': 'boolean', 'description': 'Pause (false) or resume (true) deliveries.'}, 'account_ids': {'type': 'array', 'items': {'type': 'integer'}, 'description': 'Only these LinkedIn account ids; omit for every account of the user.'}, 'description': {'type': 'string', 'maxLength': 200, 'description': 'Free-text label for your own reference.'}, 'endpoint_id': {'type': 'integer', 'description': 'Webhook endpoint id, from list_webhook_endpoints.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'id': {'type': 'integer'}, 'url': {'type': 'string'}, 'events': {'type': 'array', 'items': {'type': 'string'}}, 'is_active': {'type': 'boolean'}, 'created_at': {'type': 'string'}, 'account_ids': {'type': ['array', 'null'], 'items': {'type': 'integer'}}, 'description': {'type': 'string'}, 'disabled_reason': {'type': 'string'}, 'last_delivery_at': {'type': 'string'}, 'consecutive_failures': {'type': 'integer'}}, 'additionalProperties': True}
upload_media_from_url
Upload an image to LinkedIn by fetching it from a public URL. Returns a digitalmediaAsset URN (urn:li:digitalmediaAsset:…) that can be passed to create_post (single image) or create_multi_photo (multi-photo). Use this instead of upload-media when working as an agent — no binary file upload needed. Use before create_post when the post needs an image; returns the URN create_post expects. For several images, then create_multi_photo.
Accès externe
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'image_url'], 'properties': {'image_url': {'type': 'string', 'description': 'Publicly accessible URL of the image to upload.'}, 'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}, 'media_upload_type': {'type': 'string', 'default': 'IMAGE_SHARING', 'description': 'LinkedIn media upload type (default: IMAGE_SHARING).'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'urn': {'type': 'string', 'description': 'urn:li:digitalmediaAsset:… to pass as media_urn'}}, 'additionalProperties': True}
visit_profile
Simulate a profile view, triggering a 'viewed your profile' notification for the target member. Use to leave a 'viewed your profile' trace as a soft touch before an invitation; counts against the daily visits quota. Not needed to read a profile, use scrape_profile.
Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'linkedin_id_or_url'], 'properties': {'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}, 'linkedin_id_or_url': {'type': 'string', 'description': 'LinkedIn member ID, vanity name, or profile URL.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'visited': {'type': 'boolean'}}, 'additionalProperties': True}
withdraw_invitation
Withdraw a pending sent connection request. Use to cancel a pending sent invitation (from list_sent_invitations), for example one older than three weeks. Not for received invitations, see decline_invitation.
Destructif Accès externe Idempotent
Schéma d’entrée
{'type': 'object', 'required': ['account_id', 'linkedin_id_or_url'], 'properties': {'account_id': {'type': 'integer', 'description': 'Reach id of the LinkedIn account to act on, from list_accounts.'}, 'idempotency_key': {'type': 'string', 'maxLength': 200, 'description': "Optional. A key you choose (a UUID is fine) that names this exact call. If you retry with the same key and the same arguments, the first call's result is returned and nothing is done twice on LinkedIn. Reusing a key with different arguments is refused. Keys expire after 24 hours."}, 'linkedin_id_or_url': {'type': 'string', 'description': 'The LinkedIn member: profile URL, vanity name (the part after /in/), Sales Navigator URL, or internal member id.'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', 'properties': {'withdrawn': {'type': 'boolean'}}, 'additionalProperties': True}
Supprimé
user_posts
29 September 2026 03:02
Supprimé
invitation_status
29 September 2026 03:02
Supprimé
follow
29 September 2026 03:02
Supprimé
connect
29 September 2026 03:02
Ajouté
resume_job
29 September 2026 03:02
Ajouté
pause_job
29 September 2026 03:02
Ajouté
cancel_job
29 September 2026 03:02
Ajouté
list_jobs
29 September 2026 03:02
Ajouté
get_job
29 September 2026 03:02
Ajouté
create_job
29 September 2026 03:02
Modifié
test_webhook_endpoint
29 September 2026 03:02
Modifié
delete_webhook_endpoint
29 September 2026 03:02
Modifié
update_webhook_endpoint
29 September 2026 03:02
Modifié
create_webhook_endpoint
29 September 2026 03:02
Modifié
list_webhook_endpoints
29 September 2026 03:02
Modifié
salesnav_build_search_url
29 September 2026 03:02
Modifié
salesnav_typeahead
29 September 2026 03:02
Modifié
salesnav_resolve_industry
29 September 2026 03:02
Modifié
salesnav_list_messaging_threads
29 September 2026 03:02
Modifié
salesnav_send_message
29 September 2026 03:02
Modifié
salesnav_list_thread_messages
29 September 2026 03:02
Modifié
list_sent_invitations
29 September 2026 03:02
Modifié
list_received_invitations
29 September 2026 03:02
Ajouté
follow_member
29 September 2026 03:02
Modifié
remove_connection
29 September 2026 03:02
Modifié
decline_invitation
29 September 2026 03:02
Modifié
accept_invitation
29 September 2026 03:02
Modifié
withdraw_invitation
29 September 2026 03:02
Ajouté
get_invitation_status
29 September 2026 03:02
Ajouté
send_invitation
29 September 2026 03:02

LinkedIn MCP Server (Salesbot)

cz.salesbot/linkedin-mcp-server

Supports LinkedIn lead discovery, contact enrichment, CRM pipelines, campaign sequencing, message approval and human-reviewed out…

linkdapi-the-best-linkedin-professional-data-api

com.jojapi/linkdapi-the-best-linkedin-professional-data-api

Provides LinkedIn professional data on profiles, companies, employees, jobs, posts, articles, comments, reactions, skills, and lo…

ZOOQ - LinkedIn Data for AI Agents

io.github.baldiga/zooq

Provides live LinkedIn-derived data on people, companies, jobs, posts, professional relationships, and work email discovery.

Synthfolk

ai.synthfolk/directory

Provides a professional network for AI agents and people with profiles, companies, jobs, messaging, feed posts, projects, recomme…

Leads Discovery Agent by Nova (CIVAI)

co.civai.nova/leads-discovery-agent

Discovers potential leads from WhatsApp, Telegram, Instagram, and X, supports scheduled scans, analytics, and CRM import with opt…

Telegram Agent by Nova (CIVAI)

co.civai.nova/telegram-agent

Uses a linked Telegram session to run discovery scans, retrieve leads, manage scan schedules, and import leads into a CRM.

linkedin-buying-signals

com.getcleed/linkedin-buying-signals

Finds and analyzes LinkedIn prospects with buying signals, manages lead records and drafts or sends personalized email and Linked…

linkedin

com.jojapi/linkedin

Searches LinkedIn people, companies, jobs, posts, comments, and reactions, and retrieves available professional profiles and comp…