105 tools via MCP

Every LinkedIn Tool, One MCP Server

Search people, send messages, publish posts, track analytics, and manage campaigns - all through the Model Context Protocol. Works with Claude, GPT, and any MCP-compatible AI agent.

Search & Discovery

Find people, companies, and content on LinkedIn

Search LinkedIn People

Read

Search LinkedIn's full people directory by keyword, job title, company, location, industry, and more. When a Sales Navigator subscription is detected, advanced filters like seniority level, years of experience, and recent job changes are automatically available. Results include name, headline, profile URL, and connection degree.

Search LinkedIn Companies

Read

Search LinkedIn's company directory by keyword, industry, location, and employee headcount. Supports both Classic and Sales Navigator APIs - Sales Navigator mode uses nested filter structures automatically for richer results. Returns company name, description, industry, employee count, and page URL.

Search LinkedIn Posts

Read

Search posts by KEYWORD across all of LinkedIn. To get posts from a specific person, use list_posts instead. Discover trending content, monitor topics, and find engagement opportunities. Returns matching posts with full text content, engagement metrics (likes, comments, shares), and author information.

Get Search Parameters

Read

Retrieve valid LinkedIn search filter parameter IDs for use in search_people and search_companies. Returns structured lists of IDs for filter types like location, industry, company headcount, school, function, and seniority level. These IDs are required when using advanced search filters.

View LinkedIn Profile

Read

View a LinkedIn profile by URL or public identifier. Returns full profile data including experience, education, skills, headline, summary, and connection status. When Sales Navigator is available, provides richer data: full names for 3rd+ degree connections, contact info (emails/phones), shared connections count, and lead flags.

Get Company Profile

Read

Get a company's LinkedIn page details including full description, employee count, headquarters and office locations, industry classification, specialties, and follower count. Use the company name or LinkedIn page URL slug as the identifier.

Get Profile Viewers

Read

See who viewed your LinkedIn profile recently. Returns viewer names, headlines, current company, and when they viewed your profile. Useful for identifying warm leads who are already interested in you and for monitoring profile visibility after content campaigns.

Save Search

Write

Save a set of search parameters (keyword, title, company, location, etc.) under a user-defined name for easy re-execution later. Avoids re-entering complex filter combinations. Works with people, company, and post searches. Saved searches can be listed, run, and deleted.

List Saved Searches

Read

List all saved search configurations for your account. Returns search names, types, filter summaries, and last-run timestamps. Use this to find a saved search ID before running or deleting it.

Run Saved Search

Read

Execute a previously saved search using its stored filters. Supports cursor-based pagination so you can resume from where you left off across sessions. Returns the same results as the original search tool (people, companies, or posts) with full data.

Delete Saved Search

Caution

Delete a saved search configuration by ID. This permanently removes the saved filters and any associated cursor state. Use list_saved_searches to find the ID first.

Messaging

Send and manage LinkedIn messages and conversations

List Conversations

Read

List your LinkedIn message conversations with contact names, last message preview, and timestamps. Returns chat_id needed by send_message. If you need to message someone new, skip this and use start_conversation. Supports pagination for navigating through your full inbox.

Get Messages

Read

Get messages from a specific LinkedIn conversation by chat ID. Returns the full message history with sender names, message text, and timestamps. Supports pagination for long conversations. Use list_conversations first to get the chat_id.

Send Message

Write

Send a message in an existing LinkedIn conversation. Only works for EXISTING conversations. If you haven't messaged this person before, use start_conversation instead. Requires the chat_id from list_conversations. Supports campaign tagging for tracking outbound activity.

Start Conversation

Write

Start a new LinkedIn message conversation with one or more people. Use this to send the FIRST message to someone. For follow-up messages in an existing conversation, use send_message with the chat_id. Accepts LinkedIn profile IDs or URLs as recipients. Supports group conversations with multiple attendees. Automatically resolves profile URLs to provider IDs.

Send InMail

