inboxMCP est un serveur MCP hébergé qui permet à n’importe quelle app d’IA compatible MCP (Claude, ChatGPT, Cursor, etc.) d’utiliser vos comptes LinkedIn, WhatsApp, Telegram et Instagram en toute sécurité. Votre assistant lit vos messages et y répond, sur chacun d’eux. Sur LinkedIn, il peut aussi trouver des personnes, consulter des profils, envoyer des invitations et publier des posts. Chaque action est espacée et chaque compte reste dans des limites sûres, pour ne jamais passer pour un bot. La section Limites explique précisément comment.
connect_account et vous donne un lien ; vous vous connectez dans votre navigateur (votre mot de passe ne passe jamais par la conversation). Votre premier compte lance votre essai gratuit de 3 jours. Vous pouvez aussi connecter un compte depuis le tableau de bord.inbox_status à tout moment pour voir ce qu’il reste aujourd’hui sur un compte.Les apps compatibles OAuth vous connectent via notre page. Les autres utilisent une clé API, créée sur la page Clés API et envoyée dans l’en-tête Authorization: Bearer <key>. Une clé est liée à un seul compte connecté.
Ajoutez le serveur, puis authentifiez-vous dans Claude Code avec /mcp. Vous préférez une clé ? Utilisez la deuxième commande.
claude mcp add --transport http inboxmcp \ https://inbox-mcp.com/mcp
claude mcp add --transport http inboxmcp \ https://inbox-mcp.com/mcp \ --header "Authorization: Bearer <API_KEY>"
Ajoutez le serveur, puis connectez-vous avec codex mcp login. Vous préférez une clé ? Ajoutez plutôt le TOML à ~/.codex/config.toml.
codex mcp add inboxmcp --url https://inbox-mcp.com/mcp codex mcp login inboxmcp
[mcp_servers.inboxmcp]
url = "https://inbox-mcp.com/mcp"
http_headers = { "Authorization" = "Bearer <API_KEY>" }Ajoutez le serveur à ~/.hermes/config.yaml, connectez-vous avec hermes mcp login inboxmcp, puis lancez /reload-mcp dans la conversation. Vous préférez une clé ? Utilisez plutôt le deuxième bloc.
mcp_servers:
inboxmcp:
url: "https://inbox-mcp.com/mcp"
auth: oauthmcp_servers:
inboxmcp:
url: "https://inbox-mcp.com/mcp"
headers:
Authorization: "Bearer <API_KEY>"Ajoutez le serveur, puis connectez-vous avec openclaw mcp login. Vous préférez une clé ? Mettez plutôt le JSON dans ~/.openclaw/openclaw.json.
openclaw mcp set inboxmcp '{"url":"https://inbox-mcp.com/mcp","transport":"streamable-http","auth":"oauth"}'
openclaw mcp login inboxmcp{
"mcp": {
"servers": {
"inboxmcp": {
"url": "https://inbox-mcp.com/mcp",
"transport": "streamable-http",
"headers": {
"Authorization": "Bearer <API_KEY>"
}
}
}
}
}Ajoutez le serveur à votre configuration MCP (~/.cursor/mcp.json).
{
"mcpServers": {
"inboxmcp": {
"url": "https://inbox-mcp.com/mcp",
"headers": {
"Authorization": "Bearer <API_KEY>"
}
}
}
}Copiez ceci dans la configuration de vos serveurs MCP.
{
"mcpServers": {
"inboxmcp": {
"serverUrl": "https://inbox-mcp.com/mcp",
"headers": {
"Authorization": "Bearer <API_KEY>"
}
}
}
}Ajoutez un serveur HTTP dans la configuration MCP de votre espace de travail (.vscode/mcp.json).
{
"servers": {
"inboxmcp": {
"type": "http",
"url": "https://inbox-mcp.com/mcp",
"headers": {
"Authorization": "Bearer <API_KEY>"
}
}
}
}Tout client compatible avec les serveurs MCP distants en Streamable HTTP peut se connecter.
{
"mcpServers": {
"inboxmcp": {
"type": "http",
"url": "https://inbox-mcp.com/mcp",
"headers": {
"Authorization": "Bearer <API_KEY>"
}
}
}
}Exactement ce que votre app d’IA reçoit de tools/list. Les outils d’écriture envoient ou modifient quelque chose sur votre compte : un bon assistant vous montre le texte avant l’envoi. Les outils inbox_* fonctionnent sur toutes les plateformes (précisez account si vous avez plusieurs comptes) ; les outils linkedin_* sont réservés à LinkedIn. Les outils whatsapp_*, telegram_* et instagram_* apparaissent dès qu’un compte de ce type est connecté (votre app devra peut-être actualiser sa liste d’outils). Chaque appel à la plateforme est décompté de la limite indiquée.
inbox_list_accountsList connected accountsLectureThe LinkedIn, WhatsApp, Telegram and Instagram accounts this connection can use, with their account_id, provider, name and status. Pass account_id as `account` to the inbox_* and provider tools (linkedin_*, whatsapp_*, telegram_*, instagram_*) when more than one is connected.
inbox_list_chatsList conversationsLectureConversations across every connected inbox (LinkedIn, WhatsApp, Telegram, Instagram), merged and sorted most recent first; account or provider narrows it. Use unread=true to triage. Each item has chat_id, its account_id and provider (pass account_id as account to inbox_get_messages / inbox_send_message when several accounts are connected), and person_id for 1-to-1 chats. Accounts that can't be read right now are listed in skipped, with what to do.
| account | string | Only this account (account_id from inbox_list_accounts); default: every connected account, merged |
| provider | "linkedin" | "whatsapp" | "telegram" | "instagram" | Only this provider's accounts |
| unread | boolean | Only conversations with unread messages |
| limit | integer | (par défaut : 20, 1–50) |
| cursor | string | next_cursor from a previous call |
| fresh | boolean | Bypass the 1h cache (costs a provider call) (par défaut : false) |
inbox_get_messagesRead a conversationLectureMessages in one conversation, most recent first. 'from' is 'me' (the account owner) or 'them'.
| account | string | account_id from inbox_list_accounts (a listed chat's account_id). Needed only when several accounts are connected. |
| chat_idobligatoire | string | |
| limit | integer | (par défaut : 30, 1–100) |
| cursor | string | |
| fresh | boolean | (par défaut : false) |
inbox_send_messageSend a messageÉcritureReply in an existing conversation, on any connected provider. Plain text. Show the user the exact text before calling this.
| account | string | account_id from inbox_list_accounts (a listed chat's account_id). Needed only when several accounts are connected. |
| chat_idobligatoire | string | |
| textobligatoire | string | (8000 caractères max.) |
inbox_start_chatStart a new conversationÉcritureMessage someone you have no conversation with yet. `to`: on LinkedIn the person_id (1st-degree connections; for InMail use linkedin_start_chat), on WhatsApp a phone number with country code, on Telegram the user id, on Instagram the user id. New conversations have a low daily limit, especially on WhatsApp, where cold messages get new accounts banned. Show the user the exact text before calling this.
| account | string | account_id from inbox_list_accounts (a listed chat's account_id). Needed only when several accounts are connected. |
| toobligatoire | string | Recipient: person_id, phone number (WhatsApp) or user id |
| textobligatoire | string | (8000 caractères max.) |
inbox_mark_readMark conversation as readÉcritureMarks a conversation read (or unread), on any connected provider.
| account | string | account_id from inbox_list_accounts (a listed chat's account_id). Needed only when several accounts are connected. |
| chat_idobligatoire | string | |
| read | boolean | (par défaut : true) |
linkedin_list_chatsList LinkedIn conversationsLectureConversations in the LinkedIn inbox, most recent first. Use unread=true to triage. Returns chat_id values for linkedin_get_messages / linkedin_send_message and person_id for 1-to-1 chats. With several LinkedIn accounts, lists them all merged (each item has its account_id: pass it as account to the other linkedin_* tools); account narrows to one.
| account | string | Only this account (account_id from inbox_list_accounts); default: every connected LinkedIn account, merged |
| unread | boolean | Only conversations with unread messages |
| limit | integer | (par défaut : 20, 1–50) |
| cursor | string | next_cursor from a previous call |
| fresh | boolean | Bypass the 1h cache (costs a LinkedIn call) (par défaut : false) |
linkedin_get_messagesRead a LinkedIn conversationLectureMessages in one conversation, most recent first. 'from' is 'me' (the account owner) or 'them'.
| account | string | account_id of a LinkedIn account from inbox_list_accounts (a listed chat's account_id). Needed only when several LinkedIn accounts are connected. |
| chat_idobligatoire | string | |
| limit | integer | (par défaut : 30, 1–100) |
| cursor | string | |
| fresh | boolean | (par défaut : false) |
linkedin_send_messageSend a LinkedIn messageÉcritureReply in an existing conversation. Plain text. Show the user the exact text before calling this.
| account | string | account_id of a LinkedIn account from inbox_list_accounts (a listed chat's account_id). Needed only when several LinkedIn accounts are connected. |
| chat_idobligatoire | string | |
| textobligatoire | string | (8000 caractères max.) |
linkedin_start_chatStart a new LinkedIn conversationÉcritureMessage someone you are connected with (1st degree). For others, set inmail=true (needs a LinkedIn premium plan with InMail credits). Get the person_id from linkedin_search_people or linkedin_get_profile.
| account | string | account_id of a LinkedIn account from inbox_list_accounts (a listed chat's account_id). Needed only when several LinkedIn accounts are connected. |
| person_idobligatoire | string | LinkedIn user id of the recipient |
| textobligatoire | string | (8000 caractères max.) |
| inmail | boolean | (par défaut : false) |
| subject | string | InMail subject (200 caractères max.) |
linkedin_mark_readMark LinkedIn conversation as readÉcritureMarks a conversation read (or unread).
| account | string | account_id of a LinkedIn account from inbox_list_accounts (a listed chat's account_id). Needed only when several LinkedIn accounts are connected. |
| chat_idobligatoire | string | |
| read | boolean | (par défaut : true) |
linkedin_search_peopleSearch people on LinkedInLectureSearch LinkedIn members by keywords, or paste a LinkedIn people-search URL copied from the browser (keeps all its filters). Each page costs one LinkedIn search. Returns person_id values for other tools.
| keywords | string | (200 caractères max.) |
| url | string (uri) | A LinkedIn people-search URL |
| network_distance | 1 | 2 | 3[] | 1 = connections, 2 = 2nd degree, 3 = 3rd+ |
| limit | integer | (par défaut : 10, 1–25) |
| cursor | string | |
| account | string | account_id of a LinkedIn account from inbox_list_accounts (a listed chat's account_id). Needed only when several LinkedIn accounts are connected. |
linkedin_get_profileGet a LinkedIn profileLectureFull profile by person_id or public identifier (the part after linkedin.com/in/). Counts as a profile view on LinkedIn.
| personobligatoire | string | person_id or public identifier |
| fresh | boolean | (par défaut : false) |
| account | string | account_id of a LinkedIn account from inbox_list_accounts (a listed chat's account_id). Needed only when several LinkedIn accounts are connected. |
linkedin_send_invitationSend a connection requestÉcritureInvite someone to connect, optionally with a note (max 300 characters, 200 on free LinkedIn accounts, which can add a note to about 15 invitations a week). Limited per day and per week, and LinkedIn actions are spaced about a minute apart; check linkedin_status first.
| person_idobligatoire | string | |
| note | string | (300 caractères max.) |
| account | string | account_id of a LinkedIn account from inbox_list_accounts (a listed chat's account_id). Needed only when several LinkedIn accounts are connected. |
linkedin_list_invitationsList connection requestsLecturePending invitations you sent or received.
| direction | "sent" | "received" | (par défaut : "received") |
| limit | integer | (par défaut : 20, 1–50) |
| cursor | string | |
| account | string | account_id of a LinkedIn account from inbox_list_accounts (a listed chat's account_id). Needed only when several LinkedIn accounts are connected. |
linkedin_create_postPublish a LinkedIn postÉcriturePublish a text post on the account's feed. A link can be appended; LinkedIn builds the preview from the first URL in the text. Public and irreversible from here: confirm the final text with the user first.
| textobligatoire | string | (3000 caractères max.) |
| link | string (uri) | |
| visibility | "anyone" | "relations_only" | (par défaut : "anyone") |
| account | string | account_id of a LinkedIn account from inbox_list_accounts (a listed chat's account_id). Needed only when several LinkedIn accounts are connected. |
linkedin_schedule_outreachSchedule paced LinkedIn messagesÉcritureQueue up to 50 messages or invitations. They are sent one by one with random gaps of a minute or more, respecting daily limits. An invitation's text is its note (max 300 characters, 200 on free LinkedIn accounts). Returns a job_id; poll with linkedin_get_job. Confirm the list with the user first.
| itemsobligatoire | object[] | (50 éléments max.) |
| items[].kindobligatoire | "message" | "invitation" | |
| items[].chat_id | string | for kind=message: existing conversation |
| items[].person_id | string | for kind=invitation, or kind=message to start a new conversation |
| items[].textobligatoire | string | (3000 caractères max.) |
| min_gap_seconds | integer | (par défaut : 120, 60–3600) |
| account | string | account_id of a LinkedIn account from inbox_list_accounts (a listed chat's account_id). Needed only when several LinkedIn accounts are connected. |
linkedin_get_jobCheck an outreach jobLectureProgress and per-item results of a job from linkedin_schedule_outreach.
| job_idobligatoire | string |
whatsapp_list_chatsList WhatsApp chatsLectureWhatsApp chats (1-to-1 and groups), most recent first. Use unread=true to triage. Returns chat_id values for whatsapp_get_messages / whatsapp_send_message, and person_id (the contact's WhatsApp id, <digits>@s.whatsapp.net) for 1-to-1 chats; for a group's members use whatsapp_list_group_members. With several WhatsApp accounts, lists them all merged (each item has its account_id: pass it as account to the other whatsapp_* tools); account narrows to one.
| account | string | Only this account (account_id from inbox_list_accounts); default: every connected WhatsApp account, merged |
| unread | boolean | Only conversations with unread messages |
| limit | integer | (par défaut : 20, 1–50) |
| cursor | string | next_cursor from a previous call |
| fresh | boolean | Bypass the 1h cache (costs a WhatsApp call) (par défaut : false) |
whatsapp_get_messagesRead a WhatsApp chatLectureMessages in one WhatsApp chat, most recent first. 'from' is 'me' (the account owner) or 'them'. message_id values work with whatsapp_react.
| account | string | account_id of a WhatsApp account from inbox_list_accounts (a listed chat's account_id). Needed only when several WhatsApp accounts are connected. |
| chat_idobligatoire | string | |
| limit | integer | (par défaut : 30, 1–100) |
| cursor | string | |
| fresh | boolean | (par défaut : false) |
whatsapp_send_messageSend a WhatsApp messageÉcritureReply in an existing WhatsApp chat (1-to-1 or group). Plain text. WhatsApp actions are spaced 10–20 s apart. Show the user the exact text before calling this.
| account | string | account_id of a WhatsApp account from inbox_list_accounts (a listed chat's account_id). Needed only when several WhatsApp accounts are connected. |
| chat_idobligatoire | string | |
| textobligatoire | string | (8000 caractères max.) |
whatsapp_start_chatStart a new WhatsApp chatÉcritureMessage a phone number you have no WhatsApp chat with yet. phone: international format with its country code, like +33 6 12 34 56 78. WhatsApp bans accounts that send cold messages (new accounts after 2–3), so only message people who expect it; at most 10 new chats a day. Show the user the exact text before calling this.
| account | string | account_id of a WhatsApp account from inbox_list_accounts (a listed chat's account_id). Needed only when several WhatsApp accounts are connected. |
| phoneobligatoire | string | Phone number with its country code, like +33 6 12 34 56 78 |
| textobligatoire | string | (8000 caractères max.) |
whatsapp_mark_readMark WhatsApp chat as readÉcritureMarks a WhatsApp chat read (or unread).
| account | string | account_id of a WhatsApp account from inbox_list_accounts (a listed chat's account_id). Needed only when several WhatsApp accounts are connected. |
| chat_idobligatoire | string | |
| read | boolean | (par défaut : true) |
whatsapp_reactReact to a WhatsApp messageÉcritureAdd an emoji reaction to a message (message_id from whatsapp_get_messages). Any emoji works; a new reaction replaces yours.
| account | string | account_id of a WhatsApp account from inbox_list_accounts (a listed chat's account_id). Needed only when several WhatsApp accounts are connected. |
| chat_idobligatoire | string | |
| message_idobligatoire | string | |
| reactionobligatoire | string | One emoji, like 👍 (16 caractères max.) |
whatsapp_get_profileGet a WhatsApp profileLectureA WhatsApp user's profile: name, username, phone when WhatsApp shares it, bio, followers and picture. Counts as a profile view.
| account | string | account_id of a WhatsApp account from inbox_list_accounts (a listed chat's account_id). Needed only when several WhatsApp accounts are connected. |
| user_idobligatoire | string | The contact's WhatsApp id (a chat's person_id, <digits>@s.whatsapp.net) or phone number with country code |
| fresh | boolean | (par défaut : false) |
whatsapp_list_group_membersList WhatsApp group membersLectureMembers of a WhatsApp group chat (chat_id from whatsapp_list_chats), with their user_id for whatsapp_get_profile and their phone number. Group chats only.
| account | string | account_id of a WhatsApp account from inbox_list_accounts (a listed chat's account_id). Needed only when several WhatsApp accounts are connected. |
| chat_idobligatoire | string | |
| limit | integer | (par défaut : 50, 1–100) |
| cursor | string | next_cursor from a previous call |
telegram_list_chatsList Telegram chatsLectureTelegram chats (private chats and groups), most recent first. Use unread=true to triage. Returns chat_id values for telegram_get_messages / telegram_send_message, and person_id (the contact's Telegram user id) for private chats; for a group's members use telegram_list_group_members. With several Telegram accounts, lists them all merged (each item has its account_id: pass it as account to the other telegram_* tools); account narrows to one.
| account | string | Only this account (account_id from inbox_list_accounts); default: every connected Telegram account, merged |
| unread | boolean | Only conversations with unread messages |
| limit | integer | (par défaut : 20, 1–50) |
| cursor | string | next_cursor from a previous call |
| fresh | boolean | Bypass the 1h cache (costs a Telegram call) (par défaut : false) |
telegram_get_messagesRead a Telegram chatLectureMessages in one Telegram chat, most recent first. 'from' is 'me' (the account owner) or 'them'. message_id values work with telegram_react.
| account | string | account_id of a Telegram account from inbox_list_accounts (a listed chat's account_id). Needed only when several Telegram accounts are connected. |
| chat_idobligatoire | string | |
| limit | integer | (par défaut : 30, 1–100) |
| cursor | string | |
| fresh | boolean | (par défaut : false) |
telegram_send_messageSend a Telegram messageÉcritureReply in an existing Telegram chat (private or group). Plain text. Show the user the exact text before calling this.
| account | string | account_id of a Telegram account from inbox_list_accounts (a listed chat's account_id). Needed only when several Telegram accounts are connected. |
| chat_idobligatoire | string | |
| textobligatoire | string | (8000 caractères max.) |
telegram_start_chatStart a new Telegram chatÉcritureMessage a Telegram user you have no chat with yet, by numeric user id (a chat's person_id, or a member from telegram_list_group_members). Telegram restricts accounts that message many strangers, so only message people who expect it; at most 10 new chats a day. Show the user the exact text before calling this.
| account | string | account_id of a Telegram account from inbox_list_accounts (a listed chat's account_id). Needed only when several Telegram accounts are connected. |
| user_idobligatoire | string | Telegram user id of the recipient |
| textobligatoire | string | (8000 caractères max.) |
telegram_mark_readMark Telegram chat as readÉcritureMarks a Telegram chat read (or unread).
| account | string | account_id of a Telegram account from inbox_list_accounts (a listed chat's account_id). Needed only when several Telegram accounts are connected. |
| chat_idobligatoire | string | |
| read | boolean | (par défaut : true) |
telegram_reactReact to a Telegram messageÉcritureAdd an emoji reaction to a message (message_id from telegram_get_messages). Telegram accepts only its standard reaction emojis (👍 ❤️ 🔥 🎉 😁 👏 …); others fail.
| account | string | account_id of a Telegram account from inbox_list_accounts (a listed chat's account_id). Needed only when several Telegram accounts are connected. |
| chat_idobligatoire | string | |
| message_idobligatoire | string | |
| reactionobligatoire | string | One emoji, like 👍 (16 caractères max.) |
telegram_get_profileGet a Telegram profileLectureA Telegram user's profile: name, username, phone when Telegram shares it, bio, followers and picture. Counts as a profile view.
| account | string | account_id of a Telegram account from inbox_list_accounts (a listed chat's account_id). Needed only when several Telegram accounts are connected. |
| user_idobligatoire | string | Telegram user id (a chat's person_id or a group member's user_id) |
| fresh | boolean | (par défaut : false) |
telegram_list_group_membersList Telegram group membersLectureMembers of a Telegram group chat (chat_id from telegram_list_chats), with their user_id for telegram_get_profile. Group chats only.
| account | string | account_id of a Telegram account from inbox_list_accounts (a listed chat's account_id). Needed only when several Telegram accounts are connected. |
| chat_idobligatoire | string | |
| limit | integer | (par défaut : 50, 1–100) |
| cursor | string | next_cursor from a previous call |
instagram_list_chatsList Instagram conversationsLectureInstagram direct messages, most recent first. Use unread=true to triage. Returns chat_id values for instagram_get_messages / instagram_send_message, and person_id (the contact's Instagram user id) for 1-to-1 chats. With several Instagram accounts, lists them all merged (each item has its account_id: pass it as account to the other instagram_* tools); account narrows to one.
| account | string | Only this account (account_id from inbox_list_accounts); default: every connected Instagram account, merged |
| unread | boolean | Only conversations with unread messages |
| limit | integer | (par défaut : 20, 1–50) |
| cursor | string | next_cursor from a previous call |
| fresh | boolean | Bypass the 1h cache (costs a Instagram call) (par défaut : false) |
instagram_get_messagesRead an Instagram conversationLectureMessages in one Instagram conversation, most recent first. 'from' is 'me' (the account owner) or 'them'. message_id values work with instagram_react.
| account | string | account_id of a Instagram account from inbox_list_accounts (a listed chat's account_id). Needed only when several Instagram accounts are connected. |
| chat_idobligatoire | string | |
| limit | integer | (par défaut : 30, 1–100) |
| cursor | string | |
| fresh | boolean | (par défaut : false) |
instagram_send_messageSend an Instagram messageÉcritureReply in an existing Instagram direct conversation. Plain text. Show the user the exact text before calling this.
| account | string | account_id of a Instagram account from inbox_list_accounts (a listed chat's account_id). Needed only when several Instagram accounts are connected. |
| chat_idobligatoire | string | |
| textobligatoire | string | (8000 caractères max.) |
instagram_start_chatStart a new Instagram conversationÉcritureSend a direct message to an Instagram user you have no conversation with yet, by user id (a chat's person_id, or from instagram_get_profile). Messages to people who don't follow the account land in their message requests, and Instagram restricts accounts that message many strangers: only message people who expect it; at most 10 new conversations a day. Show the user the exact text before calling this.
| account | string | account_id of a Instagram account from inbox_list_accounts (a listed chat's account_id). Needed only when several Instagram accounts are connected. |
| user_idobligatoire | string | Instagram user id of the recipient |
| textobligatoire | string | (8000 caractères max.) |
instagram_mark_readMark Instagram conversation as readÉcritureMarks an Instagram conversation read (or unread).
| account | string | account_id of a Instagram account from inbox_list_accounts (a listed chat's account_id). Needed only when several Instagram accounts are connected. |
| chat_idobligatoire | string | |
| read | boolean | (par défaut : true) |
instagram_reactReact to a Instagram messageÉcritureAdd an emoji reaction to a message (message_id from instagram_get_messages). Instagram keeps one reaction per person: a new one replaces yours.
| account | string | account_id of a Instagram account from inbox_list_accounts (a listed chat's account_id). Needed only when several Instagram accounts are connected. |
| chat_idobligatoire | string | |
| message_idobligatoire | string | |
| reactionobligatoire | string | One emoji, like 👍 (16 caractères max.) |
instagram_get_profileGet a Instagram profileLectureA Instagram user's profile: name, username, phone when Instagram shares it, bio, followers and picture. Counts as a profile view.
| account | string | account_id of a Instagram account from inbox_list_accounts (a listed chat's account_id). Needed only when several Instagram accounts are connected. |
| user_idobligatoire | string | Instagram user id (a chat's person_id) or username |
| fresh | boolean | (par défaut : false) |
instagram_list_postsList Instagram postsLecturePosts of an Instagram user, most recent first: the account's own by default, or someone else's with user_id. Returns caption, link, date, likes and comments.
| account | string | account_id of a Instagram account from inbox_list_accounts (a listed chat's account_id). Needed only when several Instagram accounts are connected. |
| user_id | string | Instagram user id or username; default: the account's own posts |
| limit | integer | (par défaut : 10, 1–50) |
| cursor | string | next_cursor from a previous call |
instagram_create_postPublish an Instagram postÉcriturePublish a photo on the account's Instagram feed: image_url is an https link to a JPEG, PNG or WebP (at most 8 MB), text is the caption. Public and irreversible from here: confirm the image and the caption with the user first.
| account | string | account_id of a Instagram account from inbox_list_accounts (a listed chat's account_id). Needed only when several Instagram accounts are connected. |
| image_urlobligatoire | string (uri) | https link to the image |
| text | string | Caption (par défaut : "", 2200 caractères max.) |
linkedin_statusLinkedIn account status and limitsLectureCall before planning several LinkedIn actions. Says whether the account can act now (blocked_reason), how many actions are left today (profile_views → linkedin_get_profile, searches → linkedin_search_people, messages → linkedin_send_message, new_conversations → linkedin_start_chat, invitations → linkedin_send_invitation, posts → linkedin_create_post; invitations also have a weekly limit), and ready_in_seconds for each: the wait before that action can run. Reading the inbox has a high limit and is not listed. No account or a disconnected one: use linkedin_connect_account. Plan or seats: use inboxmcp_billing. For WhatsApp, Telegram and Instagram accounts, use inbox_status.
| account | string | account_id from inbox_list_accounts; default: the first LinkedIn account |
inbox_statusAccount status and limitsLectureStatus and limits of one connected account, any provider (LinkedIn, WhatsApp, Telegram, Instagram). Call before planning several actions. Says whether the account can act now (blocked_reason), how many actions are left today (messages → *_send_message, new_conversations → *_start_chat, profile_views → *_get_profile, posts → linkedin_create_post / instagram_create_post; on LinkedIn also searches and invitations), and ready_in_seconds for each. Reading has a high limit and is not listed. No account or a disconnected one: use connect_account. Plan or seats: use inboxmcp_billing.
| account | string | account_id from inbox_list_accounts. Needed only when several accounts are connected. |
connect_accountConnect an accountLectureGet a link for the user to connect a LinkedIn, WhatsApp, Telegram or Instagram account, or to reconnect one that was logged out. Before giving the link, tell the user what the result says about the free trial or price. They log in on our connect page in their browser (LinkedIn and Instagram: their login; WhatsApp and Telegram: scan a QR code). Never ask for passwords or codes in the chat. The link works for 30 minutes. Afterwards, call inbox_list_accounts to confirm.
| providerobligatoire | "linkedin" | "whatsapp" | "telegram" | "instagram" | Which network to connect |
| mode | "auto" | "new" | "reconnect" | auto: reconnect the current account if it needs it, otherwise add one if none is connected. new: add another account. reconnect: log the current account back in. (par défaut : "auto") |
| account | string | account_id from inbox_list_accounts: the one to reconnect, when several of this network are connected |
linkedin_connect_accountConnect a LinkedIn accountLectureGet a link for the user to connect a LinkedIn account, or to reconnect one LinkedIn logged out. Before giving the link, tell the user what the result says about the free trial or price. They log in to LinkedIn in their browser on our connect page (never ask for their LinkedIn password or codes in the chat). The link works for 30 minutes. Afterwards, call linkedin_status to confirm.
| mode | "auto" | "new" | "reconnect" | auto: reconnect the current account if it needs it, otherwise add one if none is connected. new: add another account. reconnect: log the current account back in. (par défaut : "auto") |
inboxmcp_billingPlan and billingLectureThe user's inbox MCP plan: free trial (3 days, starts when the first account is connected) or subscription ($10/month per connected account, any provider), with a link to our billing page to subscribe, update their card, get invoices, or cancel (payment happens on Stripe, in their browser). The link works for 30 minutes. Use it when the tools say the trial or subscription ended.
searchSearch LinkedIn peopleLectureSearch LinkedIn people by keywords. Returns ids usable with fetch.
| queryobligatoire | string |
fetchFetch a LinkedIn recordLectureFetch a full record by id from search: person:<id> or chat:<id>.
| idobligatoire | string |
Les limites suivent les recommandations d’Unipile pour chaque plateforme et évitent que vos comptes soient restreints. Elles s’appliquent par compte connecté et sont partagées entre toutes les apps et clés API qui l’utilisent. Le tableau ci-dessous concerne LinkedIn ; WhatsApp, Telegram et Instagram ont les leurs.
retry_after_seconds, jamais mis en file d’attente. Pour envoyer plusieurs messages ou invitations, utilisez linkedin_schedule_outreach.fresh: true pour forcer une lecture en direct.| Action | Par jour | Par semaine | Espacement | Outils |
|---|---|---|---|---|
| Reads (inbox, invitations, group members, posts list) | 3000 | — | 0 s | inbox_list_chats, inbox_get_messages, linkedin_list_chats, linkedin_get_messages, linkedin_list_invitations, whatsapp_list_chats, whatsapp_get_messages, whatsapp_list_group_members, telegram_list_chats, telegram_get_messages, telegram_list_group_members, instagram_list_chats, instagram_get_messages, instagram_list_posts |
| Inbox updates (mark read, reactions) | 500 | — | 1 s | inbox_mark_read, linkedin_mark_read, whatsapp_mark_read, whatsapp_react, telegram_mark_read, telegram_react, instagram_mark_read, instagram_react |
| Profile views | 80 | — | 45–75 s | linkedin_get_profile, whatsapp_get_profile, telegram_get_profile, instagram_get_profile, fetch |
| Searches (pages) | 40 | — | 45–75 s | linkedin_search_people, search |
| Messages | 75 | — | 45–75 s | inbox_send_message, linkedin_send_message, whatsapp_send_message, telegram_send_message, instagram_send_message |
| New conversations | 25 | — | 45–75 s | inbox_start_chat, linkedin_start_chat, whatsapp_start_chat, telegram_start_chat, instagram_start_chat |
| Invitations | 25 · 80 en Premium | 150 · 200 en Premium 15 avec note (comptes gratuits) | 45–75 s | linkedin_send_invitation |
| Posts | 3 | — | 45–75 s | linkedin_create_post, instagram_create_post |
Notes d’invitation : jusqu’à 300 caractères en Premium, 200 sur les comptes gratuits. Les pages de recherche renvoient jusqu’à 25 personnes.
Unipile ne publie de recommandations que pour WhatsApp (plusieurs centaines de messages par jour, espacés de 10 à 20 secondes, et très peu de nouvelles conversations sur un compte récent). Nous restons bien en dessous, et appliquons des limites tout aussi prudentes à Telegram et Instagram, qui n’en publient aucune. Les recherches et les invitations sont propres à LinkedIn.
| Par jour | Telegram | ||
|---|---|---|---|
| Reads (inbox, invitations, group members, posts list) | 3000 | 3000 | 3000 |
| Inbox updates (mark read, reactions) | 500 | 500 | 500 |
| Profile views | 50 | 50 | 50 |
| Messages | 100 | 100 | 50 |
| New conversations | 10 | 10 | 10 |
| Posts | — | — | 3 |
| Espacement | 10–20 s | 10–20 s | 10–20 s |
inboxmcp_billing. Les comptes connectés non payés sont retirés 12 heures plus tard ; vous pouvez les reconnecter à tout moment.inboxmcp_billing vous donne un lien (valable 30 minutes) vers notre page de facturation ; paiement, carte, factures et résiliation se font sur Stripe. Chaque compte n’a droit qu’à un seul essai gratuit, quelle que soit l’adresse e-mail.Elles se choisissent sur la page de consentement (OAuth) ou à la création d’une clé API. Révoquez une app à tout moment depuis Apps connectées.
| Autorisation | Permet | Outils |
|---|---|---|
Read your messages linkedin:messages | View conversations and messages in your connected accounts. | inbox_list_chats, inbox_get_messages, linkedin_list_chats, linkedin_get_messages, whatsapp_list_chats, whatsapp_get_messages, whatsapp_list_group_members, telegram_list_chats, telegram_get_messages, telegram_list_group_members, instagram_list_chats, instagram_get_messages |
View profiles linkedin:profiles | Read the profiles and posts of people on your connected accounts. | linkedin_get_profile, linkedin_list_invitations, whatsapp_get_profile, telegram_get_profile, instagram_get_profile, instagram_list_posts, fetch |
Search LinkedIn linkedin:search | Find people and explore your LinkedIn network. | linkedin_search_people, search |
Send messages & invitations linkedin:send | Send messages from your connected accounts, and LinkedIn invitations. | inbox_send_message, inbox_start_chat, inbox_mark_read, linkedin_send_message, linkedin_start_chat, linkedin_mark_read, linkedin_send_invitation, linkedin_create_post, linkedin_schedule_outreach, whatsapp_send_message, whatsapp_start_chat, whatsapp_mark_read, whatsapp_react, telegram_send_message, telegram_start_chat, telegram_mark_read, telegram_react, instagram_send_message, instagram_start_chat, instagram_mark_read, instagram_react, instagram_create_post |
Les outils ne lèvent jamais d’exception. Un appel refusé renvoie isError: true avec une phrase simple que votre assistant peut vous lire, plus un code et, quand il suffit d’attendre, retry_after_seconds.
| gap | Trop tôt après l’action précédente sur ce compte (rythme humain), ou plafond de la minute atteint. Attendez retry_after_seconds. |
| limit | Limite quotidienne ou hebdomadaire atteinte, action indisponible sur cette plateforme, ou note d’invitation trop longue. Remise à zéro à minuit UTC / le lundi. |
| cooldown | La plateforme a limité le compte ; les actions reprennent après le délai indiqué. |
| plan | Essai gratuit terminé ou abonnement inactif. inboxmcp_billing fournit un lien pour s’abonner. |
| account | Le compte doit être reconnecté. connect_account fournit un lien de reconnexion. |
| no_account | Aucun compte connecté pour l’instant. connect_account fournit un lien. |
| permission | Cette app ou clé API n’a pas le droit d’effectuer cette action. Reconnectez l’app avec l’autorisation nécessaire, ou utilisez une autre clé. |
| trial_limit · seat_limit · plan_inactive | connect_account ne peut pas ajouter de compte pour le moment (l’essai inclut un compte par app, nombre maximal de comptes atteint, ou aucune offre active). |
inboxMCP est un serveur MCP distant avec OAuth 2.1 (PKCE, jetons d’actualisation, enregistrement dynamique et documents de métadonnées d’ID client). La plupart des apps n’ont besoin que de l’URL du serveur.
| POST /mcp | MCP server (Streamable HTTP). Auth: OAuth 2.1 access token or an API key, as Authorization: Bearer … |
| GET /.well-known/oauth-protected-resource | Which authorization server protects /mcp (clients discover OAuth here). |
| GET /.well-known/oauth-authorization-server | OAuth 2.1 metadata: endpoints, scopes, PKCE. |
| GET /authorize | Sign-in and consent page: pick the account and the permissions. |
| POST /oauth/token | Token endpoint (authorization code with PKCE, refresh tokens). |
| POST /oauth/register | Dynamic client registration, for clients without a client ID metadata document. |