Datamagnet
Server Details
Live LinkedIn people, company, post and job data, ICP search and job-change signals for AI agents.
- 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
Scored across 18 tools
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.
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.
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.
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
- Operator website
- https://www.datamagnet.co/ · Publisher source
- Vendor relationship
- Unknown
- Documentation
- https://www.datamagnet.co/mcp · Publisher source
- Trust center
- Unknown
- Restrictions
- Unknown
Available Tools
18 toolscheck_creditsCheck credit balanceARead-onlyIdempotentInspect
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 signalADestructiveInspect
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 companynew_post— tracked people publishing a new postperson_activity— tracked people reacting to or commenting on any post, anyone's: their own engagement, reported one item at a timekeyword_engagement— people engaging with posts matching keywordsindustry_engagement— people engaging with posts from an industrycompany_engagement— people engaging with specific companies' postsperson_engagement— people engaging with specific people's posts (the reverse ofperson_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 signalADestructiveInspect
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 roundsARead-onlyIdempotentInspect
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 postsARead-onlyIdempotentInspect
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 profileARead-onlyIdempotentInspect
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 detailsARead-onlyIdempotentInspect
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 activityARead-onlyIdempotentInspect
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 profileARead-onlyIdempotentInspect
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 postARead-onlyIdempotentInspect
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 engagementARead-onlyIdempotentInspect
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 threadsreactions— who reacted and with which reaction typereposts— 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 valuesARead-onlyIdempotentInspect
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 leadsARead-onlyIdempotentInspect
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 signalsARead-onlyIdempotentInspect
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 companiesARead-onlyIdempotentInspect
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 peopleARead-onlyIdempotentInspect
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, Governmentyears_in_position: Less than 1 year, 1 to 2 years, 3 to 5 years, 6 to 10 years, More than 10 yearsfollowers_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 valuesARead-onlyIdempotentInspect
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 signalADestructiveInspect
Change an existing signal monitor. Free.
action decides what changes, and what else you must pass:
pause/resume— stop or restart monitoring, nothing else neededadd_profiles/remove_profiles— needsprofile_urls. Removing the last profile pauses the monitor automatically.update_webhook— needswebhook_url, optionallywebhook_secretupdate_emails— needsadditional_emails, which replaces the current list. Pass an empty list to clear it. The account email is always kept.update_activity_types—person_activityonly; needsactivity_types(reactions,comments, or both)rename— needsname, 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
Live LinkedIn data for AI agents: profiles, companies, jobs, posts, email finding. No account risk.
LinkedIn jobs, companies and people for AI agents, plus messages and invites via your own account.
LinkedIn person, company and school data for AI agents: full profiles with work history, education and skills, company firmographics, and people search by title, company, location and size. Pay only for found profiles. 50 free credits.
LinkedIn data for AI agents: search, profiles, companies, posts. Free key, self-minted, no signup.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceLive 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
- AlicenseNot gradedqualityBmaintenanceLinkedIn 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.15MIT

Ask Xverumofficial
AlicenseNot gradedqualityBmaintenanceFind 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 npm7MIT- AlicenseAqualityCmaintenanceReal-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.17MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.