Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,537Letters: 14Defects: 1,322counted 3 min ago
teppi

Server definition

Hash
sha256:34ea4f6cd485ee6bc879093d2fd5c18b73c6feaee7c04faeb46b6d15c3dddb00
What it is
What a remote MCP server returned when asked what it offers: 52 tools

The blob, as servednamed by its sha256

{ "instructions": null, "tools": [ { "description": "Accept a pending received connection request.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "linkedin_id_or_url": { "description": "The LinkedIn member: profile URL, vanity name (the part after /in/), Sales Navigator URL, or internal member id.", "type": "string" } }, "required": [ "account_id", "linkedin_id_or_url" ], "type": "object" }, "name": "accept_invitation", "outputSchema": { "additionalProperties": true, "properties": { "accepted": { "type": "boolean" } }, "type": "object" } }, { "description": "Archive or unarchive a LinkedIn conversation. Set archive=false to unarchive. conversation_linkedin_id is the conversation_id returned by list_conversations.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "archive": { "default": true, "description": "True to archive, False to unarchive.", "type": "boolean" }, "conversation_linkedin_id": { "description": "Conversation (thread) id, as returned by list_conversations.", "type": "string" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" } }, "required": [ "account_id", "conversation_linkedin_id" ], "type": "object" }, "name": "archive_conversation", "outputSchema": { "additionalProperties": true, "properties": { "archived": { "description": "Current archived state", "type": "boolean" } }, "type": "object" } }, { "description": "Post a comment on a LinkedIn post on behalf of the connected account.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "post_url_or_urn": { "description": "LinkedIn post URL, slug, or URN.", "type": "string" }, "text": { "description": "Comment text.", "type": "string" } }, "required": [ "account_id", "post_url_or_urn", "text" ], "type": "object" }, "name": "comment_post", "outputSchema": { "additionalProperties": true, "properties": { "commented": { "type": "boolean" } }, "type": "object" } }, { "description": "Send a connection request to a LinkedIn member. Optional message capped at 300 chars (premium) or 200 chars.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "linkedin_id_or_url": { "description": "LinkedIn member ID, vanity name, or profile URL.", "type": "string" }, "message": { "description": "Optional personalised invitation note.", "type": "string" } }, "required": [ "account_id", "linkedin_id_or_url" ], "type": "object" }, "name": "connect", "outputSchema": { "additionalProperties": true, "properties": { "connected": { "description": "Invitation sent", "type": "boolean" } }, "type": "object" } }, { "description": "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).", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "alt_texts": { "description": "Optional alt text per image (same order as media_urns).", "items": { "type": "string" }, "type": "array" }, "author_urn": { "description": "Only messages from this author URN.", "type": "string" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "media_urns": { "description": "List of urn:li:digitalmediaAsset:… URNs.", "items": { "type": "string" }, "type": "array" } }, "required": [ "account_id", "author_urn", "media_urns" ], "type": "object" }, "name": "create_multi_photo", "outputSchema": { "additionalProperties": true, "properties": { "identifier_urn": { "description": "URN to pass as media_urn of create_post", "type": "string" } }, "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "allowed_commenters_scope": { "default": "ALL", "description": "'ALL' or 'CONNECTIONS_ONLY'.", "type": "string" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "media_urn": { "description": "Optional media URN to attach.", "type": "string" }, "scheduled_at": { "description": "Scheduled publish time in Unix milliseconds. Omit to publish now.", "type": "integer" }, "text": { "description": "Plain text to send or post.", "type": "string" }, "visibility": { "default": "ANYONE", "description": "'ANYONE' or 'CONNECTIONS_ONLY'.", "type": "string" } }, "required": [ "account_id", "text" ], "type": "object" }, "name": "create_post", "outputSchema": { "additionalProperties": true, "properties": { "resource_key": { "description": "Identifier of the created or scheduled post", "type": "string" } }, "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "account_ids": { "description": "Optional: only these LinkedIn account ids.", "items": { "type": "integer" }, "type": "array" }, "description": { "description": "Free-text label for your own reference.", "maxLength": 200, "type": "string" }, "events": { "description": "Event types, or ['*'].", "items": { "type": "string" }, "type": "array" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "url": { "description": "https URL that accepts a JSON POST.", "type": "string" } }, "required": [ "url", "events" ], "type": "object" }, "name": "create_webhook_endpoint", "outputSchema": { "additionalProperties": true, "properties": { "account_ids": { "items": { "type": "integer" }, "type": [ "array", "null" ] }, "consecutive_failures": { "type": "integer" }, "created_at": { "type": "string" }, "description": { "type": "string" }, "disabled_reason": { "type": "string" }, "events": { "items": { "type": "string" }, "type": "array" }, "id": { "type": "integer" }, "is_active": { "type": "boolean" }, "last_delivery_at": { "type": "string" }, "note": { "type": "string" }, "secret": { "description": "Signing secret, returned once", "type": "string" }, "url": { "type": "string" } }, "type": "object" } }, { "description": "Decline/ignore a pending received connection request.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "linkedin_id_or_url": { "description": "The LinkedIn member: profile URL, vanity name (the part after /in/), Sales Navigator URL, or internal member id.", "type": "string" } }, "required": [ "account_id", "linkedin_id_or_url" ], "type": "object" }, "name": "decline_invitation", "outputSchema": { "additionalProperties": true, "properties": { "declined": { "type": "boolean" } }, "type": "object" } }, { "description": "Delete a LinkedIn account by account_id. Also clears invitation references before deletion.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" } }, "required": [ "account_id" ], "type": "object" }, "name": "delete_account", "outputSchema": { "additionalProperties": true, "properties": { "account_id": { "type": "integer" }, "deleted": { "type": "boolean" } }, "type": "object" } }, { "description": "Permanently delete a LinkedIn conversation. conversation_linkedin_id is the conversation_id returned by list_conversations.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "conversation_linkedin_id": { "description": "Conversation (thread) id, as returned by list_conversations.", "type": "string" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" } }, "required": [ "account_id", "conversation_linkedin_id" ], "type": "object" }, "name": "delete_conversation", "outputSchema": { "additionalProperties": true, "properties": { "deleted": { "type": "boolean" } }, "type": "object" } }, { "description": "Delete a scheduled LinkedIn post. post_urn is the URN returned by list_scheduled_posts (e.g. urn:li:ugcPost:…).", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "post_urn": { "description": "URN of the scheduled post (urn:li:…), from list_scheduled_posts.", "type": "string" } }, "required": [ "account_id", "post_urn" ], "type": "object" }, "name": "delete_scheduled_post", "outputSchema": { "additionalProperties": true, "properties": { "deleted": { "type": "boolean" }, "post_urn": { "type": "string" } }, "type": "object" } }, { "description": "Delete a webhook endpoint and its delivery history.", "inputSchema": { "additionalProperties": false, "properties": { "endpoint_id": { "description": "Webhook endpoint id, from list_webhook_endpoints.", "type": "integer" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" } }, "required": [ "endpoint_id" ], "type": "object" }, "name": "delete_webhook_endpoint", "outputSchema": { "additionalProperties": true, "properties": { "deleted": { "type": "boolean" }, "endpoint_id": { "type": "integer" } }, "type": "object" } }, { "description": "Follow or unfollow a LinkedIn member without connecting. Set follow=false to unfollow.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "follow": { "default": true, "description": "True to follow, False to unfollow.", "type": "boolean" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "linkedin_id_or_url": { "description": "The LinkedIn member: profile URL, vanity name (the part after /in/), Sales Navigator URL, or internal member id.", "type": "string" } }, "required": [ "account_id", "linkedin_id_or_url" ], "type": "object" }, "name": "follow", "outputSchema": { "additionalProperties": true, "properties": { "following": { "description": "Current follow state", "type": "boolean" } }, "type": "object" } }, { "description": "Get the quotas configuration and usage counters for a LinkedIn account.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" } }, "required": [ "account_id" ], "type": "object" }, "name": "get_account_quotas", "outputSchema": { "additionalProperties": true, "properties": { "daily_comments_conf": { "title": "Daily Comments Conf", "type": "integer" }, "daily_comments_used": { "title": "Daily Comments Used", "type": "integer" }, "daily_imports_recruiter_conf": { "title": "Daily Imports Recruiter Conf", "type": "integer" }, "daily_imports_recruiter_used": { "title": "Daily Imports Recruiter Used", "type": "integer" }, "daily_imports_salesnav_conf": { "title": "Daily Imports Salesnav Conf", "type": "integer" }, "daily_imports_salesnav_used": { "title": "Daily Imports Salesnav Used", "type": "integer" }, "daily_imports_standard_conf": { "title": "Daily Imports Standard Conf", "type": "integer" }, "daily_imports_standard_used": { "title": "Daily Imports Standard Used", "type": "integer" }, "daily_invitations_conf": { "title": "Daily Invitations Conf", "type": "integer" }, "daily_invitations_used": { "title": "Daily Invitations Used", "type": "integer" }, "daily_messages_conf": { "title": "Daily Messages Conf", "type": "integer" }, "daily_messages_used": { "title": "Daily Messages Used", "type": "integer" }, "daily_posts_conf": { "title": "Daily Posts Conf", "type": "integer" }, "daily_posts_used": { "title": "Daily Posts Used", "type": "integer" }, "daily_reactions_conf": { "title": "Daily Reactions Conf", "type": "integer" }, "daily_reactions_used": { "title": "Daily Reactions Used", "type": "integer" }, "daily_visits_conf": { "title": "Daily Visits Conf", "type": "integer" }, "daily_visits_used": { "title": "Daily Visits Used", "type": "integer" }, "id": { "title": "Id", "type": "integer" } }, "title": "QuotasOut", "type": "object" } }, { "description": "Get request logs for a LinkedIn account with optional filtering by request_type and pagination using limit/offset.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "limit": { "description": "Maximum number of rows to return.", "type": "integer" }, "offset": { "description": "Number of rows to skip.", "type": "integer" }, "request_type": { "description": "Only rows of this request type (for example send_message, list_conversations, connect).", "type": "string" } }, "required": [ "account_id" ], "type": "object" }, "name": "get_account_request_logs", "outputSchema": { "additionalProperties": true, "properties": { "result": { "description": "Request log rows, newest first.", "items": { "additionalProperties": true, "properties": { "created_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null, "title": "Created At" }, "id": { "title": "Id", "type": "integer" }, "method": { "title": "Method", "type": "string" }, "request_type": { "title": "Request Type", "type": "string" }, "status_code": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Status Code" }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Url" } }, "title": "RequestLogOut", "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "Get aggregated request-log statistics for a LinkedIn account, grouped by day, week, or month, with optional action and date-range filters.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "end_date": { "description": "End of the period, ISO 8601 (default: now).", "format": "date-time", "type": "string" }, "group_by": { "description": "Bucket size for the statistics: day, week or month.", "enum": [ "day", "week", "month" ], "type": "string" }, "request_type": { "description": "Only rows of this request type (for example send_message, list_conversations, connect).", "type": "string" }, "start_date": { "description": "Start of the period, ISO 8601 (default: 30 days ago).", "format": "date-time", "type": "string" } }, "required": [ "account_id" ], "type": "object" }, "name": "get_account_request_logs_stats", "outputSchema": { "$defs": { "RequestLogStatsBucketOut": { "additionalProperties": true, "properties": { "action": { "title": "Action", "type": "string" }, "bucket_start": { "format": "date-time", "title": "Bucket Start", "type": "string" }, "count": { "title": "Count", "type": "integer" } }, "title": "RequestLogStatsBucketOut", "type": "object" } }, "additionalProperties": true, "properties": { "available_actions": { "items": { "type": "string" }, "title": "Available Actions", "type": "array" }, "buckets": { "items": { "$ref": "#/$defs/RequestLogStatsBucketOut" }, "title": "Buckets", "type": "array" }, "end_date": { "format": "date-time", "title": "End Date", "type": "string" }, "group_by": { "title": "Group By", "type": "string" }, "request_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Request Type" }, "start_date": { "format": "date-time", "title": "Start Date", "type": "string" } }, "title": "RequestLogStatsOut", "type": "object" } }, { "description": "Call LinkedIn Voyager /me for an account through the stored proxy/cookies and return the normalized profile (same fields as Kanbox uses from /me).", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" } }, "required": [ "account_id" ], "type": "object" }, "name": "get_me", "outputSchema": { "additionalProperties": true, "description": "Profile fields extracted from Voyager ``GET /voyager/api/me``, matching what Kanbox persists on accounts.", "properties": { "firstname": { "default": "", "title": "Firstname", "type": "string" }, "headline": { "default": "", "title": "Headline", "type": "string" }, "is_premium": { "default": false, "title": "Is Premium", "type": "boolean" }, "lastname": { "default": "", "title": "Lastname", "type": "string" }, "linkedin_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "MiniProfile id (entityUrn suffix after fs_miniProfile:).", "title": "Linkedin Id" }, "linkedin_plain_id": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Numeric member id from objectUrn.", "title": "Linkedin Plain Id" }, "linkedin_public_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Public / vanity identifier.", "title": "Linkedin Public Id" }, "picture": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Profile picture URL derived from VectorImage artifacts.", "title": "Picture" } }, "title": "LinkedInMeProfileOut", "type": "object" } }, { "description": "Get the connection and invitation status between the connected account and a LinkedIn member. Returns is_connection, invitation_type (SENT/PENDING/WITHDRAWN/REFUSED).", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "linkedin_id_or_url": { "description": "The LinkedIn member: profile URL, vanity name (the part after /in/), Sales Navigator URL, or internal member id.", "type": "string" } }, "required": [ "account_id", "linkedin_id_or_url" ], "type": "object" }, "name": "invitation_status", "outputSchema": { "additionalProperties": true, "description": "Connection / invitation status between the connected account and a LinkedIn member.", "properties": { "degree": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Connection distance (1, 2 or 3).", "title": "Degree" }, "invitation_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Invitation URN, if any.", "title": "Invitation Id" }, "invitation_secret": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Shared secret, required to accept a received invitation.", "title": "Invitation Secret" }, "invitation_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "'SENT' (pending sent), 'PENDING' (received, awaiting acceptance), 'WITHDRAWN', or 'REFUSED'.", "title": "Invitation Type" }, "is_connection": { "description": "True if the member is a 1st-degree connection.", "title": "Is Connection", "type": "boolean" } }, "title": "LinkedInInvitationStatusOut", "type": "object" } }, { "description": "Like a LinkedIn post on behalf of the connected account. Pass the post URL, slug, or URN.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "post_url_or_urn": { "description": "LinkedIn post URL, slug, or urn:li:activity:….", "type": "string" } }, "required": [ "account_id", "post_url_or_urn" ], "type": "object" }, "name": "like_post", "outputSchema": { "additionalProperties": true, "properties": { "liked": { "type": "boolean" } }, "type": "object" } }, { "description": "Return LinkedIn accounts accessible with the provided API key. If the key is restricted, only allowed account IDs are returned.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "list_accounts", "outputSchema": { "additionalProperties": true, "properties": { "result": { "description": "Connected LinkedIn accounts visible to this key.", "items": { "additionalProperties": true, "properties": { "city": { "type": "string" }, "connected_at": { "type": "string" }, "country": { "type": "string" }, "created_at": { "type": "string" }, "firstname": { "type": "string" }, "has_sales_nav": { "type": "boolean" }, "headline": { "type": "string" }, "id": { "description": "Reach account id, the account_id every other tool takes.", "type": "integer" }, "is_premium": { "type": "boolean" }, "lastname": { "type": "string" }, "linkedin_id": { "type": "string" }, "linkedin_public_id": { "description": "Vanity name", "type": "string" }, "picture": { "type": "string" }, "status": { "description": "connected, disconnected, proxy_error or pending", "type": "string" } }, "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "List LinkedIn 1st-degree connections for an account (Voyager dash connections), paged with start/count — same payload as GET /api/linkedin/{account_id}/connections.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "count": { "description": "Page size.", "maximum": 100, "minimum": 1, "type": "integer" }, "start": { "description": "Pagination offset, 0-based.", "minimum": 0, "type": "integer" } }, "required": [ "account_id" ], "type": "object" }, "name": "list_connections", "outputSchema": { "$defs": { "LinkedInConnectionItemOut": { "additionalProperties": true, "description": "One connection row: same extraction as Kanbox ``sync_connections`` (lead fields).", "properties": { "connected_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null, "description": "Connection time from Voyager ``createdAt`` (UTC).", "title": "Connected At" }, "firstname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Firstname" }, "headline": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Headline" }, "lastname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Lastname" }, "linkedin_id": { "description": "Connection id from entityUrn (fsd_connection:…).", "title": "Linkedin Id", "type": "string" }, "linkedin_public_id": { "description": "Vanity id when known, else same as linkedin_id.", "title": "Linkedin Public Id", "type": "string" }, "picture": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Photo URL from profilePicture vectorImage.", "title": "Picture" } }, "title": "LinkedInConnectionItemOut", "type": "object" } }, "additionalProperties": true, "description": "Paged list of connections (Voyager dash connections API).", "properties": { "count": { "description": "Requested page size.", "title": "Count", "type": "integer" }, "items": { "items": { "$ref": "#/$defs/LinkedInConnectionItemOut" }, "title": "Items", "type": "array" }, "next_start": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "If set, use as the ``start`` query param for the next page (Kanbox-style paging).", "title": "Next Start" }, "start": { "description": "Offset used for this request.", "title": "Start", "type": "integer" }, "total": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Total connections reported by LinkedIn ``paging.total``.", "title": "Total" } }, "title": "LinkedInConnectionsPageOut", "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "conversation_linkedin_id": { "description": "Conversation (thread) id, as returned by list_conversations.", "type": "string" }, "created_before": { "description": "Only messages created before this Unix timestamp in milliseconds, to page back in time.", "type": "string" } }, "required": [ "account_id", "conversation_linkedin_id" ], "type": "object" }, "name": "list_conversation_messages", "outputSchema": { "$defs": { "LinkedInConversationMessageOut": { "additionalProperties": true, "description": "One message from ``/messaging/conversations/{id}/events`` (Kanbox ``parse_linkedin_message``).", "properties": { "attachment_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Attachment Name" }, "attachment_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Attachment Type" }, "attachment_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Attachment Url" }, "created_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null, "title": "Created At" }, "from_firstname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "From Firstname" }, "from_lastname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "From Lastname" }, "from_linkedin_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "From Linkedin Id" }, "html": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Html" }, "id": { "description": "Message id from ``backendUrn`` (messagingMessage:…).", "title": "Id", "type": "string" }, "is_inbound": { "description": "True when the sender is not the connected account (incoming message).", "title": "Is Inbound", "type": "boolean" }, "message_type": { "default": "text", "description": "e.g. text, html, gif, or media hint.", "title": "Message Type", "type": "string" }, "message_urn": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Full message URN (entityUrn) — pass this to proxy_react_message.", "title": "Message Urn" }, "text": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Text" } }, "title": "LinkedInConversationMessageOut", "type": "object" } }, "additionalProperties": true, "description": "Messages for a conversation (Kanbox ``get_conversation_messages`` + public API paging).", "properties": { "conversation_linkedin_id": { "description": "Kanbox ``Conversation.linkedin_id`` / conversation key.", "title": "Conversation Linkedin Id", "type": "string" }, "has_more": { "description": "True when LinkedIn likely has older events (page size 20).", "title": "Has More", "type": "boolean" }, "messages": { "items": { "$ref": "#/$defs/LinkedInConversationMessageOut" }, "title": "Messages", "type": "array" }, "next_created_before": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Pass as ``created_before`` to fetch the next (older) page.", "title": "Next Created Before" }, "total_count": { "description": "Number of messages in this response.", "title": "Total Count", "type": "integer" } }, "title": "LinkedInConversationMessagesPageOut", "type": "object" } }, { "description": "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).", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "archived": { "description": "Only archived conversations.", "type": "boolean" }, "count": { "description": "Page size.", "maximum": 25, "minimum": 1, "type": "integer" }, "next_cursor": { "description": "Cursor returned by the previous page; omit for the first page.", "type": "string" }, "starred": { "description": "Only starred conversations.", "type": "boolean" }, "unread": { "description": "Only conversations with unread messages.", "type": "boolean" } }, "required": [ "account_id" ], "type": "object" }, "name": "list_conversations", "outputSchema": { "$defs": { "LinkedInConversationListItemOut": { "additionalProperties": true, "description": "One conversation row — same core fields Kanbox fills from ``sync_linkedin_conversations_new_format``.", "properties": { "conversation_id": { "description": "LinkedIn messaging thread id (``backendUrn`` → ``messagingThread:<id>``). Use this as ``conversation_linkedin_id`` when fetching messages or replying.", "title": "Conversation Id", "type": "string" }, "is_archived": { "default": false, "title": "Is Archived", "type": "boolean" }, "is_groupchat": { "default": false, "title": "Is Groupchat", "type": "boolean" }, "is_muted": { "default": false, "title": "Is Muted", "type": "boolean" }, "is_read": { "default": true, "title": "Is Read", "type": "boolean" }, "is_starred": { "default": false, "title": "Is Starred", "type": "boolean" }, "last_activity_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null, "title": "Last Activity At" }, "last_message_text": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Last Message Text" }, "last_read_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null, "title": "Last Read At" }, "participant_firstname": { "default": "", "title": "Participant Firstname", "type": "string" }, "participant_headline": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Participant Headline" }, "participant_lastname": { "default": "", "title": "Participant Lastname", "type": "string" }, "participant_linkedin_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Same as ``recipient_linkedin_id`` — kept for backward compatibility.", "title": "Participant Linkedin Id" }, "participant_picture": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Participant Picture" }, "recipient_linkedin_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "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.", "title": "Recipient Linkedin Id" }, "thread_id": { "description": "Same as ``conversation_id`` — kept for backward compatibility.", "title": "Thread Id", "type": "string" }, "unread_count": { "default": 0, "title": "Unread Count", "type": "integer" } }, "title": "LinkedInConversationListItemOut", "type": "object" } }, "additionalProperties": true, "description": "Paged messenger list (Voyager Messaging GraphQL).", "properties": { "archived": { "description": "Matches query: archived folder (``category:ARCHIVE``) when not unread.", "title": "Archived", "type": "boolean" }, "count": { "description": "Requested page size (LinkedIn typically caps at 25).", "title": "Count", "type": "integer" }, "items": { "items": { "$ref": "#/$defs/LinkedInConversationListItemOut" }, "title": "Items", "type": "array" }, "next_cursor": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Pass as ``next_cursor`` for the following page when present.", "title": "Next Cursor" }, "starred": { "description": "Matches query: starred folder or client filter when combined.", "title": "Starred", "type": "boolean" }, "unread": { "description": "Matches query: unread filter (search query with ``read:false``).", "title": "Unread", "type": "boolean" } }, "title": "LinkedInMessengerConversationsPageOut", "type": "object" } }, { "description": "List pending connection invitations received by the account (with invitation_secret to accept them).", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "count": { "default": 20, "description": "Page size (max 100).", "type": "integer" }, "start": { "default": 0, "description": "Pagination offset, 0-based.", "type": "integer" } }, "required": [ "account_id" ], "type": "object" }, "name": "list_received_invitations", "outputSchema": { "$defs": { "LinkedInInvitationItemOut": { "additionalProperties": true, "description": "A single invitation entry (received or sent).", "properties": { "full_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Full Name" }, "headline": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Headline" }, "invitation_id": { "description": "Invitation URN.", "title": "Invitation Id", "type": "string" }, "invitation_secret": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Shared secret (only on received invitations, needed to accept).", "title": "Invitation Secret" }, "linkedin_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Internal LinkedIn member ID of the other party.", "title": "Linkedin Id" }, "linkedin_public_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Vanity name of the other party.", "title": "Linkedin Public Id" }, "message": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Personalised note attached to the invitation.", "title": "Message" }, "picture": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Picture" }, "profile_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Profile Url" }, "sent_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null, "description": "ISO 8601 UTC timestamp when the invitation was sent.", "title": "Sent At" } }, "title": "LinkedInInvitationItemOut", "type": "object" } }, "additionalProperties": true, "description": "Paged list of invitations.", "properties": { "count": { "title": "Count", "type": "integer" }, "invitations": { "items": { "$ref": "#/$defs/LinkedInInvitationItemOut" }, "title": "Invitations", "type": "array" }, "start": { "title": "Start", "type": "integer" }, "total": { "title": "Total", "type": "integer" } }, "title": "LinkedInInvitationsPageOut", "type": "object" } }, { "description": "List scheduled LinkedIn posts for an account, paged. Returns post URNs, text content, and scheduled publish times.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "count": { "default": 10, "description": "Page size.", "type": "integer" }, "start": { "default": 0, "description": "Pagination offset, 0-based.", "type": "integer" } }, "required": [ "account_id" ], "type": "object" }, "name": "list_scheduled_posts", "outputSchema": { "$defs": { "LinkedInScheduledPostOut": { "additionalProperties": true, "description": "A scheduled post returned by the Voyager SharePreviews API.", "properties": { "post_text": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Text content of the post.", "title": "Post Text" }, "post_urn": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Post URN (e.g. urn:li:ugcPost:…).", "title": "Post Urn" }, "scheduled_at": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Scheduled publish time as Unix timestamp in milliseconds.", "title": "Scheduled At" }, "scheduled_at_label": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Human-readable scheduled time (e.g. 'Publication le mer. 20 mai à 14:30').", "title": "Scheduled At Label" } }, "title": "LinkedInScheduledPostOut", "type": "object" } }, "additionalProperties": true, "description": "Paged list of scheduled posts.", "properties": { "count": { "title": "Count", "type": "integer" }, "posts": { "items": { "$ref": "#/$defs/LinkedInScheduledPostOut" }, "title": "Posts", "type": "array" }, "start": { "title": "Start", "type": "integer" }, "total": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Total number of scheduled posts.", "title": "Total" } }, "title": "LinkedInScheduledPostsPageOut", "type": "object" } }, { "description": "List pending connection invitations sent by the account that have not yet been accepted.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "count": { "default": 20, "description": "Page size (max 100).", "type": "integer" }, "start": { "default": 0, "description": "Pagination offset, 0-based.", "type": "integer" } }, "required": [ "account_id" ], "type": "object" }, "name": "list_sent_invitations", "outputSchema": { "$defs": { "LinkedInInvitationItemOut": { "additionalProperties": true, "description": "A single invitation entry (received or sent).", "properties": { "full_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Full Name" }, "headline": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Headline" }, "invitation_id": { "description": "Invitation URN.", "title": "Invitation Id", "type": "string" }, "invitation_secret": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Shared secret (only on received invitations, needed to accept).", "title": "Invitation Secret" }, "linkedin_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Internal LinkedIn member ID of the other party.", "title": "Linkedin Id" }, "linkedin_public_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Vanity name of the other party.", "title": "Linkedin Public Id" }, "message": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Personalised note attached to the invitation.", "title": "Message" }, "picture": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Picture" }, "profile_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Profile Url" }, "sent_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null, "description": "ISO 8601 UTC timestamp when the invitation was sent.", "title": "Sent At" } }, "title": "LinkedInInvitationItemOut", "type": "object" } }, "additionalProperties": true, "description": "Paged list of invitations.", "properties": { "count": { "title": "Count", "type": "integer" }, "invitations": { "items": { "$ref": "#/$defs/LinkedInInvitationItemOut" }, "title": "Invitations", "type": "array" }, "start": { "title": "Start", "type": "integer" }, "total": { "title": "Total", "type": "integer" } }, "title": "LinkedInInvitationsPageOut", "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": {}, "type": "object" }, "name": "list_webhook_endpoints", "outputSchema": { "additionalProperties": true, "properties": { "endpoints": { "items": { "additionalProperties": true, "properties": { "account_ids": { "items": { "type": "integer" }, "type": [ "array", "null" ] }, "consecutive_failures": { "type": "integer" }, "created_at": { "type": "string" }, "description": { "type": "string" }, "disabled_reason": { "type": "string" }, "events": { "items": { "type": "string" }, "type": "array" }, "id": { "type": "integer" }, "is_active": { "type": "boolean" }, "last_delivery_at": { "type": "string" }, "url": { "type": "string" } }, "type": "object" }, "type": "array" }, "event_types": { "additionalProperties": true, "type": "object" } }, "type": "object" } }, { "description": "Get the list of members who recently viewed the account's profile (requires LinkedIn Premium).", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" } }, "required": [ "account_id" ], "type": "object" }, "name": "profile_viewers", "outputSchema": { "additionalProperties": true, "properties": { "total": { "type": "integer" }, "viewers": { "items": { "additionalProperties": true, "properties": { "full_name": { "type": "string" }, "headline": { "type": "string" }, "linkedin_id": { "type": "string" }, "linkedin_public_id": { "type": "string" }, "profile_url": { "type": "string" } }, "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "include_instructions": { "description": "Also return the full instruction text of every playbook (longer output).", "type": "boolean" }, "playbook_id": { "description": "Id of one playbook from the catalogue, to get its full instructions.", "type": "string" } }, "type": "object" }, "name": "reach_playbooks", "outputSchema": { "additionalProperties": true, "properties": { "how_to_use": { "type": "string" }, "playbook": { "additionalProperties": true, "type": "object" }, "playbooks": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" } }, "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "conversation_linkedin_id": { "description": "Conversation ID — when provided the conversation is marked as read.", "type": "string" }, "emoji": { "description": "Unicode emoji character (e.g. 👍, ❤️).", "type": "string" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "message_urn": { "description": "Full message URN to react to.", "type": "string" }, "react": { "default": true, "description": "True to add the reaction, False to remove it.", "type": "boolean" } }, "required": [ "account_id", "message_urn", "emoji" ], "type": "object" }, "name": "react_message", "outputSchema": { "additionalProperties": true, "properties": { "emoji": { "type": "string" }, "reacted": { "type": "boolean" } }, "type": "object" } }, { "description": "Remove an existing 1st-degree connection.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "linkedin_id_or_url": { "description": "The LinkedIn member: profile URL, vanity name (the part after /in/), Sales Navigator URL, or internal member id.", "type": "string" } }, "required": [ "account_id", "linkedin_id_or_url" ], "type": "object" }, "name": "remove_connection", "outputSchema": { "additionalProperties": true, "properties": { "removed": { "type": "boolean" } }, "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "comment_urn": { "description": "URN of the comment to reply to (comment_id from scrape-post).", "type": "string" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "text": { "description": "Reply text.", "type": "string" } }, "required": [ "account_id", "comment_urn", "text" ], "type": "object" }, "name": "reply_comment", "outputSchema": { "additionalProperties": true, "properties": { "replied": { "type": "boolean" } }, "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Required when passing location/industry NAMES or execute=true.", "type": "integer" }, "company_headcount": { "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+.", "items": {}, "type": "array" }, "company_type": { "description": "COMPANY_TYPE: C=Public P=Privately Held N=Non Profit D=Educational S=Partnership E=Self-Employed O=Self Owned G=Government.", "items": {}, "type": "array" }, "count": { "default": 25, "description": "Page size.", "maximum": 25, "minimum": 1, "type": "integer" }, "current_company": { "description": "Resolved COMPANY ids (salesnav_typeahead type=company).", "items": {}, "type": "array" }, "current_title": { "description": "Current job title; free text + boolean (e.g. '(CTO OR \"VP Engineering\") NOT interim').", "type": "string" }, "execute": { "default": false, "description": "Also run the first results page and return leads.", "type": "boolean" }, "first_name": { "description": "First name filter.", "type": "string" }, "follows_your_company": { "description": "Only people who follow your company page.", "type": "boolean" }, "function": { "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.).", "items": {}, "type": "array" }, "group": { "description": "LinkedIn groups: names or ids.", "items": {}, "type": "array" }, "industry": { "description": "Industry ids (use salesnav_resolve_industry) or names to auto-resolve. Items may be {id|name, exclude}.", "items": {}, "type": "array" }, "keywords": { "description": "Global keyword search; supports boolean operators.", "type": "string" }, "last_name": { "description": "Last name filter.", "type": "string" }, "past_colleague": { "description": "Only past colleagues.", "type": "boolean" }, "past_company": { "description": "Past companies: names or ids; add exclude:true to exclude one.", "items": {}, "type": "array" }, "past_title": { "description": "Boolean search on past job titles.", "type": "string" }, "posted_on_linkedin": { "description": "Only people who posted on LinkedIn in the last 30 days.", "type": "boolean" }, "profile_language": { "description": "ISO 639-1 codes: en fr es de it pt nl ... ", "items": {}, "type": "array" }, "recently_changed_jobs": { "description": "Only people who changed jobs in the last 90 days.", "type": "boolean" }, "region": { "description": "REGION ids (use salesnav_typeahead type=geo) or location names to auto-resolve. Items may be {id|name, exclude}.", "items": {}, "type": "array" }, "relationship": { "description": "RELATIONSHIP: F=1st S=2nd A=Group members O=3rd+.", "items": {}, "type": "array" }, "school": { "description": "Resolved SCHOOL ids.", "items": {}, "type": "array" }, "seniority_level": { "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.", "items": {}, "type": "array" }, "start": { "default": 0, "description": "Pagination offset, 0-based.", "type": "integer" }, "viewed_your_profile": { "description": "Only people who viewed your profile recently.", "type": "boolean" }, "with_shared_experiences": { "description": "Only people with shared experiences (school, company, group).", "type": "boolean" }, "years_at_current_company": { "description": "1=<1y 2=1-2y 3=3-5y 4=6-10y 5=>10y.", "items": {}, "type": "array" }, "years_in_current_position": { "description": "1=<1y 2=1-2y 3=3-5y 4=6-10y 5=>10y.", "items": {}, "type": "array" }, "years_of_experience": { "description": "1=<1y 2=1-2y 3=3-5y 4=6-10y 5=>10y.", "items": {}, "type": "array" } }, "required": [], "type": "object" }, "name": "salesnav_build_search_url", "outputSchema": { "additionalProperties": true, "properties": { "applied_filters": { "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "items": { "description": "First page of results when execute=true", "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "needs_disambiguation": { "description": "Present instead of url when a name matched several ids", "items": { "additionalProperties": true, "type": "object" }, "type": "array" }, "query": { "type": "string" }, "start": { "type": "integer" }, "total": { "type": "integer" }, "url": { "description": "Sales Navigator people-search URL", "type": "string" } }, "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "count": { "default": 20, "description": "Threads per page.", "maximum": 50, "minimum": 1, "type": "integer" }, "filter": { "default": "INBOX", "description": "Conversation folder.", "enum": [ "INBOX", "ARCHIVE", "UNREAD", "INMAIL_PENDING", "INMAIL_ACCEPTED", "INMAIL_DECLINED" ], "type": "string" }, "page_starts_at": { "description": "Pagination cursor — next_page_starts_at from the previous response.", "type": "integer" } }, "required": [ "account_id" ], "type": "object" }, "name": "salesnav_list_messaging_threads", "outputSchema": { "$defs": { "SalesNavAttachmentOut": { "additionalProperties": true, "properties": { "asset_urn": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Asset Urn" }, "download_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Download Url" }, "media_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Media Type" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Name" }, "size": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Size" } }, "title": "SalesNavAttachmentOut", "type": "object" }, "SalesNavProfileOut": { "additionalProperties": true, "properties": { "degree": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Degree" }, "entity_urn": { "description": "Full fs_salesProfile URN.", "title": "Entity Urn", "type": "string" }, "firstname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Firstname" }, "fullname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Fullname" }, "inmail_restriction": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Inmail Restriction" }, "lastname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Lastname" }, "linkedin_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "LinkedIn member ID (from objectUrn).", "title": "Linkedin Id" }, "profile_picture_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Profile Picture Url" }, "salesnav_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Sales Navigator ID (first segment of the URN).", "title": "Salesnav Id" } }, "title": "SalesNavProfileOut", "type": "object" }, "SalesNavThreadMessageOut": { "additionalProperties": true, "properties": { "attachments": { "items": { "$ref": "#/$defs/SalesNavAttachmentOut" }, "title": "Attachments", "type": "array" }, "author_salesnav_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Sales Navigator ID extracted from author URN.", "title": "Author Salesnav Id" }, "author_urn": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Full fs_salesProfile URN of the author.", "title": "Author Urn" }, "body": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Body" }, "delivered_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null, "title": "Delivered At" }, "id": { "title": "Id", "type": "string" }, "subject": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Subject" }, "type": { "description": "Message type: INMAIL, MESSAGE, INMAIL_ACCEPT, INMAIL_REPLY, etc.", "title": "Type", "type": "string" } }, "title": "SalesNavThreadMessageOut", "type": "object" }, "SalesNavThreadOut": { "additionalProperties": true, "properties": { "archived": { "title": "Archived", "type": "boolean" }, "id": { "description": "Sales Navigator thread ID.", "title": "Id", "type": "string" }, "messages": { "items": { "$ref": "#/$defs/SalesNavThreadMessageOut" }, "title": "Messages", "type": "array" }, "next_page_starts_at": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Unix ms timestamp — value from the oldest thread, used as page_starts_at cursor.", "title": "Next Page Starts At" }, "participants": { "items": { "$ref": "#/$defs/SalesNavProfileOut" }, "title": "Participants", "type": "array" }, "restrictions": { "items": { "type": "string" }, "title": "Restrictions", "type": "array" }, "total_message_count": { "title": "Total Message Count", "type": "integer" }, "unread_count": { "title": "Unread Count", "type": "integer" } }, "title": "SalesNavThreadOut", "type": "object" } }, "additionalProperties": true, "properties": { "count": { "title": "Count", "type": "integer" }, "filter": { "description": "Filter used: INBOX or ARCHIVE.", "title": "Filter", "type": "string" }, "items": { "items": { "$ref": "#/$defs/SalesNavThreadOut" }, "title": "Items", "type": "array" }, "next_page_starts_at": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Pass as page_starts_at to fetch the next (older) page. None when there are no more results.", "title": "Next Page Starts At" }, "page_starts_at": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Cursor passed in the request (None for first page).", "title": "Page Starts At" }, "total": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Total number of threads matching the filter.", "title": "Total" } }, "title": "SalesNavThreadsPageOut", "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "message_count": { "default": 20, "description": "Number of most-recent messages to return.", "maximum": 100, "minimum": 1, "type": "integer" }, "thread_id": { "description": "Sales Navigator thread ID.", "type": "string" } }, "required": [ "account_id", "thread_id" ], "type": "object" }, "name": "salesnav_list_thread_messages", "outputSchema": { "$defs": { "SalesNavAttachmentOut": { "additionalProperties": true, "properties": { "asset_urn": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Asset Urn" }, "download_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Download Url" }, "media_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Media Type" }, "name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Name" }, "size": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Size" } }, "title": "SalesNavAttachmentOut", "type": "object" }, "SalesNavProfileOut": { "additionalProperties": true, "properties": { "degree": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Degree" }, "entity_urn": { "description": "Full fs_salesProfile URN.", "title": "Entity Urn", "type": "string" }, "firstname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Firstname" }, "fullname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Fullname" }, "inmail_restriction": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Inmail Restriction" }, "lastname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Lastname" }, "linkedin_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "LinkedIn member ID (from objectUrn).", "title": "Linkedin Id" }, "profile_picture_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Profile Picture Url" }, "salesnav_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Sales Navigator ID (first segment of the URN).", "title": "Salesnav Id" } }, "title": "SalesNavProfileOut", "type": "object" }, "SalesNavThreadMessageOut": { "additionalProperties": true, "properties": { "attachments": { "items": { "$ref": "#/$defs/SalesNavAttachmentOut" }, "title": "Attachments", "type": "array" }, "author_salesnav_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Sales Navigator ID extracted from author URN.", "title": "Author Salesnav Id" }, "author_urn": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Full fs_salesProfile URN of the author.", "title": "Author Urn" }, "body": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Body" }, "delivered_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null, "title": "Delivered At" }, "id": { "title": "Id", "type": "string" }, "subject": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Subject" }, "type": { "description": "Message type: INMAIL, MESSAGE, INMAIL_ACCEPT, INMAIL_REPLY, etc.", "title": "Type", "type": "string" } }, "title": "SalesNavThreadMessageOut", "type": "object" } }, "additionalProperties": true, "properties": { "archived": { "title": "Archived", "type": "boolean" }, "id": { "description": "Sales Navigator thread ID.", "title": "Id", "type": "string" }, "messages": { "items": { "$ref": "#/$defs/SalesNavThreadMessageOut" }, "title": "Messages", "type": "array" }, "next_page_starts_at": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Unix ms timestamp — value from the oldest thread, used as page_starts_at cursor.", "title": "Next Page Starts At" }, "participants": { "items": { "$ref": "#/$defs/SalesNavProfileOut" }, "title": "Participants", "type": "array" }, "restrictions": { "items": { "type": "string" }, "title": "Restrictions", "type": "array" }, "total_message_count": { "title": "Total Message Count", "type": "integer" }, "unread_count": { "title": "Unread Count", "type": "integer" } }, "title": "SalesNavThreadOut", "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "limit": { "default": 8, "description": "Maximum number of rows to return.", "maximum": 25, "minimum": 1, "type": "integer" }, "query": { "description": "Industry name to look up, e.g. 'software', 'banque', 'real estate'.", "type": "string" } }, "required": [ "query" ], "type": "object" }, "name": "salesnav_resolve_industry", "outputSchema": { "additionalProperties": true, "properties": { "candidates": { "items": { "additionalProperties": true, "properties": { "hierarchy": { "type": "string" }, "id": { "type": "string" }, "label": { "type": "string" }, "score": { "type": "number" } }, "type": "object" }, "type": "array" }, "query": { "type": "string" } }, "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "copy_to_crm": { "default": false, "description": "Copy message to CRM.", "type": "boolean" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "text": { "description": "Message body (plain text).", "type": "string" }, "thread_id": { "description": "Sales Navigator thread ID.", "type": "string" } }, "required": [ "account_id", "thread_id", "text" ], "type": "object" }, "name": "salesnav_send_message", "outputSchema": { "additionalProperties": true, "properties": { "message_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Message Id" }, "status_code": { "title": "Status Code", "type": "integer" }, "success": { "title": "Success", "type": "boolean" }, "thread_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Thread Id" } }, "title": "SalesNavSendMessageOut", "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "count": { "default": 10, "description": "Page size.", "maximum": 25, "minimum": 1, "type": "integer" }, "query": { "description": "Text to autocomplete, e.g. 'Paris', 'Google', 'HEC'.", "type": "string" }, "type": { "default": "geo", "description": "Facet to autocomplete. 'geo' -> region ids.", "enum": [ "geo", "company", "school", "title", "group", "industry" ], "type": "string" } }, "required": [ "account_id", "query" ], "type": "object" }, "name": "salesnav_typeahead", "outputSchema": { "additionalProperties": true, "properties": { "query": { "type": "string" }, "results": { "items": { "additionalProperties": true, "properties": { "displayValue": { "type": "string" }, "headline": { "type": "string" }, "id": { "type": "string" } }, "type": "object" }, "type": "array" }, "type": { "type": "string" } }, "type": "object" } }, { "description": "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).", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "comments": { "default": false, "description": "Include the people who commented, with their comment text.", "type": "boolean" }, "liked": { "default": false, "description": "Include the people who liked.", "type": "boolean" }, "max_posts": { "default": 10, "description": "Max posts to process (max 20).", "type": "integer" }, "since_hours": { "default": 24, "description": "Only posts from the last N hours (max 720).", "type": "integer" } }, "required": [ "account_id" ], "type": "object" }, "name": "scrape_my_posts", "outputSchema": { "$defs": { "LinkedInMyPostOut": { "additionalProperties": true, "description": "One of the account owner's posts with its engagers.", "properties": { "items": { "items": { "$ref": "#/$defs/LinkedInPostEngagerOut" }, "title": "Items", "type": "array" }, "post_text": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Excerpt of the post text (from the notification card).", "title": "Post Text" }, "post_url": { "description": "Public LinkedIn URL of the post.", "title": "Post Url", "type": "string" }, "post_urn": { "title": "Post Urn", "type": "string" }, "published_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null, "description": "ISO 8601 UTC timestamp of the post.", "title": "Published At" }, "total_comments": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Total Comments" }, "total_likes": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Total Likes" } }, "title": "LinkedInMyPostOut", "type": "object" }, "LinkedInPostEngagerOut": { "additionalProperties": true, "description": "A person who liked or commented on a LinkedIn post.", "properties": { "comment_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Full comment URN (comments only).", "title": "Comment Id" }, "comment_text": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Comment Text" }, "created_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null, "description": "ISO 8601 UTC timestamp of the like or comment.", "title": "Created At" }, "firstname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Firstname" }, "full_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Full Name" }, "headline": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Headline" }, "lastname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Lastname" }, "linkedin_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Linkedin Id" }, "linkedin_public_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Linkedin Public Id" }, "picture": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Picture" }, "reply_to_comment_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "URN of the parent comment when this item is a reply.", "title": "Reply To Comment Id" }, "type": { "description": "``like`` or ``comment``.", "title": "Type", "type": "string" } }, "title": "LinkedInPostEngagerOut", "type": "object" } }, "additionalProperties": true, "description": "Engagers across recent posts published by the connected account.", "properties": { "posts": { "items": { "$ref": "#/$defs/LinkedInMyPostOut" }, "title": "Posts", "type": "array" }, "total_posts": { "title": "Total Posts", "type": "integer" } }, "title": "LinkedInScrapeMyPostsOut", "type": "object" } }, { "description": "Fetch likers and/or commenters for a LinkedIn post. Pass the full post URL or slug. Set liked=true and/or comments=true.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "comments": { "default": false, "description": "Include commenters.", "type": "boolean" }, "liked": { "default": false, "description": "Include likers.", "type": "boolean" }, "post_id_or_url": { "description": "LinkedIn post URL or slug.", "type": "string" } }, "required": [ "account_id", "post_id_or_url" ], "type": "object" }, "name": "scrape_post", "outputSchema": { "$defs": { "LinkedInPostEngagerOut": { "additionalProperties": true, "description": "A person who liked or commented on a LinkedIn post.", "properties": { "comment_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Full comment URN (comments only).", "title": "Comment Id" }, "comment_text": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Comment Text" }, "created_at": { "anyOf": [ { "format": "date-time", "type": "string" }, { "type": "null" } ], "default": null, "description": "ISO 8601 UTC timestamp of the like or comment.", "title": "Created At" }, "firstname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Firstname" }, "full_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Full Name" }, "headline": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Headline" }, "lastname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Lastname" }, "linkedin_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Linkedin Id" }, "linkedin_public_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Linkedin Public Id" }, "picture": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Picture" }, "reply_to_comment_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "URN of the parent comment when this item is a reply.", "title": "Reply To Comment Id" }, "type": { "description": "``like`` or ``comment``.", "title": "Type", "type": "string" } }, "title": "LinkedInPostEngagerOut", "type": "object" } }, "additionalProperties": true, "description": "Aggregated likers and commenters for a LinkedIn post.", "properties": { "items": { "items": { "$ref": "#/$defs/LinkedInPostEngagerOut" }, "title": "Items", "type": "array" }, "post_id": { "title": "Post Id", "type": "string" }, "total_comments": { "default": 0, "title": "Total Comments", "type": "integer" }, "total_likes": { "default": 0, "title": "Total Likes", "type": "integer" } }, "title": "LinkedInScrapePostOut", "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "linkedin_id_or_url": { "description": "LinkedIn profile URL, vanity name, Sales Navigator URL, or internal member ID.", "type": "string" } }, "required": [ "account_id", "linkedin_id_or_url" ], "type": "object" }, "name": "scrape_profile", "outputSchema": { "additionalProperties": true, "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``.", "properties": { "company": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Current company name.", "title": "Company" }, "company_description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Company Description" }, "company_employee_count": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Company Employee Count" }, "company_employee_range": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Company Employee Range" }, "company_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "LinkedIn company ID.", "title": "Company Id" }, "company_industry": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Company Industry" }, "company_linkedin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "LinkedIn company page URL.", "title": "Company Linkedin" }, "company_location": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Company Location" }, "company_logo": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Company Logo" }, "company_specialties": { "anyOf": [ {}, { "type": "null" } ], "default": null, "title": "Company Specialties" }, "company_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Company Type" }, "company_website": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Company Website" }, "company_year_founded": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Company Year Founded" }, "connections": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Connections" }, "degree": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Network degree: 1, 2, or 3.", "title": "Degree" }, "firstname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Firstname" }, "full_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Full name as returned by LinkedIn (standard search only).", "title": "Full Name" }, "headline": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Headline" }, "industry": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Industry" }, "is_open_profile": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "title": "Is Open Profile" }, "is_opentowork": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "title": "Is Opentowork" }, "is_premium": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "title": "Is Premium" }, "job": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Current job title.", "title": "Job" }, "job_description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Job Description" }, "languages": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Languages" }, "lastname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Lastname" }, "linkedin_id": { "description": "Profile ID (fsd_profile or ts_profile suffix).", "title": "Linkedin Id", "type": "string" }, "linkedin_plain_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Numeric member ID (objectUrn suffix).", "title": "Linkedin Plain Id" }, "linkedin_public_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Vanity URL slug (/in/<slug>).", "title": "Linkedin Public Id" }, "location": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Location" }, "month_company": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Tenure at current company (months).", "title": "Month Company" }, "month_position": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Tenure at current position (months).", "title": "Month Position" }, "picture": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Profile picture URL.", "title": "Picture" }, "profile_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Public LinkedIn profile URL.", "title": "Profile Url" }, "salesnavigator_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Sales Navigator profile URL (SalesNav searches only).", "title": "Salesnavigator Url" }, "skills": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Skills" }, "startmonth_position": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Startmonth Position" }, "startyear_position": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Startyear Position" }, "summary": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Summary" }, "year_company": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Tenure at current company (years).", "title": "Year Company" }, "year_position": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Tenure at current position (years).", "title": "Year Position" } }, "title": "LinkedInScrapedUserOut", "type": "object" } }, { "description": "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).", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "count": { "default": 25, "description": "Page size (max 25). Ignored for standard LinkedIn.", "type": "integer" }, "start": { "default": 0, "description": "Pagination offset.", "type": "integer" }, "url": { "description": "Full LinkedIn / SalesNav / Recruiter search URL.", "type": "string" } }, "required": [ "account_id", "url" ], "type": "object" }, "name": "scrape_search", "outputSchema": { "$defs": { "LinkedInScrapedUserOut": { "additionalProperties": true, "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``.", "properties": { "company": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Current company name.", "title": "Company" }, "company_description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Company Description" }, "company_employee_count": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Company Employee Count" }, "company_employee_range": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Company Employee Range" }, "company_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "LinkedIn company ID.", "title": "Company Id" }, "company_industry": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Company Industry" }, "company_linkedin": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "LinkedIn company page URL.", "title": "Company Linkedin" }, "company_location": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Company Location" }, "company_logo": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Company Logo" }, "company_specialties": { "anyOf": [ {}, { "type": "null" } ], "default": null, "title": "Company Specialties" }, "company_type": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Company Type" }, "company_website": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Company Website" }, "company_year_founded": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Company Year Founded" }, "connections": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Connections" }, "degree": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Network degree: 1, 2, or 3.", "title": "Degree" }, "firstname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Firstname" }, "full_name": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Full name as returned by LinkedIn (standard search only).", "title": "Full Name" }, "headline": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Headline" }, "industry": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Industry" }, "is_open_profile": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "title": "Is Open Profile" }, "is_opentowork": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "title": "Is Opentowork" }, "is_premium": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ], "default": null, "title": "Is Premium" }, "job": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Current job title.", "title": "Job" }, "job_description": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Job Description" }, "languages": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Languages" }, "lastname": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Lastname" }, "linkedin_id": { "description": "Profile ID (fsd_profile or ts_profile suffix).", "title": "Linkedin Id", "type": "string" }, "linkedin_plain_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Numeric member ID (objectUrn suffix).", "title": "Linkedin Plain Id" }, "linkedin_public_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Vanity URL slug (/in/<slug>).", "title": "Linkedin Public Id" }, "location": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Location" }, "month_company": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Tenure at current company (months).", "title": "Month Company" }, "month_position": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Tenure at current position (months).", "title": "Month Position" }, "picture": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Profile picture URL.", "title": "Picture" }, "profile_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Public LinkedIn profile URL.", "title": "Profile Url" }, "salesnavigator_url": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Sales Navigator profile URL (SalesNav searches only).", "title": "Salesnavigator Url" }, "skills": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "title": "Skills" }, "startmonth_position": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Startmonth Position" }, "startyear_position": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Startyear Position" }, "summary": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "title": "Summary" }, "year_company": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Tenure at current company (years).", "title": "Year Company" }, "year_position": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Tenure at current position (years).", "title": "Year Position" } }, "title": "LinkedInScrapedUserOut", "type": "object" } }, "additionalProperties": true, "description": "Paged results from a LinkedIn, Sales Navigator, or Recruiter search URL.", "properties": { "count": { "description": "Requested page size.", "title": "Count", "type": "integer" }, "items": { "items": { "$ref": "#/$defs/LinkedInScrapedUserOut" }, "title": "Items", "type": "array" }, "next_start": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Pass as ``start`` for the next page when present.", "title": "Next Start" }, "start": { "description": "Offset used for this request.", "title": "Start", "type": "integer" }, "total": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "description": "Total results reported by LinkedIn.", "title": "Total" } }, "title": "LinkedInScrapeSearchPageOut", "type": "object" } }, { "description": "Send a LinkedIn DM via Voyager createMessage: use conversation_linkedin_id for an existing thread or recipient_linkedin_id for a new DM.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "conversation_linkedin_id": { "description": "Conversation (thread) id, as returned by list_conversations.", "type": "string" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "in_mail_premium": { "description": "Send as InMail to someone outside the network (premium accounts); requires recipient_linkedin_id.", "type": "boolean" }, "recipient_linkedin_id": { "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.", "type": "string" }, "text": { "description": "Plain text to send or post.", "type": "string" } }, "required": [ "account_id" ], "type": "object" }, "name": "send_message", "outputSchema": { "additionalProperties": true, "properties": { "status_code": { "description": "HTTP status from LinkedIn (e.g. 201 on success).", "title": "Status Code", "type": "integer" }, "success": { "title": "Success", "type": "boolean" } }, "title": "LinkedInSendMessageOut", "type": "object" } }, { "description": "Star or unstar a LinkedIn conversation. Set star=false to remove the star. conversation_linkedin_id is the conversation_id returned by list_conversations.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "conversation_linkedin_id": { "description": "Conversation (thread) id, as returned by list_conversations.", "type": "string" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "star": { "default": true, "description": "True to star, False to unstar.", "type": "boolean" } }, "required": [ "account_id", "conversation_linkedin_id" ], "type": "object" }, "name": "star_conversation", "outputSchema": { "additionalProperties": true, "properties": { "starred": { "description": "Current starred state", "type": "boolean" } }, "type": "object" } }, { "description": "Send a signed 'ping' event to a webhook endpoint right now and report the HTTP status it answered.", "inputSchema": { "additionalProperties": false, "properties": { "endpoint_id": { "description": "Webhook endpoint id, from list_webhook_endpoints.", "type": "integer" } }, "required": [ "endpoint_id" ], "type": "object" }, "name": "test_webhook_endpoint", "outputSchema": { "additionalProperties": true, "properties": { "ok": { "type": "boolean" }, "response_excerpt": { "type": "string" }, "response_status": { "type": [ "integer", "null" ] } }, "type": "object" } }, { "description": "Update one or more quota configuration fields for a LinkedIn account. Only provided fields are updated.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "daily_comments_conf": { "description": "Daily limit for 'comments' on this account; 0 means unlimited.", "type": "integer" }, "daily_imports_recruiter_conf": { "description": "Daily limit for 'imports_recruiter' on this account; 0 means unlimited.", "type": "integer" }, "daily_imports_salesnav_conf": { "description": "Daily limit for 'imports_salesnav' on this account; 0 means unlimited.", "type": "integer" }, "daily_imports_standard_conf": { "description": "Daily limit for 'imports_standard' on this account; 0 means unlimited.", "type": "integer" }, "daily_invitations_conf": { "description": "Daily limit for 'invitations' on this account; 0 means unlimited.", "type": "integer" }, "daily_messages_conf": { "description": "Daily limit for 'messages' on this account; 0 means unlimited.", "type": "integer" }, "daily_posts_conf": { "description": "Daily limit for 'posts' on this account; 0 means unlimited.", "type": "integer" }, "daily_reactions_conf": { "description": "Daily limit for 'reactions' on this account; 0 means unlimited.", "type": "integer" }, "daily_visits_conf": { "description": "Daily limit for 'visits' on this account; 0 means unlimited.", "type": "integer" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" } }, "required": [ "account_id" ], "type": "object" }, "name": "update_account_quotas", "outputSchema": { "additionalProperties": true, "properties": { "account_id": { "type": "integer" }, "quotas": { "additionalProperties": true, "type": "object" }, "updated": { "type": "boolean" } }, "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "post_urn": { "description": "URN of the scheduled post (urn:li:…), from list_scheduled_posts.", "type": "string" }, "scheduled_at": { "description": "Unix timestamp in milliseconds.", "type": "integer" }, "text": { "description": "Plain text to send or post.", "type": "string" } }, "required": [ "account_id", "post_urn" ], "type": "object" }, "name": "update_scheduled_post", "outputSchema": { "additionalProperties": true, "properties": { "post_urn": { "type": "string" }, "updated": { "type": "boolean" } }, "type": "object" } }, { "description": "Change a webhook's url, events, account_ids, description or is_active. Only provided fields change. Re-enabling clears the failure counter.", "inputSchema": { "additionalProperties": false, "properties": { "account_ids": { "description": "Only these LinkedIn account ids; omit for every account of the user.", "items": { "type": "integer" }, "type": "array" }, "description": { "description": "Free-text label for your own reference.", "maxLength": 200, "type": "string" }, "endpoint_id": { "description": "Webhook endpoint id, from list_webhook_endpoints.", "type": "integer" }, "events": { "description": "Event types to subscribe to (message.received, connection.new, account.status_changed, quota.threshold_reached, quota.reached) or ['*'].", "items": { "type": "string" }, "type": "array" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "is_active": { "description": "Pause (false) or resume (true) deliveries.", "type": "boolean" }, "url": { "description": "https URL that receives the signed JSON POST (http accepted for localhost only).", "type": "string" } }, "required": [ "endpoint_id" ], "type": "object" }, "name": "update_webhook_endpoint", "outputSchema": { "additionalProperties": true, "properties": { "account_ids": { "items": { "type": "integer" }, "type": [ "array", "null" ] }, "consecutive_failures": { "type": "integer" }, "created_at": { "type": "string" }, "description": { "type": "string" }, "disabled_reason": { "type": "string" }, "events": { "items": { "type": "string" }, "type": "array" }, "id": { "type": "integer" }, "is_active": { "type": "boolean" }, "last_delivery_at": { "type": "string" }, "url": { "type": "string" } }, "type": "object" } }, { "description": "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.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "image_url": { "description": "Publicly accessible URL of the image to upload.", "type": "string" }, "media_upload_type": { "default": "IMAGE_SHARING", "description": "LinkedIn media upload type (default: IMAGE_SHARING).", "type": "string" } }, "required": [ "account_id", "image_url" ], "type": "object" }, "name": "upload_media_from_url", "outputSchema": { "additionalProperties": true, "properties": { "urn": { "description": "urn:li:digitalmediaAsset:… to pass as media_urn", "type": "string" } }, "type": "object" } }, { "description": "Get recent posts published by a LinkedIn member (via profileUpdatesV2). Paginate with start/count.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "count": { "default": 10, "description": "Number of posts (max 50).", "type": "integer" }, "linkedin_id_or_url": { "description": "LinkedIn member ID, vanity name, or profile URL.", "type": "string" }, "start": { "default": 0, "description": "Pagination offset.", "type": "integer" } }, "required": [ "account_id", "linkedin_id_or_url" ], "type": "object" }, "name": "user_posts", "outputSchema": { "$defs": { "LinkedInUserPostOut": { "additionalProperties": true, "description": "A post published by a LinkedIn member.", "properties": { "post_text": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Post content text.", "title": "Post Text" }, "post_url": { "description": "Public LinkedIn URL of the post.", "title": "Post Url", "type": "string" }, "post_urn": { "title": "Post Urn", "type": "string" }, "published_at_relative": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Human-readable relative publish time (e.g. '3 days ago').", "title": "Published At Relative" }, "total_comments": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Total Comments" }, "total_likes": { "anyOf": [ { "type": "integer" }, { "type": "null" } ], "default": null, "title": "Total Likes" } }, "title": "LinkedInUserPostOut", "type": "object" } }, "additionalProperties": true, "description": "Recent posts published by a LinkedIn member.", "properties": { "posts": { "items": { "$ref": "#/$defs/LinkedInUserPostOut" }, "title": "Posts", "type": "array" }, "total_posts": { "title": "Total Posts", "type": "integer" } }, "title": "LinkedInUserPostsOut", "type": "object" } }, { "description": "Simulate a profile view, triggering a 'viewed your profile' notification for the target member.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "linkedin_id_or_url": { "description": "LinkedIn member ID, vanity name, or profile URL.", "type": "string" } }, "required": [ "account_id", "linkedin_id_or_url" ], "type": "object" }, "name": "visit_profile", "outputSchema": { "additionalProperties": true, "properties": { "visited": { "type": "boolean" } }, "type": "object" } }, { "description": "Withdraw a pending sent connection request.", "inputSchema": { "additionalProperties": false, "properties": { "account_id": { "description": "Reach id of the LinkedIn account to act on, from list_accounts.", "type": "integer" }, "idempotency_key": { "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.", "maxLength": 200, "type": "string" }, "linkedin_id_or_url": { "description": "The LinkedIn member: profile URL, vanity name (the part after /in/), Sales Navigator URL, or internal member id.", "type": "string" } }, "required": [ "account_id", "linkedin_id_or_url" ], "type": "object" }, "name": "withdraw_invitation", "outputSchema": { "additionalProperties": true, "properties": { "withdrawn": { "type": "boolean" } }, "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:34ea4f6cd485ee6bc879093d2fd5c18b73c6feaee7c04faeb46b6d15c3dddb00 | sha256sum