Skip to main content
Glama

Server Details

LinkedIn outreach from Claude: invites under safe caps, follow-ups, replies and inbox triage.

Ownership verified

The last two health checks of this connector failed. If this server requires authentication, missing or expired test credentials may be the cause. A test profile lets Glama authenticate for health checks and discover tools; it is separate from your personal connections.

If you are the author, claim ownership, then add or update a test profile under Admin → Test Profile.

Status
Unhealthy
Uptime
0.0% over the last 24 hours
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP
URL
ChatGPT
–
Claude
–

TDQS

A4.1/5.0

Scored across 104 tools

Disambiguation4/5

Given ~100 tools in one domain, the boundaries are unusually explicit: descriptions name their neighbours and say when NOT to use a tool (li_cancel_steps vs li_mark_stopped, li_conversation_history vs li_read_conversation, li_send_reply vs li_send_message vs li_send_bulk_messages, li_check_targets vs the built-in collision report). Overlap remains in the read surfaces — list_conversations / read_conversation / read_conversations_bulk / conversation_history / replies_to_answer all expose threads — and several near-synonym pairs (li_pending_invites vs li_connections, li_connections vs li_new_connections) require careful reading rather than being self-evident from the name.

Naming Consistency4/5

Almost everything follows li_<verb>_<noun> snake_case (li_create_campaign, li_mark_outcome, li_cancel_steps), with the li_ prefix applied uniformly across all 104 tools. Deviations are few but real: a handful are bare nouns or noun phrases (li_connections, li_bookings, li_proxies, li_replies_to_answer, li_account_activity, li_outcome_summary, li_selector_canary), so the verb is not always predictive of read-vs-write.

Tool Count1/5

At 104 tools this is far past any practical ceiling for reliable agent selection, and the surface spans at least four unrelated domains in one server: outreach operations, enrichment/research, triage, and operator-only billing/proxy/infrastructure admin. Whole clusters could be collapsed (e.g. one conversation-read tool with a scope flag, one bulk-vs-single send, one campaign-create/ingest) rather than each variant being its own tool.

Completeness5/5

