Skip to main content
Glama

SalesMap

Server Details

Checked buying signals and ranked lead lists for your agent. Never contacts anyone.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
solozerolabs/salesmap-plugin
GitHub Stars
0

TDQS

Score is being calculated.

Available Tools

17 tools
ai_adoptionCheck AI adoption
Read-only
Inspect

Price: free. AI-adoption signals for one company, with dates: MCP servers under its domain in the official MCP registry, AI or LLM lines in its HackerOne or Bugcrowd scope and policy, and its Hugging Face org's plan and member count. Use when: "is acme.com building with AI", "do they ship an MCP server", "are they serious about LLMs", "AI adoption signals for ". Skip when: the question is about the general tool stack rather than AI, or about people. reached lists each source and whether it was read; a source that was not reached is unknown, not "none". Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in Flags with the attack family.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYesThe company domain, e.g. acme.com (no path)

Output Schema

ParametersJSON Schema
NameRequiredDescription
hfYes
mcpYes
costNo
bountyYes
domainYes
reachedYes
observedAtYes
discoverFind accounts to sell to
Read-only
Inspect

Price: $2.50 per ready-now company returned; $0 if none. Never more than max_usd. From a seller's website to companies ready to buy now, and how to reach them: drafts the seller's ICP from its site (or takes one), finds candidate companies from free sources (the seller's competitors' customer pages, live or from Common Crawl; web search; Hacker News, YC, press wires, ATS boards and SEC Form D), reads each one's own job board, news, tools and AI-adoption signals and checks every signal against its source, screens fit, rates intent from the signals and access from the user's own network (a LinkedIn Connections export, champions, connectors), and ranks: high intent and warm first, then high intent and cold. Also returns accounts to keep warm, ones with only early signals (coming up), companies above the seller's size band (partner or later), existing customers and what was dropped and why, each list's top five with its count. Takes minutes per company; steps are cached, so a rerun is fast. Use when: "who should sell to right now", "find accounts for getklira.com", "which accounts are in market", "who in my network can introduce me to a buyer". Skip when: the user brings their own list of companies or a CSV to order, the question is one fact about one company, or the user wants anyone contacted: this never sends anything. Free sources only by default: a paid API (TheirStack for more candidates, treg or Monid for signals) runs only when paid names it and the free sources came up short, under its budget; paid in the result is what it cost and each account's foundBy says which source found it. A repeat for the same seller skips companies an earlier discover returned unless one has a signal it wasn't shown with (then shownBefore); skipped ones are under dropped as 'returned before, no new signal'. Each still costs its (cached) research, not a fit screen. When the usual sources find only those, it searches wider once (more web results, four weeks of feeds, more ATS boards); repeat says so, repeat.nothingNew means nothing new qualified, and repeat.costUsd (hosted) is what finding that out cost. includeShown returns the earlier companies too. Names from the user's network stay local and never reach a model. Every signal was checked against its page. Each account shows its three strongest signals; full is the file with every signal, path and field. used lists which of the user's own facts shaped the list, apart from the checked signals. context takes the user's own facts about their company; the saved seller profile fills fields left out. With the ICP or buyer roles still unknown, the server asks the user for them (MCP elicitation) or returns the questions without running. Charged per result returned from the user's credits, never for a miss (the paid APIs it runs only when paid names them, TheirStack and Monid, are our cost): at most max_usd (default: the quote tool's figure) and within their monthly limit, reserved before it runs. If the next step would pass its budget, it stops and returns what it has, with stopped: "budget", charged only for that; budget says what was reserved and charged. A call quoted over max_usd is refused. A call quoted over the user's confirm amount (default $1) asks the user first through the client (MCP elicitation); a client without that gets a confirm result with the cost and a one-use token, and a repeat call with the same arguments and confirm_token runs it. On this server callerSearch is on by default: rounds that return work are free, and the last is charged $1.00 per ready-now company instead of $2.50; $0.50 when the calling agent's model also judged (judgedBy: "caller": while ours is unavailable, or with callerJudge). With callerSearch: false the server searches (when its own models are available). Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in Flags with the attack family.

ParametersJSON Schema
NameRequiredDescriptionDefault
icpNo
daysNo
paidNo
limitNo
sellerNo
contextNoThe user's own facts about their company: who they are, the company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions. Fields left out come from the saved seller profile. These are the user's inputs, not findings.
max_usdNoMost this call may spend, in USD; default its quote. A call quoted over it is refused.
vendorsNo
searchesNoWith callerSearch: each `work` id → the JSON its prompt returned, including every earlier round's answers
championsNo
companiesNo
customersNo
openDealsNo
connectorsNo
evaluatorsNo
callerJudgeNoWith callerSearch: the calling agent's model also makes the judgments (fit screen and ranking text, job-post extraction, competitor site checks; a playbook's write-up and claim check), returned as `work` like the searches. What it judged is labelled `judgedBy: "caller"`; every signal is still checked against its page by our code. Hosted, this happens on its own while our models are unavailable; locally it is always so
connectionsNo
callerSearchNoThe calling agent does the searches (the seller's offer and ICP draft, competitors, tool list, candidate companies, each company's news, the events search), where the server offers it; on the hosted server it is the default. A call returns `work` (search prompts with ids) until every search has an answer; a repeat call with the same input and `searches` carries the answers. Our code still checks every page, quote and date
doNotContactNo
includeShownNo
confirm_tokenNoThe token a previous call returned in `confirm`, standing for the user's agreement to that cost; one use, same arguments.
priorContactsNo
previousConnectionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
icpNo
costNo
fullYesThe full result on disk: every signal, path and field
nextNo
paidNo
workNo
sinceYes
todayYes
budgetNo
repeatNo
droppedYes
profileNo
sourcesNo
stoppedNo
accountsYes
comingUpYes
judgedByNo
keepWarmYes
needsCreditNo
partnerOrLaterYes
existingCustomersYes
eventsFind events buyers attend
Read-only
Inspect