Write

Send an InMail message to someone outside your direct network. InMail lets you reach 2nd and 3rd degree connections without needing a connection first. Requires InMail credits on the sender's LinkedIn account. Supports optional subject lines and campaign tagging.

Label Conversation

Write

Add a custom label to a LinkedIn conversation for organization and split inbox views. Labels like 'Hot Lead', 'Client', or 'Candidate' help you filter and prioritize your inbox. A conversation can have multiple labels. Idempotent - adding the same label twice has no effect.

Unlabel Conversation

Caution

Remove a label from a LinkedIn conversation. Does not delete the conversation itself. No effect if the label was not present.

List Conversation Labels

Read

List all labels in use across your conversations with counts. Returns an array sorted by count descending. Use these labels with list_conversations to filter by label for split inbox views.

Snooze Conversation

Write

Snooze a conversation to hide it from your inbox until the specified time. When the reminder fires, the conversation resurfaces at the top of your inbox. If the other person replies before the reminder fires, it auto-cancels so you see the reply immediately. Optionally attach a note to remind yourself why you snoozed it.

Schedule Message

Write

Schedule a message to be sent in a conversation at a future time. Works outside of campaigns for loose follow-ups like 'message them in 2 weeks'. The message is auto-sent at the specified time. If they reply before then, the scheduled message is auto-cancelled.

List Reminders

Read

List all pending snooze reminders and scheduled messages. Shows what's snoozed, what messages are queued, and when they fire. Filter by status: pending (default), fired, cancelled, sent, failed, or 'all'.

Cancel Reminder

Caution

Cancel a pending snooze or scheduled message. If the conversation was snoozed (archived), it will be unarchived back into your inbox. Fails if the reminder is not found or already in a terminal status.

Smart Archive Conversation

Write

Archive a conversation with smart auto-return. Unlike LinkedIn's native archive, the conversation automatically resurfaces in your inbox when the other person sends a new message. Great for cleaning up your inbox without losing track of conversations.

Unarchive Conversation

Write

Unarchive a conversation, bringing it back into your active inbox. No effect if the conversation is not archived.

Bulk Archive Conversations

Write

Archive all stale conversations older than N days (default 30, min 7). Only archives conversations where you sent the last message and got no reply. All archived conversations auto-return when the other person replies. Use dry_run=true to preview without archiving.

Content

Create, read, and engage with LinkedIn posts

Create LinkedIn Post

Write

Publish a new LinkedIn post with text content and optional image or document attachments. Attachments are fetched from public URLs and uploaded to LinkedIn automatically. Supports campaign tagging for tracking content performance across multiple posts.

Get LinkedIn Post

Read

Retrieve a specific LinkedIn post by its ID. Returns the full post content, author information, engagement metrics (likes, comments, shares, impressions), and media attachments. Use this to inspect individual posts found via search or feed.

List LinkedIn Posts

Read

Get posts FROM a specific person's profile. For keyword search across all LinkedIn, use search_posts instead. Returns post content, engagement metrics, and supports pagination for browsing through a profile's full post history. Works with both personal profiles and company pages.

React to Post

Write

Add a reaction to a LinkedIn post. Supports all six LinkedIn reaction types: like, celebrate, support, love, insightful, and funny. Reactions are idempotent - calling it again won't create duplicates. Supports campaign tagging for tracking engagement activity.

Comment on Post

Write

Post a comment on a LinkedIn post, or reply to a specific comment (threaded reply). Use parent_comment_id to reply to someone's comment directly - they will be notified. Supports campaign tagging for tracking engagement activity. Commenting on prospects' posts is one of the highest-converting outreach warmup tactics.

Delete Comment

Caution

Delete a comment you posted on a LinkedIn post. Essential safety net for automated workflows - remove test comments, fix mistakes, or undo automated actions. Only works on comments you authored.

Edit Comment

Write

Edit a comment you previously posted on a LinkedIn post. Useful for fixing typos, updating wording, or refining comments posted by automated workflows. Only works on comments you authored.