Every lifecycle has full coverage including the awkward parts: create/edit/cancel/launch/pause/resume campaigns, hold steps, reset contacts, undo mistaken marks, per-person and campaign-wide copy edits, dry-run previews, pagination with explicit truncation flags, and job-based recovery for timed-out async work. Operator surfaces (billing, proxies, invites breaker, health) and safety surfaces (do-not-contact, install-wide holds, send confirmations) are all present rather than left as gaps.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updates
    • Changedli_fetch_posts2 fields changed
      • changedInput schema / properties / maxPosts / description
        Previous value: -"How many of each person's latest posts to return, 1 to 3. Default 3. Costs the same either way: 1 lookup per person."New value: +"How many of each person's latest posts to return, 1 to 2 (more is read as 2). Default 2. Costs the same either way: 1 lookup per person."
      • removedInput schema / properties / maxPosts / maximum
        Removed value: -3
    • Changedli_search_leads2 fields changed
      • changedInput schema / properties / currentCompanies / description
        Previous value: -"People who work at these companies NOW, as LinkedIn company page URLs (https://www.linkedin.com/company/<name>/). A company name alone is refused. Up to 50."New value: +"People who work at these companies NOW, as LinkedIn company page URLs (https://www.linkedin.com/company/<name>/). A company name alone is refused. Up to 50, matched as ANY of them: put every target company in this one call, never one call per company."
      • changedInput schema / properties / maxResults / description
        Previous value: -"How many people to return, default 25, at most 100. Rounded UP to whole pages of 25 (pages are billed whole), and charged per person actually returned."New value: +"How many people to return, default 25, at most 100. Rounded UP to whole pages of 25; each page that returns anyone is charged whole (25 lookups), and a search that finds nobody costs nothing."
  2. 3 tool updates
    • Changedli_create_campaign2 fields changed
      • changedInput schema / properties / csvText / description
        Previous value: -"CSV text with profile_url plus optional connection_note and step text columns (first_message, follow_up_1, follow_up_2, follow_up_3, closer), and optional engage_post_url / engage_reaction (a post of theirs the account reacts to a day or more before the invite; see engagePostUrl on targets). At most 50 rows, shared with `targets`."New value: +"CSV text with profile_url plus optional connection_note and step text columns (first_message, follow_up_1, follow_up_2, follow_up_3, closer), and optional engage_post_url / engage_reaction (a post of theirs the account reacts to about a day before the invite, never less than 16 hours; see engagePostUrl on targets). At most 50 rows, shared with `targets`."
      • changedInput schema / properties / targets / items / properties / engagePostUrl / description
        Previous value: -"Engage-before-invite: ONE of this person's own recent posts (https://www.linkedin.com/feed/update/urn:li:activity:<id>/ or a /posts/ link), the one the note and first message mention. The sending account visits their profile and reacts to it a day or more BEFORE the invite goes out (about one in seven is only viewed), and the invite then waits 20-60 hours. Connection stage only: ignored for message-stage prospects. A link that is not a LinkedIn post refuses the row. If the post is gone or turns out not to be theirs, nothing is clicked and the invite goes ahead without it."New value: +"Engage-before-invite: ONE of this person's own recent posts (https://www.linkedin.com/feed/update/urn:li:activity:<id>/ or a /posts/ link), the one the note and first message mention. The sending account visits their profile and reacts to it first (about one in seven is only viewed). The invite follows about a day later, never sooner than 16 hours, inside the window it goes out in: the person's own morning invite window when the account times invites to each prospect, otherwise the account's sending hours (18-30 hours when there is no window to aim at, such as sending hours switched off). Connection stage only: ignored for message-stage prospects. A link that is not a LinkedIn post refuses the row. If the post is gone or turns out not to be theirs, nothing is clicked and the invite goes ahead without it."
    • Changedli_experiment_assign1 field changed
      • changedInput schema / properties / prospects / items / properties / engagePostUrl / description
        Previous value: -"Engage-before-invite: ONE of this person's own recent posts (https://www.linkedin.com/feed/update/urn:li:activity:<id>/ or a /posts/ link), the one the note and first message mention. The sending account visits their profile and reacts to it a day or more BEFORE the invite goes out (about one in seven is only viewed), and the invite then waits 20-60 hours. Connection stage only: ignored for message-stage prospects. A link that is not a LinkedIn post refuses the row. If the post is gone or turns out not to be theirs, nothing is clicked and the invite goes ahead without it."New value: +"Engage-before-invite: ONE of this person's own recent posts (https://www.linkedin.com/feed/update/urn:li:activity:<id>/ or a /posts/ link), the one the note and first message mention. The sending account visits their profile and reacts to it first (about one in seven is only viewed). The invite follows about a day later, never sooner than 16 hours, inside the window it goes out in: the person's own morning invite window when the account times invites to each prospect, otherwise the account's sending hours (18-30 hours when there is no window to aim at, such as sending hours switched off). Connection stage only: ignored for message-stage prospects. A link that is not a LinkedIn post refuses the row. If the post is gone or turns out not to be theirs, nothing is clicked and the invite goes ahead without it."
    • Changedli_ingest_prospects1 field changed
      • changedInput schema / properties / prospects / items / properties / engagePostUrl / description
        Previous value: -"Engage-before-invite: ONE of this person's own recent posts (https://www.linkedin.com/feed/update/urn:li:activity:<id>/ or a /posts/ link), the one the note and first message mention. The sending account visits their profile and reacts to it a day or more BEFORE the invite goes out (about one in seven is only viewed), and the invite then waits 20-60 hours. Connection stage only: ignored for message-stage prospects. A link that is not a LinkedIn post refuses the row. If the post is gone or turns out not to be theirs, nothing is clicked and the invite goes ahead without it."New value: +"Engage-before-invite: ONE of this person's own recent posts (https://www.linkedin.com/feed/update/urn:li:activity:<id>/ or a /posts/ link), the one the note and first message mention. The sending account visits their profile and reacts to it first (about one in seven is only viewed). The invite follows about a day later, never sooner than 16 hours, inside the window it goes out in: the person's own morning invite window when the account times invites to each prospect, otherwise the account's sending hours (18-30 hours when there is no window to aim at, such as sending hours switched off). Connection stage only: ignored for message-stage prospects. A link that is not a LinkedIn post refuses the row. If the post is gone or turns out not to be theirs, nothing is clicked and the invite goes ahead without it."
  3. 2 tool updates
    • Addedli_ignore_calendar_event
    • Changedli_send_reply1 field changed
      • changedInput schema / properties / bookingNudge / description
        Previous value: -"These messages are BOOKING NUDGES for people li_booking_due listed with nextAction \"nudge\". Each is REFUSED unless that person agreed (li_track_booking), their check date has arrived, they have nudges left, no nudge went out in the last 20 hours, they have not written since the link/agreement, they are not on the do-not-contact list and the account is not paused. The booking state moves in the same step as the queueing (nudge count +1, next check = send time + the account's close-after days), and outside the account's office hours the send is queued for when they open. Applies to every reply in the call."New value: +"These messages are BOOKING NUDGES for people li_booking_due listed with nextAction \"nudge\". Each is REFUSED unless that person agreed (li_track_booking), their check date has arrived, they have nudges left, no nudge went out in the last 20 hours, they have not written since the link/agreement, they are not on the do-not-contact list and the account is not paused. The booking state moves in the same step as the queueing (nudge count +1, next check = send time + the account's close-after days), and outside the account's office hours the send is queued for when they open. With no account named, each person is sent from the account their agreed booking is on (li_booking_due's accountId), even when they are in campaigns on more than one of your accounts. Applies to every reply in the call."
  4. 5 tool updates
    • Changedli_enrich_profiles1 field changed
      • changedInput schema / properties / fields / description
        Previous value: -"Return only these parts of each profile, so a large batch does not flood the reply. The identity — profileUrl, status, name, headline, company, role, location, fetchedAt, error — comes back on EVERY profile and never needs asking for. The sections you can add are: about, audience, signals, currentRole, experience, education, skills (audience is follower and connection counts; signals is open-to-work, hiring, premium, influencer, verified), plus companyPage for each person's employer block (it rides on the default view, and on this trimmed one only when named). Pass an empty array for identity only. An unknown name is refused naming the accepted set, and nothing is looked up or charged. Costs exactly the same as the full record — it only changes what is sent back."New value: +"Return only these parts of each profile, so a large batch does not flood the reply. The identity — profileUrl, publicProfileUrl, memberId, searchId, status, name, headline, company, role, location, fetchedAt, error — comes back on EVERY profile and never needs asking for. The sections you can add are: about, audience, signals, currentRole, experience, education, skills (audience is follower and connection counts; signals is open-to-work, hiring, premium, influencer, verified), plus companyPage for each person's employer block (it rides on the default view, and on this trimmed one only when named). Pass an empty array for identity only. An unknown name is refused naming the accepted set, and nothing is looked up or charged. Costs exactly the same as the full record — it only changes what is sent back."
    • Changedli_experiment_assign1 field changed
      • changedInput schema / properties / prospects / items / properties / profileUrl / description
        Previous value: -"Canonical LinkedIn profile URL"New value: +"LinkedIn profile URL. A search id from li_search_leads (/in/ACwAA…) is accepted as is and resolved to the public profile URL before anything is written (reported as `searchIds`)."
    • Changedli_ingest_prospects1 field changed
      • changedInput schema / properties / prospects / items / properties / profileUrl / description
        Previous value: -"Canonical LinkedIn profile URL"New value: +"LinkedIn profile URL. A search id from li_search_leads (/in/ACwAA…) is accepted as is and resolved to the public profile URL before anything is written (reported as `searchIds`)."
    • Addedli_resolve_profile_url
    • Changedli_send_connection_now1 field changed
      • changedInput schema / properties / profileUrl / description
        Previous value: -"One recipient LinkedIn profile URL (or use profileUrls for several)"New value: +"One recipient LinkedIn profile URL (or use profileUrls for several). A search id from li_search_leads (/in/ACwAA…) is resolved to the public profile URL first."
  5. 16 tool updates
    • Changedli_campaign_contacts6 fields changed
      • addedInput schema / properties / connectionStatus
        Added value: +{
        +  "description": "Only contacts whose invite is in one of these statuses (\"none\" = imported already connected)",
        +  "items": {
        +    "enum": [
        +      "not_sent",
        +      "invited",
        +      "accepted",
        +      "withdrawn",
        +      "declined",
        +      "failed",
        +      "none"
        +    ],
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / conversationState
        Added value: +{
        +  "description": "Only contacts whose `conversation.state` is one of these (a marked outcome wins)",
        +  "items": {
        +    "enum": [
        +      "not_started",
        +      "invite_pending",
        +      "invite_failed",
        +      "queued",
        +      "awaiting_reply",
        +      "needs_reply",
        +      "answered",
        +      "stopped",
        +      "no_reply",
        +      "send_failed",
        +      "won",
        +      "meeting_booked",
        +      "interested",
        +      "not_interested",
        +      "no_outcome"
        +    ],
        +    "type": "string"
        +  },
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "\"csv\" = one header + rows string instead of the `contacts` array (rows view only)",
        +  "enum": [
        +    "json",
        +    "csv"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / hasInbound
        Added value: +{
        +  "description": "true = only contacts who have written to you; false = only those who have not",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / includeSteps
        Added value: +{
        +  "description": "true = each row carries its `steps` (ids for li_edit_step / li_cancel_steps). Default false: rows carry `stepCounts` only.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / text / description
        Previous value: -"How much of the stored COPY each row carries — the connection note and every step text. \"preview\" (the default) clips each one to 120 characters and says so per field. \"full\" returns them complete: pass this when reviewing what a campaign will actually send. \"none\" omits the copy and keeps only its length, which is much the cheapest page."New value: +"How much COPY each row carries — the connection note and every step text. Setting it includes the steps. \"preview\" (the default with steps) clips each to 120 characters and says so per field; \"full\" returns them complete (to review what will send); \"none\" keeps only lengths."
    • Changedli_check_targets5 fields changed
      • addedInput schema / properties / campaignNamePrefix
        Added value: +{
        +  "description": "The campaigns you are BUILDING, by name prefix (case-insensitive), e.g. \"PR test Oct\". Anyone already in one of them is listed in `batch.members` (never capped) and marked `inBatch`, whatever their bucket says. Use it when splitting a list across several new campaigns.",
        +  "maxLength": 200,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / fields
        Added value: +{
        +  "description": "view \"people\" only: which columns besides profile and campaign, from name, bucket, connection, message, outcome, inbound. Default all.",
        +  "items": {
        +    "enum": [
        +      "name",
        +      "bucket",
        +      "connection",
        +      "message",
        +      "outcome",
        +      "inbound"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "view \"people\" only: \"json\" (default) returns `rows` as arrays matching `columns`; \"csv\" returns the same table as `csv` text.",
        +  "enum": [
        +    "json",
        +    "csv"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / view / description
        Previous value: -"How much to return. \"summary\" (the default) groups the colliding people by bucket and lists each campaign once in `sites`, naming up to 50 people per bucket and saying in `peopleHidden` how many it did not. \"full\" returns one flat row per person, each carrying its own copy of the same sentence and campaign name, in submission order."New value: +"How much to return. \"summary\" (the default) groups the colliding people by bucket and lists each campaign once in `sites`, naming up to 50 people per bucket (`peopleHidden` counts the rest) and `otherCampaigns` per person. \"people\" is EVERY campaign each person is in, one table row per person per campaign (account, campaign status, connection, message, outcome, inbound), uncapped and compact — for \"which of these URLs are in which campaigns\". \"full\" returns flat rows with every sentence, plus `people` with whole membership objects."
      • changedInput schema / properties / view / enum
        Previous value: -[
        -  "summary",
        -  "full"
        -]New value: +[
        +  "summary",
        +  "full",
        +  "people"
        +]
    • Changedli_create_campaign1 field changed
      • changedInput schema / properties / targets / description
        Previous value: -"Prefilled targets, at most 50 per call (CSV rows count toward the same limit). For a longer list, split it across calls under the same strategy, or use li_ingest_prospects, which takes 200."New value: +"Prefilled targets, at most 50 per call (CSV rows count toward the same limit). For a longer list, split it across calls under the same strategy, or use li_ingest_prospects, which takes 500."
    • Changedli_create_icp3 fields changed
      • addedInput schema / properties / sessionId
        Added value: +{
        +  "description": "Operator only: the account whose TEAM owns it. Members' creates are their team's.",
        +  "type": "string"
        +}
      • addedInput schema / properties / sessionLabel
        Added value: +{
        +  "description": "Operator only: the account whose TEAM owns it. Members' creates are their team's.",
        +  "type": "string"
        +}
      • addedInput schema / properties / shared
        Added value: +{
        +  "description": "Operator only: true publishes it as a shared template every team sees. Never the default.",
        +  "type": "boolean"
        +}
    • Changedli_create_strategy3 fields changed
      • addedInput schema / properties / sessionId
        Added value: +{
        +  "description": "Operator only: the account whose TEAM owns it. Members' creates are their team's.",
        +  "type": "string"
        +}
      • addedInput schema / properties / sessionLabel
        Added value: +{
        +  "description": "Operator only: the account whose TEAM owns it. Members' creates are their team's.",
        +  "type": "string"
        +}
      • addedInput schema / properties / shared
        Added value: +{
        +  "description": "Operator only: true publishes it as a shared template every team sees. Never the default.",
        +  "type": "boolean"
        +}
    • Changedli_edit_campaign4 fields changed
      • addedInput schema / properties / dryRun
        Added value: +{
        +  "description": "With resnapshot: preview who would be re-copied, write nothing.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / resnapshot
        Added value: +{
        +  "description": "Re-copy every member's step kinds and delays from strategyId (or, without one, from the campaign's own strategy), keeping each person's own text. Only while EVERY member is untouched: invite not sent, no step sent or scheduled, nothing launched for them. Otherwise refused, naming who. Writes nothing on refusal.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / stepTexts
        Added value: +{
        +  "description": "Per-person text for step kinds a person has no text for under the new strategy (or to replace theirs). Implies resnapshot. Text is never invented: a person missing text for a new step is named and nothing is written.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "closer": {
        +        "description": "Text for the \"closer\" step",
        +        "maxLength": 8000,
        +        "type": "string"
        +      },
        +      "firstMessage": {
        +        "description": "Text for the \"first\" step",
        +        "maxLength": 8000,
        +        "type": "string"
        +      },
        +      "followUp1": {
        +        "description": "Text for the \"followup_1\" step",
        +        "maxLength": 8000,
        +        "type": "string"
        +      },
        +      "followUp2": {
        +        "description": "Text for the \"followup_2\" step",
        +        "maxLength": 8000,
        +        "type": "string"
        +      },
        +      "followUp3": {
        +        "description": "Text for the \"followup_3\" step",
        +        "maxLength": 8000,
        +        "type": "string"
        +      },
        +      "profileUrl": {
        +        "description": "The person, as stored or as any spelling of them",
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "profileUrl"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 500,
        +  "type": "array"
        +}
      • changedInput schema / properties / strategyId / description
        Previous value: -"Accepted so it can be REFUSED with the reason, rather than dropped as an unknown key. Allowed only while the campaign still holds nobody."New value: +"A new strategy. On an EMPTY campaign it simply applies. On one holding people it is refused unless resnapshot=true."
    • Addedli_experiment_assign
    • Changedli_ingest_prospects11 fields changed
      • addedInput schema / properties / defaultSteps
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "Shared copy: text per step (connectionNote, firstMessage, followUp1, followUp2, followUp3, closer) for every row that brings none of its own. {first} is the row's first name (firstName, else the first word of name), filled in at import; no other variable exists. A row with no first name for a template that uses {first} is not imported, and says why.",
        +  "properties": {
        +    "closer": {
        +      "description": "Default text for the \"closer\" step",
        +      "maxLength": 8000,
        +      "type": "string"
        +    },
        +    "connectionNote": {
        +      "description": "Default invite note (connection-stage rows only)",
        +      "maxLength": 8000,
        +      "type": "string"
        +    },
        +    "firstMessage": {
        +      "description": "Default text for the \"firstMessage\" step",
        +      "maxLength": 8000,
        +      "type": "string"
        +    },
        +    "followUp1": {
        +      "description": "Default text for the \"followUp1\" step",
        +      "maxLength": 8000,
        +      "type": "string"
        +    },
        +    "followUp2": {
        +      "description": "Default text for the \"followUp2\" step",
        +      "maxLength": 8000,
        +      "type": "string"
        +    },
        +    "followUp3": {
        +      "description": "Default text for the \"followUp3\" step",
        +      "maxLength": 8000,
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
      • addedInput schema / properties / idempotencyKey
        Added value: +{
        +  "description": "Any unique string for THIS request (e.g. a UUID). Pass the same key when retrying after a timeout, 502 or 503: a call that already finished returns its stored answer (24h) instead of importing twice. Ignored on a dry run.",
        +  "maxLength": 200,
        +  "minLength": 8,
        +  "type": "string"
        +}
      • changedInput schema / properties / prospects / description
        Previous value: -"1-200 prospects, each with profileUrl and the prefilled text for every strategy step (plus connectionNote for invites)"New value: +"1-500 prospects, each with profileUrl and the prefilled text for every strategy step (plus connectionNote for invites), or that text from defaultSteps. Each may name its own account, campaign, strategy and ICP."
      • addedInput schema / properties / prospects / items / properties / campaignId
        Added value: +{
        +  "description": "Land this ONE prospect in this existing campaign (id from li_list_campaigns), overriding the call's. Its account is the campaign's when the row names none; it takes the campaign's own strategy and ICP.",
        +  "type": "string"
        +}
      • addedInput schema / properties / prospects / items / properties / campaignName
        Added value: +{
        +  "description": "Land this ONE prospect in the campaign of this name on its account (created if missing), overriding the call's campaign. Stored and matched exactly as given (nothing is appended), so the same name reaches the same campaign.",
        +  "type": "string"
        +}
      • addedInput schema / properties / prospects / items / properties / firstName
        Added value: +{
        +  "description": "First name for {first} in defaultSteps; else the first word of name. Not stored.",
        +  "type": "string"
        +}
      • addedInput schema / properties / prospects / items / properties / icpId
        Added value: +{
        +  "description": "ICP label for this prospect's campaign, overriding the call's (or icpName)",
        +  "type": "string"
        +}
      • addedInput schema / properties / prospects / items / properties / icpName
        Added value: +{
        +  "description": "ICP label by name, for this prospect only",
        +  "type": "string"
        +}
      • addedInput schema / properties / prospects / items / properties / strategyId
        Added value: +{
        +  "description": "Strategy for this prospect's campaign, overriding the call's (or strategyName)",
        +  "type": "string"
        +}
      • addedInput schema / properties / prospects / items / properties / strategyName
        Added value: +{
        +  "description": "Strategy by name, for this prospect only",
        +  "type": "string"
        +}
      • changedInput schema / properties / prospects / maxItems
        Previous value: -200New value: +500
    • Changedli_job_result1 field changed
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Only with a research jobId (from li_research_profiles): the first row to return. Pass the previous reply's nextOffset.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
    • Changedli_launch_campaign8 fields changed
      • changedInput schema / properties / campaignId / description
        Previous value: -"Campaign id from li_create_campaign or li_list_campaigns"New value: +"One campaign id from li_list_campaigns. Or campaignIds / namePrefix."
      • addedInput schema / properties / campaignId / minLength
        Added value: +1
      • addedInput schema / properties / campaignIds
        Added value: +{
        +  "description": "Bulk: up to 100 campaign ids, each launched as the single form would be",
        +  "items": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 100,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / expectCount
        Added value: +{
        +  "description": "With namePrefix only: the number of campaigns the preview listed. Required to confirm, so nothing is launched that the preview did not show.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / namePrefix
        Added value: +{
        +  "description": "Bulk: every campaign you can see whose name starts with this (case-insensitive, the same match as li_list_campaigns), at most 100; listed before anything is launched",
        +  "maxLength": 200,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / sessionId
        Added value: +{
        +  "description": "With namePrefix only: match on this account only",
        +  "type": "string"
        +}
      • addedInput schema / properties / sessionLabel
        Added value: +{
        +  "description": "With namePrefix only: match on this account only",
        +  "type": "string"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "campaignId",
        -  "confirmLaunch"
        -]New value: +[
        +  "confirmLaunch"
        +]
    • Changedli_list_campaigns8 fields changed
      • addedInput schema / properties / fields
        Added value: +{
        +  "description": "Only these columns per row (campaignId is always kept). Omit for every column.",
        +  "items": {
        +    "enum": [
        +      "name",
        +      "status",
        +      "accountId",
        +      "accountLabel",
        +      "strategyName",
        +      "icpName",
        +      "contactCount",
        +      "launchedAt",
        +      "priority",
        +      "createdAt",
        +      "state"
        +    ],
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "\"csv\" = one header + rows string instead of the `campaigns` array",
        +  "enum": [
        +    "json",
        +    "csv"
        +  ],
        +  "type": "string"
        +}
      • addedInput schema / properties / maxContacts
        Added value: +{
        +  "description": "Only campaigns holding at most this many people (0 = empty ones)",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / minContacts
        Added value: +{
        +  "description": "Only campaigns holding at least this many people",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / namePrefix
        Added value: +{
        +  "description": "Only campaigns whose name starts with this (case-insensitive)",
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / offset
        Added value: +{
        +  "description": "Skip this many matching campaigns — pass the last reply's `nextOffset`",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / sessionId
        Added value: +{
        +  "description": "Limit to one account by id (li_list_accounts). Omit to cover every account you can see.",
        +  "type": "string"
        +}
      • addedInput schema / properties / sessionLabel
        Added value: +{
        +  "description": "Limit to one account by label, LinkedIn name, profile slug or member id. Omit to cover every account you can see.",
        +  "type": "string"
        +}
    • Changedli_move_contact4 fields changed
      • addedInput schema / properties / dryRun
        Added value: +{
        +  "description": "Preview the move (and the re-copy) without writing.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / idempotencyKey
        Added value: +{
        +  "description": "Any unique string for THIS request (e.g. a UUID). Reuse it only to retry the same call.",
        +  "maxLength": 200,
        +  "minLength": 8,
        +  "type": "string"
        +}
      • addedInput schema / properties / resnapshot
        Added value: +{
        +  "description": "Re-copy each mover's steps from the target campaign's strategy before moving (kinds and delays; their own text kept). Untouched people only. Not with contactId.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / stepTexts
        Added value: +{
        +  "description": "Per-person text for target step kinds a mover has no text for (or to replace theirs). Implies resnapshot.",
        +  "items": {
        +    "additionalProperties": false,
        +    "properties": {
        +      "closer": {
        +        "description": "Text for the \"closer\" step",
        +        "maxLength": 8000,
        +        "type": "string"
        +      },
        +      "firstMessage": {
        +        "description": "Text for the \"first\" step",
        +        "maxLength": 8000,
        +        "type": "string"
        +      },
        +      "followUp1": {
        +        "description": "Text for the \"followup_1\" step",
        +        "maxLength": 8000,
        +        "type": "string"
        +      },
        +      "followUp2": {
        +        "description": "Text for the \"followup_2\" step",
        +        "maxLength": 8000,
        +        "type": "string"
        +      },
        +      "followUp3": {
        +        "description": "Text for the \"followup_3\" step",
        +        "maxLength": 8000,
        +        "type": "string"
        +      },
        +      "profileUrl": {
        +        "description": "The person, as stored or as any spelling of them",
        +        "minLength": 1,
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "profileUrl"
        +    ],
        +    "type": "object"
        +  },
        +  "maxItems": 500,
        +  "type": "array"
        +}
    • Changedli_outreach_analytics3 fields changed
      • addedInput schema / properties / experimentId
        Added value: +{
        +  "description": "groupBy \"arm\" only: the experiment (omit to list yours)",
        +  "type": "string"
        +}
      • changedInput schema / properties / groupBy / description
        Previous value: -"Row grouping: strategy, icp, campaign or account"New value: +"Row grouping: strategy, icp, campaign, account, or arm (an experiment's arms; needs experimentId)"
      • changedInput schema / properties / groupBy / enum
        Previous value: -[
        -  "strategy",
        -  "icp",
        -  "campaign",
        -  "account"
        -]New value: +[
        +  "strategy",
        +  "icp",
        +  "campaign",
        +  "account",
        +  "arm"
        +]
    • Changedli_pause_campaign8 fields changed
      • changedInput schema / properties / campaignId / description
        Previous value: -"Campaign id from li_list_campaigns"New value: +"One campaign id from li_list_campaigns. Or campaignIds / namePrefix."
      • addedInput schema / properties / campaignId / minLength
        Added value: +1
      • addedInput schema / properties / campaignIds
        Added value: +{
        +  "description": "Bulk: up to 100 campaign ids, each paused as the single form would be",
        +  "items": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 100,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / confirm
        Added value: +{
        +  "description": "Bulk forms only: true to act. Without it the call lists what matched.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / namePrefix
        Added value: +{
        +  "description": "Bulk: every campaign you can see whose name starts with this (case-insensitive, the same match as li_list_campaigns), at most 100; listed before anything is paused",
        +  "maxLength": 200,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / sessionId
        Added value: +{
        +  "description": "With namePrefix only: match on this account only",
        +  "type": "string"
        +}
      • addedInput schema / properties / sessionLabel
        Added value: +{
        +  "description": "With namePrefix only: match on this account only",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "campaignId"
        -]
    • Addedli_research_profiles
    • Changedli_resume_campaign9 fields changed
      • changedInput schema / properties / campaignId / description
        Previous value: -"Campaign id from li_list_campaigns"New value: +"One campaign id from li_list_campaigns. Or campaignIds / namePrefix."
      • addedInput schema / properties / campaignId / minLength
        Added value: +1
      • addedInput schema / properties / campaignIds
        Added value: +{
        +  "description": "Bulk: up to 100 campaign ids, each resumed as the single form would be",
        +  "items": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 100,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / confirm
        Added value: +{
        +  "description": "Bulk forms only: true to act. Without it the call lists what matched.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / expectCount
        Added value: +{
        +  "description": "With namePrefix only: the number of campaigns the preview listed. Required to confirm, so nothing is resumed that the preview did not show.",
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / namePrefix
        Added value: +{
        +  "description": "Bulk: every campaign you can see whose name starts with this (case-insensitive, the same match as li_list_campaigns), at most 100; listed before anything is resumed",
        +  "maxLength": 200,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / sessionId
        Added value: +{
        +  "description": "With namePrefix only: match on this account only",
        +  "type": "string"
        +}
      • addedInput schema / properties / sessionLabel
        Added value: +{
        +  "description": "With namePrefix only: match on this account only",
        +  "type": "string"
        +}
      • removedInput schema / required
        Removed value: -[
        -  "campaignId"
        -]
  6. 1 tool update
    • Changedli_list_conversations1 field changed
      • changedInput schema / properties / onlyAddressable / description
        Previous value: -"Drop threads with no identifiable participant — LinkedIn sponsored/InMail blasts, which still count as \"they spoke last\" but cannot be replied to. Off by default so nothing is hidden; the response always reports how many were unaddressable."New value: +"Drop threads that cannot be replied to — LinkedIn sponsored/InMail blasts, with or without a named sender, which still count as \"they spoke last\". Off by default so nothing is hidden; the response always reports how many were unaddressable."
  7. 1 tool update
    • Changedli_edit_campaign1 field changed
      • addedInput schema / properties / priority
        Added value: +{
        +  "description": "true = send this campaign's invites before every non-priority campaign on its LinkedIn account (they wait while it has anyone to invite); false = take turns again. Only when the user asks. It reorders invites only: it NEVER raises a daily or weekly cap and never changes sending hours or messages. Omitted leaves it alone.",
        +  "type": "boolean"
        +}
  8. 2 tool updates
    • Addedli_set_team_discount
    • Addedli_set_trial_end_offer
  9. 1 tool update
    • Addedli_clear_invite_hold
  10. 1 tool update
    • Changedli_send_reply1 field changed
      • addedInput schema / properties / calendarChecked
        Added value: +{
        +  "description": "REQUIRED (true) for anyone with our booking link out (bookingPending / bookingCheckRequired in li_replies_to_answer) or a call already booked: it says you searched the calendar for THIS person just before this call. This server reads no calendar, so a booking made minutes ago is invisible here until li_mark_booked records it. If they booked: send NOTHING (no \"grab a slot\", no \"see you then\") and record it with li_mark_booked. Without it such a row is refused and nothing is queued. Implied by bookingNudge / bookingClose (their routine sweeps the calendar first), but search again right before those too. Applies to every reply in the call.",
        +  "type": "boolean"
        +}
  11. 2 tool updates
    • Changedli_enrich_profiles7 fields changed
      • changedInput schema / properties / fields / description
        Previous value: -"Return only these parts of each profile, so a large batch does not flood the reply. The identity — profileUrl, status, name, headline, company, role, location, fetchedAt, error — comes back on EVERY profile and never needs asking for. The sections you can add are: about, audience, signals, currentRole, experience, education, skills (audience is follower and connection counts; signals is open-to-work, hiring, premium, influencer, verified), plus companyPage for each person's employer block (it rides on the default view, and on this trimmed one only when named). Pass an empty array for identity only. An unknown name is refused naming the accepted set, and nothing is looked up or charged. Costs exactly the same as the full record — it only changes what is sent back. Cannot be combined with includeRaw."New value: +"Return only these parts of each profile, so a large batch does not flood the reply. The identity — profileUrl, status, name, headline, company, role, location, fetchedAt, error — comes back on EVERY profile and never needs asking for. The sections you can add are: about, audience, signals, currentRole, experience, education, skills (audience is follower and connection counts; signals is open-to-work, hiring, premium, influencer, verified), plus companyPage for each person's employer block (it rides on the default view, and on this trimmed one only when named). Pass an empty array for identity only. An unknown name is refused naming the accepted set, and nothing is looked up or charged. Costs exactly the same as the full record — it only changes what is sent back."
      • removedInput schema / properties / includeRaw
        Removed value: -{
        -  "description": "Return the data provider's record verbatim instead of the compact profile. Costs NO extra lookups, but the reply is MUCH larger — one profile measured ~8KB, so twenty is ~160KB of mostly unrelated people, followed companies and image URLs. Ask for it only when the compact profile is genuinely missing something, and prefer a small batch when you do.",
        -  "type": "boolean"
        -}
      • removedInput schema / properties / maxAgeDays
        Removed value: -{
        -  "description": "Treat a cached profile older than this as stale. Default 30.",
        -  "maximum": 365,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • changedInput schema / properties / profileUrls / description
        Previous value: -"LinkedIn profile URLs. One real lookup takes at most 100 and a longer list is refused rather than silently truncated; estimateOnly answers for up to 500 and says how many calls to split it into."New value: +"The LinkedIn profile URLs of the people to look up — the only input passed to the data provider. One real lookup takes at most 100 and a longer list is refused rather than silently truncated; estimateOnly answers for up to 500 and says how many calls to split it into."
      • changedInput schema / properties / refresh / description
        Previous value: -"Ignore the cache and re-fetch. Costs a lookup for every URL."New value: +"Ignore the cache and re-fetch, for when a cached profile is known to be out of date. Costs a lookup for every URL."
      • changedInput schema / properties / sessionId / description
        Previous value: -"Account id from li_list_accounts. Needed (or sessionLabel) when you have more than one account; never guessed."New value: +"Only when you have more than one LinkedIn account: which one pays for the lookup (its plan and allowance gate the run). Account id from li_list_accounts. Never sent to the data provider."
      • changedInput schema / properties / sessionLabel / description
        Previous value: -"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Needed (or sessionId) when you have more than one account; never guessed."New value: +"Same as sessionId, by account label, LinkedIn name, profile slug or member id (li_list_accounts). Only when you have more than one account. Never sent to the data provider."
    • Changedli_list_conversations1 field changed
      • changedInput schema / properties / limit / description
        Previous value: -"How many to return AFTER filtering (default 20). The inbox is walked by cursor, 20 threads per round trip, until this many MATCH or the inbox runs out — so a large number with onlyNeedsReply is honest but costs browser time. Check `reachedEnd`."New value: +"How many threads to collect (default 20, max 200), counted after onlyNeedsReply / onlyAddressable / sinceDays / profileUrl but BEFORE the decided / internal / system / reviewed drops, so the reply can hold fewer. The inbox is walked by cursor, 20 threads per round trip, until this many match, the inbox runs out or the page ceiling is hit — a large number costs browser time. Check `reachedEnd`."
  12. 6 tool updates
    • Changedli_contact_dossier2 fields changed
      • changedInput schema / properties / fields / description
        Previous value: -"Which blocks to return: contact, sequences, steps, events, conversation, enriched, company. Naming one of about, audience, signals, currentRole, experience, education, skills narrows \"enriched\" to that part of the bought research. profileUrl and name always come back. Omit this and one profileUrl returns everything, while profileUrls returns everything except the bought research."New value: +"Which blocks to return: contact, sequences, steps, events, conversation, enriched, company, posts. Naming one of about, audience, signals, currentRole, experience, education, skills narrows \"enriched\" to that part of the bought research. profileUrl and name always come back. Omit this and one profileUrl returns everything, while profileUrls returns everything except the bought research."
      • changedInput schema / properties / profileUrls / description
        Previous value: -"Several contacts in ONE call, max 50. Each is resolved independently: one refusal does not stop the rest, and the reply reports every one by URL. Unless `fields` says otherwise this leaves out enriched and company — they are the largest blocks and a whole queue rarely wants them — and says so in the reply."New value: +"Several contacts in ONE call, max 50. Each is resolved independently: one refusal does not stop the rest, and the reply reports every one by URL. Unless `fields` says otherwise this leaves out enriched and company and posts — they are the largest blocks and a whole queue rarely wants them — and says so in the reply."
    • Changedli_create_campaign3 fields changed
      • changedInput schema / properties / csvText / description
        Previous value: -"CSV text with profile_url plus optional connection_note and step text columns (first_message, follow_up_1, follow_up_2, follow_up_3, closer). At most 50 rows, shared with `targets`."New value: +"CSV text with profile_url plus optional connection_note and step text columns (first_message, follow_up_1, follow_up_2, follow_up_3, closer), and optional engage_post_url / engage_reaction (a post of theirs the account reacts to a day or more before the invite; see engagePostUrl on targets). At most 50 rows, shared with `targets`."
      • addedInput schema / properties / targets / items / properties / engagePostUrl
        Added value: +{
        +  "description": "Engage-before-invite: ONE of this person's own recent posts (https://www.linkedin.com/feed/update/urn:li:activity:<id>/ or a /posts/ link), the one the note and first message mention. The sending account visits their profile and reacts to it a day or more BEFORE the invite goes out (about one in seven is only viewed), and the invite then waits 20-60 hours. Connection stage only: ignored for message-stage prospects. A link that is not a LinkedIn post refuses the row. If the post is gone or turns out not to be theirs, nothing is clicked and the invite goes ahead without it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / targets / items / properties / engageReaction
        Added value: +{
        +  "description": "Which reaction to leave on engagePostUrl: LIKE (default), PRAISE (Celebrate), EMPATHY (Love), INTEREST (Insightful), APPRECIATION (Support) or ENTERTAINMENT (Funny). Needs engagePostUrl.",
        +  "type": "string"
        +}
    • Addedli_fetch_posts
    • Changedli_ingest_prospects2 fields changed
      • addedInput schema / properties / prospects / items / properties / engagePostUrl
        Added value: +{
        +  "description": "Engage-before-invite: ONE of this person's own recent posts (https://www.linkedin.com/feed/update/urn:li:activity:<id>/ or a /posts/ link), the one the note and first message mention. The sending account visits their profile and reacts to it a day or more BEFORE the invite goes out (about one in seven is only viewed), and the invite then waits 20-60 hours. Connection stage only: ignored for message-stage prospects. A link that is not a LinkedIn post refuses the row. If the post is gone or turns out not to be theirs, nothing is clicked and the invite goes ahead without it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / prospects / items / properties / engageReaction
        Added value: +{
        +  "description": "Which reaction to leave on engagePostUrl: LIKE (default), PRAISE (Celebrate), EMPATHY (Love), INTEREST (Insightful), APPRECIATION (Support) or ENTERTAINMENT (Funny). Needs engagePostUrl.",
        +  "type": "string"
        +}
    • Addedli_react_to_post
    • Addedli_search_leads
  13. 62 tool updates
    • Changedli_accept_invitations2 fields changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Needed (or sessionLabel) when you have more than one account; never guessed."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Needed (or sessionId) when you have more than one account; never guessed."
    • Changedli_accepted_pending_message3 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Most rows to return (default 100); `truncated` says when there are more"
      • changedInput schema / properties / sessionId / description
        Previous value: -"Scope to one account id"New value: +"Limit to one account by id (li_list_accounts). Needed (or sessionLabel) when you have more than one account."
      • changedInput schema / properties / sessionLabel / description
        Previous value: -"Scope to one account label (omit for all accounts)"New value: +"Limit to one account by label, LinkedIn name, profile slug or member id. Needed (or sessionId) when you have more than one account."
    • Changedli_booking_due2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Most rows to return (default 50, max 200); more are flagged"
      • addedInput schema / properties / sessionId / description
        Added value: +"Limit to one account by id (li_list_accounts). Omit to cover every account you can see."
    • Changedli_bookings4 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Most rows to return (default 100, max 500)"
      • addedInput schema / properties / sessionId / description
        Added value: +"Limit to one account by id (li_list_accounts). Omit to cover every account you can see."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Limit to one account by label, LinkedIn name, profile slug or member id. Omit to cover every account you can see."
      • addedInput schema / properties / status / description
        Added value: +"Booking states to include (default [\"booked\"])"
    • Changedli_campaign_contacts1 field changed
      • addedInput schema / properties / campaignId / description
        Added value: +"Campaign id from li_list_campaigns"
    • Changedli_campaign_status1 field changed
      • addedInput schema / properties / campaignId / description
        Added value: +"Campaign id from li_list_campaigns"
    • Changedli_check_acceptance2 fields changed
      • changedInput schema / properties / sessionId / description
        Previous value: -"Optional saved LinkedIn session selector"New value: +"Account id from li_list_accounts. Omit (with sessionLabel) to use your default account."
      • changedInput schema / properties / sessionLabel / description
        Previous value: -"Optional saved LinkedIn session selector"New value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Omit (with sessionId) to use your default account."
    • Changedli_connections2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Most invite rows to return (default 50, max 200); `total` is the full count"
      • addedInput schema / properties / sessionId / description
        Added value: +"Limit to one account by id (li_list_accounts). Needed (or sessionLabel) when you have more than one account."
    • Changedli_create_campaign13 fields changed
      • addedInput schema / properties / name / description
        Added value: +"Campaign name, shown on the dashboard and in li_list_campaigns"
      • addedInput schema / properties / targets / items / properties / collaborationAngle / description
        Added value: +"The angle the sequence leads with"
      • addedInput schema / properties / targets / items / properties / company / description
        Added value: +"Current employer"
      • addedInput schema / properties / targets / items / properties / context / description
        Added value: +"Free-text notes on how you found them or why now"
      • addedInput schema / properties / targets / items / properties / fitQuality / description
        Added value: +"Your fit grade, e.g. strong / medium / weak"
      • addedInput schema / properties / targets / items / properties / headline / description
        Added value: +"LinkedIn headline"
      • addedInput schema / properties / targets / items / properties / icpBucket / description
        Added value: +"Your ICP bucket for them (free text)"
      • addedInput schema / properties / targets / items / properties / location / description
        Added value: +"Location as shown on the profile"
      • addedInput schema / properties / targets / items / properties / name / description
        Added value: +"Full name"
      • addedInput schema / properties / targets / items / properties / productUrl / description
        Added value: +"Their product or company URL"
      • addedInput schema / properties / targets / items / properties / role / description
        Added value: +"Current job title"
      • addedInput schema / properties / targets / items / properties / whatTheySell / description
        Added value: +"What their company sells, in a line"
      • addedInput schema / properties / targets / items / properties / whyTheyFit / description
        Added value: +"Why they fit, in a line"
    • Changedli_create_icp2 fields changed
      • addedInput schema / properties / description / description
        Added value: +"Optional note on who this audience is"
      • addedInput schema / properties / name / description
        Added value: +"Label name, unique within your team (check li_list_icps first)"
    • Changedli_create_post2 fields changed
      • changedInput schema / properties / sessionId / description
        Previous value: -"Optional saved LinkedIn session selector"New value: +"Account id from li_list_accounts. Needed (or sessionLabel) when you have more than one account; never guessed."
      • changedInput schema / properties / sessionLabel / description
        Previous value: -"Optional saved LinkedIn session selector"New value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Needed (or sessionId) when you have more than one account; never guessed."
    • Changedli_create_strategy3 fields changed
      • addedInput schema / properties / description / description
        Added value: +"Optional note on when to use this template"
      • addedInput schema / properties / name / description
        Added value: +"Template name, unique within your team (check li_list_strategies first)"
      • addedInput schema / properties / steps / items / properties / kind / description
        Added value: +"Which message this step is; each kind at most once"
    • Changedli_daily_digest1 field changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Omit (with sessionLabel) to use your default account."
    • Changedli_detect_account_tier1 field changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Needed (or sessionLabel) when you have more than one account; never guessed."
    • Changedli_due_messages3 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Most rows to return (default 100); `truncated` says when there are more"
      • changedInput schema / properties / sessionId / description
        Previous value: -"Scope to one account id"New value: +"Limit to one account by id (li_list_accounts). Needed (or sessionLabel) when you have more than one account."
      • changedInput schema / properties / sessionLabel / description
        Previous value: -"Scope to one account label (omit for all accounts)"New value: +"Limit to one account by label, LinkedIn name, profile slug or member id. Needed (or sessionId) when you have more than one account."
    • Changedli_enrich_company2 fields changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Needed (or sessionLabel) when you have more than one account; never guessed."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Needed (or sessionId) when you have more than one account; never guessed."
    • Changedli_enrich_profiles2 fields changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Needed (or sessionLabel) when you have more than one account; never guessed."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Needed (or sessionId) when you have more than one account; never guessed."
    • Changedli_ingest_prospects23 fields changed
      • addedInput schema / properties / icpId / description
        Added value: +"ICP label id from li_list_icps (or use icpName); optional"
      • addedInput schema / properties / icpName / description
        Added value: +"ICP label by name, from li_list_icps; optional"
      • addedInput schema / properties / prospects / description
        Added value: +"1-200 prospects, each with profileUrl and the prefilled text for every strategy step (plus connectionNote for invites)"
      • addedInput schema / properties / prospects / items / properties / closer / description
        Added value: +"Text for the \"closer\" step"
      • addedInput schema / properties / prospects / items / properties / collaborationAngle / description
        Added value: +"The angle the sequence leads with"
      • addedInput schema / properties / prospects / items / properties / company / description
        Added value: +"Current employer"
      • addedInput schema / properties / prospects / items / properties / connectionNote / description
        Added value: +"Note sent WITH the invite (connection stage only; free accounts cannot deliver notes)"
      • addedInput schema / properties / prospects / items / properties / context / description
        Added value: +"Free-text notes on how you found them or why now"
      • addedInput schema / properties / prospects / items / properties / firstMessage / description
        Added value: +"Text for the \"first\" step, sent connectionWaitHours after acceptance"
      • addedInput schema / properties / prospects / items / properties / fitQuality / description
        Added value: +"Your fit grade, e.g. strong / medium / weak"
      • addedInput schema / properties / prospects / items / properties / followUp1 / description
        Added value: +"Text for the \"followup_1\" step"
      • addedInput schema / properties / prospects / items / properties / followUp2 / description
        Added value: +"Text for the \"followup_2\" step"
      • addedInput schema / properties / prospects / items / properties / followUp3 / description
        Added value: +"Text for the \"followup_3\" step"
      • addedInput schema / properties / prospects / items / properties / headline / description
        Added value: +"LinkedIn headline"
      • addedInput schema / properties / prospects / items / properties / icpBucket / description
        Added value: +"Your ICP bucket for them (free text)"
      • addedInput schema / properties / prospects / items / properties / location / description
        Added value: +"Location as shown on the profile"
      • addedInput schema / properties / prospects / items / properties / name / description
        Added value: +"Full name"
      • addedInput schema / properties / prospects / items / properties / productUrl / description
        Added value: +"Their product or company URL"
      • addedInput schema / properties / prospects / items / properties / role / description
        Added value: +"Current job title"
      • addedInput schema / properties / prospects / items / properties / timezone / description
        Added value: +"IANA timezone, e.g. Asia/Kolkata; used by prospect-local sending windows"
      • addedInput schema / properties / prospects / items / properties / whatTheySell / description
        Added value: +"What their company sells, in a line"
      • addedInput schema / properties / prospects / items / properties / whyTheyFit / description
        Added value: +"Why they fit, in a line"
      • addedInput schema / properties / strategyId / description
        Added value: +"Sequence template id from li_list_strategies (or use strategyName)"
    • Changedli_invitation_decisions6 fields changed
      • addedInput schema / properties / changedSinceDecision / description
        Added value: +"true = only people whose headline or company moved since they were judged"
      • addedInput schema / properties / decision / description
        Added value: +"Only this decision: accepted, rejected, wrong_lane, failed or deferred"
      • addedInput schema / properties / icp / description
        Added value: +"Only decisions filed under this ICP label"
      • addedInput schema / properties / offset / description
        Added value: +"Rows to skip, for paging (default 0)"
      • addedInput schema / properties / sessionId / description
        Added value: +"Limit to one account by id (li_list_accounts). Omit to cover every account you can see."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Limit to one account by label, LinkedIn name, profile slug or member id. Omit to cover every account you can see."
    • Changedli_job_result2 fields changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Limit to one account by id (li_list_accounts). Omit to cover every account you can see."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Limit to one account by label, LinkedIn name, profile slug or member id. Omit to cover every account you can see."
    • Changedli_launch_campaign1 field changed
      • addedInput schema / properties / campaignId / description
        Added value: +"Campaign id from li_create_campaign or li_list_campaigns"
    • Changedli_list_conversations2 fields changed
      • changedInput schema / properties / sessionId / description
        Previous value: -"Optional saved LinkedIn session selector"New value: +"Account id from li_list_accounts. Omit (with sessionLabel) to use your default account."
      • changedInput schema / properties / sessionLabel / description
        Previous value: -"Optional saved LinkedIn session selector"New value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Omit (with sessionId) to use your default account."
    • Changedli_mark_booked2 fields changed
      • addedInput schema / properties / contactId / description
        Added value: +"One contact by id (from li_contact_dossier or li_campaign_contacts), instead of profileUrl"
      • addedInput schema / properties / note / description
        Added value: +"Optional note for the contact timeline"
    • Changedli_mark_booking_cancelled2 fields changed
      • addedInput schema / properties / calendarEventId / description
        Added value: +"The calendar event id recorded with li_mark_booked"
      • addedInput schema / properties / note / description
        Added value: +"Optional note for the contact timeline"
    • Changedli_mark_invitations9 fields changed
      • addedInput schema / properties / decisions / description
        Added value: +"1-200 decisions, one per inviter; each is applied or refused on its own"
      • addedInput schema / properties / decisions / items / properties / campaignId / description
        Added value: +"The campaign they joined, for an accepted person"
      • addedInput schema / properties / decisions / items / properties / decision / description
        Added value: +"accepted (only after a confirmed accept), rejected, wrong_lane, failed or deferred"
      • addedInput schema / properties / decisions / items / properties / icp / description
        Added value: +"ICP label you judged them against"
      • addedInput schema / properties / decisions / items / properties / profileUrl / description
        Added value: +"The inviter, by profile URL (or memberId)"
      • addedInput schema / properties / decisions / items / properties / reason / description
        Added value: +"Why; required for rejected and wrong_lane"
      • addedInput schema / properties / decisions / items / properties / routeTo / description
        Added value: +"wrong_lane only: the account that should reach them cold instead"
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Needed (or sessionLabel) when you have more than one account; never guessed."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Needed (or sessionId) when you have more than one account; never guessed."
    • Changedli_mark_outcome1 field changed
      • addedInput schema / properties / contactId / description
        Added value: +"One contact by id (from li_contact_dossier or li_campaign_contacts), instead of profileUrl"
    • Changedli_mark_replied2 fields changed
      • addedInput schema / properties / contactId / description
        Added value: +"One contact by id (from li_contact_dossier or li_campaign_contacts), instead of profileUrl"
      • addedInput schema / properties / note / description
        Added value: +"Optional note for the contact timeline"
    • Changedli_mark_reply_handled2 fields changed
      • addedInput schema / properties / contactId / description
        Added value: +"One contact by id (from li_contact_dossier or li_campaign_contacts), instead of profileUrl"
      • addedInput schema / properties / note / description
        Added value: +"Optional note for the contact timeline, e.g. what you answered"
    • Changedli_mark_stopped2 fields changed
      • addedInput schema / properties / contactId / description
        Added value: +"One contact by id (from li_contact_dossier or li_campaign_contacts), instead of profileUrl"
      • addedInput schema / properties / reason / description
        Added value: +"Why they are finished with, stored on the timeline (e.g. \"not a fit\")"
    • Changedli_marked_conversations2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Most rows to return (default 100, max 200)"
      • addedInput schema / properties / sessionId / description
        Added value: +"Limit to one account by id (li_list_accounts). Omit to cover every account you can see."
    • Changedli_match_contacts2 fields changed
      • addedInput schema / properties / candidates / description
        Added value: +"1-200 calendar bookings to match, one per event, as read from the calendar"
      • addedInput schema / properties / sessionId / description
        Added value: +"Limit to one account by id (li_list_accounts). Omit to cover every account you can see."
    • Changedli_move_contact1 field changed
      • addedInput schema / properties / contactId / description
        Added value: +"One contact by id, instead of profileUrl"
    • Changedli_new_connections1 field changed
      • addedInput schema / properties / limit / description
        Added value: +"Most new people to return (1-500)"
    • Changedli_outcome_summary1 field changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Limit to one account by id (li_list_accounts). Omit to cover every account you can see."
    • Changedli_outreach_analytics4 fields changed
      • addedInput schema / properties / groupBy / description
        Added value: +"Row grouping: strategy, icp, campaign or account"
      • addedInput schema / properties / sendWindowMode / description
        Added value: +"Filter `localHours` to accounts in this send-window mode (account | prospect | both); rows are not filtered"
      • addedInput schema / properties / sessionId / description
        Added value: +"Limit to one account by id (li_list_accounts). Omit to cover every account you can see."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Limit to one account by label, LinkedIn name, profile slug or member id. Omit to cover every account you can see."
    • Changedli_pause_campaign1 field changed
      • addedInput schema / properties / campaignId / description
        Added value: +"Campaign id from li_list_campaigns"
    • Changedli_pending_invites2 fields changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Omit (with sessionLabel) to use your default account."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Omit (with sessionId) to use your default account."
    • Changedli_read_conversation2 fields changed
      • changedInput schema / properties / sessionId / description
        Previous value: -"Optional saved LinkedIn session selector"New value: +"Account id from li_list_accounts. Omit (with sessionLabel) to use your default account."
      • changedInput schema / properties / sessionLabel / description
        Previous value: -"Optional saved LinkedIn session selector"New value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Omit (with sessionId) to use your default account."
    • Changedli_read_conversations_bulk2 fields changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Omit (with sessionLabel) to use your default account."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Omit (with sessionId) to use your default account."
    • Changedli_received_invitations2 fields changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Omit (with sessionLabel) to use your default account."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Omit (with sessionId) to use your default account."
    • Changedli_replies_to_answer3 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Most rows to return (default 100); `truncated` says when there are more"
      • changedInput schema / properties / sessionId / description
        Previous value: -"Scope to one account id"New value: +"Limit to one account by id (li_list_accounts). Needed (or sessionLabel) when you have more than one account."
      • changedInput schema / properties / sessionLabel / description
        Previous value: -"Scope to one account label (omit for all accounts)"New value: +"Limit to one account by label, LinkedIn name, profile slug or member id. Needed (or sessionId) when you have more than one account."
    • Changedli_reset_contact2 fields changed
      • addedInput schema / properties / contactId / description
        Added value: +"The contact id from li_contact_dossier or li_campaign_contacts"
      • addedInput schema / properties / profileUrl / description
        Added value: +"The contact, by LinkedIn profile URL (or use contactId)"
    • Changedli_resume_campaign1 field changed
      • addedInput schema / properties / campaignId / description
        Added value: +"Campaign id from li_list_campaigns"
    • Changedli_schedule_post1 field changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Needed (or sessionLabel) when you have more than one account; never guessed."
    • Changedli_scheduled_posts3 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Most posts to return, newest scheduled time first (default 50, max 200)"
      • addedInput schema / properties / sessionId / description
        Added value: +"Limit to one account by id (li_list_accounts). Needed (or sessionLabel) when you have more than one account."
      • changedInput schema / properties / sessionLabel / description
        Previous value: -"Omit to list across every account"New value: +"Limit to one account by label, LinkedIn name, profile slug or member id. Needed (or sessionId) when you have more than one account."
    • Changedli_selector_canary2 fields changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Omit (with sessionLabel) to use your default account."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Omit (with sessionId) to use your default account."
    • Changedli_send_bulk_messages3 fields changed
      • addedInput schema / properties / items / description
        Added value: +"Recipients and their exact text, one per person; batches of 15 or fewer are safest"
      • addedInput schema / properties / items / items / properties / message / description
        Added value: +"Exact text for this recipient, never generated"
      • addedInput schema / properties / items / items / properties / profileUrl / description
        Added value: +"Recipient profile URL"
    • Changedli_send_connection_now2 fields changed
      • changedInput schema / properties / sessionId / description
        Previous value: -"Optional saved LinkedIn session selector"New value: +"Account id from li_list_accounts. Needed (or sessionLabel) when you have more than one account; never guessed."
      • changedInput schema / properties / sessionLabel / description
        Previous value: -"Optional saved LinkedIn session selector"New value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Needed (or sessionId) when you have more than one account; never guessed."
    • Changedli_send_message3 fields changed
      • addedInput schema / properties / debugArtifactsDir / description
        Added value: +"Ignored; accepted only so older callers do not fail validation."
      • changedInput schema / properties / sessionId / description
        Previous value: -"Optional saved LinkedIn session selector"New value: +"Account id from li_list_accounts. Needed (or sessionLabel) when you have more than one account; never guessed."
      • changedInput schema / properties / sessionLabel / description
        Previous value: -"Optional saved LinkedIn session selector"New value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Needed (or sessionId) when you have more than one account; never guessed."
    • Changedli_session_status2 fields changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Omit (with sessionLabel) to use your default account."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Omit (with sessionId) to use your default account."
    • Changedli_set_account_proxy2 fields changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Needed (or sessionLabel) when you have more than one account; never guessed."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Needed (or sessionId) when you have more than one account; never guessed."
    • Changedli_set_booking_settings6 fields changed
      • addedInput schema / properties / cancelRecheckHours / description
        Added value: +"Hours after a cancelled booking before it is due again (default 24, 1-336)"
      • addedInput schema / properties / closeAfterDays / description
        Added value: +"Days after a nudge before the next action becomes a close (default 3, 1-30)"
      • addedInput schema / properties / firstNudgeHours / description
        Added value: +"Hours after the booking link before the first check (default 48, 1-336)"
      • addedInput schema / properties / maxNudges / description
        Added value: +"Nudges before a close (default 1, 0-3)"
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Needed (or sessionLabel) when you have more than one account; never guessed."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Needed (or sessionId) when you have more than one account; never guessed."
    • Changedli_set_default_pricing_tier1 field changed
      • addedInput schema / properties / tier / description
        Added value: +"'founding' or 'standard'; omit to read the current default"
    • Changedli_set_office_hours10 fields changed
      • addedInput schema / properties / prospectWindow / description
        Added value: +"Prospect-local hours used by the prospect and both modes; omitted fields keep their stored values"
      • addedInput schema / properties / prospectWindow / properties / inviteEnd / description
        Added value: +"Prospect's local hour invites stop, EXCLUSIVE"
      • addedInput schema / properties / prospectWindow / properties / inviteStart / description
        Added value: +"Prospect's local hour invites may start, inclusive"
      • addedInput schema / properties / prospectWindow / properties / maxDeferHours / description
        Added value: +"Hours an invite may wait for the prospect window before the account window applies (default 72)"
      • addedInput schema / properties / prospectWindow / properties / messageEnd / description
        Added value: +"Prospect's local hour scheduled steps stop, EXCLUSIVE"
      • addedInput schema / properties / prospectWindow / properties / messageStart / description
        Added value: +"Prospect's local hour scheduled steps may start, inclusive"
      • addedInput schema / properties / prospectWindow / properties / weekdaysOnly / description
        Added value: +"true = never on the prospect's Saturday or Sunday"
      • addedInput schema / properties / sendWindowMode / description
        Added value: +"account (default): the account window gates everything; prospect: each contact's local window gates invites and scheduled steps; both: both must be open"
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Needed (or sessionLabel) when you have more than one account; never guessed."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Needed (or sessionId) when you have more than one account; never guessed."
    • Changedli_set_team_billing3 fields changed
      • addedInput schema / properties / billingCurrency / description
        Added value: +"'INR' (Razorpay) or 'USD' (PayPal); cannot change while a subscription is live"
      • addedInput schema / properties / pricingTier / description
        Added value: +"'founding' or 'standard' — the plan the team checks out on next"
      • addedInput schema / properties / teamId / description
        Added value: +"Team id (or use email)"
    • Changedli_set_team_complimentary1 field changed
      • addedInput schema / properties / teamId / description
        Added value: +"Team id (or use the email of anyone in it)"
    • Changedli_snooze_reply1 field changed
      • addedInput schema / properties / contactId / description
        Added value: +"One contact by id (from li_contact_dossier or li_campaign_contacts), instead of profileUrl"
    • Changedli_track_booking1 field changed
      • addedInput schema / properties / contactId / description
        Added value: +"One contact by id (from li_contact_dossier or li_campaign_contacts), instead of profileUrl"
    • Changedli_unmark_invitation5 fields changed
      • addedInput schema / properties / confirm / description
        Added value: +"Must be true to delete the decision"
      • addedInput schema / properties / memberId / description
        Added value: +"The inviter's member id (ACoAA…), as li_received_invitations returns it"
      • addedInput schema / properties / profileUrl / description
        Added value: +"The inviter, by profile URL (or use memberId)"
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Needed (or sessionLabel) when you have more than one account; never guessed."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Needed (or sessionId) when you have more than one account; never guessed."
    • Changedli_verify_account1 field changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Needed (or sessionLabel) when you have more than one account; never guessed."
    • Changedli_withdraw_invites2 fields changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Needed (or sessionLabel) when you have more than one account; never guessed."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Needed (or sessionId) when you have more than one account; never guessed."
    • Changedli_withdraw_status2 fields changed
      • addedInput schema / properties / sessionId / description
        Added value: +"Account id from li_list_accounts. Omit (with sessionLabel) to use your default account."
      • addedInput schema / properties / sessionLabel / description
        Added value: +"Account by label, LinkedIn name, profile slug or member id (li_list_accounts). Omit (with sessionId) to use your default account."
  14. 1 tool update
    • Addedli_hold_sending

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    AI agent for LinkedIn outreach: finds the right people, writes in your voice, follows up, replies. Six campaign goals: sell a product or service, find a job, hire people, find partners or investors, find a vendor, research interviews. Campaigns stay drafts until you launch them.
    22
    2,088 PyPI
    12
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables automated LinkedIn growth by posting, commenting, and managing connections through Claude Code, with daily scheduled tasks for inbox replies and connection requests.
    17
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    LinkedIn prospect intelligence inside Claude. It automates the research behind outreach, not the sending: scrapes posts, profiles and comment threads into a local SQLite database, classifies what a person or company actually posts about, mines comment threads for people already describing your problem, and surfaces uncommon commonalities worth opening with.
    18
    34
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources