Agency Operator

One workspace. Every client. Full control.

Per-client permission scoping, parallel campaigns, safety limits per profile, and full API access to build custom agency workflows.

Challenges you know too well

Sound familiar? Here's how Crispy solves each one.

No scalable controls

Managing 20 client profiles through separate dashboard logins. No API to build reporting or enforce safety limits across accounts.

Solution: One workspace with full API access. Per-client permission scoping, safety limits per profile, and programmatic control over every account.

Client isolation

Client A's prospects accidentally get messages from Client B's campaign. Data leaks between accounts.

Solution: Per-client permission scoping ensures complete isolation. Each client profile operates independently within your org.

Multi-account complexity

Managing 20 separate tool logins, each with their own billing, settings, and campaign configs.

Solution: One org, one login, one bill. All client profiles managed from a single dashboard with unified controls.

Reporting overhead

You spend hours every week pulling screenshots and CSVs from each client's tool to build reports.

Solution: API-driven analytics across all profiles. Build automated reports with campaign stats, connection rates, and ROI metrics.

Client onboarding friction

Getting clients to share LinkedIn credentials or install complex tools takes weeks and kills deals.

Solution: Clients click Connect LinkedIn from their invite page. One click, 30 seconds, done. No credentials shared.

How it works

From setup to results in 5 steps.

1

Set up your agency org

Sign up for Crispy. Your org becomes the central hub for all client profiles and campaigns.

2

Connect client profiles

Invite each client to your org. They connect their own LinkedIn, you manage campaigns on their behalf.

3

Scope per client

Set permissions per client profile so campaigns and data are completely isolated. No cross-contamination.

4

Run parallel campaigns

Launch and manage campaigns across all client profiles simultaneously. Each with their own messaging, targeting, and cadence.

Example prompt

Create campaigns for Client A (fintech CTOs), Client B (healthcare VPs), and Client C (SaaS founders) with tailored messaging for each.

5

Generate client reports

Pull analytics per client, connection rates, reply rates, meetings booked. Export or automate weekly reports.

Example prompt

Generate a monthly performance report for Client A showing campaign stats, top-performing messages, and recommendations.

Key tools for agency operators

Each tool is available as an MCP tool for AI agents or as a REST API endpoint.

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

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

Get Activity Analytics

Read

Returns a daily activity breakdown over a chosen window (default 7 days), covering invitations sent, messages, and posts. By default only actions taken through Crispy are counted, but you can set tracking_mode to 'all_activity' for full coverage of everything on the account. Returns empty rows for days with no recorded activity, making it easy to spot gaps in outreach cadence.

get_activity_analytics

Search LinkedIn People

Read

Search LinkedIn's people directory by keyword, job title, company, location, and industry, returning up to 25 results per call with a provider ID for each match. When Sales Navigator filters like seniority level or company headcount are supplied, the search auto-routes to Sales Navigator and unlocks advanced criteria such as years of experience, function, school, and recently-changed-jobs. You can also paste a LinkedIn or Sales Navigator search URL to run it directly. Returns an empty array when nothing matches.

search_people

Update Account Settings

Write

Updates account-level settings including activity tracking mode (mcp_only or all_activity), the tool surface permission scope (core or full_access), and optional voice integration credentials stored securely for your TTS provider. Changing the permission scope requires reconnecting the MCP connection for the new tool list to take effect. Fails if the account is not owned by you.

update_account_settings

Example prompts

Copy these into Claude, Cursor, or any MCP client to get started.

Multi-client campaigns

Set up outreach campaigns for all 5 active clients this week. Use each client's ICP criteria and approved messaging templates.

Client reporting

Pull campaign analytics for all clients this month. Show connection rate, reply rate, and meetings booked per client.

Prospect research

For Client A's new campaign, search for decision makers at logistics companies in the Nordics with 200+ employees.

Capacity planning

Check profile capacity for all client accounts. Flag any that are approaching daily safety limits.

Simple per-seat pricing for agencies

Everything included per seat at $49/seat/mo. Annual billing saves ~18%.

Run every client account from one AI-native stack. No per-client dashboards, no credential juggling, no platform lock-in.

View pricing

Frequently Asked Questions

Can I manage all clients from one account?

Yes. Your Team org is the central hub. Each client profile is connected and scoped independently, one login, one bill, full control.

How do I ensure client data stays isolated?

Permission scoping is per-profile. Client A's campaigns, messages, and analytics are completely invisible to Client B's profile.

What if a client wants to take their account in-house?

Remove their profile from your org. They can sign up for their own Crispy account and reconnect their LinkedIn. No lock-in.

Do clients need to install anything?

Nothing. They accept your invite and connect their LinkedIn. They don't need a Crispy account, your org manages everything.

Can I white-label Crispy for my clients?

Not yet, but the API is fully programmable. Agencies build custom dashboards and reports on top of Crispy's API for their clients.

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.