Skip to main content
Glama
689,116 tools. Updated 2026-10-23 09:08

"Messenger" matching MCP tools:

  • Create or update Lead Gen or Landing Page offers in Metadata platform. Returns direct URL to access the offer in the platform. OPERATION MODE: - CREATE: When 'id' field is NOT included in data - UPDATE: When 'id' field IS included in data OFFER TYPES: 1. Lead Gen - Native forms rendered inside LinkedIn, Facebook, or Instagram. User never leaves the platform. 2. Landing Page - External page hosted on the advertiser's website. Works on EVERY channel (LinkedIn, Facebook, Instagram, Google Ads, Reddit, Microsoft Ads). WARNING: LEAD GEN ON LINKEDIN / META CAN BE DONE TWO WAYS — pick the right one for the user's intent: - Native Lead Gen form (offer_type='Lead Gen', data.channel=<channel>, goal=CPL): user fills the form INSIDE LinkedIn/Meta. Lower friction, higher conversion, but leads stay in the ad platform until synced. Channel-locked — see below. - Landing Page lead capture (offer_type='Landing Page', goal=CPL, landingPageUrl + thankYouUrl + EMAIL field): user clicks through to the advertiser's own landing page and submits the form there. Choose this when the user wants branded landing pages, tracking pixels, or server-side enrichment. Channel-agnostic — one offer works on every channel. Both flows count as Lead Gen (goal=CPL). Default to native Lead Gen for LinkedIn/Meta unless the user explicitly wants their own landing page. WARNING: CHANNEL-LOCK ON NATIVE LEAD GEN OFFERS (read this BEFORE planning your offer batch) The data.channel value you set on a Lead Gen offer PERMANENTLY locks the returned offer_id to that one channel. The same offer_id CANNOT be used in another channel's slot inside create_campaign / add_and_edit_campaign_elements — those tools accept the mismatch SILENTLY and produce a broken campaign that returns a successful response but cannot serve. Landing Page offers are NOT channel-locked and can be safely reused across channels. What this means for planning: - Want a native Lead Gen "Demo" concept on BOTH LinkedIn AND Facebook? You MUST call create_update_offer TWICE for that one concept — once with data.channel='LINKEDIN', once with data.channel='FACEBOOK'. Track both offer_ids and assign each to the matching channel slot. - Three concepts × two native Lead Gen channels = SIX create_update_offer calls. That is correct, not over-creation. The "2-3 offers" guidance refers to distinct CONCEPTS, not call count. - Want a single offer that works on every channel including Google? Use offer_type='Landing Page' (omit data.channel — Landing Pages have no channel field and are channel-agnostic). Google Ads ONLY accepts Landing Page offers. - Want Lead Gen on LinkedIn using the advertiser's OWN landing page instead of LinkedIn's native form? Use offer_type='Landing Page' with goal='CPL' — then assign the returned offer_id to linkedin.offers[]. This is fully supported and a single LP offer_id can serve LinkedIn, Meta, Google simultaneously. Right after each successful create_update_offer call, write down (offer_id, channel, concept) so you can correctly map them in the create_campaign call later. If you lose track, call get_offer(name=<offer_name>) to look up the offer and read back the channel field before submitting a campaign. REQUIRED PARAMETERS: - offer_type: "Lead Gen" or "Landing Page" - data: Offer configuration object - id: (optional) Include only when updating an existing offer IMPORTANT LIMITS: - offerName: MUST be unique AND under 50 characters. If name + timestamp exceeds 49 chars, shorten the base name. WARNING: ALLOWED CHARACTERS: letters (a-z, A-Z), numbers (0-9), spaces, and these punctuation marks ONLY: _ . ? , : ' / + - = & ; % $ # [ ] | ( ) Any other character (em-dashes, smart quotes, emoji, non-ASCII letters, ©, ™, !, @, *, {, }, <, >, ", \, ^, ~, `) will be REJECTED by the platform on Landing Page offers and stripped by this tool before the request is sent. Stick to ASCII letters/digits/space and the punctuation set above. - offerHeader: max 60 chars - offerDetails: max 160 chars - thankYouMessage: max 60 chars (LinkedIn) - privacyText: max 70 chars (Facebook/Instagram) - Fields should always be included CHANNEL-SPECIFIC REQUIREMENTS: LinkedIn Lead Gen (offer_type="Lead Gen", channel="LINKEDIN"): - REQUIRED: channel, offerName, offerHeader, thankYouMessage, thankYouUrl, privacyUrl, privacyText, fields - CTA (linkedinCTA): REQUIRED by the backend. Defaults to DOWNLOAD_NOW when omitted. Must be one of LEARN_MORE | VIEW_NOW | DOWNLOAD_NOW | TRY_NOW | VISIT_COMPANY_WEBSITE. Any other value silently falls back to VISIT_COMPANY_WEBSITE on LinkedIn's side — always set linkedinCTA explicitly for predictable behavior. - offerDetails: OPTIONAL but STRONGLY RECOMMENDED. Populates the description shown above the form on LinkedIn and improves conversion. Not mandatory on LinkedIn (unlike FB/IG) but there's no reason to skip it. Facebook/Instagram Lead Gen (offer_type="Lead Gen", channel="FACEBOOK" or "INSTAGRAM"): - REQUIRED: channel, offerName, offerHeader, offerDetails, thankYouHeadline, thankYouMessage, thankYouDescription, thankYouPageButtonText, websiteUrl, privacyUrl - Meta's thank-you screen has THREE distinct text blocks — populate all three for a complete UX: • thankYouHeadline → title • thankYouMessage → short_message (small text under the headline) • thankYouDescription → body (longer copy). Falls back to thankYouMessage if omitted, but supplying both is strongly preferred. - thankYouPageButtonType (enum, default VIEW_WEBSITE). Cross-field rules: • VIEW_WEBSITE → websiteUrl (or thankYouUrl fallback) is required • VIEW_ON_FACEBOOK → thankYouAssetId (library creative ID) is required; without it the backend validation will reject the offer. - CRITICAL: offerDetails is MANDATORY when offerHeader is provided. If the user doesn't specify offer details, generate a brief description based on the offer context. Omitting offerDetails when offerHeader is set will cause an API validation error. - The backend HTTP-probes followUpActionUrl (derived from websiteUrl / thankYouUrl) during validation, so the URL MUST resolve to a live page — not a placeholder. - linkedinCTA is ignored on FB/IG. Landing Page (offer_type="Landing Page"): - REQUIRED: offerName, landingPageUrl, thankYouUrl, fields - CRITICAL: fields MUST include an EMAIL entry SPECIFICALLY. The platform's `INVALID_LANDINGPAGE_FORM: Email mapping is required` check is satisfied ONLY by EMAIL — BUSINESS_EMAIL alone does NOT satisfy it and the offer is rejected. Without an email capture, the form cannot deliver a lead. If the user does not mention form fields at all, default to: fields: [{"name": "email", "field": "EMAIL"}, {"name": "firstName", "field": "FIRST_NAME"}, {"name": "lastName", "field": "LAST_NAME"}, {"name": "company", "field": "COMPANY"}] BUSINESS_EMAIL may be added as an EXTRA field when the user explicitly wants to filter out personal email domains, but it can NEVER replace EMAIL — keep EMAIL in the form. (The server auto-corrects a lone BUSINESS_EMAIL to EMAIL.) AVAILABLE FIELD TYPES BY OFFER TYPE: For Lead Gen offers, the supported field types DIFFER BY CHANNEL — and the enum SPELLINGS differ too (LinkedIn PHONE_NUMBER/ZIP_CODE vs Meta PHONE/ZIP). Mixing them up is what causes the "Cannot deserialize Convo LeadForm JSON" attach failure. PREFER the channel's DEFAULT-VISIBLE fields (marked [default] below) — they cover the standard B2B form; only reach for the rest when the brief specifically needs them. LinkedIn Lead Gen (channel="LINKEDIN") — these 22 types ONLY (source of truth: the platform's LinkedIn Lead Gen Form dialog): [default] "EMAIL", "WORK_EMAIL", "FIRST_NAME", "LAST_NAME", "COMPANY_NAME", "LINKEDIN_PROFILE_LINK" [more] "PHONE_NUMBER", "WORK_PHONE_NUMBER", "COUNTRY", "CITY", "STATE", "ZIP_CODE", "JOB_TITLE", "JOB_FUNCTION", "SENIORITY", "INDUSTRY", "COMPANY_SIZE", "DEGREE", "SCHOOL", "FIELD_OF_STUDY", "GRADUATION_DATE", "START_DATE" LinkedIn has NO field for REVENUE, EMPLOYEES (use COMPANY_SIZE), GENDER, DOB, MESSENGER, STREET_ADDRESS, etc. Facebook/Instagram Lead Gen (channel="FACEBOOK"/"INSTAGRAM") — these 19 types ONLY (source of truth: the platform's FB/IG Lead Gen Form dialog): [default] "EMAIL", "WORK_EMAIL", "FIRST_NAME", "LAST_NAME", "COMPANY_NAME", "COUNTRY" [more] "PHONE", "WORK_PHONE_NUMBER", "STREET_ADDRESS", "CITY", "STATE", "PROVINCE", "POST_CODE", "ZIP", "GENDER", "MARITIAL_STATUS", "RELATIONSHIP_STATUS", "MILITARY_STATUS", "JOB_TITLE" Meta has NO field for REVENUE, EMPLOYEES, COMPANY_SIZE, SENIORITY, INDUSTRY, JOB_FUNCTION, or the education fields (those are LinkedIn-only). "MARITIAL_STATUS" is the literal enum (the typo is load-bearing — do not "fix" it). IMPORTANT: Do NOT use "BUSINESS_EMAIL" for Lead Gen - use "WORK_EMAIL" instead. IMPORTANT: Do NOT use "COMPANY" for Lead Gen - use "COMPANY_NAME" instead. IMPORTANT: Do NOT use "PHONE" for LinkedIn Lead Gen - use "PHONE_NUMBER" instead (auto-corrected if provided). IMPORTANT: Do NOT use "PHONE_NUMBER" or "ZIP_CODE" for Facebook/Instagram - use "PHONE" / "ZIP" instead (auto-corrected if provided). IMPORTANT: fields[] takes ONLY the predefined types for the offer's channel; custom questions go in customFieldSelections (see CUSTOM QUESTIONS below). Do NOT pass "CUSTOM", and do NOT invent a field for a concept the brief names but that has no predefined type (e.g. "monthly transaction volume", "budget", "ad spend", "use case", "team size"). Neither channel has a revenue/spend/budget field type, so DROP such a field from fields[] (an existing custom question may still carry it, see CUSTOM QUESTIONS). For headcount: LinkedIn uses COMPANY_SIZE; Meta has no equivalent (drop). This server auto-normalizes near-miss spellings (LinkedIn: EMPLOYEES->COMPANY_SIZE, ZIP->ZIP_CODE, POST_CODE->ZIP_CODE, PROVINCE->STATE; Meta: PHONE_NUMBER->PHONE, ZIP_CODE->ZIP) and then DROPS any field the offer's channel still can't render (logged), so the offer ships with its valid fields instead of failing at campaign-attach — but pass channel-correct fields up front so nothing the user asked for is silently dropped. CUSTOM QUESTIONS (every Lead Gen channel): A Lead Gen form can also carry the account's own custom questions (a gift card terms line, "Company Website", a monthly ad spend question). They are the account's custom fields, so they go in data.customFieldSelections, never in fields[], each entry as get_offer returns it in content.customFieldSelections: {"id": <custom field id>, "text": "<question as the form shows it>", "language": "EN_US"}. - Duplicating or reworking an offer: read it with get_offer(offer_id=<id>) and copy content.customFieldSelections into data.customFieldSelections, so the copy keeps every custom question, terms included. Never tell the user they must add them back by hand. - Keep each entry's id and language. Change its text only when the user asks to reword that question. A disclaimer's body and a multiple choice question's options come from the custom field itself, not from text: if one contradicts the new messaging (an old amount, say), tell the user it is edited in the platform. - The list replaces the form's whole set. Updating (data.id set): omit customFieldSelections to keep the offer's current custom questions; pass [] only when the user asks to remove them all. - This tool cannot create a custom field: reuse ids this account's offers already carry, and a new custom question has to be created in the platform first. Ids from another account are refused. - If the original form has no EMAIL or WORK_EMAIL field, do not add one: its email may come from a custom question, and the platform refuses both together. - Every Lead Gen form takes at most 12 questions, fields and custom questions together. For Landing Page offers (LandingPageFieldType): "EMAIL", "BUSINESS_EMAIL", "FIRST_NAME", "LAST_NAME", "COUNTRY", "PHONE", "CITY", "STATE", "ZIP", "JOB_TITLE", "SENIORITY", "COMPANY", "COMPANY_DOMAIN", "COMPANY_PHONE", "EMPLOYEES", "INDUSTRY", "REVENUE", "LINKEDIN_URL", "UTM_SOURCE", "UTM_MEDIUM", "UTM_TERM", "UTM_CONTENT" IMPORTANT: Do NOT use "COMPANY_NAME" for Landing Pages - use "COMPANY" instead. IMPORTANT: Do NOT use "WORK_PHONE_NUMBER" for Landing Pages - use "PHONE" instead. EXAMPLES: CREATE LinkedIn Offer: create_or_update_offer("Lead Gen", { "channel": "LINKEDIN", "status": "COMPLETED", "offerName": "Free AI Marketing Audit", "offerHeader": "Unlock Growth with AI", "offerDetails": "A 30-minute audit of your current AI stack with tailored recommendations.", "linkedinCTA": "DOWNLOAD_NOW", "thankYouMessage": "We'll contact you soon!", "thankYouUrl": "https://example.com/thanks", "privacyUrl": "https://example.com/privacy", "privacyText": "We respect your privacy", "fields": [ {"name": "email", "field": "EMAIL"}, {"name": "firstName", "field": "FIRST_NAME"}, ] }) UPDATE LinkedIn Offer: create_or_update_offer("Lead Gen", { "id": 62148, "channel": "LINKEDIN", "status": "COMPLETED", "offerName": "Free AI Marketing Audit 2025", "offerHeader": "Unlock Growth with AI", "offerDetails": "A 30-minute audit of your current AI stack with tailored recommendations.", "linkedinCTA": "LEARN_MORE", "thankYouMessage": "We'll contact you soon!", "thankYouUrl": "https://example.com/thanks", "privacyUrl": "https://example.com/privacy", "privacyText": "We respect your privacy", "fields": [ {"name": "email", "field": "EMAIL"}, {"name": "firstName", "field": "FIRST_NAME"}, ] }) CREATE Facebook/Instagram Offer: create_or_update_offer("Lead Gen", { "channel": "FACEBOOK", "status": "COMPLETED", "offerName": "Free Consultation", "offerHeader": "Get Expert Advice", "offerDetails": "Book a 30-minute consultation with our senior strategists.", "thankYouHeadline": "Thank You!", "thankYouMessage": "We'll be in touch soon", "thankYouDescription": "A member of our team will email you within one business day to schedule your session.", "thankYouPageButtonText": "Visit Website", "thankYouPageButtonType": "VIEW_WEBSITE", "websiteUrl": "https://example.com", "privacyUrl": "https://example.com/privacy", "privacyText": "Privacy Policy", "fields": [ {"name": "email", "field": "EMAIL"}, {"name": "firstName", "field": "FIRST_NAME"}, ] }) CREATE Landing Page Offer: create_or_update_offer("Landing Page", { "offerName": "Free Demo", "landingPageUrl": "https://example.com/landing", "thankYouUrl": "https://example.com/thanks", "fields": [ {"name": "email", "field": "EMAIL"}, {"name": "firstName", "field": "FIRST_NAME"}, ] }) RESPONSE: Success returns offer_id, offer_url, and configuration details. VALIDATION: Checks URLs start with https://, character limits, required fields per channel.
    Connector
    Destructive
    API key
  • Create one or more Meta ad sets under an existing campaign. Supports batch creation (max 20). Ad sets are created PAUSED by default. Detailed targeting: use targeting.flexible_spec groups (OR inside a group, AND between groups, like Ads Manager's Narrow audience) with ids and types from adsap_search_detailed_targeting. Leads campaigns take three destinations: ON_AD (Instant Forms), WEBSITE, and WEBSITE_AND_LEAD_FORM (Website and Instant Forms: OFFSITE_CONVERSIONS + pixel, ads then carry a link and a lead form). Not supported yet (say so and point the user to Meta Ads Manager, never substitute another destination): messaging ad sets (Messenger, WhatsApp, Instagram Direct), calls, event responses, reminders, shop destinations. ALWAYS call with dry_run: true first: it validates and renders a launch review card where the user confirms, creates (paused) and activates in-card — after it renders, reply with ONE short sentence and stop; do not call the real create from chat unless the user explicitly asks in a new message and the card's activity log shows nothing was created there. Prerequisites: call list_meta_assets for pages/pixels/Instagram accounts, list_pixel_events for conversion events. For App promotion (OUTCOME_APP_PROMOTION) campaigns: each ad set requires promoted_object.application_id + object_store_url, optimization_goal APP_INSTALLS (or OFFSITE_CONVERSIONS with custom_event_type for app-event optimization), and the promoted app must be in Live mode and advertisable by the ad account; OS targeting (user_os) is derived automatically from the store URL.
    ConnectorAPI key
  • Remove a phone number from the account. Always requires one code: start_2fa_for_action with action_type phone_remove and targets [this phone id]. Revokes every proof of the number and your own consents naming it, declines pending confirmations waiting on it, flags approval setups left with no approver, deletes the record and its messenger links, signs out your other devices, and names the new primary phone — your Proof of Me circles then reach you there. Refused for the number you signed in with, for your only way to sign in, and for your last phone while circles are active (circles_need_phone: add another phone first, or archive the circles). Cannot be undone. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), or sign in with start_login — a session opens this tool — then call this tool again.
    Connector
    Destructive
    No auth
  • Orbit Toolbox. ALL of your integrations live behind this single tool. Orbit's full capability set (44): image_generate, video_generate, speech_to_text, text_to_speech, calendar, apollo, up2data, apify, orbit_scrape, jev, ocean, email_verify, instantly, perplexity, notion, airtable, linear, github, hubspot, resend, twilio, slack, stripe, semrush, google_search_console, twitter, telegram_bot, posteahora, custom_api, remote_mcp, linkedin, whatsapp, instagram, messenger, telegram, x_dms, gmail_mailbox, outlook_mailbox, imap_mailbox, twitter_data, x_article, x_session, reddit_data, predictleads. • image_generate: Orbit-provisioned image generation. Text → PNG, returns a signed HTTPS URL ready to attach to social posts (PosteAhora mediaUrls) or file artifacts. No key required. • video_generate: Make a short video with sound from a description, or bring a picture to life. Orbit-provisioned, no key required. 5 to 15 seconds, vertical, wide or square, saved to Files with a … • speech_to_text: Turn a recording into text: meetings, calls, voice notes, podcasts and the sound of a video. Orbit-provisioned, no key required. Plain text, timed segments with speakers, or SRT a… • text_to_speech: Turn text into natural speech: voiceovers, narrated posts, spoken summaries and voice messages. Orbit-provisioned, no key required. Over 300 voices in 24 languages, saved to Files… • calendar: Read, create and cancel events on the operator's real calendar. Free with a connected Gmail or Outlook mailbox. Use it for meeting prep, scheduling and conflict checks. [requires Google Calendar connected (or an Outlook mailbox). No extra charge] • apollo: Unified Apollo tool (Orbit-provisioned). Sub-actions: test, people_search (discovery only, no emails), org_search, people_enrich, people_enrich_bulk (up to 10 people per call), or… • up2data: Orbit's MAIN tool for LinkedIn data, Orbit-provisioned, no key required. Live LinkedIn profiles (positions, education, skills, photo, current company), companies, posts, comments … • apify: Run any of 4,000+ Apify actors (scraping, SERPs, socials, marketplaces) with zero setup. Provisioned by Orbit. Only pay-per-result actors are listed. Never use a subscription/rent… • orbit_scrape: Read any public web page as clean markdown, or search the web, in one call. Orbit-provisioned, free, no key required. The default for company websites, articles, docs, competitor … • jev: Fast, cheap, calibrated decisions on up to 500 items per call. Orbit-provisioned, no key required. Not a writer: it answers one typed question per item (classify into labels you d… • ocean: ONLY for lookalike campaigns or finding new leads modelled on the operator's existing customers. Never for general lead search, LinkedIn work, enrichment or research (use up2data … • email_verify: Check that email addresses are real and safe to send to before a campaign goes out, so it does not bounce. Orbit-provisioned, no key required. Verify up to 10 addresses in one cal… • instantly: Author Instantly cold-email campaigns end to end: write the sequence copy with {{variables}}, attach sending mailboxes, add leads with per-lead variables, activate or pause. Also … [requires operator API key] • perplexity: Ask Perplexity Sonar and get a cited answer. [requires operator API key] • notion: Search Notion pages/databases and create pages. [requires operator API key] • airtable: List and create records in an Airtable base. [requires operator API key] • linear: Linear tracker: read teams, projects, issues and comments; create, update, assign, comment on and close issues. [requires operator API key] • github: List and create GitHub issues in a repo. [requires operator API key] • hubspot: Search HubSpot contacts and create new ones. [requires operator API key] • resend: Send transactional email via Resend from the operator's account. [requires operator API key] • twilio: Text people from the operator's own Twilio number: send_sms and list_messages. Replies land in the People inbox and wake the agent set to answer texts. [requires operator API key] • slack: Post a message into a Slack channel using the operator's bot token. [requires operator API key] • stripe: Read-only Stripe: recent charges, customers, subscriptions. [requires operator API key] • semrush: Semrush domain overview. Traffic, keywords, ads. [requires operator API key] • google_search_console: The operator's own Search Console: queries and pages with clicks, impressions, CTR and position; index status of a URL; sitemaps. Can also submit sitemaps and ask Google to crawl … [requires operator API key] • twitter: Post, delete, read and search on X using the operator's own X developer app credentials (OAuth 1.0a or bearer token). Non-provisioned alternative to a connected X account. [requires operator API key] • telegram_bot: Send and read messages with the operator's own Telegram bot (BotFather token): send_message, send_photo, send_document, get_updates, across chats, groups and channels. Several bot… [requires operator API key] • posteahora: Publish, schedule and read analytics on Instagram, TikTok, X, LinkedIn, Threads, Facebook, Bluesky and more via the operator's PosteAhora key. [requires operator API key] • custom_api: Call any HTTP API the operator registered themselves (label + https base URL + optional key). Actions: list, request. The key is stored encrypted and injected server-side. It is n… [requires operator API key] • remote_mcp: Use the tools of any MCP server the operator added themselves (name + https address + optional token). Actions: list_servers, list_tools, call. The token is stored encrypted and o… [requires operator API key] • linkedin: Act on the operator's own LinkedIn: read and reply to DMs, open new conversations, send personalised connection requests, publish posts, comment and like. Caps: 50 messages, 20 in… [requires linked account] • whatsapp: Read and reply to WhatsApp chats from the operator's own number. Warm conversations and follow-ups only. 100 messages a day. [requires linked account] • instagram: Read and answer Instagram DMs as the operator. 40 messages a day. [requires linked account] • messenger: Read and answer Facebook Messenger conversations as the operator. 40 messages a day. [requires linked account] • telegram: Read and reply to Telegram chats as the operator. 120 messages a day. [requires linked account] • x_dms: Read and reply to X direct messages as the operator. 40 messages a day. [requires linked account] • gmail_mailbox: Triage, read and send email from the operator's own Gmail address. Replies and follow-ups, never cold sequences. 120 sends a day. [requires linked account] • outlook_mailbox: Triage, read and send email from the operator's Microsoft mailbox. Replies and follow-ups, never cold sequences. 120 sends a day. [requires linked account] • imap_mailbox: Triage, read and send email from any other mailbox the operator connected over IMAP/SMTP. 100 sends a day. [requires linked account] • twitter_data: PRIMARY Twitter/X public-data source. Search, profiles, timelines, threads, replies, quotes, followers, lists, communities, trends and spaces over a direct REST API. Orbit-provisi… ⚠ Public-data reads only. Private data and account actions require the workspace's own connected X account. • x_article: Write and publish long-form Articles on X as this workspace's own account. Create a draft, set the title and body (markdown), publish or unpublish, list and delete. Requires the w… [requires operator API key] ⚠ Needs the workspace's own X session cookies (auth_token + ct0) and an X Premium account. • x_session: Reply to tweets, post, delete and read/send DMs on X as this workspace's own account, through its saved X session cookies. No developer app needed. Orbit's shared account is never… [requires operator API key] ⚠ Needs the workspace's own X session cookies (auth_token + ct0); they expire after weeks of inactivity. • reddit_data: PRIMARY Reddit source. Post and comment search, subreddit listings and rules, full comment trees, community discovery, user profiles and comment history over a direct REST API. Or… ⚠ Public reads only. No posting, commenting, voting or DMs. ⚠ Reddit caps any single listing at ~1000 items; when `after` is null check `listing_status` before assuming the data ended. • predictleads: Pull GTM buying signals from PredictLeads. Funding rounds, job openings, technology installs, product launches, website changes, exec moves and company connections. Orbit-provisio… ⚠ action 'discover_by_technology' is gated by PredictLeads' discovery add-on and is currently UNAVAILABLE on Orbit's plan. It returns an authorization error even for the documented example. Do not spend calls on it; use 'technologies' per-domain instead. ⚠ Responses are large. Always pass `fields` (e.g. ['data.attributes.domain']) or `mode:'summary'` on discovery actions. Usage: { action: 'list' } → what is LIVE for this workspace right now (full descriptions + JSON Schemas) plus what is not connected yet and how the operator connects it. { action: 'describe', tool: '<name>' } → one tool's schema, full docs, and any known broken/plan-gated actions. { action: 'call', tool: '<name>', arguments: { ... }, agent_id: '<your agent.id>' } → run it. Always include agent_id so spend is attributed to you. { action: 'fetch_payload', payload_id: '<id>', path?, offset?, limit?, fields? } → page a stored oversized response (free, no re-billing). PAYLOAD CONTROLS (use them. Some APIs return 100KB+ of single-line JSON): fields: ['data.attributes.domain', 'data.attributes.company_name'] → project only the columns you need. Cheapest option, always prefer it. mode: 'summary' → structure digest + record count + 2 sample rows, so you can pick `fields` before pulling the full set. max_chars: <n> → clamp the response (default 12000). Anything over the limit is NOT dropped: it is stored and returned as a digest + payload_id you can page with fetch_payload. Never route overflow through files. Every response carries `related_tools`. The tools that feed into or follow from the one you just used. Read it before deciding your next step. Tools marked [requires ...] only work once the operator has connected them. Always `list` once per session to see live status, and `describe` a tool before your first `call`. Never tell the operator a capability is missing without checking `list` first. And never promise an action on a tool that `list` reports as not connected; tell the operator what to connect instead.
    ConnectorNo auth

Matching MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables an MCP client assistant to send WhatsApp messages from your own number and Discord direct messages from your own bot, showing the recipient and exact text for confirmation first by default. Also provides contact search, recent chat listing, and status checks, and is send-only, never reading message text.
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    An MCP server for MAX Messenger (Russia's national messenger by VK) that enables AI clients to send and read messages, manage chats and members, send media, and more through 21 tools.
    21
    39 npm
    11
    -

Matching MCP Connectors

  • Chicago same-day courier: live delivery quotes; account holders book and track runs.

  • Instagram, WhatsApp and Messenger DMs through official Meta Business APIs.

  • List LinkedIn messenger conversations (Voyager Messaging GraphQL), with optional archived, unread, starred filters and next_cursor paging — same as GET /api/linkedin/{account_id}/conversations. Each item returns conversation_id (the thread id — use this as conversation_linkedin_id when fetching messages or replying) and recipient_linkedin_id (the peer's fsd_profile id — use this as recipient_linkedin_id when sending a new message). Do not call this in a loop to wait for replies: the same read is refused if repeated within 60s, inbox reads are capped at 300 per account per day, and polling gets LinkedIn accounts restricted. Subscribe a webhook to message.received instead. Use for the classic LinkedIn inbox (this is the one that matters in 95% of cases); Sales Navigator threads are separate, see salesnav_list_messaging_threads.
    ConnectorAPI key
  • Inventory of the user's connected accounts and workspaces: Google (Gmail) accounts, Slack workspaces, and Facebook Messenger. Call this to find out WHICH accounts/workspaces are connected and WHAT each one can do — read/search (`readable`), send (`sendable`), and for Google accounts also Calendar (`calendar`), Drive metadata search (`drive`), Drive CONTENT reads (`drive_content` — read_file_content/download_file_content), Gmail label management (`mail_labels`), Gmail drafts (`mail_drafts`), and Contacts (`contacts` — search_contacts, list_contacts, list_other_contacts, list_contact_groups, get_contact_groups). Questions like "which Gmail/Google accounts are connected?" or "which Slack workspaces can I search or send from?" are answered by this tool — don't guess from search results. It is also the source of the labels accepted by the `accounts`/`account` parameters of search_messages / search_messages_raw / send_message and the calendar/drive/gmail/slack/contacts tools, so call it FIRST to learn valid labels and how many Gmail accounts exist before sending. A false capability means the connection predates that scope — 設定 → サービス連携 で再接続 grants it. Returns, per account: account (label), connector, connector_label, `belongs_to` (the classification label this account's work is filed under — derived automatically when the account is connected: the user's existing label for that company if there is one, otherwise a new label named after the Slack workspace or the mail domain — so a company's Slack and mail share one label; 'プライベート' for personal mail; null = unfiled), readable, sendable, and for Google accounts the capability booleans above; plus `belongs_to_options`: every label the user has, each with its accounts (a label may have none) — these names are the only values add_memory `belongs_to` accepts.
    ConnectorOAuth
  • List LinkedIn messenger conversations (Voyager Messaging GraphQL), with optional archived, unread, starred filters and next_cursor paging — same as GET /api/linkedin/{account_id}/conversations. Each item returns conversation_id (the thread id — use this as conversation_linkedin_id when fetching messages or replying) and recipient_linkedin_id (the peer's fsd_profile id — use this as recipient_linkedin_id when sending a new message). Do not call this in a loop to wait for replies: the same read is refused if repeated within 60s, inbox reads are capped at 300 per account per day, and polling gets LinkedIn accounts restricted. Subscribe a webhook to message.received instead. Use for the classic LinkedIn inbox (this is the one that matters in 95% of cases); Sales Navigator threads are separate, see salesnav_list_messaging_threads.
    ConnectorOAuth
  • Book a same-day courier delivery on a Comet account. Call first without confirm to get a preview (price, vehicle, pickup time); show it to your user; then call again with the same details and confirm=true to place the order. Returns the Comet order number. Needs the client's Comet account key (Authorization: Bearer cmt_...). Account holders get one from Comet at (312) 786-2288.
    ConnectorNo auth
  • Read the Great Firewall's current state at both layers in one call: live network blocking measured inside China via OONI (website, messenger and circumvention-tool reachability) joined with model-layer censorship from the Generative Firewall Index over Chinese LLMs. Takes no arguments. A combined convenience view — for one layer's full raw payload use get_signal with 'ooni-gfw' or 'generative-firewall-index'.
    ConnectorNo auth
  • Bring back what the user said to a question you raised with request_input, and pick the work up again. Call it the moment they answer, with their words — not your summary of them, and never a guess: you are the messenger here, and an answer you invented is worse than no answer at all, because it looks exactly like theirs. If they declined to answer, or nobody was there, do not call this: leave the question in their queue. Returns your runId and leaseToken so you carry on with the same attempt you paused, in the same context. If they answered somewhere else first — in the Weft app, on their phone — you get THAT answer back rather than an error, because what matters is that you continue with the right one.
    ConnectorOAuth
  • Create a Circle — a named group of trusted contacts (the people-primitive powering Proof-Me and Approvals-on-Circle). Optionally seed initial members; each member's declared channels are stored so they can be invited to enroll. Agent usage: after creating a Circle, add members with add_circle_member (or seed them here), then invite_circle_member to mint the enrollment deep link each contact taps to bind their messenger identity. ACCESS: needs a Proof account. Authenticate this client (Claude Code: /mcp → Authenticate), then call this tool again. start_login does NOT open this tool.
    ConnectorNo auth
  • Render an authorization or verification URL as a clickable link followed by a scannable QR code inside a fenced code block. This is a local computation tool — no HTTP request is made. Its output comes back to you, not to the user: copy the link, and the QR block inside its fence, into your reply. Agent usage: pass a LINK field from an earlier response — `deep_link` (create_session, create_chat_id_discovery always; start_login, create_account, start_2fa, start_2fa_for_action, start_add_phone on telegram/whatsapp ONLY, where on sms and email that field is empty or absent altogether and this tool rejects it either way), `challenge.deep_link` (create_verification, messenger channels only), or `telegram_deep_link` / `whatsapp_deep_link`. Do NOT pass `qr_text` to this tool: that field is a QR code already rendered as text, and this tool takes a link. When a response gives you `qr_text` and no link, print it verbatim inside a fenced code block instead — its rows only scan while they stay adjacent, so a blank line or wrapped row destroys the code. The user does not see tool results — most clients fold them away, render_auth_link's output included. Before you wait or poll, put what the user must act on into your own reply text: the link itself (not a sentence announcing it), the SMS text and number, or a note to check their inbox.
    ConnectorNo auth
  • Run an exact Gmail, Slack or Messenger query, in that connector's own syntax, across ALL of the user's accounts for that connector (or a subset via `accounts`) and return normalized messages (no query rewriting, no relevance filtering). Gmail supports the full operator set: from: to: cc: subject: has:attachment filename: is:unread/read/starred/important label:<name> after:/before:/newer_than:/older_than: larger:/smaller: — and in:anywhere to include spam & trash (excluded by default). messenger = space-separated keywords, AND semantics over recent messages. slack = Slack search syntax: plain keywords + from:@name in:#channel after:/before:/during:YYYY-MM-DD has:link (no relative window like newer_than — use after: with a date). One hit per MESSAGE; external_id is 'channel_id:ts' (pass it to send_message's reply_to_external_id to reply in-thread). Requires a workspace connected with search:read — workspaces without it are reported in `errors` with a reconnect hint. Each Gmail hit is ONE THREAD, represented by its newest matching message (not the thread's oldest message), capped at `limit` per account (default 30 — raise it for exhaustive lists). Call list_accounts first to learn valid account labels. Every returned message includes: account, subject, sender, recipient, cc, snippet, body, labels, has_attachments, is_unread, url and message_at (ISO). The response also carries per-account `errors`. Use this when you want to drive the query and judge results yourself; use `search_messages` to have us build and curate.
    ConnectorOAuth
  • Send a reply in an Inbox conversation. The message goes to the person on the platform right away, from the channel the conversation belongs to, and it cannot be unsent. Send text (up to 4,000 characters), up to 4 media library files, or both; reviews and comment threads take text only. Facebook Messenger and Instagram accept a reply only within 24 hours of the person's last message; after that the call is refused. If the channel's connection has stopped working, the call is refused and the channel needs reconnecting from the Channels page. The Inbox is part of the Pro and Business plans; on other plans, or before it is available to the account, the call is refused with a message saying so. Use this when the user wants to answer a direct message, review or comment thread in their Inbox.
    Connector
    Destructive
    OAuth
  • List customer conversations across every connected channel (Instagram, Messenger, WhatsApp and comments, Telegram, OLX, Prom, eBay, Threads replies, the B2B portal, buyer order pages …). One row per lead and channel, newest first: { leadId, leadName, channel, lastMessageAt, lastMessageText (first 300 characters), lastDirection (inbound = from the customer), awaitingReply (the customer wrote last) } plus pagination { page, perPage, total }. Open conversations only — converted or disqualified leads and closed threads are left out. Filter by channel, by awaitingReply, or by a text match on the customer's name or last message. Read-only: replies are written by a person in the CRM Inbox, this server cannot send messages. Use get_lead_conversation to read one thread's messages and get_lead for the lead card.
    ConnectorNo auth
  • Set up a Comment to DM automation on an Instagram account or a Facebook Page: when someone comments one of the keywords on the post (or on any post of the account), Breakreach sends them the DM through a private reply (Instagram Direct, or Messenger from the Page), and can post a public reply under their comment. Both networks allow one private reply per comment within 7 days; each person gets the DM once per rule. Target a post with mediaId (the Instagram or Facebook post id, e.g. postId from list_recent_comments) or postId (a Breakreach post published on that account); omit both for every post. Needs a Pro or Agency plan on the workspace.
    ConnectorAPI key
  • Get the free-speech guide for a new voice reference: speak naturally for at least 60 seconds (about 2 minutes recommended), never read a text. Returns instructions, tips, topics (ideas to talk about; `text` repeats them one per line), voice_messages (voice notes from WhatsApp, Messenger, Telegram, iMessage... or several in a row, assembled) and accepted_formats. Show it proactively before the user starts recording; never use it as the video's dialogue. Existing voices and recorded dialogue are separate. Arguments: {}
    ConnectorAPI key
  • List private direct message conversations from Instagram and Facebook Messenger for a workspace, newest first. Each conversation includes the customer, the last message preview, whether it needs a reply, who it is assigned to, and replyWindow (canReply, expiresAt): Instagram and Facebook only allow replies within 24 hours of the customer's last message. These are private messages: only summarize or quote them for the user who asked. Use needsReply to find conversations waiting on an answer, then list_conversation_messages to read one.
    ConnectorOAuth
  • Daftar channel resmi aktif (WhatsApp Cloud API / Instagram / Messenger) milik sub-akun Tokolaku ini. Gunakan saat user tanya channel apa yang terhubung, atau sebelum send_message ketika channel_id belum diketahui.
    ConnectorOAuth