# SnowBear tools

> The tools an AI agent gets after it connects to SnowBear's MCP server and the person signs in. 73 tools: 38 only read, 35 make changes.

## How to connect

1. **MCP with sign-in (chat apps and coding agents).** Add the server `https://www.snowbear.ai/mcp` and sign in in the browser when asked. No API key is needed.
2. **REST with sign-in (HTTP agents).** Use OAuth, or the device flow for agents that can't receive a browser callback, against `https://www.snowbear.ai/api/v1`.
3. **A personal API key, for your own scripts.** Create one under Connections → API and send it as `X-API-Key` to `https://www.snowbear.ai/api/v1`.

Agents should not ask a person to paste an API key when sign-in is available.

Setup steps and the full reference: [connection guide](https://www.snowbear.ai/ai.md). A read-only connection sees only the tools that read.

## Tools that only read

| Tool | What it does |
| --- | --- |
| `read_docs` | **Read SnowBear docs.** Reads SnowBear's API docs: an index without doc_id, one topic or endpoint in full with it. |
| `search_docs` | **Search SnowBear docs.** Finds the SnowBear API endpoints and guide topics for a task described in words ("who replied this week", "invite a teammate"), best match first. |
| `api_get` | **Read from SnowBear.** Calls any SnowBear read endpoint (GET). |
| `get_me` | **Check your account and setup status.** Use when setting up SnowBear, returning from authentication, or checking account readiness. |
| `get_team_member_network` | **Check network download and enrichment.** A stored, read-only snapshot of first-degree LinkedIn downloading and the Team page's network enrichment status. |
| `estimate_team_member_enrichment` | **Estimate bulk network enrichment.** Team admins only. |
| `admin_find_users` | **Look up an account.** Read-only exact-email lookup for internal admins. |
| `admin_get_test_account` | **Read a test-account receipt.** Reads disposable-account provenance and lifecycle status, including incomplete setup and cleanup. |
| `admin_preview_meeting_backfill` | **Preview the likely-meetings backfill.** Read-only count of the stored inbound LinkedIn messages the 90-day backfill would read, before dedupe and eligibility. |
| `admin_get_meeting_backfill` | **Read likely-meetings progress and health.** One read for the whole system: backfill progress and remaining work, queue age, unavailable and failed counts, model cost and reading disagreements over the last hours. |
| `list_campaign_backlog` | **Read campaign backlog.** Paginated saved backlog, including people without enrollments, unique-person counts by state, source lists, sender assignments and holds. |
| `get_billing` | **Check your plan, credits and pricing.** The account's plan (key free, starter or pro, or null for an older plan or a team agreement), allocation (self_serve, legacy, or custom when a team or company agreement covers it), credit balance,... |
| `create_billing_link` | **Create an upgrade, top-up or billing link.** A Stripe page for the person, tied to their own SnowBear account. |
| `review_campaign` | **Review a campaign.** Stored sourcing progress, fulfillment, recent 14-day performance with denominators, approvals, blockers, pipeline notes, targeted warm summaries, and SnowBear-generated recommendations. |
| `list_campaigns` | **List campaigns.** Campaigns the token can access, newest first: ones you own, plus your team's campaigns if you're a team admin. |
| `get_campaign` | **Get a campaign.** Everything from the list, plus the sequence (each step in order), the teammates sending for it, sourcing.status (for a search-link campaign: whose LinkedIn runs its search, people pulled so far, an... |
| `list_campaign_contacts` | **List a campaign's people.** One row per person. |
| `get_stats` | **Get campaign stats.** Counts and rates for every campaign you can access, plus account totals: the same numbers as the dashboard's campaigns table, counting people. |
| `list_contacts` | **List people across campaigns.** The same rows as a campaign's contacts, across every campaign you can access, each with the campaign it belongs to. |
| `get_person` | **Get a person's background.** Everything SnowBear knows about one person, for deciding whether to keep them in a campaign, approve their outreach, or put them on a referral page: profile (about, recent roles, education, skills,... |
| `search_contacts` | **Search saved contacts.** Searches saved contacts, narrowed to list_id when supplied; without it the existing endpoint searches your accessible saved contacts, including your team's if you're an admin. |
| `ai_search_contacts` | **Find contacts with AI.** Finds a kind of person in one explicit saved audience: list_id, all_saved: true, or the full inherited audience of from_search_id. |
| `get_ai_search_results` | **Get AI search results.** The unique people assessed so far, best first, with overall and per-criterion levels. |
| `cancel_ai_search` | **Stop an AI search.** Stops assessment. |
| `list_approvals` | **List people waiting for approval.** Everyone waiting for approval across your campaigns, in the order they were added (added_at, oldest first), with the message that goes out next (next_step is null only in the rare case that nothing... |
| `get_person_sequence` | **Get a person's sequence.** One person's sequence as it will run: each step's status (sent, current, upcoming, waited for an elapsed wait, skipped, or not_sent once outreach ended), when it was sent or is scheduled, its text,... |
| `check_warm_connections` | **Check warm connections.** Checks a search that POST /warm-searches started: its status and progress, what happened at each company, and the people found since cursor (use next_cursor from your last check to get only new one... |
| `draft_linkedin_message` | **Draft linkedin.** Drafts a LinkedIn message or connection note using the saved recipient profile, sender profile, voice, available stored history and campaign/list context. |
| `draft_email` | **Draft email.** Drafts an email subject and body using enriched profiles, stored history, voice and campaign/list context. |
| `draft_linkedin_reply` | **Draft linkedin reply.** Drafts a reply to an inbound LinkedIn message using the saved recipient profile, sender voice, relevant feedback and available stored conversation history. |
| `draft_email_reply` | **Draft email reply.** Drafts a reply to an inbound email using enriched profiles, email voice, relevant feedback and available stored thread history. |
| `get_message_attachment` | **Preview a message file.** Returns authorized file metadata and a private preview link valid for fifteen minutes. |
| `get_contact_export` | **Check a contact CSV export.** A read-only status snapshot for your export. |
| `search_companies` | **Search companies.** Companies matching a plain-language description (3 to 20 words, no quotes, OR or site:), up to 10, each with its homepage and a short description. |
| `search_people` | **Search people at a company.** People currently at a company in the roles you name (one role family per search works best, up to 4 titles), from LinkedIn profiles on the web. |
| `search_jobs` | **Search job postings.** Job postings matching a plain-language description (8 to 25 words: one role family, the kind of employer, one location; no quotes, OR or site:), up to 10. |
| `list_campaign_jobs` | **List accepted campaign jobs.** Jobs saved and accepted for this campaign, newest saved first, whose last saved verification is open. |
| `verify_job` | **Check whether a job is open.** Reads the posting and says whether the job is open, closed or unverified, with the posting's own title, company, location, salary and dates. |

## Tools that make changes

These need write access and act only on the person's explicit request. Some send real LinkedIn messages or emails.

| Tool | What it does |
| --- | --- |
| `api_change` | **Make a change in SnowBear.** Calls any SnowBear endpoint that changes something (POST or PATCH) with a JSON body, and returns its JSON. |
| `view_linkedin_profile` | **View a LinkedIn profile.** Views one exact person's profile using the authenticated or explicitly delegated account's LinkedIn. |
| `start_team_member_enrichment` | **Start bulk network enrichment.** Team admins only. |
| `admin_create_test_account` | **Create a disposable test account.** Creates an isolated disposable Auth identity and profile with a generated test-only email and optionally a team. |
| `admin_cleanup_test_account` | **Clean up a disposable test account.** Uses native account erasure only for an identity provisioned by this API whose test provenance still matches. |
| `admin_start_meeting_backfill` | **Start or resume the likely-meetings backfill.** Starts the 90-day backfill once, with a cutoff frozen at that moment, or resumes it from where it stopped with the same cutoff. |
| `delete_campaign` | **Delete a campaign.** Mirrors campaign deletion in the website. |
| `transfer_campaign_contacts` | **Move people to another campaign.** Mirrors the website's Move to campaign action for 1–25 exact contacts. |
| `confirm_my_linkedin` | **Confirm your LinkedIn.** Save a confirmed candidate, supply a personal URL, or reject candidates for the authenticated account. |
| `create_contact_column` | **Create a shared contact field.** Creates a reusable contact field whose exact contact-copy value follows it across lists. |
| `create_list_column` | **Create a list tracking field.** Creates and displays a field only in this list. |
| `update_contact_column` | **Edit a contact field.** Changes name or options for either scope. |
| `set_contact_column_values` | **Save contact tracking values.** Set or clear 1–25 exact contact-copy values, with per-item results. |
| `send_contact_linkedin_action` | **Send one LinkedIn action.** Sends a real LinkedIn message or connection request from the user's account to this contact, with exactly the text given. |
| `create_campaign` | **Create a campaign.** Creates a campaign: who SnowBear finds (targeting, or a LinkedIn or Sales Navigator search link as sourcing, and new people a day), the lists it draws from, its sequence and senders. |
| `update_campaign` | **Change a campaign.** Changes who SnowBear finds (targeting, a LinkedIn or Sales Navigator search link as sourcing, new people a day), the lists it draws from, its sequence, senders or status. |
| `exclude_likely_meeting` | **Exclude a likely meeting.** Corrects a wrong result: this person stops counting as a likely meeting for this campaign, on every sender's copy, and SnowBear won't read their earlier result again. |
| `reset_likely_meeting` | **Reset a likely meeting.** Clears this person's result for this campaign and has SnowBear read their responses again from the start, which also undoes an exclusion. |
| `update_person` | **Fix a person's details.** Corrects who someone is: their name, the name to greet them by, title, company or headline. |
| `add_people_to_campaign` | **Add people to a campaign.** Adds up to 25 people the user gives you to a campaign, through a list the campaign draws from. |
| `unenroll_people` | **Unenroll people.** Stops outreach for up to 25 people, found by contact_id, LinkedIn URL or email. |
| `prioritize_people` | **Prioritize people.** Reaches up to 25 people in a campaign sooner, found by contact_id, linkedin_url or email. |
| `approve_outreach` | **Approve outreach.** Approves up to 25 people's waiting messages. |
| `pause_outreach` | **Pause outreach.** Holds up to 25 people's outreach until you resume it. |
| `resume_outreach` | **Resume outreach.** Resumes paused outreach for up to 25 people, on the campaign's schedule. |
| `reassign_sender` | **Move people to another sender.** Moves up to 25 people to another sender in the same team campaign. |
| `find_warm_connections` | **Find warm connections.** Finds warm connections at up to 10 companies: it saves the companies (no lookup needed first), answers at once with the warm paths you already have saved there (already_known), and starts or reuses... |
| `enrich_people` | **Enrich people.** Saves and enriches up to 10 people. |
| `prepare_message_attachment` | **Prepare a message file upload.** Creates a private immutable upload destination. |
| `complete_message_attachment` | **Complete a message file upload.** Verifies the uploaded file size, type and checksum, then marks it ready. |
| `start_contact_export` | **Start a contact CSV export.** Creates a private CSV document using stored data from exactly one accessible list or campaign. |
| `cancel_contact_export` | **Cancel a contact CSV export.** Requests cancellation of your existing export using the native worker's cancellation and cleanup safeguards. |
| `create_list` | **Create a list.** Creates a list for people the user gives you. |
| `add_people_to_list` | **Add people to a list.** Adds specific people to one of the user's lists; campaigns drawing from the list take them in right away (the response names them) and reach them in turn within their daily limit. |
| `move_referral_search_next` | **Move a referral search to next.** Moves an existing referral search behind the current search on the same LinkedIn account, ahead of the other waiting searches. |