List Post Comments

Read

List comments on a LinkedIn post. Returns comment text, author details (name, headline, company, title), thread structure (parent_comment_id, depth), and reaction counts. Accepts any post ID format - numeric, activity URN, or feed URN.

List Post Reactions

Read

List reactions on a LinkedIn post. Returns the reaction type (like, celebrate, love, etc.) and author details for each reaction. Supports pagination for highly-engaged posts. Useful for identifying who is engaging with content.

Get LinkedIn Feed

Read

Pull your LinkedIn feed - recent posts from your network. Returns posts with content, author info, and engagement metrics. Supports pagination via offset. Useful for discovering engagement opportunities, monitoring topics, and finding posts to comment on.

Engage With Latest Post

Write

React to (and optionally comment on) someone's most recent LinkedIn post in a single action. Automatically fetches the target's latest post, adds a reaction, and posts your comment if provided. Ideal for warming up prospects before sending a connection request.

List Scheduled Posts

Read

List all your pending scheduled posts that haven't been published yet. Returns the post content, scheduled publish time, and status for each. Use this to review your content calendar and manage upcoming posts.

Cancel Scheduled Post

Caution

Cancel a scheduled post before it publishes. The post is permanently removed from the queue. Use list_scheduled_posts to find the ID of the post you want to cancel.

Batch Reply Comments

Write

Reply to multiple comments sequentially with rate-limit-aware pacing. Accepts up to 20 comment/reply pairs per call. Stops if the daily engagement safety limit (100/day) is reached. Use get_comment_status first to identify high-priority unanswered comments.

Connections

Manage your LinkedIn network and invitations

Send Connection Request

Write

Send a LinkedIn connection request to someone. Optionally include a personal message (max 300 characters) to increase acceptance rates. Automatically resolves profile URLs and slugs to provider IDs. Supports campaign tagging for tracking outbound connection activity.

Get Connections

Read

List your LinkedIn connections (1st degree network). Returns names, headlines, profile URLs, and connection metadata. Supports pagination for browsing through your full network. Useful for CRM syncing, network analysis, and identifying messaging targets.

List Pending Invitations

Read

List connection invitations you've sent that are still pending acceptance. Returns recipient details, when the invitation was sent, and whether a message was included. Use this to manage your outbound connection pipeline and identify stale invitations to cancel.

Cancel Invitation

Caution

Cancel a pending connection invitation that hasn't been accepted yet. Use list_pending_invitations to find the invitation ID. Canceling old invitations frees up your weekly connection limit and helps avoid LinkedIn restrictions.

List Incoming Invitations

Read

List connection requests you've received that are pending your response. Returns sender name, headline, invitation details, and the URN and shared_secret needed to accept or decline. Supports pagination via offset.

Accept Invitation

Caution

Accept a pending connection request. Requires the invitation URN and shared secret from list_incoming_invitations. Once accepted, the person becomes a 1st degree connection and you can message them directly.

Decline Invitation

Caution

Decline (ignore) a pending connection request. The sender is not notified that you declined. Requires the invitation URN from list_incoming_invitations. Use this to programmatically clean up unwanted connection requests.

List Accepted Invitations

Read

List connection invitations you sent that were accepted. Returns the recipient details, when the invitation was sent, when it was accepted, and the acceptance delay. Use this to measure outbound conversion rates and trigger follow-up workflows.

Add to Blacklist

Write

Add a LinkedIn profile to your do-not-contact blacklist. Blacklisted profiles are automatically excluded from outreach - send_invitation, send_message, and start_conversation will refuse to target them. Use this for opt-outs, competitors, or any profile you want to avoid contacting.

Remove from Blacklist

Write

Remove a LinkedIn profile from your do-not-contact blacklist. Once removed, the profile can be targeted by outreach tools again. Use check_blacklist to verify the current status before removing.

Check Blacklist

Read

