{"id":2964887,"recorded_at":"2026-11-04T06:42:01.640880Z","observed_at":"2026-11-04T06:42:01.640681Z","subject_kind":"endpoint","subject":"d4024137-f704-459f-a5f4-c26f2e1c5477","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":8,"tools":[{"description":"Price: The list is free; research is 1 credit per account that qualifies (a sourced in-band size, a supported fit and a checked dated signal or warm path, not returned before); a miss uses none. Never more than max_credits.\nFrom a seller's website to a ranked list of companies to sell to, the strongest buying signals first, each with its reason and how to reach it: 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, adds the market's dated moves at competitors, platforms and regulators (under `market`), and ranks every researched company by its evidence: fresh signal clusters first, then a warm way in from the user's own network (their own connections, champions, connectors), a sourced size inside the band and a fit the facts show. Each account carries its fit, the buyer role to contact, the angle, what to watch out for and `checkFirst` (the gaps: unknown or out-of-band size, no checked signal or none showing a need, no fit shown in its facts, no way in, each of the profile's `disqualifiers` a quoted source shows it meets, or not checked); `intent` (high: a signal in the last 30 days showing one of the seller's needs, nothing against it; medium: one in the last 45 days; low: the rest) and `sizeLine` are the accounts page's labels, and the order is the ranking; high means buying signals, not a readiness to buy. Size, fit, intent and a met disqualifier (`disqualified`, ranked last and never charged) rank and flag rather than drop unless `hard` asks; existing customers and what was dropped and why come back as top five with counts. Takes minutes per company; steps are cached, so a rerun is fast.\nUse when: \"find accounts for <seller site>\", \"who should I sell to\", \"who should <seller site> sell to right now\", \"which accounts are in market\", \"rank my list of target accounts\", \"which of my own accounts should I work first\", \"who in my network can introduce me to a buyer\", \"who do I know at <company>\", \"write me a playbook for <seller site>\", \"give me a playbook for <seller>\", \"top 3 accounts with openers\", \"who should I email this week and what do I say\", \"draft outreach for my best accounts\".\nSkip when: the question is one fact about one company (what software or vendors it runs, its DNS records or certificate logs, whether it ships an MCP server or is serious about LLMs), one news item, quote, claim or row to verify or fact-check, a draft of the user's own to check, whether an address is valid or deliverable, a mobile or phone number, LinkedIn profiles pulled or scraped, mutuals found by browsing LinkedIn, an RSVP or registration, events, conferences or meetups to attend, a watchlist of lost deals, facts about the user's own company to save or remember, or anything sent or written into a CRM (Salesforce, HubSpot) as leads: this never contacts anyone, writes no emails and writes nowhere but its own file.\n`research` sets how deep it goes: 0 (the default) ranks every company found on the facts in hand and stops (`listed`: where each was found and what was not checked); 1 to 10 researches that many of the top ones (fit screen, signals, the write-up and contacts), working further down the ranked list until that many qualify; `companies` researches the ones named instead.\nFree sources first; a paid company-data lookup (company records through our data providers) runs only for what they left open, under its budget, and only where the run allows paid sources. `paid` in the result is what it cost and each account's `foundBy` says which source found it.\nA 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 write-up. 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.credits` (hosted) is what finding that out used. `includeShown` returns the earlier companies too.\n`narrow`: set when the ICP's size band spans two orders of magnitude, too broad to rank well. `narrow.stopped`: nothing was researched or charged, since the band was drafted; `narrow.questions` are what narrows it (size, stage, buying trigger). Not stopped: the band is the user's own, flagged.\n`contacted`: companies the user already reached (`domain`, `lastAt` as the last day), from their own records. One reached in the last 30 days ranks below the uncontacted ones of its tier with \"Contacted <date>\" in its reason and `checkFirst`; an older one keeps its place and shows the date. It is never a drop and leaves the charge unchanged.\n`evidence`: passages the user found on a public page (its URL, the quote verbatim, the date as printed); each is checked against its page before it counts as a signal on that company, and is never what makes an account charged. Each failed passage comes back under `evidence` with the rule it failed.\nNames from the user's network stay local and never reach a model. Every signal was checked against its page. Each account shows its five strongest signals and a count per signal family; `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.\n`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.\nOn this server the ranked list (`research` 0, the default) is free: one new list a day per workspace, the same day's list again at no cost, `nextListAt` saying when the next new one can start; `listed` holds its first 25 rows and `more` counts the rest, on the accounts page (`accountsUrl`). `research` 1 to 10 researches the top of that list (running the list first when there is none), `companies` the ones named: 1 credit per account that qualifies, from the user's credits, never for a miss (the data sources it pays for are our cost), at most `max_credits` 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. A result that used credits carries `cost.line`, the one credits line for the user. A call quoted over max_credits is refused. Out of credit, nothing runs and the reply carries `buyUrl`, the page to buy the credits missing. By default every research call asks the user first through the client (MCP elicitation; the user can raise the threshold with set_limits); a client without that gets a `confirm` result with the credits and a one-use token, and a repeat call with the same arguments and `confirm_token` runs it.\nOn the hosted server it runs as a background job: a call that takes longer than about 25 seconds returns `job` (its id and status) instead, and the free `job` tool returns its status and, once done, this call's result. One call does it all. A finished result carries `accountsUrl`, the user's accounts page: every company found, its research and the run's upcoming events. Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in <field>Flags with the attack family.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"champions":{"items":{"format":"uri","type":"string"},"maxItems":2000,"type":"array"},"companies":{"items":{"type":"string"},"maxItems":10,"type":"array"},"confirm_token":{"description":"The token a previous call returned in `confirm`, standing for the user's agreement to that cost; one use, same arguments.","type":"string"},"connections":{"properties":{"exportedAt":{"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"},"text":{"maxLength":5000000,"type":"string"}},"required":["text"],"type":"object"},"connectors":{"items":{"properties":{"exportedAt":{"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"},"name":{"maxLength":120,"minLength":1,"type":"string"},"text":{"maxLength":5000000,"type":"string"}},"required":["text","name"],"type":"object"},"maxItems":20,"type":"array"},"contacted":{"items":{"properties":{"domain":{"type":"string"},"lastAt":{"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"}},"required":["domain"],"type":"object"},"maxItems":5000,"type":"array"},"context":{"description":"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.","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"},"city":{"description":"The user's own city, for events near them (in person within 50 km); never narrows who discover looks for","maxLength":120,"type":"string"},"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"},"disqualifiers":{"description":"Conditions that rule a company out even inside the ICP, each a few words, e.g. \"already uses a competitor's product\", \"has an in-house data team\", \"public sector\". Discover checks each against the sources it reads: one a quoted source shows is flagged in checkFirst and ranked lower (dropped under hard \"disqualifier\") and never billed; one no source shows is \"not checked\", never assumed","items":{"maxLength":160,"minLength":3,"type":"string"},"maxItems":8,"type":"array"},"doNotContact":{"description":"Companies the user said never to contact (domains)","items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":500,"type":"array"},"employees":{"description":"Headcount band the seller can close, when the user has said","properties":{"max":{"maximum":9007199254740991,"minimum":1,"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"},"hard":{"description":"Strict cut-offs the user chose: \"size\" drops companies without a sourced size inside the band, \"fit\" drops those without a source-supported use case, \"intent\" drops those with no buying signal or way in, \"disqualifier\" drops those a source shows meet one of `disqualifiers`. Unnamed ones only rank and flag. Ask once at onboarding; a call's own `hard` overrides it","items":{"enum":["size","fit","intent","disqualifier"],"type":"string"},"maxItems":4,"type":"array"},"icp":{"description":"Who the ideal customer is: company type, industry, size, stage, region","maxLength":1000,"type":"string"},"investors":{"description":"Optional: the seller's own investors (firms or angels), e.g. \"Sequoia Capital\", beside the ones discover finds and confirms from public pages itself; matched in code against each account's pages, funding news and the investors' portfolio pages, never sent to a model","items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":500,"type":"array"},"lost":{"description":"Deals lost or churned (domains or names), with why if known","items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":500,"type":"array"},"needPatterns":{"description":"What a buying need for the seller's offer looks like: each a need, where it shows (jobs, tools, news, site, ai_adoption) and the proof that counts. The drafted ones the user kept plus any they described in their own words. Discover drafts them when left out and returns them to review; only signals matching one rank","items":{"properties":{"family":{"enum":["hiring","company_events","product_site","news_compliance","tools","people_moves","competitor_events","public_intent"],"type":"string"},"need":{"maxLength":160,"minLength":3,"type":"string"},"proof":{"maxLength":300,"minLength":3,"type":"string"},"segments":{"items":{"maxLength":200,"minLength":2,"type":"string"},"maxItems":8,"type":"array"},"titles":{"items":{"maxLength":60,"minLength":3,"type":"string"},"maxItems":8,"type":"array"},"where":{"items":{"enum":["jobs","tools","news","site","ai_adoption"],"type":"string"},"maxItems":5,"minItems":1,"type":"array"}},"required":["need","where","proof"],"type":"object"},"maxItems":24,"minItems":1,"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"},"signalFamilies":{"description":"The signal families the user switched on (the families of `signals.addMore`, by id). Discover drafts 2 or 3 need patterns for each, worded for the seller's offer, and drops patterns in a family switched off; left out, it drafts 5 to 8 across all","items":{"enum":["hiring","company_events","product_site","news_compliance","tools","people_moves","competitor_events","public_intent"],"type":"string"},"maxItems":8,"minItems":1,"type":"array"},"signalTypes":{"description":"Catalog signal types the user added from the \"add more\" list, by id (seller_profile's `signals.addMore`); discover looks for each as a need pattern on top of `needPatterns`, or of its drafted ones when there are none","items":{"enum":["job_posting_buyer_role","job_posting_mentions_tool","hiring_surge_function","headcount_growth","role_reopened","layoffs","hiring_freeze","function_attrition","employee_sentiment_drop","funding_round","funding_use_of_funds_match","debt_financing","ipo_filing","acquires_company","company_acquired","spin_off_carve_out","geo_expansion","partnership_announced","partnership_ended","prospect_loses_client","revenue_decline","distress_bankruptcy","earnings_call_mention","annual_report_insight","company_register_change","product_launch","ad_campaign_launch","website_relaunch","site_section_added","pricing_change","legal_page_change","new_public_repo_by_topic","own_incident_spike","public_symptom_visible","own_customer_reviews_negative","event_sponsorship","compliance_pursuit","regulation_deadline","regulatory_exposure","platform_policy_change","data_breach","peer_company_incident","litigation","positive_media","negative_media","award_recognition","tech_adoption_adjacent","competitor_installed","competitor_newly_adopted","overlapping_tools_in_category","recent_software_purchases","outbound_domains_registered","mcp_server_published","hf_org_paid_plan","bug_bounty_ai_scope","new_exec_buyer_role","exec_departure","first_hire_in_function","competitor_outage_deprecation","competitor_acquired_closed","competitor_logo_removed","competitor_positioning_change","competitor_banned_or_sanctioned","social_post_about_problem","podcast_or_talk_appearance","exec_public_appearance","named_project_underway","customer_peer_reference"],"type":"string"},"maxItems":15,"type":"array"},"user":{"description":"Who the user is: their name, role at the seller and LinkedIn profile URL","properties":{"linkedinUrl":{"description":"The user's own LinkedIn profile URL; kept in the workspace, never sent to a model","pattern":"^https?:\\/\\/([a-z]{2,3}\\.)?linkedin\\.com\\/in\\/[^/?#\\s]+\\/?$","type":"string"},"name":{"maxLength":120,"type":"string"},"role":{"maxLength":120,"type":"string"}},"type":"object"},"warmPaths":{"description":"Warm paths the user confirmed: 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":{"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"},"ycBatch":{"description":"The seller's Y Combinator batch, e.g. \"W23\"; read from the seller's YC page when left out","maxLength":40,"type":"string"}},"type":"object"},"customers":{"items":{"type":"string"},"maxItems":5000,"type":"array"},"days":{"default":90,"maximum":90,"minimum":7,"type":"integer"},"doNotContact":{"items":{"type":"string"},"maxItems":5000,"type":"array"},"evaluators":{"items":{"format":"uri","type":"string"},"maxItems":2000,"type":"array"},"evidence":{"description":"Passages the user found on a public page (domain, url, verbatim quote, date as printed); each is checked before it counts","items":{"properties":{"date":{"description":"The event date as printed on the page, or YYYY-MM-DD","type":"string"},"domain":{"type":"string"},"quote":{"maxLength":600,"minLength":20,"type":"string"},"url":{"format":"uri","type":"string"}},"required":["domain","url","quote","date"],"type":"object"},"maxItems":10,"type":"array"},"fresh":{"description":"true: research the named companies again even when they were researched in the last 7 days. Left out, such a call asks the user first, or returns that saved research (`saved`) with nothing charged.","type":"boolean"},"hard":{"items":{"enum":["size","fit","intent","disqualifier"],"type":"string"},"maxItems":4,"type":"array"},"icp":{"properties":{"buyerRoles":{"items":{"minLength":1,"type":"string"},"maxItems":10,"type":"array"},"descriptionPatterns":{"items":{"minLength":2,"type":"string"},"maxItems":8,"type":"array"},"exclusions":{"items":{"minLength":1,"type":"string"},"maxItems":10,"type":"array"},"focus":{"maxLength":600,"minLength":1,"type":"string"},"industries":{"items":{"minLength":2,"type":"string"},"maxItems":12,"type":"array"},"keywords":{"items":{"minLength":2,"type":"string"},"maxItems":12,"type":"array"},"maxEmployees":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"minEmployees":{"maximum":9007199254740991,"minimum":1,"type":"integer"},"segments":{"items":{"minLength":1,"type":"string"},"maxItems":10,"type":"array"},"seller":{"properties":{"funding":{"anyOf":[{"maxLength":160,"type":"string"},{"type":"null"}]},"headcount":{"anyOf":[{"maximum":9007199254740991,"minimum":1,"type":"integer"},{"type":"null"}]},"stage":{"anyOf":[{"maxLength":80,"type":"string"},{"type":"null"}]}},"type":"object"},"titlePatterns":{"items":{"minLength":2,"type":"string"},"maxItems":8,"minItems":1,"type":"array"},"who":{"maxLength":400,"minLength":1,"type":"string"}},"required":["who","focus","segments","minEmployees","maxEmployees","buyerRoles","exclusions","titlePatterns","keywords"],"type":"object"},"includeShown":{"type":"boolean"},"max_credits":{"description":"Most credits this call may use; default its quote. A call quoted over it is refused.","exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},"openDeals":{"items":{"type":"string"},"maxItems":5000,"type":"array"},"previousConnections":{"properties":{"exportedAt":{"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"},"text":{"maxLength":5000000,"type":"string"}},"required":["text"],"type":"object"},"priorContacts":{"items":{"properties":{"at":{"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"},"domain":{"type":"string"}},"required":["domain","at"],"type":"object"},"maxItems":5000,"type":"array"},"research":{"default":0,"description":"How many accounts to research, 1 to 10: each is screened, researched and written up with its signals, fit, angle and contacts. 0 (the default) returns the ranked list alone: every company found, each with where it was found and what was not checked. With `companies`, each named company is researched.","maximum":10,"minimum":0,"type":"integer"},"seller":{"type":"string"},"vendors":{"items":{"type":"string"},"maxItems":500,"type":"array"}},"type":"object"},"name":"discover"},{"description":"Free. Records the user's verdict on a company in their ranked list: good_fit, not_fit or already_talking, with an optional reason from a fixed list (competitor, existing_customer, too_small, too_big, wrong_industry, no_need, bad_timing, other). A not_fit company is left out of every later discover for this workspace; the user's own named list still runs it. The latest verdict per company wins. No free text is stored.\nUse when: \"that one's a competitor, skip it\", \"not a fit\", \"good fit\", \"we're already talking to them\", \"drop this company\", \"mark it as a bad lead\", a verdict on an account discover returned.\nSkip when: finding or ranking new accounts; excluding a whole category of companies from the ICP (seller_profile); checking an outreach draft. Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in <field>Flags with the attack family.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"domain":{"description":"The company's domain, as the ranked list shows it","maxLength":253,"minLength":3,"type":"string"},"reason":{"description":"Why, from the list","enum":["competitor","existing_customer","too_small","too_big","wrong_industry","no_need","bad_timing","other"],"type":"string"},"verdict":{"description":"good_fit, not_fit or already_talking (both leave later discovers)","enum":["good_fit","not_fit","already_talking"],"type":"string"}},"required":["domain","verdict"],"type":"object"},"name":"feedback"},{"description":"Free. The status (queued, running, done or failed) and, once done, the result of a background job: a discover call or a long discover round.\nWhile a discover runs, `partial` is its ranked list so far: `tier` says how far it got (listed: every candidate ranked on the facts already in hand; screened: the top ones passed the fit screen; researched: the top ones' signals checked) and `progress` the counts. Show it to the user as a first look; the final result replaces it.\nWhile it runs, `lastStepSecondsAgo` is how long ago it last moved on, `stalled` turns true only after 10 minutes with no step, `restarts` counts the times a server restart handed it to another worker (on its own, research already done reused). A discover usually takes 5 to 20 minutes.\nUse when: a call returned `job`, \"is my discover done\", \"is my ranking done\", \"status of my job\".\nSkip 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 <field>Flags with the attack family.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"id":{"description":"The job id a call returned","type":"string"}},"required":["id"],"type":"object"},"name":"job"},{"description":"Free. How many credits a call to a SalesMap tool can use, before running it, against what the workspace can spend now (balance and limit). Not a charge: the most the call can use, which it reserves (or its max_credits); it uses 1 credit per account that qualifies, never more. When `fits` is false, `shortfallCredits` says how many more are needed and `topUp` is the link.\nUse when: \"how much will this cost\", \"can I afford 10 accounts\", \"how many credits would a discover for my site use\".\nSkip 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 <field>Flags with the attack family.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":{},"default":{},"description":"That tool's arguments, as in a call to it","propertyNames":{"type":"string"},"type":"object"},"tool":{"description":"The tool to quote, e.g. discover","type":"string"}},"required":["tool"],"type":"object"},"name":"quote"},{"description":"Price: free.\nSaves 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. discover starts from it. Returns the saved profile, the key fields still missing (ICP, buyer roles) and a question for each.\nAlso returns `signals`, the buying signals discover's account search looks for: the saved `needPatterns`, `signalFamilies` and `signalTypes`, `addMore` (the signal types it can detect, in 8 families: save the families the user switches on as `signalFamilies`, and discover drafts 2 or 3 signals for each; or a type by id as `signalTypes`) and, with the ICP and buyer roles known and no patterns saved, `draft`: the drafting prompt for the calling agent's model, which returns this seller's drafted signals.\nUse 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.\nSkip when: the question is about a prospect company, not the user's own, or about a watch on closed-lost deals and which are ready again.\nThe 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 <field>Flags with the attack family.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"context":{"description":"Fields to save, merged into the saved profile field by field. Omit to read.","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"},"city":{"description":"The user's own city, for events near them (in person within 50 km); never narrows who discover looks for","maxLength":120,"type":"string"},"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"},"disqualifiers":{"description":"Conditions that rule a company out even inside the ICP, each a few words, e.g. \"already uses a competitor's product\", \"has an in-house data team\", \"public sector\". Discover checks each against the sources it reads: one a quoted source shows is flagged in checkFirst and ranked lower (dropped under hard \"disqualifier\") and never billed; one no source shows is \"not checked\", never assumed","items":{"maxLength":160,"minLength":3,"type":"string"},"maxItems":8,"type":"array"},"doNotContact":{"description":"Companies the user said never to contact (domains)","items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":500,"type":"array"},"employees":{"description":"Headcount band the seller can close, when the user has said","properties":{"max":{"maximum":9007199254740991,"minimum":1,"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"},"hard":{"description":"Strict cut-offs the user chose: \"size\" drops companies without a sourced size inside the band, \"fit\" drops those without a source-supported use case, \"intent\" drops those with no buying signal or way in, \"disqualifier\" drops those a source shows meet one of `disqualifiers`. Unnamed ones only rank and flag. Ask once at onboarding; a call's own `hard` overrides it","items":{"enum":["size","fit","intent","disqualifier"],"type":"string"},"maxItems":4,"type":"array"},"icp":{"description":"Who the ideal customer is: company type, industry, size, stage, region","maxLength":1000,"type":"string"},"investors":{"description":"Optional: the seller's own investors (firms or angels), e.g. \"Sequoia Capital\", beside the ones discover finds and confirms from public pages itself; matched in code against each account's pages, funding news and the investors' portfolio pages, never sent to a model","items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":500,"type":"array"},"lost":{"description":"Deals lost or churned (domains or names), with why if known","items":{"maxLength":200,"minLength":1,"type":"string"},"maxItems":500,"type":"array"},"needPatterns":{"description":"What a buying need for the seller's offer looks like: each a need, where it shows (jobs, tools, news, site, ai_adoption) and the proof that counts. The drafted ones the user kept plus any they described in their own words. Discover drafts them when left out and returns them to review; only signals matching one rank","items":{"properties":{"family":{"enum":["hiring","company_events","product_site","news_compliance","tools","people_moves","competitor_events","public_intent"],"type":"string"},"need":{"maxLength":160,"minLength":3,"type":"string"},"proof":{"maxLength":300,"minLength":3,"type":"string"},"segments":{"items":{"maxLength":200,"minLength":2,"type":"string"},"maxItems":8,"type":"array"},"titles":{"items":{"maxLength":60,"minLength":3,"type":"string"},"maxItems":8,"type":"array"},"where":{"items":{"enum":["jobs","tools","news","site","ai_adoption"],"type":"string"},"maxItems":5,"minItems":1,"type":"array"}},"required":["need","where","proof"],"type":"object"},"maxItems":24,"minItems":1,"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"},"signalFamilies":{"description":"The signal families the user switched on (the families of `signals.addMore`, by id). Discover drafts 2 or 3 need patterns for each, worded for the seller's offer, and drops patterns in a family switched off; left out, it drafts 5 to 8 across all","items":{"enum":["hiring","company_events","product_site","news_compliance","tools","people_moves","competitor_events","public_intent"],"type":"string"},"maxItems":8,"minItems":1,"type":"array"},"signalTypes":{"description":"Catalog signal types the user added from the \"add more\" list, by id (seller_profile's `signals.addMore`); discover looks for each as a need pattern on top of `needPatterns`, or of its drafted ones when there are none","items":{"enum":["job_posting_buyer_role","job_posting_mentions_tool","hiring_surge_function","headcount_growth","role_reopened","layoffs","hiring_freeze","function_attrition","employee_sentiment_drop","funding_round","funding_use_of_funds_match","debt_financing","ipo_filing","acquires_company","company_acquired","spin_off_carve_out","geo_expansion","partnership_announced","partnership_ended","prospect_loses_client","revenue_decline","distress_bankruptcy","earnings_call_mention","annual_report_insight","company_register_change","product_launch","ad_campaign_launch","website_relaunch","site_section_added","pricing_change","legal_page_change","new_public_repo_by_topic","own_incident_spike","public_symptom_visible","own_customer_reviews_negative","event_sponsorship","compliance_pursuit","regulation_deadline","regulatory_exposure","platform_policy_change","data_breach","peer_company_incident","litigation","positive_media","negative_media","award_recognition","tech_adoption_adjacent","competitor_installed","competitor_newly_adopted","overlapping_tools_in_category","recent_software_purchases","outbound_domains_registered","mcp_server_published","hf_org_paid_plan","bug_bounty_ai_scope","new_exec_buyer_role","exec_departure","first_hire_in_function","competitor_outage_deprecation","competitor_acquired_closed","competitor_logo_removed","competitor_positioning_change","competitor_banned_or_sanctioned","social_post_about_problem","podcast_or_talk_appearance","exec_public_appearance","named_project_underway","customer_peer_reference"],"type":"string"},"maxItems":15,"type":"array"},"user":{"description":"Who the user is: their name, role at the seller and LinkedIn profile URL","properties":{"linkedinUrl":{"description":"The user's own LinkedIn profile URL; kept in the workspace, never sent to a model","pattern":"^https?:\\/\\/([a-z]{2,3}\\.)?linkedin\\.com\\/in\\/[^/?#\\s]+\\/?$","type":"string"},"name":{"maxLength":120,"type":"string"},"role":{"maxLength":120,"type":"string"}},"type":"object"},"warmPaths":{"description":"Warm paths the user confirmed: 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":{"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"},"ycBatch":{"description":"The seller's Y Combinator batch, e.g. \"W23\"; read from the seller's YC page when left out","maxLength":40,"type":"string"}},"type":"object"},"seller":{"description":"The user's own company site, e.g. getklira.com","minLength":3,"type":"string"}},"required":["seller"],"type":"object"},"name":"seller_profile"},{"description":"Free. Sets the user's own monthly credit limit for SalesMap (rolling 30 days); null removes it. Until set: 100 credits once the workspace has bought a pack, else 40. There is no daily or weekly limit. No call ever uses more than the limit or the balance. Also the ask-first threshold: a paid call quoted over that many credits asks the user first (default 0: every call asks; null never asks). Also `weeklyDiscover` (off by default): true runs the free list for the active seller every Monday (no credits; it counts as that day's list) and emails the signed-in user only the companies new on their list, nothing when none are new; set it only on the user's explicit yes. Returns the limits with what's used and left.\nUse when: \"set a monthly budget\", \"cap it at 20 credits a month\", \"raise my limit\", \"remove the limit\", \"stop asking me before each call\", \"email me new accounts every week\", \"stop the weekly email\".\nSkip 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 <field>Flags with the attack family.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"confirmCredits":{"anyOf":[{"maximum":9007199254740991,"minimum":0,"type":"integer"},{"type":"null"}],"description":"Credits; paid calls quoted over it need the user's yes first; 0 means every call; null means none; omitted, it is kept"},"monthlyCredits":{"anyOf":[{"exclusiveMinimum":0,"maximum":9007199254740991,"type":"integer"},{"type":"null"}],"description":"Credits; null removes this limit; omit to keep it"},"weeklyDiscover":{"description":"The weekly free list and its new-accounts email to the signed-in user; only on the user's explicit yes; omitted, it is kept","type":"boolean"}},"type":"object"},"name":"set_limits"},{"description":"Free. Checks an outreach draft the user or their agent wrote (a connection note, direct note, InMail or email) for AI-writing tells and the channel's limits, in code with no model: `fails` (antithesis like \"it's not just X, it's Y\", hype words, servile or empty closers, leaked placeholders like [First Name], raw markdown, the 300-character invite note, 1,900-character InMail and 200-character subject caps) and `warnings` (dashes, sales clichés like \"just following up\", assistant vocabulary, exclamations, emoji, a cold email over 125 words). `pass` means no fails. Each hit carries the matched text and a fix.\nUse when: \"scan this draft\", \"does this draft sound like AI\", \"check my connection note\", \"is this InMail too long\", \"clean up this cold email\", after drafting outreach for an account.\nSkip when: finding or ranking accounts; whether a fact or claim about a company is true; sending an email or message to a prospect; connecting with someone or scraping profiles on LinkedIn. Quoted page text is normalized; a quote that reads like an instruction keeps its text and is flagged in <field>Flags with the attack family.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"body":{"description":"The draft, as plain text","maxLength":20000,"minLength":1,"type":"string"},"format":{"description":"connection_note (LinkedIn invite note), linkedin_message, inmail or email","enum":["connection_note","linkedin_message","inmail","email"],"type":"string"},"subject":{"description":"The subject line, for an email or InMail","maxLength":1000,"type":"string"}},"required":["format","body"],"type":"object"},"name":"voice_scan"},{"description":"Free. Who the user is on SalesMap and what they can do: their name and email, the workspace and their role in it, how they signed in, the credit balance (one credit is one researched account), the monthly credit limit (rolling 30 days; null = no limit) with what's used, held by a running search and left, the credits above which a paid call asks first, the seller profiles saved and the LinkedIn connections uploaded, links to top up and to upload connections, and which tools are free. It holds no ids.\nUse when: \"who am I\", \"which account is this\", \"how many credits do I have left\", \"what are my limits\", before a large paid call.\nSkip 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 <field>Flags with the attack family.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{},"type":"object"},"name":"whoami"}]},"body_sha256":"44a8c1b979442cd69ac771f6bf4af9865c6308b553270e0db98b697cff1dc748","prev_id":2122964,"leaf":"0x119a519f4bcdb9e589e7e47b66432b6471b2c5606b1e9dcb2d6f5912850a3155","leaf_text":"{\"body\":\"44a8c1b979442cd69ac771f6bf4af9865c6308b553270e0db98b697cff1dc748\",\"id\":2964887,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793774521640681,\"prev\":2122964,\"subject\":\"d4024137-f704-459f-a5f4-c26f2e1c5477\",\"subject_kind\":\"endpoint\"}","day":{"day":"2026-11-04","leaves":424109,"root":"0xd4eed8c0ea3c90ec6f262b19fcc3b849f30cb82a0f84b8b89569e48af7d0c1ee","chained":"0x59305749c32724a02a23c368834d8a36ae9908da93a915e2962fffe01b4e591b","anchor_chain":"eip155:5042002","anchor_tx":"0x813d56041c1efd407e56047129b597b154a1cb26458bb2768fd0a4630ac97345","anchor_block":70772483},"proof":["0x119a4462653c4282cef960514ab7d61f7f42788256023b77d0e7ccc5fc09f15f","0xa787ec222eaf6f4ecb3c529e2434a749a9dc62eba43809489642263413a55c32","0x96f33cbc6efe4015ed176c0c92f7d0ce384b1e65060114cb17ba588e9ab44c11","0x3b6a46e3e90c0f37a931504f8b5d13d37284e7f1df40441dd1f7661ad6f1a477","0x76b20b899178f8155d24e823fa53f5afba432520daa40031f0c853ed92b56138","0x35c094023d5a5a60f3177c5ef1ed06e9693cd4ad9cb85da5833c439a9ca6a21e","0xfbfa17a01da944660127a4a0592f174e571ff3061fa91864f602c190e6575993","0x40d6700fd89ab127d6041748232e31e3f284a14415e4451343a9b3f778cec3b8","0x2d2a973aa2c1efa5e6da6b02e8e7ae12cd67e00557f0982c6eea130bb496ffe8","0xa107431fac51156cdcc7d93f4d7957175813b38b9db8919015e2bb61a83cda99","0x5c4c5dbef70ff6d92d8e05d2216db7f5dbc124620c42cacfb8b8991d60751cb0","0x2d922e5fbe6e5a032695ac07dfcff60026b7206dcebb644067a402c7a1ee75e5","0x0c961c90e8e90ea0bf2db9ef631f7a8ed79970c2c84fcf0e6534f1a7d66dc961","0xe5d2c2f467f13039435593ecb6df4996e650e192b7ee29ddf612886f03e98dea","0x39999cd980e41ec2b00689b8f721fe6463b8366a077d7faaeed19e6514cfbac4","0xcdac863807ea81d51a9ab718457637e91824fd377a06759901352d9a23933554","0x01c26569ec8e231551522ab452fd5d417c3d66f29c7c76886a8ec295a18dd624","0x02f64ca19e7d9b09718851d2ce3abf641982580de99411626d894607cf386cd5","0x10067354f57fa0cd86b7423e67cc1c7d107d7c9c6823df5246c4fb63b60575e5"]}