Outreach & Messaging

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.

crispy — bash

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

Write

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

Write

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

Write

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

Read

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

Read

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

Write

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

Read

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

Write

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

Read

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

Write

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

Write

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

Read

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

Caution

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

Read

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

1

Sign up

Create your Crispy account. No credit card required for the first setup.

2

Connect LinkedIn

Link your LinkedIn account from the dashboard. Takes 30 seconds.

3

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 pricing

Frequently 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.

The 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.