Check if a LinkedIn profile is on your do-not-contact blacklist. Returns the blacklist status, reason (if provided), and when they were added. Use this before outreach to ensure you respect opt-outs and suppression lists.

Set Auto-Withdraw

Write

Configure automatic withdrawal of pending connection invitations that haven't been accepted after a set number of days. This frees up your weekly invitation limit and prevents your account from accumulating stale requests. Set to 0 to disable.

Analytics

Track post performance, profile metrics, and activity

Get Post Analytics

Read

Get real-time analytics for a specific LinkedIn post: views/impressions, likes, comments, and reposts count. Costs 1 API call. Only use if you need real-time data for a SINGLE post. For batch analytics or dashboards, use get_cached_post_analytics (instant, no API cost). Fetches live data directly from LinkedIn for the most up-to-date metrics.

Get Cached Post Analytics

Read

Get cached post metrics for your account. Returns impressions, reactions, comments, reposts, and engagement rate for recent posts. Data is refreshed automatically by the content poller - no LinkedIn API calls are made. Supports sorting by any metric and filtering by content type.

Get Top Posts

Read

Get your best-performing posts ranked by a chosen metric. Uses cached data from the content poller for fast responses. Supports ranking by impressions, reactions, comments, reposts, or engagement rate with a configurable lookback window.

Get Content Summary

Read

Get an aggregated content performance summary: total impressions, reactions, engagement rate, and breakdown by content type (text, image, video, document, poll, article). Uses cached data for fast responses with a configurable lookback window.

Get Profile Analytics

Read

Get daily profile metrics over time: profile views count and follower data. Uses cached data from the content poller for fast responses. Useful for tracking how content campaigns impact your profile visibility and growth.

Get Activity Analytics

Read

Get a daily outbound activity summary: invitations sent, messages sent, posts published, and more. Aggregated from usage logs to show how actively you're using LinkedIn through Crispy. Useful for monitoring team activity and ensuring daily limits aren't being approached.

Purge Analytics Cache

Caution

Purge all cached analytics data for your account. This removes post metrics and profile metrics from the cache. Data will be re-populated automatically on the next poll cycle. Use this if you suspect stale or corrupted cache data.

Seed Post Analytics

Write

Backfill your analytics cache by fetching your full LinkedIn post history with pagination. Upserts all post metrics (impressions, reactions, comments, reposts, engagement rate) into the cache in one go. Run once to seed historical data - subsequent updates happen automatically via the polling system.

Get Writing Style

Read

Get your AI-generated messaging and posting style guides. When you connect your LinkedIn account, Crispy automatically analyzes your sent messages and posts using Claude to create a detailed writing style profile. This includes formality level, greeting/closing patterns, vocabulary, tone, post formats, and more. Use this data to write messages and posts that match your authentic voice.

Set Style Examples

Write

Provide 1-3 LinkedIn profile URLs of people whose posting style you admire. Crispy fetches their recent posts and uses Claude to analyze the writing patterns, then generates a posting style guide based on those examples. This is perfect for users who don't post much themselves but want AI-generated content that matches a specific voice or format.

Refresh Writing Style

Write

Re-trigger the full writing style analysis pipeline. This re-fetches your latest LinkedIn messages and posts, then uses Claude to regenerate both your messaging and posting style guides. Useful after you've changed your communication style or want to incorporate recent activity.

Get Comment Reach

Read

Measure the reach and engagement ROI of your commenting activity on LinkedIn. Returns metrics like total comments, estimated impressions from commented posts, engagement received on your comments (likes, replies), and reach per comment. Useful for validating commenting as a growth strategy.

Get Comment Status

Read

Instant comment follow-up intelligence. Shows unanswered comments on your posts ranked by commenter value (author title, headline, reactions). Helps you prioritize which commenters to reply to first. Reads from synced comment cache with no live API calls.

Campaigns

Create and track outbound campaign performance

Create Campaign

Write