Price: $0.60 per checked event returned; $0 if none. Never more than max_usd. Upcoming events near the user that the seller's ICP and buyer roles will attend (meetups, dinners, summits, conferences, trade shows) in the next 90 days by default: found by web search over Luma, Eventbrite, Meetup and conference sites, each event's own page read and checked (the date is on it and upcoming). Per event: name, date, city or online, URL, who it is for and why the buyers will be there, and the companies the page names as sponsors, speakers, hosts or exhibitors, each checked against the page. Ranked by ICP fit, target companies tied in and distance. Free sources only unless the user opts into paid search (paid). Use when: "what events should I go to", "where will my buyers be next month", "conferences my ICP attends near me", "meetups for CISOs in San Francisco", "which sponsors are at events near me". Skip when: the user wants accounts to sell to without events, news about named companies, or says "RSVP me", "register me", "sign me up" or wants anyone messaged: this never RSVPs, registers or contacts anyone, and attendee lists behind a login are out. A company tie that failed its check is not a fact about that company. Takes a few minutes. context takes the user's own facts about their company; the saved seller profile fills fields left out. With the ICP or buyer roles still unknown, the server asks the user for them (MCP elicitation) or returns the questions without running. Charged per result returned from the user's credits, never for a miss (the paid APIs it runs only when paid names them, TheirStack and Monid, are our cost): at most max_usd (default: the quote tool's figure) and within their monthly limit, reserved before it runs. If the next step would pass its budget, it stops and returns what it has, with stopped: "budget", charged only for that; budget says what was reserved and charged. A call quoted over max_usd is refused. A call quoted over the user's confirm amount (default $1) asks the user first through the client (MCP elicitation); a client without that gets a confirm result with the cost and a one-use token, and a repeat call with the same arguments and confirm_token runs it. Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in Flags with the attack family.

ParametersJSON Schema
NameRequiredDescriptionDefault
cityNoWhere the user is, e.g. San Francisco; default the profile's first region
daysNoHow far ahead to look, default 90 days
paidNoPaid sources the user opted into; used only when free search finds fewer than 5 checked events
onlineNoAlso online events; with no city, only online ones
sellerNoThe user's own company site, e.g. getklira.com
contextNoThe user's own facts about their company: who they are, the company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions. Fields left out come from the saved seller profile. These are the user's inputs, not findings.
max_usdNoMost this call may spend, in USD; default its quote. A call quoted over it is refused.
anywhereNoEvents anywhere, in person or online, ignoring city (for company ties in discover and signals)
radiusKmNoHow far from the city, default 50 km
budgetUsdNoCap on paid spend in USD, default 0.05
confirm_tokenNoThe token a previous call returned in `confirm`, standing for the user's agreement to that cost; one use, same arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
cityYes
costNo
paidYes
todayYes
untilYes
budgetNo
eventsYes
onlineYes
droppedYes
stoppedNo
radiusKmYes
shapedByYes
directoriesYes
moreDroppedYes
needsCreditNo
jobGet a background job
Read-only
Inspect

Free. The status (queued, running, done or failed) and, once done, the result of a background job: rank over 10+ companies or verify over 25+ rows. Use when: a call returned job, "is my ranking done", "is the check finished", "status of my job". Skip when: no call has returned a job id. Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in Flags with the attack family.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe job id rank or verify returned

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
costNo
toolYes
errorYes
resultYes
statusYes
createdAtYes
finishedAtYes
playbookBuild a sales playbook
Read-only
Inspect

Price: $7.50 on a discover for the same seller from the last 7 days, $25.00 when it has to run its own sweep. Never more than max_usd. A Markdown sales playbook for a seller's top three accounts right now: runs discover, then per company why now (the signals that passed their check, with links and dates), who to reach (a warm path from the user's network, else the buyer roles), the angle and a first-email draft. The write-up is checked claim by claim against the signals and the seller's offer; any sentence that fails is cut. Saves the playbook to a file and returns its path with a short summary. Takes minutes; discover's research is cached, so a rerun is fast. Use when: "write me a playbook for getklira.com", "give me a sales playbook for ", "top 3 accounts with openers", "who should I email this week and what do I say", "draft outreach for my best accounts". Skip when: the user wants a ranked list without write-ups, one fact about one company, a draft of their own checked, or anything sent or written into a CRM (Salesforce, HubSpot) as leads: this never contacts anyone or writes anywhere but its own file. Observed (checked signals), Inferred (angle, roles) and drafts are labelled apart in the file. Openers are drafts for the user to edit, not facts about the people. context takes the user's own facts about their company; the saved seller profile fills fields left out. With the ICP or buyer roles still unknown, the server asks the user for them (MCP elicitation) or returns the questions without running. Charged per result returned from the user's credits, never for a miss: at most max_usd (default: the quote tool's figure) and within their monthly limit, reserved before it runs. If the next step would pass its budget, it stops and returns what it has, with stopped: "budget", charged only for that; budget says what was reserved and charged. A call quoted over max_usd is refused. A call quoted over the user's confirm amount (default $1) asks the user first through the client (MCP elicitation); a client without that gets a confirm result with the cost and a one-use token, and a repeat call with the same arguments and confirm_token runs it. On this server callerSearch is on by default: rounds that return work are free, and the playbook is charged $5.00 instead of $25.00; while our models are unavailable (or with callerJudge) the calling agent's model also writes and checks it, labelled judgedBy: "caller". Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in Flags with the attack family.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
sellerYesThe seller's site, e.g. getklira.com
contextNoThe user's own facts about their company: who they are, the company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions. Fields left out come from the saved seller profile. These are the user's inputs, not findings.
max_usdNoMost this call may spend, in USD; default its quote. A call quoted over it is refused.
searchesNoWith callerSearch: each `work` id → the JSON its prompt returned, including every earlier round's answers
companiesNoRate these companies instead of searching the market
callerJudgeNoWith callerSearch: the calling agent's model also makes the judgments (fit screen and ranking text, job-post extraction, competitor site checks; a playbook's write-up and claim check), returned as `work` like the searches. What it judged is labelled `judgedBy: "caller"`; every signal is still checked against its page by our code. Hosted, this happens on its own while our models are unavailable; locally it is always so
connectionsNoA LinkedIn Connections.csv, for warm paths; names stay local. Locally, ~/.salesmap/Connections.csv when omitted
callerSearchNoThe calling agent does the searches (the seller's offer and ICP draft, competitors, tool list, candidate companies, each company's news, the events search), where the server offers it; on the hosted server it is the default. A call returns `work` (search prompts with ids) until every search has an answer; a repeat call with the same input and `searches` carries the answers. Our code still checks every page, quote and date
confirm_tokenNoThe token a previous call returned in `confirm`, standing for the user's agreement to that cost; one use, same arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
costNo
nextNo
noteNo
pathYes
workNo
todayYes
budgetNo
sellerYes
stoppedNo
judgedByNo
companiesYes
needsCreditNo
reusedDiscoverYes
quoteQuote a call's price
Read-only
Inspect

Free. What a call to a SalesMap tool is expected to cost, before running it, against what the workspace can spend now (credits and limits); and whether it runs as a job (rank over 10+ companies, verify over 25+ rows). Not a charge: the most the call can charge, which it reserves (or its max_usd); it is charged per result returned (rank: its model cost), never more. Use when: before a batch, "how much will this cost", "can I afford to rank these 20 accounts", "what would discover cost". Skip when: the user wants their balance or limits without a call in mind. Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in Flags with the attack family.

ParametersJSON Schema
NameRequiredDescriptionDefault
toolYesThe tool to quote, e.g. rank
inputNoThat tool's arguments, as in a call to it

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobYes
costNo
fitsYes
toolYes
quoteUsdYes
canSpendUsdYes
rankRank your accounts
Read-only
Inspect

Price: its model cost, about $0.30 per company plus $0.30. Never more than max_usd. Ranks the user's own list of companies for the seller: takes domains or a CSV export (Apollo, Clay, a CRM) and the seller (its site or an ICP), collects each company's checked buying signals, screens fit, rates intent from the signals and access from the user's own network (a LinkedIn Connections export, champions, connectors), and orders them: high intent and warm first, then high intent and cold, then keep warm and coming up. Every company comes back somewhere: ranked with its reason, or in another list (keep warm, coming up, partner or later, customer, dropped) with why; each list shows its top five and its count. Up to 25 companies; takes minutes per company. Use when: "rank these accounts for ", "which of my accounts should I work first", "prioritize this list", "score my Apollo export", "who on my target list is in market". Skip when: the user has no list and wants the market searched, wants one fact about one company, or wants anyone contacted: this never sends anything. Names from the user's network stay local and never reach a model. Every signal was checked against its page. Each account shows its three strongest signals; full is the file with every signal, path and field. used lists which of the user's own facts shaped the order, apart from the checked signals. context takes the user's own facts about their company; the saved seller profile fills fields left out. With the ICP or buyer roles still unknown, the server asks the user for them (MCP elicitation) or returns the questions without running. Charged its model cost from the user's credits (the paid APIs it runs only when paid names them, TheirStack and Monid, are our cost): at most max_usd (default: the quote tool's figure) and within their monthly limit, reserved before it runs. If the next step would pass its budget, it stops and returns what it has, with stopped: "budget", charged only for that; budget says what was reserved and charged. A call quoted over max_usd is refused. A call quoted over the user's confirm amount (default $1) asks the user first through the client (MCP elicitation); a client without that gets a confirm result with the cost and a one-use token, and a repeat call with the same arguments and confirm_token runs it. On the hosted server, rank over 10+ companies and verify over 25+ rows run as a job: the result is job, its id and status. Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in Flags with the attack family.

