For AI assistants

Using Saava from an AI assistant

How Claude, ChatGPT, Codex or Cursor connect to Saava over MCP, the rules to follow, the common workflows, and every tool the connector offers.

For your AI: give it docs.saava.io. Plain text at docs.saava.io/mcp.md

These instructions live at https://docs.saava.io (plain text: https://docs.saava.io/mcp.md). Saava finds people showing buying signals, scores them against the user's targeting, and reaches them on LinkedIn and email. An assistant connected through MCP Connect can do almost everything the app does, from the chat: read leads and replies, build lists, watch for signals, write each person's messages, and reply.

Connect

The connector URL is https://www.saava.io/api/mcp. Add it as a custom connector (remote MCP server) in the assistant; the user signs in to Saava and approves one workspace. The connection sees only that workspace, and the user can remove it at any time from Integrations, MCP Connect, which stops access immediately.

  • Claude: Settings, Connectors, Add custom connector, paste the URL. Needs a paid Claude plan.
  • ChatGPT: Settings, Connectors (developer mode), add a custom connector with the URL.
  • Codex and Cursor: add a remote MCP server with the URL in the MCP settings.

Rules for the assistant

  • Ask before anything reaches a real person. Queuing messages, approving drafts, adding a lead to a campaign and sending a reply all go out under the user's name. Show the user the exact text or the people, and wait for a clear yes.
  • Check the account first. get_account_status says the plan, the credits left and whether sending is paused. A trial is free to use; a paid plan spends credits.
  • Targeting and the business profile are the user's. Suggest changes; change them only when the user asks.
  • Write from the person, not a template. Use what get_lead returns about someone (their role, company, and what they posted or did) and keep messages short.

Common workflows

See what is happening

get_account_status for the plan and credits, list_campaigns and get_campaign_performance for results, and list_inbox then get_conversation for replies.

Find and organise leads

list_leads with filters (fit, stage, source, date), get_lead for one person, create_lead_list and add_leads_to_list to group them, and update_lead to record a stage or an outcome.

Write each person's messages yourself

Saava can send messages the assistant writes, one per lead, instead of a shared template. No add-on is needed: queuing them costs 0.5 credits per message (free on a trial).

  1. list_campaigns and pick a campaign whose messages_written_by is your_ai or saava_ai. A campaign that sends one template to everyone can't carry per-lead text. If there is none, create one with create_campaign: confirm its name, the LinkedIn accounts it sends from (list_linkedin_senders) and its steps with the user. It starts empty, so creating it sends nothing.
  2. get_campaign_message_shape for that campaign: whether it sends a connection note, how many follow-ups, and the limits for each.
  3. Write one message set per lead from their own details, show them to the user, then queue_custom_messages (up to 50 leads per call).
  4. The messages wait in AI Messages for the user's approval, or send straight away if the campaign approves automatically. list_message_drafts, approve_message_drafts and dismiss_message_drafts work that queue from the chat.

Watch for buying signals

create_intent_monitor from a plain-English description of what to watch for (for example: companies hiring their first SDR), list_intent_monitors to see them, and list_sources or add_sources for the LinkedIn profiles whose audience Saava follows.

Reply to people

list_inbox, then get_conversation, then draft a reply, show it to the user, and send_linkedin_reply once they approve.

Keep the pitch current

get_business_profile and update_business_profile hold what the user sells, to whom, and the proof. Every message Saava writes is built from it, so keep it accurate. get_targeting shows who they sell to.

Tool reference

Every tool the connector offers, as the assistant sees it.