Create a new campaign for tracking outbound LinkedIn actions. Campaign IDs are user-defined slugs (e.g. 'q1-fintech-outreach'). Once created, tag any send_message, send_invitation, create_post, or other action with the campaign_id to track performance.

List Campaigns

Read

List your campaigns with action counts. Returns active campaigns by default, with an option to include archived ones. Shows campaign name, creation date, and total actions tracked under each campaign.

Archive Campaign

Caution

Archive a campaign. Archived campaigns stop accepting new actions but all historical data is preserved for reporting. Use this to close out completed campaigns and keep your active campaign list clean.

Update Campaign

Write

Update an existing campaign's name, description, or archived status. Use this to rename campaigns, add descriptions, or unarchive a previously archived campaign to resume tracking actions against it.

Delete Campaign

Caution

Permanently delete a campaign. Unlike archiving, this removes all campaign data including action history. This action cannot be undone. Use archive_campaign instead if you want to preserve historical data.

Get Campaign Stats

Read

Get detailed campaign performance stats: action counts by tool type, daily breakdown of activity, and per-account breakdown for multi-account setups. Supports a configurable lookback window for time-bounded reporting.

Launch Experiment

Write

Launch an A/B experiment on a campaign to compare variant performance using SPRT (Sequential Probability Ratio Test) for statistical significance. Campaign must have at least 2 step variants. Metric can be acceptance_rate or reply_rate. Pure DB operation with no LinkedIn API calls.

Get Experiment Results

Read

Get experiment status, per-variant stats, SPRT decision, and winner assessment with confidence and lift percentage. Returns insufficient_data when control has fewer than 5 samples. When a winner is detected, returns lift and confidence. Pure DB operation.

Promote Experiment Winner

Write

Apply the winning variant's content to the campaign sequence so all future sends use the winner. Replaces all step variants with only the winning variant. Experiment must be completed with a declared winner. Pure DB operation.

Get Variant Stats

Read

Get per-variant performance metrics for a campaign. Returns sent count, reply count, acceptance count, reply rate, and acceptance rate per variant per step. Pure DB operation with no LinkedIn API calls.

Account

Manage account settings, diagnostics, and capacity

Get My Profile

Read

Get your own LinkedIn profile information including name, headline, summary, and public identifier. Supports multi-account setups - pass an account_id to specify which LinkedIn profile to use. This is typically the first tool called to verify which account is connected.

Update Account Settings

Write

Update your account settings. Currently supports tracking_mode: 'mcp_only' (default - only MCP actions are tracked) or 'all_activity' (all LinkedIn activity is tracked including manual actions). Only the account owner can change this privacy setting.

Contact Support

Write

Contact Crispy support directly from within your MCP session. Automatically includes diagnostic information (account status, recent errors, plan details) to help resolve your issue faster. Supports normal and urgent priority levels.

Get Profile Capacity

Read

Returns the status and remaining daily action limits for all connected LinkedIn accounts. Shows capacity for searches, profile views, messages, invitations, posts, and engagement. Includes account health indicators (healthy, warming_up, rate_limited, restricted). Use this to choose the best account for an action in multi-account setups.

Get Learned Preferences

Read

Get all learned preferences for your workspace and account (e.g. outreach_tone='formal'). Preferences influence future recommendations from all enrichment tools. Returns an empty array if no preferences have been set.

Set Preference

Write

Set an explicit preference that overrides AI recommendations. Examples: outreach_tone='formal', content_formality='casual', follow_up_frequency='weekly'. Use get_learned_preferences to see current values before setting.

Reset Preference

Write

Remove a learned preference, resetting it to default behavior. The system will re-learn from future feedback. Use get_learned_preferences to see all current keys before resetting.

List Webhooks

Read

List all registered webhook endpoints for your account. Returns webhook URLs, subscribed event types, signing secret hints, and delivery status. Use this to audit your webhook configuration and troubleshoot delivery issues.

Create Webhook

Write