ParametersJSON Schema
NameRequiredDescriptionDefault
csvNoA CSV export as text (Apollo, Clay, a CRM); its domain, website or work-email column gives the companies
icpNo
daysNo
paidNo
sellerNo
contextNoThe user's own facts about their company: who they are, the company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions. Fields left out come from the saved seller profile. These are the user's inputs, not findings.
max_usdNoMost this call may spend, in USD; default its quote. A call quoted over it is refused.
vendorsNo
championsNo
companiesNoThe domains to rank, e.g. ["acme.com", "globex.com"]
customersNo
openDealsNo
connectorsNo
evaluatorsNo
connectionsNo
doNotContactNo
includeShownNo
confirm_tokenNoThe token a previous call returned in `confirm`, standing for the user's agreement to that cost; one use, same arguments.
priorContactsNo
previousConnectionsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
icpNo
jobNo
costNo
fullNoThe full result on disk: every signal, path and field
nextNo
paidNo
workNo
sinceNo
todayNo
budgetNo
repeatNo
droppedNo
profileNo
sourcesNo
stoppedNo
accountsNo
comingUpNo
judgedByNo
keepWarmNo
needsCreditNo
partnerOrLaterNo
existingCustomersNo
seller_profileSave seller profileInspect

Price: free. Saves and reads the user's facts about their own company, kept in the user's SalesMap workspace (one entry per seller site, seen by that workspace only): who they are, company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions, do-not-contact. Every seller tool on this server starts from it. Returns the saved profile, the key fields still missing (ICP, buyer roles) and a question for each. Use when: "remember that we sell to …", "save or update my ICP / buyer roles / customers", "our competitors are …", "don't target these accounts", "what do you know about my company / my profile", before the first list for a seller. Skip when: the question is about a prospect company, not the user's own. The saved fields are the user's inputs, not findings. Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in Flags with the attack family.

ParametersJSON Schema
NameRequiredDescriptionDefault
sellerYesThe user's own company site, e.g. getklira.com
contextNoFields to save, merged into the saved profile field by field. Omit to read.

Output Schema

ParametersJSON Schema
NameRequiredDescription
costNo
pathYes
savedYes
sellerYes
missingYes
profileYes
questionsYes
set_limitsSet spending limitsInspect

Free. Sets the user's own monthly spending limit for SalesMap in USD (rolling 30 days); null removes it. Until set: $250 once the workspace has topped up, else $100. There is no daily or weekly limit. No call ever spends past the limit or the credit balance. Also the confirm amount: a paid call quoted over it asks the user first (default $1; 0 asks every time; null never asks). Returns the limits with what's spent and left. Use when: "set a monthly budget", "cap my spend at $50 a month", "raise my limit", "remove the limit", "stop asking me before each call". Skip when: the user only wants to see their limits, not change them. Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in Flags with the attack family.

ParametersJSON Schema
NameRequiredDescriptionDefault
confirmUsdNoUSD; paid calls quoted over it need the user's yes first; 0 means every call; null means none; omitted, it is kept
monthlyUsdNoUSD; null removes this limit; omit to keep it

Output Schema

ParametersJSON Schema
NameRequiredDescription
costNo
frozenYes
windowsYes
confirmUsdYes
creditsUsdYes
canSpendUsdYes
signalsGet buying signals
Read-only
Inspect

Price: $0.15 per checked signal returned ($0.10 with callerSearch); a company with none is free. Never more than max_usd. Checked buying signals for companies the user names (up to 5): each company's hiring, funding, leadership moves, tools, AI adoption and news in the window, newest first, each with rating, source, URL, day, whether it passed verification, and match, the evidence it is about that company (the source is on its domain or links it, its canonical link, its own job board, a record keyed by its domain). Namesakes, subsidiaries and parents are dropped with a reason. A name is resolved to a domain only when that site's own title is the name; otherwise ask for the domain. Use when: "what's new at acme.com", "any buying signals for these 3 companies", "signals for acme.com and example.com", "is acme.com hiring or raising", "recent news at ", "only funding and leadership signals for ". Skip when: the user has no companies yet and wants a list of who to sell to, wants only the tool stack, or wants one given signal confirmed against its source; never contacts anyone or writes to a CRM. Dropped items are not facts about the company. Takes a few minutes per company; steps are cached. With callerSearch: true the news search is done by the calling agent: the first call returns work, one search prompt per company, and a second call with the same companies and news (the items each search found) completes it. Each item is verified by our code; refused ones come back in dropped with the failed rule. context takes the user's own facts about their company; the saved seller profile fills fields left out. With the ICP or buyer roles still unknown, the server asks the user for them (MCP elicitation) or returns the questions without running. Charged per result returned from the user's credits, never for a miss (the paid APIs it runs only when paid names them, TheirStack and Monid, are our cost): at most max_usd (default: the quote tool's figure) and within their monthly limit, reserved before it runs. If the next step would pass its budget, it stops and returns what it has, with stopped: "budget", charged only for that; budget says what was reserved and charged. A call quoted over max_usd is refused. A call quoted over the user's confirm amount (default $1) asks the user first through the client (MCP elicitation); a client without that gets a confirm result with the cost and a one-use token, and a repeat call with the same arguments and confirm_token runs it. With callerSearch the first call (work) is free, and the second is charged $0.10 per verified signal instead of model cost ($0.08 with events from eventsWork too); refused items and unverified signals are free. Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in Flags with the attack family.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoWindow in days, at most and by default 90
newsNoWith callerSearch: each company's domain → the `items` its `work` prompt returned
onlyNoSignal families to keep: hiring, funding, corporate, tools, ai, leadership, product, competitor, intent, or a catalog family or id
paidNoPaid sources to add (Monid for LinkedIn posts by people at the company, treg for classified news and headcount), each under its budget. Default none
eventsNoWith callerSearch: the `items` the `eventsWork` prompt returned (event pages the calling agent read). Omit it and we search events ourselves
sellerNoThe seller's site: hiring and tools are then read for its buyers and products; omit for every signal
contextNoThe user's own facts about their company: who they are, the company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions. Fields left out come from the saved seller profile. These are the user's inputs, not findings.
max_usdNoMost this call may spend, in USD; default its quote. A call quoted over it is refused.
companiesYesUp to 5 companies: domains (acme.com), or names, resolved to a domain only when its home page calls itself that name
callerSearchNoThe calling agent does the news web search, where the server offers it. The first call returns `work` (one search prompt per company); a second call with `news` carries the items found. Every item is still checked against its page by our code
confirm_tokenNoThe token a previous call returned in `confirm`, standing for the user's agreement to that cost; one use, same arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
costNo
workNo
sinceYes
todayYes
budgetNo
stoppedNo
shapedByYes
companiesYes
eventsWorkNo
needsCreditNo
tech_scanScan a company's tools
Read-only
Inspect

Price: free. Which tools a company runs, from its DNS records, certificate-transparency logs, home page and its own job posts. Each finding names the trace it came from and the earliest dated evidence (firstSeen). Use when: "what stack does acme.com use", "do they use Okta / Salesforce / OpenAI", "what tools does this company run", "did they just start cold outbound" (outbound: true). Skip when: the user wants people, emails or phone numbers, or wants the company contacted; this tool only reads public records. reached lists each source and whether it was read; a source that was not reached is unknown, not "none". Job findings include a reading: in_use, considering, migration or named. Only in_use supports usage; considering, migration and named are mentions, not proof the company runs the tool. Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in Flags with the attack family.

ParametersJSON Schema
NameRequiredDescriptionDefault
onlyNoProducts or categories to look for; a category also matches as a prefix ("ai_" is the whole AI stack). Omit for every detector.
domainYesThe company domain, e.g. acme.com (no path)
outboundNoAlso look for lookalike sending domains (getacme.com) that redirect to the site: three or more in one week means cold outbound just started.

Output Schema

ParametersJSON Schema
NameRequiredDescription
costNo
domainYes
reachedYes
findingsYes
observedAtYes
verifyFact-check claims
Read-only
Inspect

Price: $0.08 per claim confirmed or contradicted; unverifiable claims are free. Never more than max_usd. Checks claims about companies field by field against public sources: a list of claims, a draft (an email, a post or an agent answer about one company, split into its claims), or an Apollo, Clay or CRM CSV export. Each field comes back confirmed, contradicted (with the source found), unverifiable or insufficient identity, with source URL, quote and confidence; each CSV row gets one action (keep, recheck, review, drop) and its cost. sample: N checks N random rows and reports per-field error rates with 95% intervals and the cost of checking the whole file. Free primary records settle what they can: a raise against SEC Form D filings, hiring against the company's own careers board, a public company's HQ, listing and revenue against EDGAR; a dead cited link is re-read where it moved (sitemap, then the Wayback Machine). Use when: "is this true about acme.com", "fact-check this email before I send it", "how accurate is my Apollo export", "check these rows", "which of these contacts are stale". Skip when: the user asks whether an email address is deliverable, for a phone number, for a LinkedIn profile pulled, or for anything sent to a prospect or written to a CRM: none of that is checking, and this tool does none of it. Unverifiable means no source settled the field either way: it is neither confirmed nor contradicted. Charged per result returned from the user's credits, never for a miss: at most max_usd (default: the quote tool's figure) and within their monthly limit, reserved before it runs. If the next step would pass its budget, it stops and returns what it has, with stopped: "budget", charged only for that; budget says what was reserved and charged. A call quoted over max_usd is refused. A call quoted over the user's confirm amount (default $1) asks the user first through the client (MCP elicitation); a client without that gets a confirm result with the cost and a one-use token, and a repeat call with the same arguments and confirm_token runs it. On the hosted server, rank over 10+ companies and verify over 25+ rows run as a job: the result is job, its id and status. Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in Flags with the attack family.

