Skip to main content
Glama

Datamagnet

Server Details

Live LinkedIn people, company, post and job data, ICP search and job-change signals for AI agents.

Ownership verified
Status
Healthy
Uptime
100.0% over the last 24 hours
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
datamagnet-co/datamagnet-mcp
GitHub Stars
0
ChatGPT
–
Claude
–

TDQS

A4.2/5.0

Scored across 18 tools

Disambiguation4/5

Each tool targets a distinct resource+action (get_person_profile vs get_person_activity vs get_post vs get_post_engagement are clearly separated), and the signal tools have non-overlapping roles. The only real friction is between list_filter_values (free, all enumerated values) and suggest_filter_values (paid, one specific value), which an agent could plausibly mispick despite the descriptions.

Naming Consistency5/5

All 18 tools follow a consistent verb_noun snake_case pattern: check_*, create_*, get_*, list_*, search_*, suggest_*, update_*, delete_*. No mixed conventions or vague verbs.

Tool Count4/5

18 tools is slightly above the comfortable 3-15 band but justified by the breadth of the surface: people, companies, jobs, posts, engagement, signals (5 tools), filter discovery, and credits. Each tool earns its place and none appear redundant.

Completeness3/5

Core enrichment and ICP search workflows are well covered, and signals have full create/update/delete/list lifecycle. However, there is no job search tool (only get_job_details by id/URL), and list_signal_leads explicitly covers only the four engagement signal types—leads from job_change, new_post, and person_activity monitors are only deliverable by email/webhook, leaving an agent-facing gap.

Publisher details

Operator
Datamagnet · Publisher source
Vendor relationship
Unknown
Trust center
Unknown
Restrictions
Unknown

Available Tools

18 tools
check_creditsCheck credit balanceA
Read-onlyIdempotent
Inspect

Get the current Datamagnet credit balance: remaining, total and used.

Free, and fast. Worth calling before a run that will make many paid calls, and worth calling again if a tool reports running out. Every other tool except the signal tools spends credits, so this is how you find out whether a plan is affordable before starting it.

Inputs: no named parameters. Returns: object

create_signalCreate signalA
Destructive
Inspect

Create a standing monitor that notifies the account when something happens on LinkedIn. Free to create.

What each type watches:

  • job_change — tracked people changing job or company

  • new_post — tracked people publishing a new post

  • person_activity — tracked people reacting to or commenting on any post, anyone's: their own engagement, reported one item at a time

  • keyword_engagement — people engaging with posts matching keywords

  • industry_engagement — people engaging with posts from an industry

  • company_engagement — people engaging with specific companies' posts

  • person_engagement — people engaging with specific people's posts (the reverse of person_activity)

job_change, new_post and person_activity require profile_urls. An account can run several of one type (say "Champions" and "Churned customers"), each with its own signal_id. Without signal_id, a create adds the profiles to the account's only signal of that type, or starts one if there is none. Pass signal_id to add to a specific signal, or new_signal: true to start another. With several and neither given, the call fails: find the right one with list_signals. Adding to a signal keeps its name and settings; if it is paused, resume it first.

name is an optional display label for a new signal. It can repeat and can be changed later with update_signal action rename.

person_activity takes an optional activity_types: reactions, comments, or both (the default). Each costs one lookup per profile per run, so asking for one halves the cost. It applies when the monitor is first created; on an existing monitor change it with update_signal action update_activity_types. The first run records a baseline and reports nothing; after that every new reaction, comment and reply is reported once.

keyword_engagement requires keywords, and takes an optional icp object to filter and score the leads it surfaces. Several of these can coexist; each gets its own signal_id.

Notifications go to the account email. additional_emails adds more recipients. webhook_url receives a POST when the signal fires, signed with webhook_secret if one is given.

Inputs: signal_type (required), icp, name, keywords, +7 more. Returns: object

delete_signalDelete signalA
Destructive
Inspect

Permanently delete a signal monitor and everything it has collected. Free, and irreversible.

This cannot be undone. If the user might want the monitor back, call update_signal with action pause instead.

For the four engagement types, signal_id deletes that one signal; omitting it deletes every signal of that type on the account, which is rarely what someone means. For job_change, new_post and person_activity, signal_id deletes that one signal; it can be left out only when the account has a single signal of that type.

Inputs: signal_type (required), signal_id. Returns: object

get_company_funding_roundsGet company funding roundsA
Read-onlyIdempotent
Inspect

Fetch a company's Crunchbase funding history by domain: amount raised, round type and announcement date for each round.

Costs 5 credits. Takes a web domain such as stripe.com, not a LinkedIn URL. company_name is optional and only helps disambiguate when the domain is shared or ambiguous.

Inputs: domain (required), company_name. Returns: object

get_company_postsGet company postsA
Read-onlyIdempotent
Inspect