Register a new webhook endpoint to receive real-time LinkedIn event notifications. Specify the URL to receive events, the event types to subscribe to, and an optional signing secret for HMAC-SHA256 verification. Supports 24 event types including messages, invitations, profile views, and more.

Update Webhook

Write

Update an existing webhook endpoint's configuration. You can change the URL, event subscriptions, signing secret, or active/inactive status. Use list_webhooks to find the webhook ID first.

Delete Webhook

Caution

Delete a registered webhook endpoint. This permanently removes the webhook and stops all event deliveries to that URL. Use list_webhooks to find the webhook ID. Consider using update_webhook to disable it instead if you may need it later.

Test Webhook

Read

Send a test event to a registered webhook endpoint to verify it's receiving and processing events correctly. Sends a synthetic event with a test payload and reports the HTTP response status and latency. Useful for debugging webhook integrations.

Start Warm-Up

Write

Start a gradual activity ramp-up program for a LinkedIn account. New accounts or recently restricted accounts should warm up before running at full capacity. The warm-up program gradually increases daily limits over 2-4 weeks to build LinkedIn trust safely.

Get Warm-Up Status

Read

Check the current warm-up status and effective daily limits. Shows which day of the warm-up program you're on, the current effective limits (which increase each day), and the target full limits. Returns null if no warm-up is active.

Stop Warm-Up

Write

End the warm-up program early and switch to full daily limits immediately. Use this if you're confident the account is ready for full activity. Not recommended for accounts with less than 7 days of warm-up completed.

Verify Session

Read

Check if your LinkedIn session is still active and authenticated. Returns session health status, last activity time, and any warnings about expiring or degraded sessions. Use this to proactively detect session issues before they cause tool failures.

Configure Storage

Write

Configure managed contact storage for your account. Enables lead tracking, outreach history, and contact management features. You can enable/disable storage and configure retention policies. When enabled, outreach actions (messages, invitations, comments) are automatically logged against contact records.

Lead Management

Track leads, outreach history, and contact interactions

Search Leads

Read

Search your managed contact storage for tracked leads. Filter by name, company, status (new, contacted, replied, converted), tags, or last-contacted date. Returns lead records with profile info, status, notes, and outreach history summary. Requires managed storage to be enabled - check storage status with get_profile_capacity first.

Add Lead

Write

Add a LinkedIn profile to your managed contact storage as a tracked lead. Stores profile info, status, tags, and notes. Once added, all outreach to this contact (messages, invitations, comments) is automatically logged in their outreach history. Requires managed storage to be enabled - check storage status with get_profile_capacity first.

Update Lead

Write

Update a tracked lead's status, tags, or notes. Use this to move leads through your pipeline (new → contacted → replied → converted), add/remove tags for segmentation, or update notes with latest interaction context.

Get Outreach History

Read

View the complete outreach timeline for a tracked contact. Returns all recorded interactions: messages sent, invitations, comments on their posts, reactions, and profile views - in chronological order. Requires managed storage to be enabled - check storage status with get_profile_capacity first.

Import Contacts

Write

Bulk import contacts from competitor tools or CSV exports. Accepts a JSON array of contact objects with flexible field naming - camelCase (firstName), snake_case (first_name), or Title Case (First Name) all work. Deduplicates by LinkedIn URL. Supports up to 1000 contacts per call. Perfect for migrating from Lemlist, Heyreach, Expandi, Dripify, Waalaxy, or any tool that exports CSV.

Import Blacklist

Write

Bulk import do-not-contact profiles from a competitor tool or internal list. Accepts LinkedIn URLs as strings or objects with URL + reason. Supports up to 5000 entries per call. All outreach tools automatically check the blacklist before sending - so importing your existing blacklist ensures no accidental outreach to blocked contacts.

The complete LinkedIn API. Ready when you are.

Connect your first LinkedIn profile in under 5 minutes. All 164 tools. Safe limits, warm-up, and full permission control built in.