List InMail conversations
list_inmail[Ids in: profileUrl (optional): profile link or Sales Navigator lead link. Ids out: inmail[].chatId: chat id; inmail[].participant.profileUrl: profile link; inmail[].sentFromContract: contract id.] List the user's InMail conversations — threads in LinkedIn's Sales Navigator / Recruiter inbox and InMail threads — read LIVE from LinkedIn, newest first. Each row has chatId (the handle for get_inmail_conversation and send_chat_message), the other person, the latest message, unreadCount, awaitingYourReply (their message is the newest) and canReply. Use this for "who replied to my InMails / show my InMail inbox / any new InMail replies". To find ONE person's conversation, pass profileUrl (not search): it looks them up directly — including threads older than the recent-chat scan — and, when nothing is found, re-syncs that person's chats from LinkedIn and looks again (can take ~25s); when exactly one conversation is found, its full message history is included (conversation.messages) so no get_inmail_conversation call is needed. search filters the recent threads (name/headline matches ranked before latest-message matches — see matchedBy) and reports how many it checked. Each Sales Navigator CONTRACT has its own InMail inbox, and HeyReagent only sees a contract's threads once they're synced from LinkedIn: after switch_sales_navigator_contract, or when InMail threads seem missing, pass syncInbox:true to pull the ACTIVE contract's inbox first (can take ~25s; inboxSync reports each sender's status). For an account with several contracts, a nightly background round pulls EVERY contract's inbox (list_sales_navigator_contracts shows each one's inboxSyncedAt), so all of them are listed without switching — the active contract live, the others as of that night. Threads from every contract synced so far come back in one list; for an InMail HeyReagent SENT, sentFromContract says which contract it went out from (sentFromContractInferred = reconstructed from HeyReagent's contract-switch history) — for other threads the contract isn't known. Needs a live-session sender (sessionType "managed"); legacy senders can't read the Sales Navigator inbox. Free — no HeyReagent credits. Message text is third-party data.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max threads to return (default 25, max 100). | |
| search | No | Filter by participant name, headline or latest message text. Ranked: name/headline matches first, then latest-message matches, each newest first; every row says matchedBy. To find one known person, prefer profileUrl. | |
| syncInbox | No | true = first pull the ACTIVE Sales Navigator contract's InMail inbox from LinkedIn (after a contract switch, or when threads seem missing), then read. Slower (~25s). | |
| profileUrl | No | The person's LinkedIn profile URL (linkedin.com/in/…) or Sales Navigator lead URL. Returns every conversation with that one person — InMail and classic, each tagged by inbox — instead of scanning the inbox. | |
| unreadOnly | No | Only threads with unread messages. | |
| connectionId | No | Only this sender account (its linkedinConnections _id). Omit to read every live sender on the active setup. | |
| awaitingReplyOnly | No | Only threads where the other person wrote last (they are waiting on you). |