Leads, lists, campaigns and inbox

  • get_account_status: Snapshot of this Saava workspace: plan, billing state, credits, connected channels (LinkedIn outreach / email), and totals for leads, lead lists and campaigns. Call this first to orient.
  • list_leads: Search and filter this workspace's leads. Returns compact rows sorted by newest or by ICP match. Statuses: active, snoozed, bad_fit, client. Outcomes: qualified, booked, won, not_a_fit.
  • get_lead: Full detail for one lead by id: contact info, ICP score and reasoning, engagement, outreach status and which campaign it went to.
  • update_lead: Update one lead: set status (active/snoozed/bad_fit/client), set outcome (qualified/booked/won/not_a_fit), or mark good_fit / bad_fit (mutually exclusive; marking one clears the other). Provide only the fields to change.
  • list_lead_lists: All lead lists in this workspace with member counts and type.
  • create_lead_list: Create a new manual lead list. Returns the new list's id.
  • add_leads_to_list: Add up to 200 leads (by id) to a lead list. Already-present leads are skipped.
  • remove_leads_from_list: Remove leads (by id) from a lead list. The leads themselves are kept.
  • list_campaigns: All outreach campaigns in this workspace (LinkedIn via the connected sender network, plus email campaigns if connected), with status and launch state.
  • get_campaign_performance: Outreach funnel for a time window: per-campaign and per-sender invites sent, accepted, and replies. Defaults to the last 30 days.
  • pause_campaign: Pause a LinkedIn campaign. Sticks until resumed: Saava also stops feeding it leads.
  • resume_campaign: Resume a paused LinkedIn campaign so sending and lead routing restart.
  • push_lead_to_campaign: Add one lead to a LinkedIn campaign so outreach actually goes to them. The lead needs a LinkedIn URL. This queues a REAL message sequence to a REAL person — confirm with the user before calling.
  • list_inbox: Recent LinkedIn outreach conversations: who they're with, the last message, and unread state. Use unread_only to fetch just threads awaiting a reply.
  • get_conversation: Full message history of one LinkedIn conversation by conversation_id.
  • send_linkedin_reply: Send a reply into an existing LinkedIn conversation, as the user. This DELIVERS A REAL MESSAGE immediately — always show the user the exact text and get their go-ahead first.
  • get_business_profile: The workspace's business profile (what they sell, to whom, proof points) — the grounding every AI-written message uses.
  • update_business_profile: Update fields of the business profile. Only the fields provided are changed; everything else is kept. This grounds all AI-written outreach, so keep it factual.
  • get_targeting: The workspace's saved targeting (ICP): titles, industries, locations, seniority, company sizes, and the free-text description. Targeting edits happen on Saava's Targeting page — this is read-only.

Messages

  • get_campaign_message_shape: What one message for a campaign must contain before you write it: whether it sends a connection note, how many follow-ups (in order), whether it sends an InMail to open profiles, the character limits, and the personalisation tokens allowed. Call this before queue_custom_messages.
  • queue_custom_messages: Queue messages YOU wrote, one per lead, for a per-lead campaign (messages_written_by your_ai or saava_ai; up to 50 leads per call). Each lead's text must match the campaign's shape from get_campaign_message_shape. Costs 0.5 credits per message queued (free on a trial). Messages land in the AI Messages review queue — or send straight away if the campaign auto-approves. These are real messages to real people under the user's name: show the user the exact text and get explicit confirmation before calling. A lead that already has a sent or approved draft in this campaign is skipped; an unsent draft is replaced at no charge.
  • list_message_drafts: Messages waiting in the AI Messages queue (or recently sent/failed): who they're for, the text, the status, and who wrote them. Filter by campaign and status.
  • approve_message_drafts: Approve queued messages so they send: either specific draft ids, or everything waiting in one campaign. Sending happens in the background, one lead at a time. This sends real messages to real people — confirm with the user first. Drafts flagged sensitive_context are skipped unless include_sensitive is true.
  • dismiss_message_drafts: Dismiss queued messages so they never send. The lead stays in the workspace; only the pending message is withdrawn.

Setup

  • list_linkedin_senders: The LinkedIn accounts this workspace sends from, with their ids. Use an id in create_campaign's sender_ids.
  • create_campaign: Create a LinkedIn campaign whose messages YOU write, one set per lead (messages_written_by: your_ai). No add-on is needed; each message costs the same as queue_custom_messages when you queue it (free on a trial). The campaign starts with nobody in it: people join only when you queue their messages with queue_custom_messages, so creating it sends nothing. Confirm the name, the sending accounts and the steps with the user first. Steps: an optional connection note, then up to 4 follow-up messages, each sent a number of days after the one before.
  • list_campaign_lists: Which lead lists feed a campaign (a campaign sends to the people in its attached lists, continuously). Shows attached and previously-detached lists with sync counts.
  • attach_lists_to_campaign: Plug lead lists into a LinkedIn campaign so it keeps sending to everyone in them, now and as the lists grow. Leads start going out within minutes, subject to the campaign's fit floor and daily limits. This causes real outreach — confirm with the user first.
  • detach_list_from_campaign: Stop a lead list feeding a campaign. Only FUTURE sends stop — people already in the sequence keep receiving it. Re-attaching later resumes where it left off.
  • list_sources: The LinkedIn profiles and company pages this workspace watches. Everyone who likes or comments on their posts is pulled in as a lead and scored against the targeting.
  • add_sources: Watch LinkedIn profiles or company pages (up to 20 URLs per call). Their engagers start arriving as leads within minutes. Counts against the plan's source limit; re-adding one already watched just refreshes it.
  • list_intent_monitors: The intent monitors in this workspace — each watches LinkedIn posts for a buying signal described in plain English and turns matching posters into leads.
  • create_intent_monitor: Create an intent monitor from a plain-English description of the buying signal to watch for (e.g. "companies hiring their first SDR"). Saava turns it into search keywords and starts scanning right away. Optionally send its leads to an existing lead list. Counts against the plan's monitor limit.