LinkedIn Outreach & Inbox Management
Send personalized messages, organize your inbox with labels and split views, snooze conversations for follow-up, schedule messages, and smart-archive stale threads. Full inbox management through your AI assistant or API.
Reply to chat msg_abc123 and let Jane know I'll send the deck over by end of day
{
"chat_id": "msg_abc123",
"message_id": "m_1042",
"sent": true
}Send a connection request to the head of growth I just found, with a short note mentioning we both spoke at SaaStr
{
"status": "sent",
"invitation_id": "7412938501234",
"profile": "ACoAABGDkeIB",
"note_included": true
}Send an InMail to ACoAABGDkeIB introducing our onboarding service with the subject Quick question about your hiring plans
{
"sent": true,
"recipient_id": "ACoAABGDkeIB",
"credits_remaining": 14
}14 Tools for Outreach & Messaging
Each tool is available as an MCP tool for AI agents or as a REST API endpoint.
Send LinkedIn Message
Send a LinkedIn message to an existing conversation using its chat_id, or start a brand new conversation using the recipient's provider_id. Supports text up to 8000 characters, file and image attachments, and native voice notes up to 5MB that render as a playable waveform in the recipient's inbox. A built-in safety limit of 150 per day protects your account, and you can attribute the action to a campaign. Fails if neither chat_id nor provider_id is supplied.
send_message
Send LinkedIn Invitation
Send a LinkedIn connection invitation to a person identified by provider ID, profile slug, or full URL. You can attach a personal note of up to 300 characters, which meaningfully increases acceptance rates, and optionally attribute the action to a campaign for tracking. The tool enforces a 15-per-day safety limit and fails cleanly if you are already connected or an invitation is already pending.
send_invitation
Send LinkedIn InMail
Send an InMail to someone outside your immediate network, reaching prospects you are not yet connected to. Requires a Sales Navigator subscription, consumes InMail credits, and accepts the recipient as a provider_id, profile slug, or full LinkedIn URL. The body is capped at 1900 characters and the optional subject at 200, and you can attribute the send to a campaign. Fails if the recipient has opted out of InMail or you have no credits remaining.
send_inmail
Get LinkedIn Messages
Fetch the messages from a single LinkedIn conversation (1 to 100, default 20), ordered so you can read the full exchange. Requires a chat_id obtained from list_conversations or a newly started conversation, and supports a pagination cursor for longer threads. Returns an empty array when the thread has no messages and fails with a 'not found' error if the chat_id is invalid. Use it to load context before composing a reply.
get_messages
List LinkedIn Conversations
List your LinkedIn conversations with a preview of the most recent message in each thread (1 to 100, default 20). Each result includes a chat_id for follow-up actions and a their_turn flag that tells you when the contact sent the last message and is awaiting your reply. Filter by label like 'Hot Lead' or 'Client', and optionally include archived threads. Use it to surface what needs attention before drafting responses.
list_conversations
Organize Conversation
Run a single organizing action on a conversation: archive, unarchive, label, unlabel, snooze, or smart_archive. Labeling needs a label value, and snooze needs a future ISO 8601 snooze_until (capped at 200 per day), with smart_archive optionally auto-returning the thread when the other person replies. The call fails if the action is unknown or the chat_id is not found.
organize_conversation
List Conversation Labels
Return every label currently applied across your conversations along with a count of how many threads carry each one, sorted by count. Returns an empty array when no labels exist yet. Pair it with list_conversations(label=...) to build a split inbox organized by your own categories.
list_labels
Schedule LinkedIn Message
Schedule a message to send in a specific conversation at a future datetime (ISO 8601, up to 8000 characters). If the contact replies before the scheduled time, the send is automatically cancelled so you never talk over them. The call fails if send_at is not a valid future datetime, and an optional internal note can be attached for your own reference.
schedule_message
List Reminders and Scheduled Messages
Return your pending snooze reminders and scheduled messages, defaulting to 50 results sorted by remind_at. Filter by status using pending (default), fired, cancelled, sent, failed, or 'all' to inspect any part of the lifecycle. Returns an empty array when nothing matches.
list_reminders
Bulk Archive Stale Conversations
Archive conversations that have gone quiet for longer than a set number of days (default 30, minimum 7) where you were the last to message. Each archived thread automatically returns to your inbox if the other person replies, so nothing is lost. Use dry_run=true to preview the list first, and expect an empty result when no stale conversations are found.
bulk_archive
Create or Update Campaign
Creates a new campaign or updates an existing one in a single call. Omit campaign_id to create (requires name, kind, and either a list_id or inline contacts) or provide it to update. Choose acquisition for invite-based outreach to new first-degrees or relationship for DM-only outreach to existing connections, with a URL-safe slug auto-derived from the name.
upsert_campaign
Get Campaign Details
Fetches campaign data for one campaign or lists all of them. Omit campaign_id to list every campaign in your workspace, or pass one with include[] to load the health funnel, action stats, account health, and outreach config in parallel. Returns metadata only by default and supports forced recompute of included slices.
get_campaign
Archive Campaign
Archives a campaign so it stops accepting new actions while keeping all historical data intact. Use it to wind down outreach without losing reporting, since archiving is fully reversible. Fails with not found if the campaign_id does not exist.
archive_campaign
Get Campaign Variant Stats
Returns per-variant statistics for a campaign, broken down by step and arm, including sent, accepted, replied, positive_replied, and positive_reply_rate. A positive reply is counted when a contact carries an auto:interested or auto:wants_meeting tag, giving you a clear read on which message variants actually convert. Returns empty when nothing is enrolled in the campaign.
get_variant_stats
Use Cases
Here's how teams use Crispy's outreach & messaging tools in their day-to-day workflows.
Personalized outreach at scale
Have your AI agent research each prospect and craft a unique message based on their profile, recent posts, and shared connections.
Example prompt
“Research this prospect's profile, then send them a connection request mentioning their recent post about AI”
Multi-step drip campaigns
Build automated sequences: connection request, follow-up message after acceptance, then a meeting request, all managed by your AI agent.
Example prompt
“Create a 3-step outreach campaign targeting CTOs at fintech startups in London”
Manage inbox at scale
Label conversations as 'Hot Lead' or 'Client', snooze threads for follow-up, schedule messages for later, and bulk-archive stale conversations. Split inbox views let you focus on what matters.
Example prompt
“Check my inbox, label any VP+ conversations as 'Hot Lead', snooze the rest for next week, and archive anything older than 30 days”
InMail outreach to non-connections
Reach prospects outside your network with InMail. Crispy handles the full lifecycle from send to tracking opens.
Example prompt
“Send an InMail to this Sales Navigator lead introducing our product”
Sync conversations to your CRM
Connect Crispy alongside HubSpot, Salesforce, or Pipedrive MCP servers. Your AI agent automatically logs new LinkedIn contacts and conversation summaries to your CRM, zero middleware required.
Example prompt
“Sync all my unread LinkedIn conversations to Salesforce and create contacts for anyone new”
Get started in 3 steps
Sign up
Create your Crispy account. No credit card required for the first setup.
Connect LinkedIn
Link your LinkedIn account from the dashboard. Takes 30 seconds.
Start using
Add Crispy to Claude, Cursor, or any MCP client, or call the REST API directly.
$49/seat/mo. Everything included.
No API call limits. Every tool included. Cancel anytime.
View pricingFrequently Asked Questions
Will my LinkedIn account get restricted?
Crispy respects LinkedIn's rate limits and includes a built-in Safety Calculator to help you stay within safe thresholds. We recommend gradual ramp-up for new accounts.
Can I schedule messages to send later?
Yes. Use schedule_message to send a message at any future time. It works outside of campaigns for loose follow-ups. If the person replies before the scheduled time, the message auto-cancels.
How many messages can I send per day?
LinkedIn has its own daily limits (typically 100-150 connection requests, 50-100 messages). Crispy enforces these limits to protect your account.
Does Crispy store my message content?
Messages are sent directly through your LinkedIn session. By default, contacts and activity metadata are stored to power Unibox and campaigns. You can export or delete your data anytime, with no lock-in. GDPR friendly by design.
Can I use templates with personalization variables?
Your AI agent handles personalization natively, it can pull profile data and weave it into messages dynamically. No rigid template system needed.
Can I sync LinkedIn conversations to my CRM?
Yes. Connect Crispy and your CRM's MCP server (HubSpot, Salesforce, Pipedrive) to the same AI agent. Say 'sync my LinkedIn conversations to my CRM' and the agent handles contact creation, conversation logging, and deal updates. No custom code, no Zapier, just two MCP servers working together.
Related Reading
How to automate LinkedIn outreach with AI agents
A step-by-step guide to building AI-powered LinkedIn outreach workflows using MCP - from prospect search to personalized messages.
ReadThe complete guide to LinkedIn MCP servers
What Model Context Protocol is, why it matters for LinkedIn automation, and how to set up Crispy as your LinkedIn MCP server in minutes.
ReadThe complete LinkedIn API. Ready when you are.
Connect your first LinkedIn profile in under 5 minutes. Every tool, every seat, no feature gates. Safe limits, warm-up, and full permission control built in.