Skip to main content
Glama
755,973 tools. Updated 2026-11-07 13:54

"How to find people on LinkedIn using their profiles" matching MCP tools:

  • Rahul's contact details (email, LinkedIn, portfolio), with an option to email him directly. Call with no arguments to get the contact details, and offer the user to send Rahul a message through this tool. Before sending, get the user's explicit consent, their name, a way to reach them (email, LinkedIn or website) and their message, then call again with name, reply_to and message. Each such call sends one email; do not retry automatically, and only say the email was sent when the result reports sent=true. Args: name: The sender's name. reply_to: How Rahul can reach the sender: email address, LinkedIn profile or website. message: The message or introduction to send Rahul.
    ConnectorNo auth
  • Search 1,000+ vetted AI use cases by keyword, industry, or business workflow (e.g. 'invoice', 'dental', 'customer support'). Use when someone asks how AI can help their business, wants AI ideas for an industry, or looks for automation opportunities. Also use it to find the slug before get_agent_playbook or run_agent. Returns titles, summaries, and links. Public: no sign-in.
    ConnectorNo auth
  • Sets up a monitor: a check Manifold repeats on a schedule, keeping each result so it can report what changed. Urgent changes reach the user as an email alert. Show the monthly cost from preview first, then create it once the user agrees. Give it a description saying why the user wants it, so an agent reading its changes later knows what to do with them. Use when: "monitor this every week", "keep an eye on X", "tell me when Y changes", "check Z every hour", or the user ran the same check by hand before and wants it repeated. Not for: a one-off look, call the tool itself (reddit_search_posts, seo_get_page, seo_get_position, ads_get_advertiser_ads). Reading what a monitor found, use monitoring_get_changes. Returns: Record. monitor (monitor_id, name, description, preset, status, cadence, fields, est_credits_check, est_credits_month, next_check_at), created (false on preview). The first check runs within five minutes and records a starting point; changes are reported from the second check on. Fields by preset: mentions {keywords (up to 10), platforms (reddit, linkedin, instagram, tiktok, youtube; default reddit), communities (Reddit, every new post read in full), pages (1 to 3 per community per check)}, where Instagram searches each keyword as one hashtag ("acme crm" reads #acmecrm), so use a keyword people tag; social_accounts {accounts [{platform (twitter, linkedin, instagram, tiktok, youtube, facebook), account (handle, or URL for facebook and linkedin)}] (1 to 10)}; reviews {items [{source app_store or google_play, app_id} or {source google_maps, place_id or cid} or {source google_shopping, product_id, gid}] (1 to 5), stars, location}; website_changes {pages (1 to 10 URLs), mode (new_items: new links under the page and prices; any_change: new text), words}; ads {brands (1 to 5, a website works best), platforms (facebook, google, linkedin, tiktok)}; google_rankings {site, keywords (1 to 50), location}; ai_visibility {brand, aliases (other names for the brand, up to 5), domain (the brand's site, for citation share), questions (1 to 25; ones that name the brand are counted apart), competitors (up to 9), engines, samples (1 to 3), location, language}. cadence is hourly, daily or weekly; checks repeat from the first one. A bad field is InvalidTarget naming it. Cost: 0 credits to create. Each check charges for the calls it makes at their own prices, shown as est_credits_check and est_credits_month. Monitor checks read live data, never the cache. Example: {"preset": "mentions", "fields": {"keywords": ["acme crm"], "platforms": ["reddit", "linkedin"]}, "description": "Threads asking for a CRM, to answer while they are fresh.", "preview": true}
    ConnectorAPI key
  • Overwrite the person's whole interest list. People who share an interest are matched first. Only when the person asked to set or change their interests. The previous list is replaced, not added to, so any interest they want to keep must be sent again; an empty list clears them. Entries that do not survive normalising are dropped and listed back as dropped, so tell them which. On a free plan nothing is saved and needs_pass is true: say that, not that they have no interests. For where to meet people from use fyreflock_filter. Returns interests (what is now set), dropped, limit, needs_pass.
    Connector
    Destructive
    OAuth
  • Find people on LinkedIn by keywords and filters. The right tool when you have a name, role, or 'who is the X at Y' question without a profile URL. Pass keywords (free text: name, title, or both) and any of first_name, last_name, title, school, current_company, past_company. If keywords is omitted it is derived from the name or title filters; school or company filters alone are rejected with INVALID_INPUT, so include keywords with those. Company filters accept a company name, slug, numeric id, or URN. current_company names are matched by LinkedIn's own company search: typo-tolerant and fuzzy, so results can include people whose headline merely mentions the company; when you need exact filtering, pass the numeric id or URN (linkedin_get_company returns both). past_company names are resolved to an id for you. Costs 10 credits including the first 10 results; each further 10 results add 1 credit (limit max 30; trial keys max 10). A cursor page is a NEW call priced the same way by its own limit, so one limit=30 call is much cheaper than three limit=10 pages; prefer a larger limit over paginating. Do NOT combine a past_company NAME or a company-URL filter with limit=30: resolving those spends one of the call's three internal fetches, so that combination is rejected; keep limit<=20 with them or pass the numeric id. current_company names never spend a fetch, so they combine with any limit. Returns name, position, location, urn, public_identifier per result, a cursor for the next page, and total_matches. Results with is_anonymous=true are private profiles; do not pass them to linkedin_get_profile. For one known person with a URL/slug, call linkedin_get_profile directly instead.
    ConnectorOAuth
  • Find quantum computing researchers and potential collaborators from 1000+ active profiles. Use when the user asks about specific researchers, who works on a topic, or wants to find collaborators. NOT for jobs (use searchJobs) or papers (use searchPapers). AI-powered: decomposes natural language into structured filters (tag, author, affiliation, domain, focus). Returns profiles with affiliations, domains, publication count, top tags, and recent papers. Data from arXiv papers published in the last 12 months. Max 50 results. Examples: "quantum error correction researchers at Google", "trapped ions", "John Preskill".
    ConnectorNo auth

Matching MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    Local-first memory for AI agents about the people in your life. MCP server + CLI on SQLite. Never phones home.
    44
    201 PyPI
    60
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Open MCP server for AI agents to discover people, jobs, collaborators and projects through semantic search over human-published context.
    MIT

Matching MCP Connectors

  • Get USER PROFILES of people who interacted with an Instagram post. Returns full user data (bio, followerCount, followingCount, etc.). RETURNS USER PROFILES: id, username, fullName, biography, followerCount, followingCount, isVerified, profilePicUrl. Use for analyzing WHO engaged with a post. NOT FOR COMMENT TEXT: To read the actual comment content (what people wrote), use getInstagramCommentsByPostId instead. INTERACTION TYPES: "commenters" (users who commented), "likers" (users who liked). WHEN TO USE THIS TOOL: Analyzing commenters/likers demographics, finding influencers who engaged, building audience profiles, network analysis of who interacts with posts. WHEN TO USE getInstagramCommentsByPostId: Reading comment text, sentiment analysis of what was said, analyzing discussion content. FAST (default, omit responseType or responseType="fast"): Returns up to 300 results directly (use limit param to reduce, e.g. limit=5). Auto API fallback for commenters when stale. PAGING (responseType="paging"): Async paginated results (1000 users per page with default fields), returns operationId - IMMEDIATELY call checkOperationStatus to get results. CSV export included via dataDumpExportOperationId. Supports pageNumber/tableName for subsequent pages. Optional fields (default: ["id", "username", "fullName"]). Available: biography, isPrivate, isVerified, followerCount, followingCount, mediaCount, profilePicUrl. This is a safe, read-only tool for analyzing searchable information.
    ConnectorOAuth
  • Generate synthetic / fake user profiles via the MwVideos random_users API (POST /mwvideos/api/random_users). Returns name, gender, location, email, login, dob, phone, picture, and nat. Use when the user asks for random users, fake people, sample contacts, demo personas, UI fixtures, or test profiles. Pass `results` for how many profiles (default 1, minimum 1) and `isPro` as 0 or 1 when relevant (default 0). Authenticated user_id is injected server-side — do not invent profiles; always call this tool. These are FAKE people for demos and testing, not real PII.
    ConnectorOAuth
  • THE MAIN TOOL. Write a LinkedIn post in this user's own voice, from their own material. Use it whenever the user describes something they want to post about — a story, an opinion, a result, a lesson, a rough brief. It runs ContentIn's voice pipeline: their VoiceDNA, their real past posts as style exemplars, and their substance bank, so the output sounds like them rather than like an AI. Pass the user's idea as fully and as literally as you can — their own words, their own details, their own numbers. Do NOT tidy it up, summarise it, or replace their phrasing with your own; the pipeline preserves what they gave it and paraphrasing upstream is how a post stops sounding like them. The post is saved as a draft in their ContentIn account and the returned post_id can be passed to schedule_post or publish_post. Takes 30-90 seconds. If this tool returns needs_input: true with a question, your ONLY job that turn is to relay that question to the user (verbatim, or lightly adapted to the conversation language). Do NOT write, invent, or promise a post, and do NOT call this or any other write tool again until the user answers.
    ConnectorOAuth
  • Delete EVERY object of one type from the user's graph, however many there are: what to reach for when they ask to clear out a whole category ('delete all my HubSpot contacts') rather than one record. Pass import_id instead to delete everything one import added (its contacts, companies, notes and files, the uploaded file and the import itself); imports are graph objects of type 'import_run'. Pass source 'linkedin_import' instead to delete every connection a LinkedIn export loaded and the people made from them. Deleting one object is delete_graph_object instead. This delete is permanent, and at this scale it is the only kind that helps: a synced portal can be millions of records. Use only when the user explicitly asked for these to go, never on your own initiative, and name one type, import or source per call. In chat this tool deletes nothing: it counts the records and returns what to tell the user, and their click starts the deletion.
    Connector
    Destructive
    No auth
  • The user's LinkedIn post analytics from LinkedIn's own API (their connected account) — impressions, unique members reached, reactions, comments, and reshares. Use for questions like 'how many impressions did I get last month?' or 'how are my posts performing?'. Omit dates for lifetime totals; pass start_date/end_date for a window; set daily=true (with one specific metric) for a per-day series to describe trends. Numbers are live from LinkedIn, unlike get_my_linkedin_posts whose per-post counts come from a periodic sync.
    ConnectorNo auth
  • Synchronize one provider-safe page (at most 500) of the API-key owner's 1st-degree LinkedIn relations into the local workspace cache. This is a provider read, not a LinkedIn people search, and does not consume the search quota. The server persists continuation state and atomically enforces a 15–20 minute delay, four-page hourly cap, and twelve-page daily cap across UI and MCP. Respect RELATIONS_SYNC_PROTECTED retry_after_seconds before continuing.
    ConnectorAPI key
  • <summary>Add and/or remove watched people or company pages on an existing `list`-mode LinkedIn monitor, incrementally — you pass only the profiles that are changing, never the whole list. `add` and `remove` are LinkedIn profile URLs or vanity slugs for people, and full `linkedin.com/company/...` URLs for company pages (a bare company name or slug is read as a person's slug). A swap is one call (`add=[new]`, `remove=[old]`). Both forms of one profile (full URL and bare slug) collapse to a single watched member, so re-adding someone already watched is a no-op. The change takes effect on the monitor's next scheduled run. Use this instead of re-running `set_up_linkedin_monitoring` whenever the user just wants to tweak who's watched ("also watch Bob", "drop Alice"): setup would force re-passing every existing member, and since each watched profile is billed per run, one dropped URL on the re-echo silently stops watching that person. To change schedule, voice, or the action flags, use `set_up_linkedin_monitoring` (members are preserved there when omitted); adding the very first members or resetting the whole list is setup too.</summary> <returns> <description>Dict with status ('active'), name, members_count, added, removed, unresolved, and message.</description> </returns>
    ConnectorOAuth
  • SPENDS CREDITS, AND BY DEFAULT METERED EMAIL VERIFICATION. Adds people from the Lead Finder contact database to a campaign as leads, revealing their contact details, in the background. Pass refs (from search_lead_finder results; up to 1,000 different people by default) to add exactly those people, or pass filters and count (1 to 5,000 by default) to add count people matching the filters who are not in the workspace yet. A filters add always walks the matches from the top and skips anyone already a lead, free and not counted, so repeating the same add adds the NEXT count people and charges again. Never repeat an add to retry: after an error or a timeout, call list_lead_finder_imports to see whether it started. A filters add stops early when the audience runs out or once it has looked at five people for every one requested (at least 1,000). People already added count toward that limit even though skipping them is free, so after an add of more than about 1,000 people a small follow-up can stop with nobody added. Every person a filters add looks at, added or skipped, also uses the account's daily allowance for filters adds (25,000 people by default). Each person added costs 1 credit ($0.033 at list), reported as creditsPerProspect; the response reports estimatedCredits, the most the add can cost in credits, and the wallet must hold that much for it to start. People already in the workspace, blocklisted, without a usable address, on a personal mailbox when the campaign only takes business addresses, or marked invalid by verification are skipped and cost no credits. verifyEmails (on by default) checks every screened address with the paid email verification waterfall, including the ones it marks invalid: one or two checks per address, billed as metered usage on the next invoice (price per check: GET /email-verification/rates in the REST API), within the account's monthly verification spend limit. Catch-all and unconfirmed addresses are added and charged, and so is every address once that limit is reached; verification.limitReached and verification.unknown on get_lead_finder_import count them. Leads added to a running or paused campaign get their emails at once (a paused campaign sends them when resumed); adding to a completed campaign resumes it, so it starts sending again; in a draft campaign the emails are created at launch. At most 3 adds run at once in a workspace. A refusal names its reason, and a 429 also says when to retry (reason running_imports, daily_import_limit, daily_budget, monthly_budget or fair_use_floor). Poll get_lead_finder_import with the importId until finishedAt is set. Check get_credit_balance first; buy credits with purchase_credits.
    ConnectorNo auth
  • PERMANENTLY delete saved contacts (LinkedIn profiles) including their campaign memberships, scheduled actions and campaign history. Contacts with pending or in-progress campaign steps are refused unless force: true (prefer exclude_contacts_from_campaign when the goal is just to stop outreach). Linked CRM leads are kept (unlinked) unless delete_crm_leads: true. Cannot be undone: only on the user's explicit request, show them the contacts first and pass confirm: true after they agree.
    Connector
    Destructive
    API key
  • Call this when the user asks where Hyperliquid whales would be liquidated, how much tracked notional sits at each price, how the largest accounts lean on a coin, or how their liquidation prices compare with the LiqMap model. The universe is the largest accounts by equity on Hyperliquid's public leaderboard, scanned every five minutes; the levels are their own liquidation prices bucketed around the mark. hours returns the hourly archive of level totals.
    ConnectorNo auth
  • Store a value the customer supplies for one person, such as a link to a video they recorded, so a LinkedIn message, email, X DM or Instagram DM step declared with tool customer_input can send. Identify the person by exactly one of leadId, LinkedIn profile URL, email address or X handle. values maps the sequence's token names (for example video_url) to the customer's text; the key comes from the sequence, the customer never types it. One call fills every step of that person's sequence that uses the token and has not sent yet. A LinkedIn message, opted-in email or X DM step may instead ask for a file for each person (tool customer_input attachment, for example a personalised demo video). Limits are the providers': LinkedIn 15 MB per message together with the step's own files; email one document, image or MP4 up to 18 MB (1.5 MB from Microsoft mailboxes); X one image up to 5 MB, GIF up to 15 MB or MP4 video up to 50 MB and 140 seconds. Nothing is compressed: a larger file is refused with the limit and the way forward, which you relay as written (compress it and try again, or send a video link instead). A link to a video (Loom, YouTube, Drive) is a text value such as video_url, not a file. To send a file, call once with upload { key, fileName, size } to get a one-time uploadUrl, PUT the file's bytes there with the returned headers, then call again with files { key: uploadTicket }; if you cannot upload bytes yourself, give the customer the returned appUrl to add the file in the app instead. For several people at once (the customer has already decided which file is whose; do not second-guess their pairing), call with uploads [{ leadId or linkedinUrl or email or xUsername, key, fileName, size }] (up to 25, no top-level person) to get one uploadUrl and uploadTicket per person, PUT each file, then call with confirmUploads [uploadTicket, ...] to attach them all. Each person succeeds or is refused on their own with a reason; tickets last two hours and confirming one again is harmless, so a rerun only adds what is missing. Afterwards list_leads with sequenceId and personalFiles=true shows which file each person has. Nothing is sent in this call: the paced engine sends on its next run if the person is at that step, or when they reach it. A value or file for someone who already replied, finished, or already received that message is refused with nothing changed. The result includes how many people in that sequence are still waiting. Open world: the stored value releases a held message to that person, a third party.
    ConnectorOAuth
  • Store a value the customer supplies for one person, such as a link to a video they recorded, so a LinkedIn message, email, X DM or Instagram DM step declared with tool customer_input can send. Identify the person by exactly one of leadId, LinkedIn profile URL, email address or X handle. values maps the sequence's token names (for example video_url) to the customer's text; the key comes from the sequence, the customer never types it. One call fills every step of that person's sequence that uses the token and has not sent yet. A LinkedIn message, opted-in email or X DM step may instead ask for a file for each person (tool customer_input attachment, for example a personalised demo video). Limits are the providers': LinkedIn 15 MB per message together with the step's own files; email one document, image or MP4 up to 18 MB (1.5 MB from Microsoft mailboxes); X one image up to 5 MB, GIF up to 15 MB or MP4 video up to 50 MB and 140 seconds. Nothing is compressed: a larger file is refused with the limit and the way forward, which you relay as written (compress it and try again, or send a video link instead). A link to a video (Loom, YouTube, Drive) is a text value such as video_url, not a file. To send a file, call once with upload { key, fileName, size } to get a one-time uploadUrl, PUT the file's bytes there with the returned headers, then call again with files { key: uploadTicket }; if you cannot upload bytes yourself, give the customer the returned appUrl to add the file in the app instead. For several people at once (the customer has already decided which file is whose; do not second-guess their pairing), call with uploads [{ leadId or linkedinUrl or email or xUsername, key, fileName, size }] (up to 25, no top-level person) to get one uploadUrl and uploadTicket per person, PUT each file, then call with confirmUploads [uploadTicket, ...] to attach them all. Each person succeeds or is refused on their own with a reason; tickets last two hours and confirming one again is harmless, so a rerun only adds what is missing. Afterwards list_leads with sequenceId and personalFiles=true shows which file each person has. Nothing is sent in this call: the paced engine sends on its next run if the person is at that step, or when they reach it. A value or file for someone who already replied, finished, or already received that message is refused with nothing changed. The result includes how many people in that sequence are still waiting. Open world: the stored value releases a held message to that person, a third party.
    ConnectorOAuth
  • Find physicist profiles in INSPIRE-HEP by name, INSPIRE BAI, ORCID, INSPIRE ID, or author recid. Each profile carries its recid, BAI, ORCID, current and past positions, advisors, arXiv categories, links, awards, and a literatureQuery that selects the person's papers in cern_inspire_search_literature. A name returns ranked candidates (a bare surname can match tens of thousands of profiles, and a less-cited namesake can rank first), so confirm the person from positions and categories before passing a bai or recid to cern_inspire_get_citation_summary. An identifier matches exactly.
    ConnectorNo auth
  • Look up one person by email or by public LinkedIn person URL (send exactly one; an email is matched to a LinkedIn profile first). Returns person: name, title, headline, location, company {name, domain}, linkedin, and connections (previously observed public follows) when there are any; person is null when nobody matches. Add find: ["x"] to get their X account, returned only when its name matches and its own bio or link points at their LinkedIn, company domain or company name (x.evidence says which). Add find: ["work_email"] for a work email; check workEmail.matchesCompanyDomain before using it. Add find: ["mobile"] for a verified mobile number (about 10 Energy when one is found). A requested extra that did not come back is listed in missing with a reason (not_found means no confident match, not that it does not exist). Uses workspace Energy; energyUsed is what this call spent and energyLeft the balance after it. Read energy.peopleDataPricing first; cached lookups are free. Requires Energy enabled. Add leadId (one of your own leads, the same person) with find: ["work_email"] to save the found email on that lead; lead.email says attached, lead_has_email, different_person, email_on_another_lead or no_email. Never overwrites an existing email. Does not create leads or send outreach. Repeated calls can cost Energy; never automatically retry a timeout or error. find_phone_number and find_work_email run this same lookup when only a phone number or work email is wanted. Use find_people for audience discovery, not this tool.
    ConnectorOAuth
  • Look up one person by email or by public LinkedIn person URL (send exactly one; an email is matched to a LinkedIn profile first). Returns person: name, title, headline, location, company {name, domain}, linkedin, and connections (previously observed public follows) when there are any; person is null when nobody matches. Add find: ["x"] to get their X account, returned only when its name matches and its own bio or link points at their LinkedIn, company domain or company name (x.evidence says which). Add find: ["work_email"] for a work email; check workEmail.matchesCompanyDomain before using it. Add find: ["mobile"] for a verified mobile number (about 10 Energy when one is found). A requested extra that did not come back is listed in missing with a reason (not_found means no confident match, not that it does not exist). Uses workspace Energy; energyUsed is what this call spent and energyLeft the balance after it. Read energy.peopleDataPricing first; cached lookups are free. Requires Energy enabled. Add leadId (one of your own leads, the same person) with find: ["work_email"] to save the found email on that lead; lead.email says attached, lead_has_email, different_person, email_on_another_lead or no_email. Never overwrites an existing email. Does not create leads or send outreach. Repeated calls can cost Energy; never automatically retry a timeout or error. find_phone_number and find_work_email run this same lookup when only a phone number or work email is wanted. Use find_people for audience discovery, not this tool.
    ConnectorOAuth