Fetch posts published on a LinkedIn company page, with text, media, engagement counts and timestamps.

Costs 10 credits per call. Paginated by cursor — pass the cursor from the previous response for the next page, and expect to be charged again for it.

Inputs: url (required), type, cursor. Returns: object

get_company_profileGet company profileA
Read-onlyIdempotent
Inspect

Fetch a LinkedIn company's profile: name, industry, headcount, headquarters, specialties and recent updates.

Costs 1 credit. The two enrichment flags are expensive and are only charged when they succeed: company_insights adds 10 credits and get_funding_rounds adds 5. Turn them on only when asked for.

If you want funding history alone, get_company_funding_rounds is cheaper than turning the flag on here.

Inputs: url (required), lang, use_cache, company_insights, +1 more. Returns: object

get_job_detailsGet job detailsA
Read-onlyIdempotent
Inspect

Fetch one LinkedIn job posting: title, description, location, seniority, employment and workplace type, apply links, application counts and the hiring company.

Costs 1 credit. include_hiring_team adds 1 more, charged only when the hiring team is actually returned.

Give either job_id (the numeric id) or url (any LinkedIn job URL — the id is extracted for you). One of the two is required.

Inputs: url, job_id, include_hiring_team. Returns: object

get_person_activityGet person activityA
Read-onlyIdempotent
Inspect

Fetch what a LinkedIn person has recently posted, commented on, reacted to, or published as an article.

Costs 10 credits per call, so this is one of the more expensive tools. Prefer one call over several: use type to ask for exactly the activity you need rather than fetching everything and filtering.

Paginated by cursor. Pass the cursor from the previous response to get the next page; each page is charged again.

Inputs: url (required), type, cursor. Returns: object

get_person_profileGet person profileA
Read-onlyIdempotent
Inspect

Fetch a LinkedIn person's profile: name, headline, current role and company, location, full experience, education and more.

Costs 1 credit. Optional enrichments add to that, and are only charged when they succeed: each of the seven boolean interest flags adds 2 credits. Leave them off unless the user asked for what they return. include_extra and skills are deprecated and ignored: they change neither the data nor the price.

use_cache controls freshness. The default returns a cached profile of any age. Use if-recent for a profile no older than 29 days, or never to force a live fetch. Both are slower.

Inputs: url (required), lang, skills, use_cache, +8 more. Returns: object

get_postGet postA
Read-onlyIdempotent
Inspect

Fetch one LinkedIn post by URL: author, text, media, engagement counts and publish time.

Costs 1 credit. This returns the post itself and its totals. To get the people behind those totals, use get_post_engagement.

Inputs: url (required). Returns: object

get_post_engagementGet post engagementA
Read-onlyIdempotent
Inspect

Fetch the people who engaged with a LinkedIn post, with their profiles. kind picks which kind of engagement:

  • comments — commenter profiles, comment text and reply threads

  • reactions — who reacted and with which reaction type

  • reposts — who reshared it and any commentary they added

Costs 10 credits per page, so paginate deliberately. Ask for page 1 first and only go further if the user needs more than it returns.

Inputs: url (required), kind (required), page. Returns: object

list_filter_valuesList filter valuesA
Read-onlyIdempotent
Inspect

Get every valid value for the ICP search filters — industries, seniorities, functions, headcount bands and the rest.

Free. Call this when unsure whether a filter value will be accepted, rather than guessing and spending 10 credits on a search that returns nothing.

Inputs: no named parameters. Returns: object

list_signal_leadsList signal leadsA
Read-onlyIdempotent
Inspect

Fetch the leads this account's engagement signals (keyword_engagement, industry_engagement, company_engagement, person_engagement) have found. Free. The leads are always this account's own, from the caller's key; there is no way to fetch another account's leads.

Every argument is optional and narrows the result. With none, this returns the 50 most recent leads across every signal, newest first.

signal_id scopes to one signal — get it from list_signals; omitting it searches all of them. min_score / max_score filter the 1-3 lead score. keyword matches signal_keyword exactly, case-insensitive: the keyword, industry, company, or person label that surfaced the lead. engagement_type is comment, like, or another reaction. search matches the lead's name or headline, case-insensitive, substring. created_from / created_to are ISO 8601 timestamps or dates (a date alone means midnight UTC); created_from is inclusive, created_to is exclusive.

sort is created_at_desc (default), created_at_asc, lead_score_desc, or icp_score_desc. limit (max 200) and offset page through the result; the response's has_more says whether another page follows, and total is the count across every page, not just this one.

To fetch only what is new since a previous call, sort by created_at_asc and set created_from to the newest detected_at already held, then skip any id already seen — one run's leads share a single detected_at.

Inputs: sort, limit, offset, search, +7 more. Returns: object

list_signalsList signalsA
Read-onlyIdempotent
Inspect

