# LinkMCP — Full Documentation > MCP server that connects LinkedIn to AI assistants. Qualify leads, read posts, manage messages, grow your network, and publish content — all through natural language. ## What is LinkMCP? LinkMCP is an MCP server that connects your AI assistant (Claude, Cursor, Windsurf, or any MCP-compatible client) to your LinkedIn account. Instead of switching between apps, you can ask your AI to look up profiles, read posts, send messages, and more — all through natural conversation. You don't need to learn any APIs or write code. Just describe what you want in plain language, and your AI handles the rest. LinkMCP uses the Model Context Protocol (MCP) — an open standard that lets AI assistants use external tools. When you ask your AI something about LinkedIn, it calls LinkMCP behind the scenes to fetch data or take actions on your behalf. You connect your LinkedIn account once, generate an access token, and configure your AI client. After that, LinkedIn is just another thing your AI knows how to use. ## Quick Start ### Step 1: Connect your AI tools Go to https://app.linkmcp.io and sign up. Connect your LinkedIn account, then generate a Personal Access Token (PAT). ### Step 2: Configure your AI client Add LinkMCP as an MCP server in your AI client's configuration: - **Server URL:** https://app.linkmcp.io/api/mcp - **Auth:** Bearer token (your PAT) - **Transport:** HTTP with JSON-RPC 2.0 ### Step 3: Try it out Once connected, open your AI client and try: - "Look up the LinkedIn profile for satya-nadella" - "What are the latest posts from linkedin company page?" - "Show me my unread LinkedIn messages" ## Capabilities ### Profiles & Companies Look up anyone on LinkedIn — get their background, experience, and company details. Ask your AI to look up any LinkedIn profile or company page. You can use a LinkedIn URL, a profile slug (the part after /in/), or just describe who you're looking for. Your AI will figure out the rest. **Looking up people — what you get back:** - Name, headline, and profile summary - Current and past work experience with company names and dates - Education history - Location - Skills and languages - Profile URL and connection degree - Details about their current company (automatically included) **Looking up companies — what you get back:** - Company name, tagline, and description - Industry and company size - Headquarters location - Website URL - Specialties - Founded year and type (public, private, etc.) **Bulk lookups:** Fetch up to 10 profiles or company pages in a single request. When you look up a person, their current company details are automatically included. You don't need to ask for the company separately. ### Posts & Engagement Read LinkedIn posts from people and companies, and see who's engaging with them. Your AI can pull recent posts from any LinkedIn profile or company page. You can also see who commented on or reacted to a specific post — useful for understanding audience sentiment, identifying engaged prospects, or monitoring competitor content. **Reading posts — what you get back:** - Post text content - Engagement counts (likes, comments, reposts) - Post URL so you can view it directly - Whether it's an original post or a repost - Timestamp **Viewing comments — what you get back:** - Comment text - Commenter's name and profile info - Timestamp **Viewing reactions — what you get back:** - Reactor's name and profile info - Reaction type (like, celebrate, support, love, insightful, funny) **Comment threads:** Fetch the replies under any comment — and the reactions on a specific comment, including your own. For large posts with many comments or reactions, results are automatically paginated. ### Messaging Read your LinkedIn inbox and send messages — all through your AI. Your AI can access your LinkedIn message inbox: list conversations, read message threads, and send messages. This is especially useful for managing outreach at scale or catching up on conversations without switching apps. **Checking your inbox — what you get back:** - List of conversations with participant info - Unread/read status - Last message timestamp - Conversation ID (used for reading messages or replying) **Reading a conversation — what you get back:** - Message text - Sender info - Timestamps - Read status - Attachments (if any) **Sending messages:** You can reply to existing conversations or start new ones. For people you're not connected with, InMail is available if your LinkedIn account supports it. InMail requires a LinkedIn Premium or Sales Navigator subscription on the connected account. ### Connections Manage your LinkedIn network — view connections, send and respond to requests. Your AI can help you manage your LinkedIn network: browse your existing connections, review incoming connection requests, and send new ones. You can even include personalized messages with your requests. **Viewing connections — what you get back:** - Name and headline - Profile URL - Public identifier **Connection requests:** Check what connection requests you've sent or received, and take action on incoming ones. **Shared connections:** List the mutual connections between you and any profile — the fastest way to find a warm introduction path. Personalized connection requests have a significantly higher acceptance rate. Ask your AI to write a short note based on the person's profile before sending. ### Search & Prospecting Find people on LinkedIn using keywords, filters, or search URLs. Your AI can search LinkedIn for people matching specific criteria — job title, location, industry, seniority, and more. This is the starting point for most prospecting and lead generation workflows. **LinkedIn search — what you get back:** - Name and headline - Current location - Profile URL - Network distance (1st, 2nd, 3rd+ connection) **Available filters:** - Keywords — any text to search for - Location — cities, regions, or countries - Industry — e.g. Software Development, Financial Services - Seniority — Entry, Senior, Manager, Director, VP, CXO, Owner - Network distance — 1st, 2nd, or 3rd+ connections - Profile language — filter by language **Sales Navigator search:** If your LinkedIn account has a Sales Navigator subscription, you get richer results and additional filters. Additional data from Sales Navigator: - Open profile status (can message without InMail) - Premium account indicator - Current positions with tenure duration - Job function filter (Engineering, Sales, Marketing, etc.) - Tenure at current company filter Sales Navigator search requires a Sales Navigator subscription on the connected LinkedIn account. You can also paste a LinkedIn search URL directly. ### Content Creation Create LinkedIn posts, comment on content, and react to posts in your feed. Your AI can publish content on LinkedIn on your behalf — create posts, leave thoughtful comments, and react to posts. **Creating posts:** Supports text, image attachments (via public URLs), @mentions, link preview cards, and reposting. **Commenting on posts:** Leave comments on any LinkedIn post. Supports threaded replies and @mentions. **Reacting to posts:** React to any post with like, celebrate, support, love, insightful, or funny. The quickest way to engage. LinkMCP includes a content check that catches common AI writing artifacts before posting. This helps your content look natural. ### Your LinkedIn Analytics and activity from your own account. **Post analytics:** Impressions, members reached, reactions, comments, and reposts for any post you authored — optionally with a viewer demographics breakdown (seniority, location, industry). **Profile views:** See who viewed your profile. LinkedIn Premium on the connected account is required for full detail. **Your engagement:** Every comment you wrote and reaction you gave, most recent first, each linked back to the post — check replies to your comments or revisit what you engaged with. **Saved items:** The posts you saved on LinkedIn, most recent first. Combined with the engagement tools, this enables closed-loop workflows: track who engages with your content, qualify them against your ICP, find shared connections for a warm intro, and reach out — all in one conversation. ## Tool Reference ### Profile & Company Fetch LinkedIn profiles and company pages. Supports URLs, slugs, URNs, and bulk lookups. #### linkedin_get_profile Get a LinkedIn person profile by URL, public ID (slug), or URN. **Parameters:** - `identifier` (string, required): LinkedIn profile URL (e.g. https://www.linkedin.com/in/john-doe), public ID / slug (e.g. "john-doe"), or URN (e.g. "urn:li:fsd_profile:ABC123"). - `include_main_company_details` (boolean, optional): When true, also fetch the organization from the most recent experience entry that has a company URL. Default: true. **Returns:** Full profile with name, headline, summary, location, experience, education, skills, and optionally the main company details. --- #### linkedin_get_company Get a LinkedIn company profile by URL, slug, or numeric ID. **Parameters:** - `identifier` (string, required): LinkedIn company URL (e.g. https://www.linkedin.com/company/acme), company slug (e.g. "acme"), or numeric ID. **Returns:** Company profile with name, description, industry, size, headquarters, specialties, and website. --- #### linkedin_bulk_get_profiles Fetch slim LinkedIn profiles in bulk (up to 10). Returns per-item results with error tracking — never stops on first error. **Parameters:** - `identifiers` (string[], required): Array of LinkedIn profile identifiers (URLs, public IDs / slugs, or URNs). 1–10 items. **Returns:** Array of results, each containing either a slim profile or an error. All items are attempted regardless of individual failures. --- #### linkedin_bulk_get_companies Fetch slim LinkedIn company profiles in bulk (up to 10). Returns per-item results with error tracking — never stops on first error. **Parameters:** - `identifiers` (string[], required): Array of LinkedIn company identifiers (URLs, slugs, or numeric IDs). 1–10 items. **Returns:** Array of results, each containing either a slim company profile or an error. All items are attempted regardless of individual failures. --- ### Posts & Engagement Read posts from people and companies, and view comments and reactions on any post. #### linkedin_get_person_posts Get a person's recent LinkedIn posts by profile URL, public ID (slug), or URN. Returns up to ~50 posts with text, engagement counts, and post URL. **Parameters:** - `identifier` (string, required): LinkedIn profile URL, public ID / slug (e.g. "john-doe"), or URN. - `cursor` (string, optional): Continuation cursor from a previous call. Pass this to fetch the next batch of posts. **Returns:** Array of posts with text content, engagement counts (likes, comments, reposts), post URL, and activity URN. Includes pagination cursor. --- #### linkedin_get_company_posts Get a company's recent LinkedIn posts by company URL, slug, or numeric ID. Returns up to ~30 posts with text, engagement counts, and post URL. **Parameters:** - `identifier` (string, required): LinkedIn company URL, company slug (e.g. "acme"), or numeric ID. - `cursor` (string, optional): Continuation cursor from a previous call. Pass this to fetch the next batch of posts. **Returns:** Array of posts with text content, engagement counts, post URL, and activity URN. Includes pagination cursor. --- #### linkedin_get_post_comments Get comments on a LinkedIn post. Provide activityUrn (from linkedin_get_person_posts) or a post URL. **Parameters:** - `activityUrn` (string, optional): Activity URN from a prior linkedin_get_person_posts call (e.g. "urn:li:activity:7139995994070454272"). Preferred over postUrl. - `postUrl` (string, optional): LinkedIn post URL. Use when activityUrn is not available. - `cursor` (string, optional): Continuation cursor from a previous call. Pass this to fetch the next batch of comments. **Returns:** Array of comments with text, commenter profile info, and timestamp. Includes pagination cursor. - Note: At least one of activityUrn or postUrl is required. --- #### linkedin_get_nested_comments Get the replies under a specific comment on a LinkedIn post. Chain after linkedin_get_post_comments: pick a comment with replyCount > 0 and pass its commentId. **Parameters:** - `activityUrn` (string, required): The post's activity URN or a LinkedIn post URL. Obtain from linkedin_get_post_comments or linkedin_get_person_posts output. - `parentCommentId` (string, required): commentId of the parent comment whose replies you want to fetch (from linkedin_get_post_comments output where replyCount > 0). - `cursor` (string, optional): Continuation cursor from a previous call. Pass this to fetch the next batch of replies. **Returns:** Array of reply comments with text, commenter profile info, timestamp, and per-reply counts for drilling into deeper threads. Includes pagination cursor. - Note: Requires a connected LinkedIn account. --- #### linkedin_get_post_reactions Get reactions on a LinkedIn post, or on a specific comment when commentId is set. Provide activityUrn or a post URL. Returns reactor profiles and reaction types. **Parameters:** - `activityUrn` (string, optional): Activity URN from a prior call (e.g. "urn:li:activity:7139995994070454272"). Preferred over postUrl. - `postUrl` (string, optional): LinkedIn post URL. Use when activityUrn is not available. - `commentId` (string, optional): Comment ID from linkedin_get_post_comments or linkedin_get_nested_comments. When set, returns reactions on that comment instead of the post. - `cursor` (string, optional): Continuation cursor from a previous call. Pass this to fetch the next batch of reactions. **Returns:** Array of reactions with reactor profile info and reaction type (like, celebrate, support, love, insightful, funny). Includes pagination cursor. - Note: At least one of activityUrn or postUrl is required. - Note: Comment-level reactions (commentId) require a connected LinkedIn account. --- ### Messaging List conversations, read messages, and send new messages or replies. #### linkedin_list_conversations List your LinkedIn DM conversations (inbox). Supports filtering by read status and date range. **Parameters:** - `unread_only` (boolean, optional): If true, return only conversations with unread messages. If false, return only read conversations. Omit to return all. - `after` (string, optional): Only return conversations updated after this datetime (exclusive). ISO 8601 UTC format. - `before` (string, optional): Only return conversations updated before this datetime (exclusive). ISO 8601 UTC format. - `cursor` (string, optional): Pagination cursor from a previous response. - `limit` (number, optional): Number of conversations to return per page (1–100). Default: 20. **Returns:** Array of conversations with ID, timestamp, unread status, and participant info. Includes pagination cursor. --- #### linkedin_get_conversation_messages Get messages from a LinkedIn DM conversation. Use linkedin_list_conversations first to get the chat_id. **Parameters:** - `chat_id` (string, required): The conversation/chat ID to fetch messages from. - `cursor` (string, optional): Pagination cursor from a previous response. - `limit` (number, optional): Number of messages to return per page (1–100). Default: 50. **Returns:** Array of messages with text, timestamp, sender ID, read status, and attachments. Includes pagination cursor. --- #### linkedin_send_message Send a LinkedIn message. Reply to an existing conversation (chat_id) or start a new one (recipient_identifier). Supports InMail for non-connections. _Write operation_ — modifies data on LinkedIn. **Parameters:** - `chat_id` (string, optional): Chat ID for replying to existing conversation. Mutually exclusive with recipient_identifier. - `recipient_identifier` (string, optional): LinkedIn profile URL, public ID, or URN. For starting a new conversation. Mutually exclusive with chat_id. - `text` (string, required): Message text. Must not be empty. - `inmail` (boolean, optional): Send as InMail for non-connections. Only with recipient_identifier. - `linkedin_api` (string, optional): LinkedIn API to use. Only with recipient_identifier. Values: classic, sales_navigator, recruiter. **Returns:** Confirmation of sent message with message ID and timestamp. - Note: Either chat_id or recipient_identifier is required. --- ### Connections Manage your LinkedIn network — list connections, view and respond to connection requests, and send new ones. #### linkedin_get_connections List your LinkedIn connections (1st-degree). Returns name, headline, profile URL, and public identifier. **Parameters:** - `cursor` (string, optional): Pagination cursor from a previous response. - `limit` (number, optional): Number of connections to return per page (1–100). Default: 50. **Returns:** Array of connections with name, headline, profile URL, and public identifier. Includes pagination cursor. --- #### linkedin_get_shared_connections List the mutual connections between you and a target LinkedIn profile — the people who can make a warm introduction. **Parameters:** - `identifier` (string, required): Target LinkedIn profile: URL, public ID / slug (e.g. "john-doe"), or URN. - `cursor` (string, optional): Pagination cursor from a previous response. Pass together with the same identifier. **Returns:** Array of shared connections with name, headline, location, and profile URL, plus the total count. Includes pagination cursor. - Note: Requires a connected LinkedIn account. --- #### linkedin_list_connection_requests List pending LinkedIn connection requests. Use direction "sent" for outgoing, "received" for incoming. **Parameters:** - `direction` (string, optional): Direction of connection requests: "sent" for outgoing, "received" for incoming. Default: sent. Values: sent, received. - `cursor` (string, optional): Pagination cursor from a previous response. - `limit` (number, optional): Number of connection requests to return per page (1–100). Default: 50. **Returns:** Array of connection requests with ID, shared_secret (for received), sender/recipient info, and timestamp. Includes pagination cursor. --- #### linkedin_manage_connection_request Accept, decline, or withdraw a LinkedIn connection request. For received requests (linkedin_list_connection_requests with direction "received"), use "accept" or "decline" with the shared_secret. For sent requests (direction "sent"), use "withdraw" to cancel a pending outgoing invitation — no shared_secret needed. _Write operation_ — modifies data on LinkedIn. **Parameters:** - `connection_request_id` (string, required): The connection request ID from linkedin_list_connection_requests. - `action` (string, required): Action to take. "accept" or "decline" for received requests. "withdraw" for sent requests. Values: accept, decline, withdraw. - `shared_secret` (string, optional): The shared_secret from linkedin_list_connection_requests. Required for "accept" and "decline". Not needed for "withdraw". **Returns:** Confirmation of the accept, decline, or withdraw action. --- #### linkedin_send_connection_request Send a LinkedIn connection request to a person. Optionally include a personalized message (max 300 characters). _Write operation_ — modifies data on LinkedIn. **Parameters:** - `identifier` (string, required): LinkedIn profile URL, public ID / slug, or URN of the person to connect with. - `message` (string, optional): Optional personalized message (max 300 characters). Leave empty for a default connection request. **Returns:** Confirmation that the connection request was sent. --- ### Search Search LinkedIn for people using keywords and filters. Supports both classic LinkedIn search and Sales Navigator. #### linkedin_search_people Search LinkedIn for people by keywords and filters, or pass a LinkedIn search URL directly. **Parameters:** - `url` (string, optional): LinkedIn search URL. Mutually exclusive with keywords/filters. - `keywords` (string, optional): Search keywords (e.g. "sales director"). Required for filter-based search. - `location` (string[], optional): Location filter as text values (e.g. ["San Francisco Bay Area"]). Resolved to LinkedIn IDs automatically. - `industry` (string[], optional): Industry filter as text values (e.g. ["Software Development"]). Resolved to LinkedIn IDs automatically. - `seniority` (number[], optional): Seniority level filter (1=Unpaid, 2=Training, 3=Entry, 4=Senior, 5=Manager, 6=Director, 7=VP, 8=CXO, 9=Partner, 10=Owner). - `network_distance` (number[], optional): Network distance filter (1=1st, 2=2nd, 3=3rd+ connections). - `profile_language` (string[], optional): Profile language filter as ISO codes (e.g. ["en", "de"]). - `cursor` (string, optional): Pagination cursor from a previous response. **Returns:** Array of search results with name, headline, location, profile URL, and network distance. Includes pagination cursor. - Note: Either url, keywords (with optional filters), or cursor is required. --- #### linkedin_search_sales_navigator Search LinkedIn Sales Navigator for people. Returns richer results including open profile status, premium status, and current positions with tenure. Requires a Sales Navigator subscription. **Parameters:** - `url` (string, optional): Sales Navigator search URL. Also accepts classic LinkedIn search URLs. Mutually exclusive with keywords/filters. - `keywords` (string, optional): Search keywords (e.g. "VP engineering"). Required for filter-based search. - `location` (string[], optional): Location filter as text values (e.g. ["San Francisco Bay Area"]). - `industry` (string[], optional): Industry filter as text values (e.g. ["Software Development"]). - `seniority` (number[], optional): Seniority level filter (1=Unpaid, 2=Training, 3=Entry, 4=Senior, 5=Manager, 6=Director, 7=VP, 8=CXO, 9=Partner, 10=Owner). - `network_distance` (number[], optional): Network distance filter (1=1st, 2=2nd, 3=3rd+). - `profile_language` (string[], optional): Profile language filter as ISO codes (e.g. ["en", "de"]). - `function` (number[], optional): Job function filter (1=Accounting, 2=Administrative, 3=Arts and Design, 4=Business Dev, 5=Community, 6=Consulting, 7=Education, 8=Engineering, 9=Entrepreneurship, 10=Finance, 11=Healthcare, 12=HR, 13=IT, 14=Legal, 15=Marketing, 16=Media, 17=Military, 18=Operations, 19=Product Mgmt, 20=Program Mgmt, 21=Purchasing, 22=QA, 23=Real Estate, 24=Research, 25=Sales, 26=Support). Sales Navigator only. - `tenure` (object[], optional): Tenure at current company as ranges in years (e.g. [{"min": 1, "max": 3}]). Sales Navigator only. - `cursor` (string, optional): Pagination cursor from a previous response. **Returns:** Array of results with name, headline, location, profile URL, network distance, open profile status, premium status, and current positions with tenure. Includes pagination cursor. - Note: Requires a Sales Navigator subscription on the connected LinkedIn account. - Note: Either url, keywords (with optional filters), or cursor is required. --- ### Content Creation Create posts, comment on posts, and react to posts on LinkedIn. #### linkedin_create_post Create a LinkedIn post. Supports text, image attachments (via public URLs), @mentions, link preview cards, and reposting. _Write operation_ — modifies data on LinkedIn. **Parameters:** - `text` (string, required): Post content (max 3000 chars). Use \n for line breaks. Use {{0}}, {{1}} etc. for mentions. - `image_urls` (string[], optional): Array of publicly accessible image URLs (JPEG, PNG, GIF, max 5MB each, max 20). - `mentions` (object[], optional): Array of mentions with name (display name), profile_id (LinkedIn provider ID), and optional is_company boolean. - `external_link` (string, optional): URL for a link preview card. Must also appear in the post text. - `repost` (string, optional): social_id of an existing post to share/repost. Text can be empty for a simple repost. - `content_check` (string, optional): Controls LLM content artifact detection. Default: strict. Values: strict, autofix, disabled. **Returns:** Confirmation with the new post URL and activity URN. --- #### linkedin_comment_on_post Comment on a LinkedIn post. Supports threaded replies and @mentions. Mention identifiers are automatically resolved. _Write operation_ — modifies data on LinkedIn. **Parameters:** - `post_url` (string, optional): LinkedIn post URL. Use post_url or post_id, at least one is required. - `post_id` (string, optional): Activity URN or numeric activity ID. Use post_url or post_id, at least one is required. - `text` (string, required): Comment text (max 1250 chars). Use \n for line breaks. Use {{0}}, {{1}} etc. for mentions. - `comment_id` (string, optional): ID of an existing comment to reply to (threaded reply). - `mentions` (object[], optional): Array of mentions with name (display name) and identifier (profile URL, slug, or URN — automatically resolved). - `content_check` (string, optional): Controls LLM content artifact detection. Default: strict. Values: strict, autofix, disabled. **Returns:** Confirmation with comment ID and timestamp. - Note: At least one of post_url or post_id is required. --- #### linkedin_react_to_post React to a LinkedIn post (like, celebrate, support, love, insightful, funny). The lowest-friction engagement action. _Write operation_ — modifies data on LinkedIn. **Parameters:** - `post_url` (string, optional): LinkedIn post URL. Use post_url or post_id, at least one is required. - `post_id` (string, optional): Activity URN or numeric activity ID. Use post_url or post_id, at least one is required. - `reaction_type` (string, optional): Reaction type. Default: like. Values: like, celebrate, support, love, insightful, funny. - `comment_id` (string, optional): React to a specific comment instead of the post itself. **Returns:** Confirmation of the reaction. - Note: At least one of post_url or post_id is required. --- ### Your LinkedIn Insights from your own account — post performance, profile viewers, your engagement activity, and saved items. #### linkedin_who_am_i Get the connected LinkedIn account: display name, public profile URL, URN, and which premium features are active (Sales Navigator, Recruiter). **Parameters:** **Returns:** Account display name, public profile URL, LinkedIn URN, and active premium feature flags. --- #### linkedin_get_post_analytics Get engagement metrics for one of your own LinkedIn posts: impressions, members reached, reactions, comments, reposts — optionally with a viewer demographics breakdown. **Parameters:** - `post` (string, required): LinkedIn post URL or activity URN. - `include_demographics` (boolean, optional): Include the top viewer demographics breakdown (seniority, location, industry). Default: false. **Returns:** Impressions, members reached, reactions by type, comments, reposts, saves, sends — and optionally top viewer demographics. - Note: Only works for posts authored by the connected LinkedIn account. --- #### linkedin_get_profile_views List the recent viewers of your own LinkedIn profile (the “Who viewed your profile” surface). **Parameters:** - `start` (number, optional): Offset into the viewer list for pagination. Use the nextStart value from a prior response. Default: 0. **Returns:** Viewer entries with name, headline, connection degree, and mutual connections — plus aggregated entries. Includes nextStart for pagination. - Note: LinkedIn Premium on the connected account is required for non-blurred results. --- #### linkedin_get_my_engagement List your own engagement activity, most recent first: comments you wrote or reactions you gave. Every item links back to the post, so you can chain into the comments and reactions tools. **Parameters:** - `type` (string, required): Which engagement activity to list. Values: comments, reactions. - `cursor` (string, optional): Pagination cursor from a previous response of the same type. - `limit` (number, optional): Items per page (1–100). Default: 20. **Returns:** Your comments (with reply and reaction counts) or your reactions, each with the post URL and activity URN. Includes pagination cursor. --- #### linkedin_get_my_saved_items List the posts you saved on LinkedIn, most recent first. **Parameters:** - `type` (string, optional): Which saved-items section to fetch. Default: posts. Values: posts. - `start` (number, optional): Offset into the saved-items list for pagination. Use the nextStart value from a prior response. Default: 0. **Returns:** Saved post previews with author info, text snippet, post URL, and activity URN. Includes nextStart for pagination. --- ### Contact Enrichment Find work emails, validate email addresses, and look up mobile phone numbers for your contacts. #### find_email Find a person's work email address given their name and company. Works best when you provide the company domain. Use linkedin_get_profile first if you need their name or company. **Parameters:** - `first_name` (string, required): Person's first name. - `last_name` (string, required): Person's last name. - `company_domain` (string, optional): Company website domain (e.g. "acme.com"). Recommended for best accuracy. - `company_name` (string, optional): Company name (e.g. "Acme Inc"). Used when domain is not available. **Returns:** Email address with deliverability status (valid, invalid, catch-all, or unknown), domain catch-all flag, and MX provider. - Note: At least one of company_domain or company_name must be provided. --- #### validate_email Validate an email address for deliverability. Returns whether the email is valid, invalid, catch-all, or unknown, along with MX provider details. Use this to verify emails before sending outreach. **Parameters:** - `email` (string, required): Email address to validate (e.g. "john@company.com"). **Returns:** Email status (valid, invalid, catch-all, unknown), MX record, MX provider (e.g. Google Workspace), domain catch-all flag, and security gateway details. --- #### find_mobile Find a person's mobile phone number. Accepts a LinkedIn profile URL, slug, or an email address. At least one identifier is required. **Parameters:** - `linkedin_profile` (string, optional): LinkedIn profile URL (e.g. "https://linkedin.com/in/johndoe") or slug (e.g. "johndoe"). - `email` (string, optional): Email address (alternative or additional identifier for the person). **Returns:** Mobile phone number in clean format, or null if not found. - Note: At least one of linkedin_profile or email must be provided. --- ### Utility Platform tools for feedback, support, and feature requests. #### send_feedback Send feedback, feature requests, bug reports, or help requests to the LinkMCP team. _Write operation_ — modifies data on LinkedIn. **Parameters:** - `type` (string, required): The type of feedback. Values: feedback, feature_request, bug_report, help. - `message` (string, required): Your feedback message (max 5000 chars). Be as detailed as you like. - `context` (object, optional): Optional context. For bug reports, include the tool name, error message, and what you were trying to do. **Returns:** Confirmation that the feedback was received. ## Pricing | Plan | Price | Usage | Description | |------|-------|-------|-------------| | Free Trial | Free (7 days) | — | Explore LinkMCP without connecting LinkedIn. | | Starter | $19/mo | 1× | Connect LinkedIn. Full access. | | Pro | $49/mo | 5× | Full-time LinkedIn workflows. | | Max | $199/mo | 50× | Team-scale prospecting and automation. | All plans include every MCP tool. Higher plans simply increase monthly usage capacity. Features included in all plans: - Every MCP tool - LinkedIn + Sales Navigator support - Usage-based allowance ## FAQ **What is MCP?** Think of it as a universal plug that connects your AI assistant to other apps. Like how USB lets any device talk to your computer — MCP lets your AI talk to LinkedIn. You don't need to understand the protocol. You just need to connect. **Is this going to get my account flagged?** No. Requests are routed through dedicated proxies with strict rate limits well within LinkedIn's thresholds. No bulk scraping. Your session is treated exactly as if you were browsing LinkedIn yourself. All data is encrypted, never shared, and never used for anything other than serving your requests. **Do I need to know how to code?** No. If you can type a sentence, you can use LinkMCP. It's just a conversation with your AI — the connection to LinkedIn happens behind the scenes. ## Technical Details - **MCP endpoint:** https://app.linkmcp.io/api/mcp - **Transport:** HTTP with JSON-RPC 2.0 - **Auth:** Bearer token (Personal Access Token) - **MCP discovery:** https://app.linkmcp.io/.well-known/mcp.json - **Website:** https://app.linkmcp.io