> ## Documentation Index
> Fetch the complete documentation index at: https://docs.linkedcamp.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Sending accounts

> The LinkedIn accounts and mailboxes that campaigns actually send from, and their safety limits.

<Info>Requires the **Accounts** permission. Tools in this group are hidden from `tools/list` and refused on call when your plan does not grant it.</Info>

| Tool | Kind |
| - | - |
| [`email_account_add_imap`](#email_account_add_imap) | Write |
| [`email_account_get`](#email_account_get) | Read-only |
| [`email_account_list`](#email_account_list) | Read-only |
| [`email_account_oauth_url`](#email_account_oauth_url) | Read-only |
| [`email_account_stats`](#email_account_stats) | Read-only |
| [`email_account_update`](#email_account_update) | Write |
| [`linkedin_account_daily_stats`](#linkedin_account_daily_stats) | Read-only |
| [`linkedin_account_get`](#linkedin_account_get) | Read-only |
| [`linkedin_account_list`](#linkedin_account_list) | Read-only |
| [`linkedin_account_refresh`](#linkedin_account_refresh) | Write |
| [`linkedin_account_ssi`](#linkedin_account_ssi) | Read-only |
| [`linkedin_account_stats`](#linkedin_account_stats) | Read-only |
| [`linkedin_account_update`](#linkedin_account_update) | Write |

## email\_account\_add\_imap

<Badge color="orange">Write</Badge>

Connect a mailbox over IMAP/SMTP with a username and password. Google and Microsoft mailboxes should go through `email_account_oauth_url` instead — OAuth avoids storing a password and survives 2FA. Requires a Pro or Agency plan.

### Parameters

<ParamField path="email" type="string (email)" required>
  Email address.
</ParamField>

<ParamField path="password" type="string" required>
  Mailbox or app-specific password.
</ParamField>

<ParamField path="firstName" type="string">
  Given name.
</ParamField>

<ParamField path="lastName" type="string">
  Family name.
</ParamField>

<ParamField path="imap" type="object" required>
  IMAP/SMTP connection details.

  <Expandable title="properties">
    <ParamField path="incomingServer" type="string" required>
      IMAP host, e.g. "imap.fastmail.com".
    </ParamField>

    <ParamField path="incomingServerPort" type="integer" required>
      Usually 993.
    </ParamField>

    <ParamField path="outgoingServer" type="string" required>
      SMTP host.
    </ParamField>

    <ParamField path="outgoingServerPort" type="integer" required>
      Usually 465 or 587.
    </ParamField>
  </Expandable>
</ParamField>

## email\_account\_get

<Badge color="blue">Read-only</Badge>

Detail for one mailbox: sending limits, warm-up state, signature and IMAP/SMTP settings. Settings as configured; for what the mailbox actually sent use `email_account_stats`. Change any of it with `email_account_update`.

### Parameters

<ParamField path="emailAccountId" type="string" required>
  Mailbox id, from `email_account_list`.
</ParamField>

## email\_account\_list

<Badge color="blue">Read-only</Badge>

Mailboxes connected for email steps (Google, Microsoft or IMAP). A campaign with an EMAIL step needs at least one attached via `campaign_update` → `emailAccountIds`. Unlike the single LinkedIn account, several mailboxes are allowed and sends rotate across them — ask the user which, do not attach all of them. Connecting a new one is `email_account_oauth_url` (Google/Microsoft) or `email_account_add_imap`, both Pro-only.

### Parameters

<ParamField path="keyword" type="string">
  Free-text search.
</ParamField>

<ParamField path="status" type="string">
  Filter by status.
</ParamField>

<ParamField path="userId" type="string">
  Sub-account owner id. Omit to act on your own data.
</ParamField>

## email\_account\_oauth\_url

<Badge color="blue">Read-only</Badge>

Build the Google or Microsoft consent URL for connecting a mailbox. Hand the URL to the user to open in a browser — the OAuth callback is completed by the web app, not by MCP, so returning the URL is the whole job and the mailbox will not appear in `email_account_list` until they finish. Preferred over `email_account_add_imap` for Google and Microsoft: no password is stored and it survives 2FA. There is no equivalent for LinkedIn accounts. Requires a Pro or Agency plan.

### Parameters

<ParamField path="provider" type="GOOGLE | MICROSOFT" required>
  Which connected AI provider to use. Providers are connected in the web app.
</ParamField>

<ParamField path="state" type="string" required>
  Opaque value echoed back on the callback. Use the user id or any correlation token.
</ParamField>

## email\_account\_stats

<Badge color="blue">Read-only</Badge>

Sends, opens, clicks and bounces for one mailbox over a date range. Per mailbox, which is the right view when diagnosing deliverability. For the same numbers per campaign use `analytics_campaign`.

### Parameters

<ParamField path="emailAccountId" type="string" required>
  Mailbox id, from `email_account_list`.
</ParamField>

<ParamField path="range" type="object">
  Date window as \{ from, to } — epoch milliseconds or ISO 8601. Omit for the backend default.

  <Expandable title="properties">
    <ParamField path="from" type="string | number">
      Start of the window.
    </ParamField>

    <ParamField path="to" type="string | number">
      End of the window.
    </ParamField>

    <ParamField path="startDate" type="string | number">
      Alias for `from`.
    </ParamField>

    <ParamField path="endDate" type="string | number">
      Alias for `to`.
    </ParamField>
  </Expandable>
</ParamField>

## email\_account\_update

<Badge color="orange">Write</Badge>

Change sending behaviour for a mailbox: daily volume, the gap between sends, reply-to address, signature, warm-up and pause state. Affects every campaign using the mailbox, not one campaign. It cannot connect a mailbox (`email_account_oauth_url`, `email_account_add_imap`) or choose which campaign uses it (`campaign_update`). Raising daily volume on a cold mailbox risks deliverability — leave warm-up alone unless asked.

### Parameters

<ParamField path="emailAccountId" type="string" required>
  Mailbox id, from `email_account_list`.
</ParamField>

<ParamField path="emailsPerDay" type="integer (1–1000)">
  Daily send ceiling for this mailbox.
</ParamField>

<ParamField path="delay" type="integer (min 0)">
  Minutes to wait between consecutive sends.
</ParamField>

<ParamField path="replyTo" type="string (email)">
  Address replies are delivered to, when it differs from the sending address.
</ParamField>

<ParamField path="signature" type="string">
  HTML signature appended to outgoing mail.
</ParamField>

<ParamField path="isWarmup" type="boolean">
  Ramp volume up gradually instead of starting at the full limit.
</ParamField>

<ParamField path="isPaused" type="boolean">
  Pause without deleting.
</ParamField>

<ParamField path="firstName" type="string">
  Given name.
</ParamField>

<ParamField path="lastName" type="string">
  Family name.
</ParamField>

## linkedin\_account\_daily\_stats

<Badge color="blue">Read-only</Badge>

Day-by-day action counts for a LinkedIn account. Use this to check how close an account is running to its daily ceilings before raising limits. Read this before `linkedin_account_update` ever touches `limits` — it is the evidence for whether there is headroom. It reports what was sent; the ceilings themselves are in `linkedin_account_get`.

### Parameters

<ParamField path="linkedAccountId" type="string">
  Omit to aggregate across all accounts.
</ParamField>

<ParamField path="startDate" type="string | number">
  Window start, as epoch milliseconds or an ISO 8601 string.
</ParamField>

<ParamField path="endDate" type="string | number">
  Window end, as epoch milliseconds or an ISO 8601 string.
</ParamField>

## linkedin\_account\_get

<Badge color="blue">Read-only</Badge>

Full detail for one LinkedIn account, including its per-action daily limits and warm-up state. Configuration as it stands, not activity: for volumes sent use `linkedin_account_stats`, for today's headroom against the caps `linkedin_account_daily_stats`. Like the list, it cannot tell you whether the account has a Sales Navigator or Recruiter seat — ask the user.

### Parameters

<ParamField path="linkedAccountId" type="string" required>
  LinkedIn account id, from `linkedin_account_list`.
</ParamField>

## linkedin\_account\_list

<Badge color="blue">Read-only</Badge>

The LinkedIn accounts connected to this account. A campaign sends from exactly one of them, attached via `campaign_update`; if there is more than one, ask the user which. Whether an account has a Sales Navigator or Recruiter seat is NOT in this output — those flags exist on the account record but are not exposed by the API, and the worker only sets them during a send. Ask the user, because INMAILS steps and `/sales/` or `/talent/` lead sources depend on it. Check `isValid`, `isPaused`, `accountRestricted` and `weeklyLimitReached` before assigning an account — a campaign attached to a broken account will launch but never send. This lists; it does not connect. Adding a LinkedIn account takes a password and a verification PIN and has no tool at all — it is done in the web app. Attaching an existing account to a campaign is `campaign_update`, and changing the account's own limits is `linkedin_account_update`.

### Parameters

<ParamField path="keyword" type="string">
  Filter by name or email.
</ParamField>

<ParamField path="status" type="string">
  Backend-side status filter, e.g. "active", "paused", "invalid".
</ParamField>

<ParamField path="userId" type="string">
  Sub-account owner id. Omit for your own accounts.
</ParamField>

## linkedin\_account\_refresh

<Badge color="orange">Write</Badge>

Re-establish the browser session for a LinkedIn account after it goes invalid. May return `pinDetected: true`, meaning LinkedIn is asking for a verification PIN — that has to be entered in the web app; MCP cannot complete it — tell the user plainly rather than retrying. It repairs the session only. It does not change settings (`linkedin_account_update`), connect a new account, or clear a LinkedIn-imposed restriction — check `accountRestricted` in `linkedin_account_list` for that.

### Parameters

<ParamField path="linkedAccountId" type="string" required>
  LinkedIn account id, from `linkedin_account_list`.
</ParamField>

## linkedin\_account\_ssi

<Badge color="blue">Read-only</Badge>

The account's latest LinkedIn SSI score and its four component scores. LinkedIn's own measure of selling activity, nothing to do with campaign performance — for that use `analytics_campaign` or `linkedin_account_stats`.

### Parameters

<ParamField path="linkedAccountId" type="string" required>
  LinkedIn account id, from `linkedin_account_list`.
</ParamField>

## linkedin\_account\_stats

<Badge color="blue">Read-only</Badge>

Send volumes, acceptance and reply rates for one LinkedIn account over a date range. Totals for the window, by account. For one campaign instead use `analytics_campaign`, and for a day-by-day breakdown `linkedin_account_daily_stats`.

### Parameters

<ParamField path="linkedAccountId" type="string" required>
  LinkedIn account id, from `linkedin_account_list`.
</ParamField>

<ParamField path="range" type="object">
  Date window as \{ from, to } — epoch milliseconds or ISO 8601. Omit for the backend default.

  <Expandable title="properties">
    <ParamField path="from" type="string | number">
      Start of the window.
    </ParamField>

    <ParamField path="to" type="string | number">
      End of the window.
    </ParamField>

    <ParamField path="startDate" type="string | number">
      Alias for `from`.
    </ParamField>

    <ParamField path="endDate" type="string | number">
      Alias for `to`.
    </ParamField>
  </Expandable>
</ParamField>

## linkedin\_account\_update

<Badge color="orange">Write</Badge>

Change the safety limits and automation settings on a LinkedIn account: daily caps per action, pause/resume, warm-up, and the birthday / work-anniversary / role-change auto-congratulation messages. Raising daily limits raises LinkedIn restriction risk — leave `limits` alone unless the user asked for a specific number, and check `linkedin_account_daily_stats` first. Scope is the account, so pausing here stops every campaign that sends from it — to stop one campaign there is no tool, and to stop one lead use `lead_update`. It cannot connect or disconnect an account, fix an invalid session (`linkedin_account_refresh`), or decide which campaign uses it (`campaign_update`).

### Parameters

<ParamField path="linkedAccountId" type="string" required>
  LinkedIn account id, from `linkedin_account_list`.
</ParamField>

<ParamField path="limits" type="object">
  Daily ceilings per action type.

  <Expandable title="properties">
    <ParamField path="view" type="integer (min 0)">
      Profile views per day.
    </ParamField>

    <ParamField path="connect" type="integer (min 0)">
      Connection requests per day.
    </ParamField>

    <ParamField path="message" type="integer (min 0)">
      LinkedIn messages per day.
    </ParamField>

    <ParamField path="inmails" type="integer (min 0)">
      InMails per day.
    </ParamField>

    <ParamField path="profileEngagement" type="integer (min 0)">
      ENGAGEMENT actions per day — post likes, comments and skill endorsements.
    </ParamField>

    <ParamField path="email" type="integer (min 0)">
      Emails per day sent through campaigns using this account.
    </ParamField>

    <ParamField path="follow" type="integer (min 0)">
      Profile follows per day.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField path="isPaused" type="boolean">
  Pause every campaign running on this account.
</ParamField>

<ParamField path="warmup" type="boolean">
  Ramp volumes up gradually instead of starting at full limits.
</ParamField>

<ParamField path="birthday" type="boolean">
  Auto-congratulate connections on their birthday.
</ParamField>

<ParamField path="birthdayContent" type="string">
  Message sent on a connection's birthday.
</ParamField>

<ParamField path="anniversary" type="boolean">
  Auto-congratulate connections on a work anniversary.
</ParamField>

<ParamField path="anniversaryContent" type="string">
  Message sent on a work anniversary.
</ParamField>

<ParamField path="role" type="boolean">
  Auto-congratulate on job changes.
</ParamField>

<ParamField path="roleContent" type="string">
  Message sent when a connection changes job.
</ParamField>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.