List the signal monitors on this account: each one's signal_id, its name, its type, the profiles it tracks, and whether it is active or paused.

Free. Call this before creating or changing a signal. A signal is identified by its signal_id, and an account can have several of one type. A name is only a label: names can repeat and can be changed, so never pick a signal by its name alone.

Inputs: signal_type. Returns: object

search_companiesSearch companiesA
Read-onlyIdempotent
Inspect

Find target accounts matching an ideal customer profile. Filters take human-readable strings, or lists of them which are OR-ed together.

Costs 10 credits per page. Narrow before paginating.

Use this to build an account list, then search_people with company_name or company_linkedin_urls to find the people inside those accounts.

Inputs: page, industry, location, technology, +3 more. Returns: object

search_peopleSearch peopleA
Read-onlyIdempotent
Inspect

Find people matching an ideal customer profile. Every filter takes a plain human-readable string, or a list of them which are OR-ed together. No internal ids are needed.

Costs 10 credits per page, so this is the easiest tool to overspend with. Narrow the filters before paginating, and only request page 2 if page 1 genuinely did not answer the question.

Notable value sets, which list_filter_values will confirm:

  • company_headcount: 1-10, 11-50, 51-200, 201-500, 501-1,000, 1,001-5,000, 5,001-10,000, 10,001+

  • company_type: Public, Private, Non Profit, Educational, Government

  • years_in_position: Less than 1 year, 1 to 2 years, 3 to 5 years, 6 to 10 years, More than 10 years

  • followers_count: 1-50, 51-100, 101-1000, 1001-5000, 5001+

recently_changed_jobs=True narrows to people who recently started a new position — Sales Navigator's "Changed jobs" spotlight. There is no filter for people who have not changed jobs, so False simply leaves the search unfiltered on this. posted_on_linkedin=True works the same way for people who recently posted on LinkedIn — the "Posted on LinkedIn" spotlight.

keywords is free text matched across the whole profile and narrows the structured filters rather than replacing them. Max 500 characters.

Target specific companies with company_name, or more precisely with company_linkedin_urls (company page URLs, resolved for you) or company_ids (numeric LinkedIn ids, which must be integers).

Inputs: page, school, function, industry, +15 more. Returns: object

suggest_filter_valuesSuggest filter valuesA
Read-onlyIdempotent
Inspect

Look up matching values for one ICP search filter, for cases where the exact spelling matters — a company, job title, location, school, technology or function.

Costs 1 credit per call, and is charged even when the answer comes from cache. Use it to resolve one specific name you are unsure about. Do not call it speculatively, and do not call it for filters whose values are fixed — list_filter_values covers those for free.

The value field of each result is what to pass to search_people or search_companies.

Inputs: q (required), suggest_type (required). Returns: object

update_signalUpdate signalA
Destructive
Inspect

Change an existing signal monitor. Free.

action decides what changes, and what else you must pass:

  • pause / resume — stop or restart monitoring, nothing else needed

  • add_profiles / remove_profiles — needs profile_urls. Removing the last profile pauses the monitor automatically.

  • update_webhook — needs webhook_url, optionally webhook_secret

  • update_emails — needs additional_emails, which replaces the current list. Pass an empty list to clear it. The account email is always kept.

  • update_activity_types — person_activity only; needs activity_types (reactions, comments, or both)

  • rename — needs name, the signal's new label

Prefer pause over delete_signal when the user may want it back. signal_id says which signal to change. The engagement types always need it. For job_change, new_post and person_activity it can be left out only when the account has a single signal of that type; with several it is required. Get it from list_signals, never by name.

Inputs: action (required), signal_type (required), name, signal_id, +5 more. Returns: object

Tool Schema Changelog

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

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Live LinkedIn data for AI agents: 44 tools for profiles, companies, jobs, posts, people search, job-change signals and email finding. Hosted remote server (streamable HTTP) - your agent never touches your own LinkedIn account. 300 free credits on signup, no card. Dockerfile in repo bridges stdio clients to the hosted endpoint via mcp-remote.
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      LinkedIn from the user's own logged-in Chrome session for AI agents: search, profiles, post engagers, company employees, lists, sequences, inbox and a Research Pack, with hard caps and a human approval queue. Local-first, no headless browser.
      15
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Find and enrich the right people from 750M professional profiles. Search by role, seniority, skills, industry, and location in plain English. Pull profiles with work history, education, and seniority, then see who's likely to change jobs next with Next Move Signal. Built for AI products and agents: sourcing candidates, building lead lists, and mapping markets and accounts.
      135 npm
      7
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Real-time LinkedIn, X (Twitter) and Reddit data for AI agents: profiles, companies, people search, tweets, subreddits, and search. Free start: self-mint a key in one call, no signup, no card.
      17
      MIT
    Try in Browser

    Glama MCP Gateway

    Add one secure layer between your agents and this server.