ParametersJSON Schema
NameRequiredDescriptionDefault
csvNoAn Apollo, Clay or CRM CSV export, as text
draftNoAn email, a post or an agent answer about one company; each claim in it is checked
claimsNo
sampleNoCheck only N random rows and report per-field error rates with 95% Wilson intervals
mappingNoCSV header → import field; omitted, the Apollo preset or a best guess
max_usdNoMost this call may spend, in USD; default its quote. A call quoted over it is refused.
confirm_tokenNoThe token a previous call returned in `confirm`, standing for the user's agreement to that cost; one use, same arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
jobNo
costNo
rowsNo
budgetNo
fieldsNo
sampleNo
costUsdNo
stoppedNo
needsCreditNo
verify_signalVerify a buying signal
Read-only
Inspect

Price: free. Checks one buying signal against its source page: the quote must be on the page, the page must be about the company, and the event date must be printed near the quote (or be the page's own date) and fall within the last 90 days. Returns pass with the date and source tier (primary, wire, major, derivative), or the rule it failed (date, stale, fetch, quote, company). Use when: "is this signal real", "confirm the quote is on the page", "check this claim about acme.com", "verify this news / job post / funding round", before putting a signal in front of a seller. Skip when: there is no source URL and verbatim quote to check. A signal that fails is not confirmed by its page; the result names the rule it failed. Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in Flags with the attack family.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe page the signal comes from
dateYesThe event date as printed on the page, or YYYY-MM-DD
kindNoThe signal-catalog id, e.g. funding_round, job_posting_buyer_role; only upcoming kinds (event_sponsorship, regulation_deadline…) may date in the future
quoteYesVerbatim text from that page
domainYesThe company domain, e.g. acme.com (no path)
windowDaysNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlNo
costNo
dateNo
passYes
ruleNo
tierNo
detailNo
publishedAtNo
warm_pathsFind warm paths
Read-only
Inspect

Price: $1.50 per company with at least one checked contact; matches from the user's own Connections.csv are free. Never more than max_usd. How the user can reach a buyer at up to 5 named companies, without automating LinkedIn: per company and buyer role, a LinkedIn people-search URL for the user to open (filtered to that company, the role's title, and 1st- and 2nd-degree network, where LinkedIn shows the mutual connections), first-degree paths from the user's own Connections.csv, and people that public pages (the company's team or leadership page, press releases, job posts naming the hiring manager) name in the role (plus Founder / CEO unless the company is known to have over 1,000 people), each marked inferred with its source URL and a quote checked on that page. Also lists paths the user confirmed earlier (the seller profile's warmPaths). Use when: "go into my LinkedIn and find mutuals", "who do I know at acme.com", "warm intro to the Head of Ops at ", "find mutual connections at these accounts", "who is the buyer at acme.com and how do I get introduced", "2nd-degree connections at ". Skip when: the user wants a ranked list of who to sell to, or wants a profile pulled, a connection request, a message, an email or phone number: this never opens, reads or acts on LinkedIn; the user clicks the links. The search links are for the user to open in their own browser; this tool never fetches them. First-degree names come from the user's own export and stay local. Inferred people are leads to confirm, not facts about who holds the role; no email addresses are returned. context takes the user's own facts about their company; the saved seller profile fills fields left out. With the ICP or buyer roles still unknown, the server asks the user for them (MCP elicitation) or returns the questions without running. Charged per result returned from the user's credits, never for a miss: at most max_usd (default: the quote tool's figure) and within their monthly limit, reserved before it runs. If the next step would pass its budget, it stops and returns what it has, with stopped: "budget", charged only for that; budget says what was reserved and charged. A call quoted over max_usd is refused. A call quoted over the user's confirm amount (default $1) asks the user first through the client (MCP elicitation); a client without that gets a confirm result with the cost and a one-use token, and a repeat call with the same arguments and confirm_token runs it. Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in Flags with the attack family.

ParametersJSON Schema
NameRequiredDescriptionDefault
rolesNoBuyer roles to search for; default the seller’s buyerRoles
sellerNoThe user's own company site, for its saved buyer roles
contextNoThe user's own facts about their company: who they are, the company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions. Fields left out come from the saved seller profile. These are the user's inputs, not findings.
max_usdNoMost this call may spend, in USD; default its quote. A call quoted over it is refused.
inferredNoLook for named people in public pages (default true); false gives links and first-degree paths only, with no model or search
companiesYesCompany domains, e.g. ["acme.com", "example.com"]
connectionsNoThe user's LinkedIn Connections.csv (LinkedIn's data export, under Settings → Data privacy), for first-degree paths; names stay on this machine. Locally, ~/.salesmap/Connections.csv when omitted
confirm_tokenNoThe token a previous call returned in `confirm`, standing for the user's agreement to that cost; one use, same arguments.

Output Schema

ParametersJSON Schema
NameRequiredDescription
costNo
rolesYes
todayYes
budgetNo
stoppedNo
shapedByYes
companiesYes
needsCreditNo
watchManage past-lead watchlist
Destructive
Inspect

Price: adding, listing and removing are free; a check is $3.00 per alert with a checked signal, quiet re-checks free. A watchlist of the user's past leads (closed-lost, no decision, stalled, churned, prior contact), kept in the user's SalesMap workspace (seen by that workspace only): add, list or remove accounts with the outcome, date and lost reason (budget, timing, competitor, no_champion, no_decision, other), or import a Salesforce, HubSpot or Pipedrive export of lost opportunities. check re-checks every account now: its checked signals in the last 90 days and what changed in its tool stack, and alerts when a signal answers the lost reason (budget: funding or buyer-team hiring; timing: the revisit date passed, a fiscal-year or renewal window; competitor: that competitor leaves the stack, its renewal or complaints; no_champion: a new leader in the buyer role or a past champion moved in), or when the account scoring would now rate it high intent. An account is never alerted twice for the same signal. Use when: "watch these lost deals", "tell me when acme.com is worth another try", "import my closed-lost opportunities", "which past leads are ready again", "re-check my watchlist", "check my lost deals weekly". Skip when: the user wants new accounts, signals for companies they're not watching, or anyone contacted: this never emails, messages or writes to a CRM. Recurring checks are off by default: schedule with every weekly or daily turns them on. check with due (for a cron line) runs only when on and due. Outcomes and reasons are the user's own deal history. Hosted: check queues one run on SalesMap's server and returns at once, its alerts listed later with the watchlist's alerts; it is charged $3.00 per alert with a checked signal, within the user's limits and credits, and quiet checks are free. schedule with email: true sends the weekly alert email to the signed-in user only. csv and connections are text, never a path. Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in Flags with the attack family.

ParametersJSON Schema
NameRequiredDescriptionDefault
csvNoimport: a CRM export as CSV text or a path to the file
dueNocheck: run only when a schedule is on and due (for cron)
dateNoadd / import default: when it was lost or last touched (YYYY-MM-DD); today if omitted
noteNo
emailNoschedule: the weekly alert email (hosted list only)
everyNoschedule: off (default), weekly or daily
actionNolist
reasonNoadd / import default: why it was lost
sellerNoThe user's own site: signals read hiring and tools for its buyers
domainsNoadd / remove: company domains
outcomeNoadd / import default: how it ended
budgetUsdNocheck: the most this sweep may spend on models; it stops before an account that would go over and returns what it found, the rest first next time
buyerRoleNoadd: the role that was missing (no_champion)
championsNoschedule: LinkedIn profile URLs of the seller's past champions
revisitOnNoadd: the day they said to come back (timing)
competitorNoadd: the competitor they chose (name or domain)
connectionsNocheck: the user's current LinkedIn Connections.csv (path or text), diffed against the last one for champion moves; stays local

Output Schema

ParametersJSON Schema
NameRequiredDescription
costNo
pathYes
countYes
emailYes
everyYes
alertsNo
queuedNo
sellerNo
checkedNo
skippedNo
accountsYes
billableNo
importedNo
uncheckedNo
watch_changesGet watchlist alertsInspect

Price: free. The watchlist's alerts: past leads where a checked signal now answers why the deal was lost, or that the account scoring would now rate high intent, newest first, each with its signals, sources and dates. By default only alerts not pulled before, then marked seen. Use when: "any of my lost deals ready again", "what changed on my watchlist", "watchlist alerts this week", "which past leads should I revisit". Skip when: the user wants to add or re-check accounts, or new accounts. Never contacts anyone. An empty list means a quiet week, not an error. Alerts stay kept after they are pulled; since or all lists them again. Hosted: notice says why a scheduled check didn't run (a spending limit or the credits). Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in Flags with the attack family.

ParametersJSON Schema
NameRequiredDescriptionDefault
allNoEvery alert kept, seen or not
sinceNoEvery alert on or after this day, seen or not

Output Schema

ParametersJSON Schema
NameRequiredDescription
costNo
pathYes
everyYes
alertsYes
noticeNo
lastRunNo
whoamiShow account and credit
Read-only
Inspect

Free. Which SalesMap workspace and API key this server is using; the credit balance; and the user's monthly spending limit (rolling 30 days; null = no limit) with what's spent in it and what's left. canSpendUsd is the most one call can spend now. Use when: "how much budget do I have left", "what are my limits", "which account is this", before a large paid call. Skip when: the user wants the price of one specific call. Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in Flags with the attack family.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
costNo
frozenYes
windowsYes
keyPrefixYes
confirmUsdYes
creditsUsdYes
canSpendUsdYes
workspaceIdYes

Tool Schema Changelog

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

  1. 1 tool update
    • Changedtech_scan1 field changed
      • addedOutput schema / properties / findings / items / properties / reading
        Added value: +{
        +  "enum": [
        +    "in_use",
        +    "considering",
        +    "migration",
        +    "named"
        +  ],
        +  "type": "string"
        +}
  2. 7 tool updates
    • Changeddiscover1 field changed
      • addedOutput schema / properties / needsCredit
        Added value: +{
        +  "type": "string"
        +}
    • Changedevents1 field changed
      • addedOutput schema / properties / needsCredit
        Added value: +{
        +  "type": "string"
        +}
    • Changedplaybook1 field changed
      • addedOutput schema / properties / needsCredit
        Added value: +{
        +  "type": "string"
        +}
    • Changedrank1 field changed
      • addedOutput schema / properties / needsCredit
        Added value: +{
        +  "type": "string"
        +}
    • Changedsignals1 field changed
      • addedOutput schema / properties / needsCredit
        Added value: +{
        +  "type": "string"
        +}
    • Changedverify1 field changed
      • addedOutput schema / properties / needsCredit
        Added value: +{
        +  "type": "string"
        +}
    • Changedwarm_paths1 field changed
      • addedOutput schema / properties / needsCredit
        Added value: +{
        +  "type": "string"
        +}
  3. 10 tool updates
    • Changeddiscover5 fields changed
      • changedInput schema / properties / callerJudge / description
        Previous value: -"With callerSearch: your own model also makes the judgments (fit screen and ranking text, job-post extraction, competitor site checks; a playbook's write-up and claim check), returned as `work` like the searches. What it judged is labelled `judgedBy: \"caller\"`; every signal is still checked against its page by our code. Hosted, this happens on its own while our models are unavailable; locally it is always so"New value: +"With callerSearch: the calling agent's model also makes the judgments (fit screen and ranking text, job-post extraction, competitor site checks; a playbook's write-up and claim check), returned as `work` like the searches. What it judged is labelled `judgedBy: \"caller\"`; every signal is still checked against its page by our code. Hosted, this happens on its own while our models are unavailable; locally it is always so"
      • changedInput schema / properties / callerSearch / description
        Previous value: -"Your own agent runs the searches (the seller's offer and ICP draft, competitors, tool list, candidate companies, each company's news, the events search), where the server offers it; on the hosted server it is the default. A call returns `work` until every search has an answer: run each prompt with your web search, then call again with the same input and `searches`. Our code still checks every page, quote and date"New value: +"The calling agent does the searches (the seller's offer and ICP draft, competitors, tool list, candidate companies, each company's news, the events search), where the server offers it; on the hosted server it is the default. A call returns `work` (search prompts with ids) until every search has an answer; a repeat call with the same input and `searches` carries the answers. Our code still checks every page, quote and date"
      • changedInput schema / properties / confirm_token / description
        Previous value: -"The token a previous call returned in `confirm`, sent only after the user agreed to that cost; one use, same arguments."New value: +"The token a previous call returned in `confirm`, standing for the user's agreement to that cost; one use, same arguments."
      • changedInput schema / properties / context / description
        Previous value: -"What you already know about the user and their company, from your memory, CLAUDE.md and this conversation: who they are, the company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions. Fill every field you know before calling; leave out what you don't, never invent it. The saved profile (seller_profile) fills the rest. These are the user's inputs, not findings."New value: +"The user's own facts about their company: who they are, the company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions. Fields left out come from the saved seller profile. These are the user's inputs, not findings."
      • changedInput schema / properties / context / properties / warmPaths / description
        Previous value: -"Warm paths the user confirmed (s48): company domain and who or how, e.g. \"Jane Doe (VP Ops), via Sam Lee\". Saving replaces the list: pass the whole list. Stays local; never sent to a model"New value: +"Warm paths the user confirmed (s48): company domain and who or how, e.g. \"Jane Doe (VP Ops), via Sam Lee\". A save replaces the whole list. Stays local; never sent to a model"
    • Changedevents3 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"The token a previous call returned in `confirm`, sent only after the user agreed to that cost; one use, same arguments."New value: +"The token a previous call returned in `confirm`, standing for the user's agreement to that cost; one use, same arguments."
      • changedInput schema / properties / context / description
        Previous value: -"What you already know about the user and their company, from your memory, CLAUDE.md and this conversation: who they are, the company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions. Fill every field you know before calling; leave out what you don't, never invent it. The saved profile (seller_profile) fills the rest. These are the user's inputs, not findings."New value: +"The user's own facts about their company: who they are, the company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions. Fields left out come from the saved seller profile. These are the user's inputs, not findings."
      • changedInput schema / properties / context / properties / warmPaths / description
        Previous value: -"Warm paths the user confirmed (s48): company domain and who or how, e.g. \"Jane Doe (VP Ops), via Sam Lee\". Saving replaces the list: pass the whole list. Stays local; never sent to a model"New value: +"Warm paths the user confirmed (s48): company domain and who or how, e.g. \"Jane Doe (VP Ops), via Sam Lee\". A save replaces the whole list. Stays local; never sent to a model"
    • Changedplaybook6 fields changed
      • changedInput schema / properties / callerJudge / description
        Previous value: -"With callerSearch: your own model also makes the judgments (fit screen and ranking text, job-post extraction, competitor site checks; a playbook's write-up and claim check), returned as `work` like the searches. What it judged is labelled `judgedBy: \"caller\"`; every signal is still checked against its page by our code. Hosted, this happens on its own while our models are unavailable; locally it is always so"New value: +"With callerSearch: the calling agent's model also makes the judgments (fit screen and ranking text, job-post extraction, competitor site checks; a playbook's write-up and claim check), returned as `work` like the searches. What it judged is labelled `judgedBy: \"caller\"`; every signal is still checked against its page by our code. Hosted, this happens on its own while our models are unavailable; locally it is always so"
      • changedInput schema / properties / callerSearch / description
        Previous value: -"Your own agent runs the searches (the seller's offer and ICP draft, competitors, tool list, candidate companies, each company's news, the events search), where the server offers it; on the hosted server it is the default. A call returns `work` until every search has an answer: run each prompt with your web search, then call again with the same input and `searches`. Our code still checks every page, quote and date"New value: +"The calling agent does the searches (the seller's offer and ICP draft, competitors, tool list, candidate companies, each company's news, the events search), where the server offers it; on the hosted server it is the default. A call returns `work` (search prompts with ids) until every search has an answer; a repeat call with the same input and `searches` carries the answers. Our code still checks every page, quote and date"
      • changedInput schema / properties / confirm_token / description
        Previous value: -"The token a previous call returned in `confirm`, sent only after the user agreed to that cost; one use, same arguments."New value: +"The token a previous call returned in `confirm`, standing for the user's agreement to that cost; one use, same arguments."
      • changedInput schema / properties / connections / description
        Previous value: -"A LinkedIn Connections.csv, for warm paths; names stay local"New value: +"A LinkedIn Connections.csv, for warm paths; names stay local. Locally, ~/.salesmap/Connections.csv when omitted"
      • changedInput schema / properties / context / description
        Previous value: -"What you already know about the user and their company, from your memory, CLAUDE.md and this conversation: who they are, the company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions. Fill every field you know before calling; leave out what you don't, never invent it. The saved profile (seller_profile) fills the rest. These are the user's inputs, not findings."New value: +"The user's own facts about their company: who they are, the company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions. Fields left out come from the saved seller profile. These are the user's inputs, not findings."
      • changedInput schema / properties / context / properties / warmPaths / description
        Previous value: -"Warm paths the user confirmed (s48): company domain and who or how, e.g. \"Jane Doe (VP Ops), via Sam Lee\". Saving replaces the list: pass the whole list. Stays local; never sent to a model"New value: +"Warm paths the user confirmed (s48): company domain and who or how, e.g. \"Jane Doe (VP Ops), via Sam Lee\". A save replaces the whole list. Stays local; never sent to a model"
    • Changedquote1 field changed
      • changedInput schema / properties / input / description
        Previous value: -"That tool's arguments, as you would call it"New value: +"That tool's arguments, as in a call to it"
    • Changedrank3 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"The token a previous call returned in `confirm`, sent only after the user agreed to that cost; one use, same arguments."New value: +"The token a previous call returned in `confirm`, standing for the user's agreement to that cost; one use, same arguments."
      • changedInput schema / properties / context / description
        Previous value: -"What you already know about the user and their company, from your memory, CLAUDE.md and this conversation: who they are, the company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions. Fill every field you know before calling; leave out what you don't, never invent it. The saved profile (seller_profile) fills the rest. These are the user's inputs, not findings."New value: +"The user's own facts about their company: who they are, the company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions. Fields left out come from the saved seller profile. These are the user's inputs, not findings."
      • changedInput schema / properties / context / properties / warmPaths / description
        Previous value: -"Warm paths the user confirmed (s48): company domain and who or how, e.g. \"Jane Doe (VP Ops), via Sam Lee\". Saving replaces the list: pass the whole list. Stays local; never sent to a model"New value: +"Warm paths the user confirmed (s48): company domain and who or how, e.g. \"Jane Doe (VP Ops), via Sam Lee\". A save replaces the whole list. Stays local; never sent to a model"
    • Changedseller_profile2 fields changed
      • changedInput schema / properties / context / properties / warmPaths / description
        Previous value: -"Warm paths the user confirmed (s48): company domain and who or how, e.g. \"Jane Doe (VP Ops), via Sam Lee\". Saving replaces the list: pass the whole list. Stays local; never sent to a model"New value: +"Warm paths the user confirmed (s48): company domain and who or how, e.g. \"Jane Doe (VP Ops), via Sam Lee\". A save replaces the whole list. Stays local; never sent to a model"
      • changedOutput schema / properties / profile / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "buyerRoles": {
        -        "description": "Roles that buy or own the problem, e.g. \"Head of RevOps\", \"CISO\"",
        -        "items": {
        -          "maxLength": 200,
        -          "minLength": 1,
        -          "type": "string"
        -        },
        -        "maxItems": 500,
        -        "type": "array"
        -      },
        -      "company": {
        -        "description": "The seller company's name",
        -        "maxLength": 200,
        -        "type": "string"
        -      },
        -      "competitors": {
        -        "description": "Competitors, as domains or names: never targeted",
        -        "items": {
        -          "maxLength": 200,
        -          "minLength": 1,
        -          "type": "string"
        -        },
        -        "maxItems": 500,
        -        "type": "array"
        -      },
        -      "customers": {
        -        "description": "Current customers, as domains (acme.com) or names: never targeted",
        -        "items": {
        -          "maxLength": 200,
        -          "minLength": 1,
        -          "type": "string"
        -        },
        -        "maxItems": 500,
        -        "type": "array"
        -      },
        -      "doNotContact": {
        -        "description": "Companies the user said never to contact (domains)",
        -        "items": {
        -          "maxLength": 200,
        -          "minLength": 1,
        -          "type": "string"
        -        },
        -        "maxItems": 500,
        -        "type": "array"
        -      },
        -      "employees": {
        -        "additionalProperties": false,
        -        "description": "Headcount band the seller can close, when the user has said",
        -        "properties": {
        -          "max": {
        -            "maximum": 9007199254740991,
        -            "minimum": 2,
        -            "type": "integer"
        -          },
        -          "min": {
        -            "maximum": 9007199254740991,
        -            "minimum": 1,
        -            "type": "integer"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "exclusions": {
        -        "description": "Companies or kinds of company to leave out",
        -        "items": {
        -          "maxLength": 200,
        -          "minLength": 1,
        -          "type": "string"
        -        },
        -        "maxItems": 500,
        -        "type": "array"
        -      },
        -      "icp": {
        -        "description": "Who the ideal customer is: company type, industry, size, stage, region",
        -        "maxLength": 1000,
        -        "type": "string"
        -      },
        -      "lost": {
        -        "description": "Deals lost or churned (domains or names), with why if known",
        -        "items": {
        -          "maxLength": 200,
        -          "minLength": 1,
        -          "type": "string"
        -        },
        -        "maxItems": 500,
        -        "type": "array"
        -      },
        -      "notes": {
        -        "description": "Anything else the user said that should shape the list",
        -        "maxLength": 2000,
        -        "type": "string"
        -      },
        -      "openDeals": {
        -        "description": "Companies in an open deal (domains): left out",
        -        "items": {
        -          "maxLength": 200,
        -          "minLength": 1,
        -          "type": "string"
        -        },
        -        "maxItems": 500,
        -        "type": "array"
        -      },
        -      "product": {
        -        "description": "What the seller sells, in a sentence or two",
        -        "maxLength": 1000,
        -        "type": "string"
        -      },
        -      "regions": {
        -        "description": "Regions or countries the seller sells into",
        -        "items": {
        -          "maxLength": 200,
        -          "minLength": 1,
        -          "type": "string"
        -        },
        -        "maxItems": 500,
        -        "type": "array"
        -      },
        -      "segments": {
        -        "description": "Kinds of company the seller sells to, e.g. \"Marketing agencies\", \"B2B SaaS\"",
        -        "items": {
        -          "maxLength": 200,
        -          "minLength": 1,
        -          "type": "string"
        -        },
        -        "maxItems": 500,
        -        "type": "array"
        -      },
        -      "user": {
        -        "additionalProperties": false,
        -        "description": "Who the user is: their name and role at the seller",
        -        "properties": {
        -          "name": {
        -            "maxLength": 120,
        -            "type": "string"
        -          },
        -          "role": {
        -            "maxLength": 120,
        -            "type": "string"
        -          }
        -        },
        -        "type": "object"
        -      },
        -      "warmPaths": {
        -        "description": "Warm paths the user confirmed (s48): company domain and who or how, e.g. \"Jane Doe (VP Ops), via Sam Lee\". Saving replaces the list: pass the whole list. Stays local; never sent to a model",
        -        "items": {
        -          "additionalProperties": false,
        -          "properties": {
        -            "company": {
        -              "maxLength": 200,
        -              "minLength": 3,
        -              "type": "string"
        -            },
        -            "confirmedAt": {
        -              "format": "date",
        -              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        -              "type": "string"
        -            },
        -            "path": {
        -              "maxLength": 300,
        -              "minLength": 1,
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "company",
        -            "path"
        -          ],
        -          "type": "object"
        -        },
        -        "maxItems": 500,
        -        "type": "array"
        -      },
        -      "won": {
        -        "description": "Deals won (domains or names): the pattern to find more of",
        -        "items": {
        -          "maxLength": 200,
        -          "minLength": 1,
        -          "type": "string"
        -        },
        -        "maxItems": 500,
        -        "type": "array"
        -      }
        -    },
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "buyerRoles": {
        +        "description": "Roles that buy or own the problem, e.g. \"Head of RevOps\", \"CISO\"",
        +        "items": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 500,
        +        "type": "array"
        +      },
        +      "company": {
        +        "description": "The seller company's name",
        +        "maxLength": 200,
        +        "type": "string"
        +      },
        +      "competitors": {
        +        "description": "Competitors, as domains or names: never targeted",
        +        "items": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 500,
        +        "type": "array"
        +      },
        +      "customers": {
        +        "description": "Current customers, as domains (acme.com) or names: never targeted",
        +        "items": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 500,
        +        "type": "array"
        +      },
        +      "doNotContact": {
        +        "description": "Companies the user said never to contact (domains)",
        +        "items": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 500,
        +        "type": "array"
        +      },
        +      "employees": {
        +        "additionalProperties": false,
        +        "description": "Headcount band the seller can close, when the user has said",
        +        "properties": {
        +          "max": {
        +            "maximum": 9007199254740991,
        +            "minimum": 2,
        +            "type": "integer"
        +          },
        +          "min": {
        +            "maximum": 9007199254740991,
        +            "minimum": 1,
        +            "type": "integer"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "exclusions": {
        +        "description": "Companies or kinds of company to leave out",
        +        "items": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 500,
        +        "type": "array"
        +      },
        +      "icp": {
        +        "description": "Who the ideal customer is: company type, industry, size, stage, region",
        +        "maxLength": 1000,
        +        "type": "string"
        +      },
        +      "lost": {
        +        "description": "Deals lost or churned (domains or names), with why if known",
        +        "items": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 500,
        +        "type": "array"
        +      },
        +      "notes": {
        +        "description": "Anything else the user said that should shape the list",
        +        "maxLength": 2000,
        +        "type": "string"
        +      },
        +      "openDeals": {
        +        "description": "Companies in an open deal (domains): left out",
        +        "items": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 500,
        +        "type": "array"
        +      },
        +      "product": {
        +        "description": "What the seller sells, in a sentence or two",
        +        "maxLength": 1000,
        +        "type": "string"
        +      },
        +      "regions": {
        +        "description": "Regions or countries the seller sells into",
        +        "items": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 500,
        +        "type": "array"
        +      },
        +      "segments": {
        +        "description": "Kinds of company the seller sells to, e.g. \"Marketing agencies\", \"B2B SaaS\"",
        +        "items": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 500,
        +        "type": "array"
        +      },
        +      "user": {
        +        "additionalProperties": false,
        +        "description": "Who the user is: their name and role at the seller",
        +        "properties": {
        +          "name": {
        +            "maxLength": 120,
        +            "type": "string"
        +          },
        +          "role": {
        +            "maxLength": 120,
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "warmPaths": {
        +        "description": "Warm paths the user confirmed (s48): company domain and who or how, e.g. \"Jane Doe (VP Ops), via Sam Lee\". A save replaces the whole list. Stays local; never sent to a model",
        +        "items": {
        +          "additionalProperties": false,
        +          "properties": {
        +            "company": {
        +              "maxLength": 200,
        +              "minLength": 3,
        +              "type": "string"
        +            },
        +            "confirmedAt": {
        +              "format": "date",
        +              "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        +              "type": "string"
        +            },
        +            "path": {
        +              "maxLength": 300,
        +              "minLength": 1,
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "company",
        +            "path"
        +          ],
        +          "type": "object"
        +        },
        +        "maxItems": 500,
        +        "type": "array"
        +      },
        +      "won": {
        +        "description": "Deals won (domains or names): the pattern to find more of",
        +        "items": {
        +          "maxLength": 200,
        +          "minLength": 1,
        +          "type": "string"
        +        },
        +        "maxItems": 500,
        +        "type": "array"
        +      }
        +    },
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedset_limits1 field changed
      • changedInput schema / properties / confirmUsd / description
        Previous value: -"USD; paid calls quoted over it ask the user first; 0 asks every time; null never asks; omit to keep it"New value: +"USD; paid calls quoted over it need the user's yes first; 0 means every call; null means none; omitted, it is kept"
    • Changedsignals6 fields changed
      • changedInput schema / properties / callerSearch / description
        Previous value: -"Your own agent runs the news web search, where the server offers it. The first call returns `work` (one prompt per company); run each with your web search and call again with `news`. Every item is still checked against its page by our code"New value: +"The calling agent does the news web search, where the server offers it. The first call returns `work` (one search prompt per company); a second call with `news` carries the items found. Every item is still checked against its page by our code"
      • changedInput schema / properties / confirm_token / description
        Previous value: -"The token a previous call returned in `confirm`, sent only after the user agreed to that cost; one use, same arguments."New value: +"The token a previous call returned in `confirm`, standing for the user's agreement to that cost; one use, same arguments."
      • changedInput schema / properties / context / description
        Previous value: -"What you already know about the user and their company, from your memory, CLAUDE.md and this conversation: who they are, the company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions. Fill every field you know before calling; leave out what you don't, never invent it. The saved profile (seller_profile) fills the rest. These are the user's inputs, not findings."New value: +"The user's own facts about their company: who they are, the company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions. Fields left out come from the saved seller profile. These are the user's inputs, not findings."
      • changedInput schema / properties / context / properties / warmPaths / description
        Previous value: -"Warm paths the user confirmed (s48): company domain and who or how, e.g. \"Jane Doe (VP Ops), via Sam Lee\". Saving replaces the list: pass the whole list. Stays local; never sent to a model"New value: +"Warm paths the user confirmed (s48): company domain and who or how, e.g. \"Jane Doe (VP Ops), via Sam Lee\". A save replaces the whole list. Stays local; never sent to a model"
      • changedInput schema / properties / events / description
        Previous value: -"With callerSearch: the `items` the `eventsWork` prompt returned (event pages your agent read). Omit it and we search events ourselves"New value: +"With callerSearch: the `items` the `eventsWork` prompt returned (event pages the calling agent read). Omit it and we search events ourselves"
      • changedInput schema / properties / paid / description
        Previous value: -"Paid sources to add (Monid for LinkedIn posts by people at the company, treg for classified news and headcount), each under its budget. Default none; pass only when the user asked to spend on it"New value: +"Paid sources to add (Monid for LinkedIn posts by people at the company, treg for classified news and headcount), each under its budget. Default none"
    • Changedverify1 field changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"The token a previous call returned in `confirm`, sent only after the user agreed to that cost; one use, same arguments."New value: +"The token a previous call returned in `confirm`, standing for the user's agreement to that cost; one use, same arguments."
    • Changedwarm_paths4 fields changed
      • changedInput schema / properties / confirm_token / description
        Previous value: -"The token a previous call returned in `confirm`, sent only after the user agreed to that cost; one use, same arguments."New value: +"The token a previous call returned in `confirm`, standing for the user's agreement to that cost; one use, same arguments."
      • changedInput schema / properties / connections / description
        Previous value: -"The user's LinkedIn Connections.csv (Settings → Data privacy → Get a copy of your data), for first-degree paths; names stay on this machine"New value: +"The user's LinkedIn Connections.csv (LinkedIn's data export, under Settings → Data privacy), for first-degree paths; names stay on this machine. Locally, ~/.salesmap/Connections.csv when omitted"
      • changedInput schema / properties / context / description
        Previous value: -"What you already know about the user and their company, from your memory, CLAUDE.md and this conversation: who they are, the company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions. Fill every field you know before calling; leave out what you don't, never invent it. The saved profile (seller_profile) fills the rest. These are the user's inputs, not findings."New value: +"The user's own facts about their company: who they are, the company, product, ICP, buyer roles, customers, competitors, deals won and lost, regions, exclusions. Fields left out come from the saved seller profile. These are the user's inputs, not findings."
      • changedInput schema / properties / context / properties / warmPaths / description
        Previous value: -"Warm paths the user confirmed (s48): company domain and who or how, e.g. \"Jane Doe (VP Ops), via Sam Lee\". Saving replaces the list: pass the whole list. Stays local; never sent to a model"New value: +"Warm paths the user confirmed (s48): company domain and who or how, e.g. \"Jane Doe (VP Ops), via Sam Lee\". A save replaces the whole list. Stays local; never sent to a model"
  4. 17 tool updates
    • First observedai_adoption
    • First observeddiscover
    • First observedevents
    • First observedjob
    • First observedplaybook
    • First observedquote
    • First observedrank
    • First observedseller_profile
    • First observedset_limits
    • First observedsignals
    • First observedtech_scan
    • First observedverify
    • First observedverify_signal
    • First observedwarm_paths
    • First observedwatch
    • First observedwatch_changes
    • First observedwhoami

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to find intent-signaling buyers and run LinkedIn, email, and X outreach from connected accounts while respecting platform limits. Every reply is handed back to a human for approval or decision.
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to discover companies showing buying signals, enrich them with public homepage data, score them against custom rules, and draft review-ready briefs.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables agents to find leads, read buying signals, write and send email and LinkedIn outreach, handle replies, and report results, with built-in safety gates, approvals, limits, and compliance controls.
    5
    Apache 2.0
  • F
    license
    Not graded
    quality
    F
    maintenance
    French real estate data platform for AI agents. Identifies property owners likely to sell and tracks behavioral signals on active listings. Coverage: metropolitan France.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.