Skip to main content
Glama

Panda Leads Tools

Public leads and enrichment: NPI providers, podcasts, local businesses, hiring signals, website enrichment, team pages, topic trends, trucking carriers.

Focused MCP server (8 tools) from the Panda Federation public-data toolkit. Prefer this over the 23-tool mega-server for better Tool Definition Quality Score (TDQS) / Glama coherence.

Umbrella Apify Store License: MIT

Install / Use

Needs a free Apify API token and uv.

uvx --from panda-federation-tools panda-leads-tools

Same entry point from this repo:

uvx --from git+https://github.com/pandadad0214/panda-leads-tools panda-leads-tools

Cursor / Claude / VS Code: command uvx, args ["--from", "panda-federation-tools", "panda-leads-tools"], env APIFY_TOKEN.

Related MCP server: scrapercity-cli

Tools (8)

  • npi_provider_lists

  • podcast_leads_finder

  • local_business_leads

  • company_hiring_signals

  • company_website_enricher

  • company_team_finder

  • topic_trends_tracker

  • trucking_company_leads

Each tool runs one Apify Actor on your account. Empty runs are not charged per result; every call is capped by run_max_charge_usd. Full schemas and prices: umbrella README.

Sibling domain servers

  • panda-research-tools — Scholarly integrity and papers: citation checks, literature and PubMed search, academic experts, PDF tables.

  • panda-public-funding-tools — US federal money and filings: grants, contracts, SBIR/STTR topics, SEC financials, clinical trials.

  • panda-web-security-tools — Site, email and agent safety: SPF/DKIM/DMARC audits, AI/SEO readiness, website change monitoring, hidden AI instructions scanner.

Index / compatibility mega-server: panda-federation-tools (use only when you truly need every tool).

TDQS standard

New tools join this domain only while the count stays in the 3–15 band. Descriptions follow the checklist in the umbrella repo. See tdqs-standard / project docs.

Built by Panda Federation. MIT licensed.

Available Tools

8 tools
company_hiring_signalsCompany Hiring Signals: Job Openings & Hiring Intent by CompanyA
Read-only

Measure hiring intent per company from its public job board (Greenhouse, Lever, Ashby and more): open jobs, new jobs in 7/30 days, teams hiring, leadership openings, a 0-100 hiring score and hot/warm/cold signal. Unlike company_website_enricher (tech stack and contacts) and company_team_finder (current staff), this reads open roles as a buying or growth signal. Use when you need sales triggers, recruiting leads or competitor hiring watch for a known list of companies. Do not use to discover companies from scratch (start from local_business_leads, federal_contract_finder or your own list) or for individual job search. Parameters: companies accept domains, names or direct job-board links; links are exact, names can match the wrong board. checkWebsite=true reads the careers page to find the exact board (more accurate, slower). minOpenJobs filters below-threshold companies out unbilled. titleKeywords only count matches; they do not filter. Companies with no public board are returned free with status. Returns per item: agentSummary, company, domain, signal, hiringScore, openJobs, newJobs7d, newJobs30d, leadershipJobs, leadershipTitles, topFunctions, functionCounts, remoteShare, topLocations, keywordHits, newestJobs, lastPostedAt, ats, boardUrl, matchedBy, status.

Behavior: read-only; runs the Apify Actor pandadad0214/company-hiring-signals (https://apify.com/pandadad0214/company-hiring-signals) on your own Apify account. Price: $0.003 per company analyzed. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxCompanies when you leave it unset, so it also limits what is billed; setting maxCompanies higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

NameRequiredDescriptionDefault
companiesNoCompanies. One per line: a company domain (stripe.com), a company name (Notion) or a job-board link (https://jobs.lever.co/spotify, https://boards.greenhouse.io/airbnb, https://jobs.ashbyhq.com/ramp). Leave empty for a 3-company demo.
minOpenJobsNoOnly return companies with at least this many open jobs. Companies below this are listed in the run summary but not returned and not charged. 0 returns every company with a job board.
checkWebsiteNoLook for the job board on the company website. When you give a domain, read the home and careers pages (robots.txt respected) to find the exact job-board link. Off = match the board by company name only (faster, less exact).
maxCompaniesNoMaximum companies. You pay per company returned, so this also caps the cost. 1 to 5,000; default 500.
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
titleKeywordsNoKeywords to count in job titles. Optional. Count open roles whose title (or board department) contains these words, e.g. a tool you sell into (Salesforce, HubSpot, Snowflake) or a role you care about (SDR, Account Executive, DevOps).
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this read-only/open-world, but the description goes well past them: per-company price ($0.003), the nuance that below-threshold companies are filtered out unbilled, that companies with no public board come back free with a status, per-call spend cap via run_max_charge_usd, and typical 5-15s vs multi-minute runtimes with a timeout remediation path. The subtle billing warning that raising maxCompanies higher than run_max_items can bill more than is returned is exactly the kind of hazard an agent cannot get from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Purpose, usage, exclusions, parameters, and operations are front-loaded in a logical order with no filler sentences. The one cost is the 21-field return enumeration, which is long but defensible given there is no output schema; a compact grouped phrasing would read better.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter, open-world, paid actor tool with no output schema, the definition covers what an agent needs before calling: cost model, caps, latency, timeout behavior, input ambiguity, non-obvious parameter interactions, and the return shape. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, yet the description still adds decision-relevant meaning: links are exact while bare names "can match the wrong board," checkWebsite trades accuracy for speed, minOpenJobs filters unbilled, and — most importantly — titleKeywords only count matches and do not filter results. It also explains that run_max_items fills maxCompanies when unset, which materially changes cost interpretation beyond the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb+resource ("Measure hiring intent per company from its public job board") and enumerates the concrete outputs (open jobs, new jobs 7/30d, leadership openings, 0-100 score, hot/warm/cold signal). It explicitly distinguishes itself from the two closest siblings, company_website_enricher (tech stack/contacts) and company_team_finder (current staff), framing itself as a forward-looking buying/growth signal instead.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States exactly when to reach for it ("sales triggers, recruiting leads or competitor hiring watch for a known list of companies") and exactly when not to ("Do not use to discover companies from scratch" or "for individual job search"), naming local_business_leads and federal_contract_finder as the discovery alternatives. Nothing about tool selection is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

company_team_finderCompany Team & Decision-Maker Finder: Names, Titles, EmailsA
Read-only

Find the named people at a company from its own public website (team, leadership, about and staff pages): name, title, seniority, department, decision-maker flag, published email, LinkedIn link and the company's email pattern. Unlike company_website_enricher (one firmographic row per company) and researcher_expert_finder (academics ranked by publications), this returns one row per person; it never scrapes LinkedIn. Use when you need decision makers or staff contacts at known companies. Do not use for academic experts (use researcher_expert_finder), for company-level contacts or tech stack (use company_website_enricher), or when the site has no team page. Parameters: billing is per person, not per company, so maxPeoplePerCompany (most senior first) and decisionMakersOnly are the main cost levers; run_max_items sets maxCompanies only. Pasting the exact team page URL is faster and more reliable than a bare domain. maxPagesPerCompany trades coverage for speed. emailGuess is inferred (pattern from published emails, else unverified first.last) and comes with emailConfidence; verify before sending. Companies with no readable team page are free. Returns per item: agentSummary, company, domain, name, firstName, lastName, title, seniority, department, isDecisionMaker, email, emailGuess, emailConfidence, linkedinUrl, profileUrl, sourceUrl, foundVia.

Behavior: read-only; runs the Apify Actor pandadad0214/company-team-finder (https://apify.com/pandadad0214/company-team-finder) on your own Apify account. Price: $0.002 per person found. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned but does not limit what the Actor bills; use the tool's own limits and run_max_charge_usd. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

NameRequiredDescriptionDefault
companiesNoCompany websites. One per line: a domain (acme.com), a website URL, or a work email (the domain is used). Paste the exact team page URL when you know it. Leave empty for a 2-company demo.
departmentsNoDepartments. Optional. Keep only these departments (guessed from the title).
maxCompaniesNoMaximum companies. You pay per person found; companies with nobody found are free.
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
titleKeywordsNoTitle contains (any of). Optional. Keep people whose title contains one of these words.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
decisionMakersOnlyNoDecision makers only. Keep only C-level, founders/owners, presidents, partners, VPs and directors/heads. Everyone else is skipped and not charged.
maxPagesPerCompanyNoMax pages per company. Home page plus team, leadership, about and staff pages. Default 6.
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).
maxPeoplePerCompanyNoMax people per company. Most senior people first. Caps cost on companies with huge staff pages.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnly/openWorld/non-destructive/non-idempotent; the description goes well beyond them by disclosing billing mechanics ($0.002 per person, per person not per company), the hard spend cap via run_max_charge_usd and its default, the fact that companies with no readable team page are free, typical 5-15 s latency versus multi-minute crawls, and the 300 s timeout ceiling. It also flags that emailGuess is inferred rather than verified and carries emailConfidence, which is exactly the kind of caveat annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Structure is strong and front-loaded: purpose, then sibling differentiation, then use/do-not-use, then parameter economics, then return fields, then runtime behavior. It is on the long side and the middle parameter paragraph is a dense run-on that merges cost, URL, and email-inference topics, costing it the top score, but nearly every clause carries actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 10 optional parameters, no output schema, and a paid third-party Actor behind it, the description covers everything an agent needs: what each cost control does, what a run returns, timeout and cap behavior, and how to size inputs after a failure. The explicit return-field list compensates for the absent output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Although schema coverage is 100% (so 3 would be the baseline), the description adds semantics the schema does not: it identifies maxPeoplePerCompany and decisionMakersOnly as the real cost levers, explicitly explains that run_max_items limits returned items but not Actor billing, and explains that maxPagesPerCompany trades coverage for speed. It also clarifies that decisionMakersOnly results are not charged, which changes how an agent should configure the call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('Find the named people at a company from its own public website') and enumerates exactly what is returned (name, title, seniority, department, decision-maker flag, email, LinkedIn, email pattern). It then explicitly disambiguates from two named alternatives by their unit of return ('one firmographic row per company' vs 'one row per person' vs 'academics ranked by publications').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is spelled out on both sides: 'Use when you need decision makers or staff contacts at known companies' followed by three explicit exclusions routing to researcher_expert_finder, company_website_enricher, and the 'no team page' case. It also gives an operational preference ('Pasting the exact team page URL is faster and more reliable than a bare domain'), which is guidance an agent can act on immediately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

company_website_enricherCompany Website Enricher: Tech Stack, Emails & SocialsA
Read-only

Enrich company domains from public sources (the company's own site with robots.txt respected, DNS and RDAP): name, description, published emails and phones, LinkedIn and socials, address, tech stack by category, mail provider, SaaS tools seen in DNS and domain age. Unlike company_team_finder (named people and titles) and company_hiring_signals (open jobs), this returns one firmographic row per company. Use when you have domains and need contact points, technographics or a filter like sites running Shopify or HubSpot. Do not use to find people (use company_team_finder) or to grade email security (use email_domain_security_checker). Parameters: onlyWithTech, onlyWithEmail and onlyWithPhone filter before billing, so filtered-out domains are free. extraPages (0-4) reads contact/about/team pages: more found contacts, slower runs, same price. Only published contacts are returned; no guessed emails. Unreachable sites are free. Returns per item: agentSummary, companyName, description, primaryEmail, emails, phones, linkedinUrl, socials, address, cms, techStack, techByCategory, mailProvider, emailSendingTools, verifiedServices, domainCreated, domainAgeYears, domainExpires, registrar, copyrightYear, status.

Behavior: read-only; runs the Apify Actor pandadad0214/company-website-enricher (https://apify.com/pandadad0214/company-website-enricher) on your own Apify account. Price: $0.003 per domain enriched. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxDomains when you leave it unset, so it also limits what is billed; setting maxDomains higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

NameRequiredDescriptionDefault
domainsNoCompany domains, websites or emails. One per line: example.com, https://www.example.com/page or name@example.com all work (the domain is extracted, duplicates dropped). Leave empty for a 3-domain demo.
extraPagesNoExtra pages per site. Besides the home page, read up to this many contact / about / team pages to find emails, phones and the address. 0 to 4; default 2.
maxDomainsNoMaximum domains. You pay per domain returned, so this also caps the cost. 1 to 10,000; default 1,000.
onlyWithTechNoOnly return sites using any of these technologies. Optional. Keep only domains where at least one of these shows up in the tech stack, email tools or DNS-verified services, e.g. Shopify, HubSpot, Klaviyo, WordPress, Salesforce, Microsoft 365. Others are not returned and not charged.
onlyWithEmailNoOnly return domains with a public email. Domains without an email on their website are not returned and not charged.
onlyWithPhoneNoOnly return domains with a phone number. Domains without a phone link on their website are not returned and not charged.
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only and open-world, but the description adds pricing ($0.003/domain, unreachable sites and empty runs free), the spending cap mechanism, expected latency (5-15s typical, minutes for crawls), timeout escalation guidance, and the no-guessed-emails policy. These are material operational traits an agent cannot infer from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Dense and front-loaded: purpose, sibling differentiation, usage, then parameters, then behavior/pricing. The enumerated return-field list is long but earns its place given there is no output schema. A few clauses (e.g. the actor URL restated alongside the name) could be trimmed without loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With nine parameters, no output schema, and an open-world crawl, the description covers inputs, return shape, cost model, latency, and failure modes. Nearly nothing an agent needs to call this correctly and predict its bill is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so per-parameter documentation is already handled. The description still adds cross-parameter meaning the schema does not: filters are applied before billing so filtered-out domains are free, and run_max_items also caps billing while raising maxDomains can bill more than is returned. That billing interaction is genuine value-add beyond the fields themselves.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Enrich company domains'), names the exact data sources (own site with robots.txt respected, DNS, RDAP), and enumerates the output categories. It explicitly distinguishes itself from company_team_finder and company_hiring_signals by saying it returns 'one firmographic row per company'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives the positive trigger ('when you have domains and need contact points, technographics or a filter like sites running Shopify or HubSpot') and two explicit exclusions routing to company_team_finder for people and email_domain_security_checker for email security. That is as close to a routing table as a description gets.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

local_business_leadsLocal Business Leads: Google Maps Alternative (OpenStreetMap)A
Read-only

List local businesses by category and place (city, county, ZIP, neighborhood or lat/lon radius) from OpenStreetMap under its open license, with address, phone, email, website, opening hours and socials. Unlike npi_provider_lists (official US healthcare registry) or trucking_company_leads (FMCSA carriers), this covers any business type worldwide, with coverage as good as local OSM mapping. Use when you need a prospect list such as plumbers in Phoenix or cafes in a ZIP. Do not use for US healthcare providers (use npi_provider_lists, which is authoritative) or for reviews/ratings (OSM has none). Parameters: give location, or latitude+longitude (radiusKm defaults to 5); radiusKm with a location searches a circle instead of the official boundary. Whole states or countries are slow, often longer than 60 s, so raise run_timeout_secs to 300 or narrow the area. requireEmail sharply reduces results because few OSM entries list email. Returns per item: agentSummary, name, category, street, city, state, postcode, phone, email, website, openingHours, socials, lat, lon, osmUrl, attribution (ODbL; credit OpenStreetMap when you republish).

Behavior: read-only; runs the Apify Actor pandadad0214/local-business-leads (https://apify.com/pandadad0214/local-business-leads) on your own Apify account. Price: $0.001 per business found. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxResults when you leave it unset, so it also limits what is billed; setting maxResults higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

NameRequiredDescriptionDefault
sortByNoSort by. Most complete = businesses with phone, email, website, address and hours first. Name = A to Z. Choices: mostComplete = Most complete contact details first; name = Name (A-Z).mostComplete
latitudeNoLatitude. Optional. Instead of a location name: center latitude, e.g. 33.4255 (used with longitude and radius; radius defaults to 5 km).
locationNoLocation. City, county, state, ZIP or neighborhood, e.g. "Tempe, Arizona", "Austin, TX", "London", "90210". Smaller areas are faster; whole US states or countries may time out (use a radius or a city).
radiusKmNoRadius (km). Optional. Search a circle of this many km around the location's center instead of its official boundary. 1 to 100.
longitudeNoLongitude. Optional. Center longitude, e.g. -111.9400.
categoriesNoBusiness categories. Plain words, one per line: dentist, plumber, restaurant, coffee shop, lawyer, hair salon, gym, real estate, car repair… (about 150 built in). Other words are matched against OpenStreetMap tags and names. Power users can enter a tag like shop=florist or craft=hvac.
maxResultsNoMaximum businesses. You pay per returned business, so this also caps the cost. Whole number, 1 to 10,000; default 200.
requireEmailNoOnly businesses with an email. Keep only businesses that list an email address (fewer results: most businesses publish phone and website, fewer publish email).
requirePhoneNoOnly businesses with a phone number. Keep only businesses that list a phone number.
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
requireWebsiteNoOnly businesses with a website. Keep only businesses that list a website on OpenStreetMap.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover the read-only/open-world safety profile, and the description goes well beyond them: it names the underlying Apify Actor and account, the per-business price, that zero-result runs are not charged, and that run_max_charge_usd hard-caps spend. It also discloses non-obvious behaviors such as maxResults set above run_max_items billing more than is returned, and typical latency of 5-15 s with timeout handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with purpose, then alternatives, then parameter tips, then runtime/billing behavior — a sensible order for an agent that may stop reading early. It is dense but the 'Parameters:' block partly re-explains fields already documented in the schema, which is the only real redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 13 parameters, no output schema and no required fields, the description carries the full burden and does so: it enumerates the per-item return fields (agentSummary, osmUrl, attribution, etc.), the envelope shape {actor, count, items}, and the ODbL attribution obligation. An agent has everything needed to call it and interpret the result without further discovery.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine cross-parameter semantics the schema does not: radiusKm turns a boundary search into a circle, latitude+longitude pair with a 5 km default radius, and requireEmail sharply cuts results because few OSM entries list email. The maxResults vs. run_max_items billing interaction is the kind of meaning a schema cannot express, though a few tips merely restate schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('List local businesses by category and place') with the data source (OpenStreetMap) and the fields returned. It explicitly names the two closest siblings, npi_provider_lists and trucking_company_leads, and explains how it differs from each (any business type worldwide vs. official healthcare/FMCSA registries).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a concrete when-to-use example ('plumbers in Phoenix or cafes in a ZIP') and explicit when-not-to-use rules with the alternative named in each case: US healthcare goes to npi_provider_lists and reviews/ratings are out of scope entirely. It also flags the practical trap that whole states or countries are slow and tells the agent to narrow the area or raise run_timeout_secs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

npi_provider_listsNPI Registry Scraper: US Doctors & Healthcare Provider LeadsA
Read-only

Build de-duplicated lists of US healthcare providers (individuals and organizations) from the official CMS NPI Registry by specialty and territory, with NPI, name, specialty, practice address and phone. Unlike clinical_trial_leads (trial sites and investigators) or local_business_leads (any business category from OpenStreetMap), this is the authoritative US provider registry. Use when you need doctors, dentists, therapists, pharmacies or clinics in states, cities or ZIPs. Do not use for non-US providers or for email addresses (NPI publishes none; follow up with company_website_enricher on practice domains). Parameters: specialties take plain words, mapped to NPI taxonomies. Large states are split by ZIP automatically, so you are not limited by the registry's 1,200-result ceiling. cities and zipCodes narrow the states given. maxResults is shared across all specialty x area combinations. primarySpecialtyOnly=true removes providers who list the specialty only as secondary; includeSecondaryLocations=false drops providers whose main office is outside the territory. Returns per item: summary, NPI, provider type, name, specialty/taxonomy, practice address, phone.

Behavior: read-only; runs the Apify Actor pandadad0214/npi-provider-lists (https://apify.com/pandadad0214/npi-provider-lists) on your own Apify account. Price: $0.0015 per provider in list. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxResults when you leave it unset, so it also limits what is billed; setting maxResults higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

NameRequiredDescriptionDefault
citiesNoCities. Optional. Write "Austin, TX". Saint/St, Fort/Ft and Mount/Mt spellings are searched together. When cities are given, the list is limited to those cities (states only fill in a missing state).
statesNoStates. 2-letter codes, e.g. VT, TX. Big states are split automatically by ZIP code, so you are not stuck at the registry's 1,200-result ceiling. If you also list cities without a state, these states are used for them.
lastNameNoLast name. Optional, individuals only. A trailing * is a wildcard after at least 2 letters (Sm*).
zipCodesNoZIP codes. Optional. 5-digit ZIPs (05401) or prefixes of 2-4 digits (941 = San Francisco area, 05 = Vermont/New Hampshire). Added to the territory on top of states or cities.
firstNameNoFirst name. Optional, individuals only. Wildcards as above.
maxResultsNoMaximum providers. You pay per provider in the list, so this also caps the cost. Up to 50,000. With several specialties or areas the limit is shared fairly between them. Whole number, 1 to 50,000 results; default 500.
specialtiesNoSpecialties. Plain names work: dentist, orthodontist, family doctor, pediatrician, cardiologist, dermatologist, psychiatrist, chiropractor, physical therapist, nurse practitioner, psychologist, mental health counselor, social worker, pharmacy, home health, hospice, nursing home, urgent care, hospital, FQHC and more (full list in the README). Any NPPES taxonomy description also works, e.g. "Family Medicine" or "Nurse Practitioner, Pediatrics".
providerTypeNoProvider type. Individuals (NPI-1: doctors, nurses, therapists) or organizations (NPI-2: practices, clinics, pharmacies, agencies). Choices: all = Both; individual = Individuals only; organization = Organizations only.all
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
organizationNameNoOrganization name. Optional, organizations only, e.g. "Kaiser*" or "Walgreen*".
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).
primarySpecialtyOnlyNoPrimary specialty only. On: keep only providers whose primary taxonomy is the specialty you asked for. Off (default): keep anyone who lists it among their taxonomies.
includeSecondaryLocationsNoInclude providers with an additional practice location in the territory. On (default): a provider whose main office is elsewhere but who also practices in your territory is included, and the in-territory address is shown. Off: primary practice address only.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare read-only/open-world/non-destructive, and the description adds substantial operational context: it runs a paid Apify Actor on the user's account, charges $0.0015 per provider, has per-call spending caps, timeout behavior, and billing caveats around maxResults. It also describes the return shape and trimming behavior. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentences front-load purpose and sibling differentiation, then parameter notes, then operational behavior. It is long but justified by 14 parameters; however some parameter details repeat the schema and could be trimmed. Minor redundancy keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 14-parameter tool with no output schema, the description explains the return envelope ({actor, count, items}), item fields, cost model, timeout handling, and result caps. An agent has enough information to call it correctly and interpret the response.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents all 14 parameters. The description adds some cross-parameter behavior (e.g., maxResults shared across specialty×area combinations) and clarifies territory narrowing, but much of the parameter prose duplicates schema descriptions. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (build de-duplicated lists) and resource (US healthcare providers from the CMS NPI Registry), and explicitly distinguishes itself from local_business_leads and clinical_trial_leads. An agent can identify the tool's scope without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit when-to-use cases (doctors, dentists, therapists, pharmacies or clinics in states/cities/ZIPs) and when-not-to-use cases (non-US providers, email addresses), plus names company_website_enricher as the follow-up for emails. This is complete routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

podcast_leads_finderPodcast Leads Finder: Podcast Host Emails & Guest Booking ListA
Read-only

Find active podcasts to pitch by topic from Apple Podcasts and each show's public RSS feed: host, contact email published in the feed, website, socials, episode count, last episode date and a guest-friendly signal. Unlike local_business_leads or company_team_finder (businesses and staff), this targets shows and their hosts for guest booking or sponsorship outreach. Use when you need a podcast guesting, PR or sponsorship list for a niche. Do not use for audience or download numbers (not public) or for general topic popularity (use topic_trends_tracker). Parameters: each keyword is searched separately and results are de-duplicated; deepSearch=true (default) searches descriptions too for up to 3x more shows but is slower. onlyWithEmail and guestFriendlyOnly filter before billing, so they shrink both list and cost. activeWithinDays=0 includes dormant shows. Emails come only from RSS feeds; nothing is guessed. Returns per item: agentSummary, podcastName, author, email, emailSource, website, socials, appleUrl, feedUrl, primaryGenre, episodeCount, lastEpisodeDate, avgDaysBetweenEpisodes, guestFriendly, guestEpisodeShare, recentEpisodeTitles.

Behavior: read-only; runs the Apify Actor pandadad0214/podcast-leads-finder (https://apify.com/pandadad0214/podcast-leads-finder) on your own Apify account. Price: $0.004 per podcast found. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxResults when you leave it unset, so it also limits what is billed; setting maxResults higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

NameRequiredDescriptionDefault
sortByNoSort by. Relevance = Apple's search order. Newest episode = most recently active first. Most episodes = biggest back catalogs first. Choices: relevance = Relevance; newestEpisode = Newest episode; mostEpisodes = Most episodes.relevance
countryNoApple Podcasts country. 2-letter store country to search, e.g. US, GB, CA, AU, IN. Default US.US
keywordsNoTopics / keywords. Podcast topics to search on Apple Podcasts, one per line, e.g. real estate investing, SaaS marketing, women in business. Each keyword returns up to about 600 shows before filters. Leave empty for a 20-podcast demo.
languageNoLanguage. Optional. Keep shows whose feed language starts with this code, e.g. en, es, de.
deepSearchNoDeep search. On by default: also searches show descriptions and keywords, not just titles, for up to 3x more shows per keyword.
maxResultsNoMaximum podcasts. You pay per returned podcast, so this also caps the cost. Whole number, 1 to 3,000; default 100.
minEpisodesNoMinimum episodes. Optional. Skip shows with fewer episodes (e.g. 20 to skip brand-new shows). Default 0.
onlyWithEmailNoOnly podcasts with a contact email. Keep only shows that publish a contact email in their RSS feed (itunes:owner, managingEditor or the show description).
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
activeWithinDaysNoActive within (days). Keep only shows that published an episode in the last N days. 0 = include inactive shows. Default 90.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
guestFriendlyOnlyNoOnly podcasts that feature guests. Keep only shows where at least 30% of the last 20 episodes look like interviews (guest names, 'with', 'feat.', or podcast:person guest tags).
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only cover safety (readOnly, non-destructive, open-world), while the description adds substantial context they do not: it runs Apify Actor pandadad0214/podcast-leads-finder on the caller's own account, costs $0.004 per podcast found, filters like onlyWithEmail/guestFriendlyOnly apply before billing, and emails come only from RSS feeds and are never guessed. It also discloses runtime (5-15s typical, 300s timeout cap) and the {actor, count, items} return envelope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with purpose, then differentiation, then parameters, then runtime/billing, then return fields in a logical order, and nearly every sentence carries decision-relevant information. It is dense rather than lean, with mild redundancy between the behavior paragraph and the per-parameter notes on run_max_items, run_max_charge_usd, and maxResults.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 13-parameter, no-output-schema tool with pay-per-result billing, the description covers the essentials an agent needs: what is returned per item, how filters affect billing, spend and item caps, timeout recovery guidance, and the response envelope. Nothing material is left to inference for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage the baseline is 3, and the description earns above that by explaining cross-parameter behavior the schema does not: keywords are searched separately and de-duplicated, deepSearch trades latency for up to 3x more shows, activeWithinDays=0 includes dormant shows, and run_max_items fills maxResults and limits what is billed. Some of this repeats schema text (e.g., maxResults' cost note), which keeps it below a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Find active podcasts to pitch by topic" gives a specific verb and resource, and it enumerates the returned fields (host, email, website, socials, episode count, guest-friendly signal). It explicitly contrasts itself with local_business_leads and company_team_finder, so an agent can distinguish it from siblings without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use when you need a podcast guesting, PR or sponsorship list for a niche" states the target case, and the description adds two exclusions with a named alternative: no audience/download numbers, and "for general topic popularity (use topic_trends_tracker)." Both when-to-use and when-not-to-use are present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trucking_company_leadsTrucking Company Leads: New FMCSA Carriers, Email & PhoneA
Read-only

Pull US and Canadian motor carrier, broker and freight-forwarder records from official FMCSA data, with phone, email, officers, fleet size, drivers, cargo, operating authority and safety rating. It runs in three modes: new USDOT registrations, filtered search of the registry, or lookup by USDOT number. Unlike local_business_leads (any category from OpenStreetMap) or npi_provider_lists (healthcare registry), this is the authoritative FMCSA registry for transportation companies. Use when you need new-entrant carrier leads (insurance, factoring, ELD, dispatch, fuel cards), carriers by lane/state/fleet/cargo, or to enrich known DOT numbers. Do not use for shipment tracking, load boards or rates. Parameters: mode=new uses daysBack and sorts newest first; mode=search ignores daysBack and uses the filters plus activeOnly; mode=lookup uses only dotNumbers. powerUnits/drivers bounds, carrierClass=forHire and requireEmail/requirePhone are the strongest narrowers and filter before billing. Phone and email are what carriers file with FMCSA and may be personal or stale. Runs that match nothing are free. Returns per item: agentSummary, dotNumber, mcNumber, legalName, dbaName, status, addedDate, daysSinceAdded, officers, phone, cellPhone, email, street, city, state, zip, powerUnits, drivers, fleetBand, cargo, hazmat, operation, carrierClasses, entityTypes, safetyRating, lastFilingDate, saferUrl.

Behavior: read-only; runs the Apify Actor pandadad0214/trucking-company-leads (https://apify.com/pandadad0214/trucking-company-leads) on your own Apify account. Price: $0.002 per carrier returned. Runs that find nothing are not charged per result, and spending is capped per call by run_max_charge_usd (default $0.50). run_max_items (default 50) limits items returned and fills maxResults when you leave it unset, so it also limits what is billed; setting maxResults higher can bill more than is returned. Most calls finish in 5-15 s for a few inputs; large inputs or crawls can take minutes, so raise run_timeout_secs (max 300) or shrink the input after a timeout error. Returns JSON {actor, count, items}; long text output is trimmed to whole items, with all items in structuredContent.

NameRequiredDescriptionDefault
modeNoWhat to find. New carriers = fresh USDOT registrations (the classic trucking-leads list for insurance, factoring, ELD, dispatch and fuel cards). Search = any carrier matching your filters. Lookup = details for a list of USDOT numbers. Choices: new = New carriers (registered in the last N days); search = Search all carriers by filters; lookup = Look up USDOT numbers.new
cargoNoCargo hauled (any of). Optional. Keep carriers that haul at least one of these, e.g. refrigerated food, building materials, livestock.
citiesNoCities. Optional. Exact city names, e.g. Houston, Laredo.
statesNoStates / provinces. 2-letter codes of the physical address (TX, CA, FL, ON…). Empty = all states.
daysBackNoRegistered in the last (days). New-carriers mode: how far back to look. 7 = this week's new entrants.
operationNoOperation. Interstate carriers cross state lines and usually need MC authority. Choices: any = Any; A = Interstate; B = Intrastate hazmat; C = Intrastate non-hazmat.any
activeOnlyNoActive USDOT status only. On by default. Off includes inactive and pending registrations (search mode).
dotNumbersNoUSDOT numbers (lookup mode). Lookup mode: one USDOT number per line (up to 1,000).
entityTypeNoEntity type. Find brokers instead of carriers, for example. Choices: any = Any; C = Carrier; B = Broker; F = Freight forwarder; S = Shipper; I = Intermodal equipment provider.any
hazmatOnlyNoHazmat carriers only. Only carriers flagged as hazardous materials carriers.
maxDriversNoMax drivers. Optional.
maxResultsNoMaximum carriers. You pay per carrier returned, so this also caps the cost. Newest registrations first.
minDriversNoMin drivers. Optional.
zipPrefixesNoZIP code prefixes. Optional. ZIP codes or prefixes, e.g. 850 for Phoenix, 770 for Houston.
carrierClassNoCarrier class. For-hire carriers haul other people's freight (best for brokers, factoring and dispatch). Choices: any = Any; forHire = For-hire (authorized for hire); private = Private (hauls own goods); exempt = Exempt for-hire; passenger = Passenger.any
nameContainsNoName contains. Optional. Word in the legal or DBA name, e.g. logistics, express, transport.
requireEmailNoOnly carriers with an email. Skip records with no published email.
requirePhoneNoOnly carriers with a phone. Skip records with no published phone.
maxPowerUnitsNoMax power units. Optional. 1 = owner-operators only.
minPowerUnitsNoMin power units (trucks/tractors). Optional. 1 = owner-operators and up; 5 = small fleets and up.
run_max_itemsNoOptional. Most results to return from this call (default from PANDA_MAX_ITEMS, 50). Also limits how many results the Actor produces and charges for, unless you set its own max field.
run_timeout_secsNoOptional. Seconds to wait for results (default from PANDA_TIMEOUT_SECS, 120; max 300).
updatedWithinDaysNoFiled an update (MCS-150) in the last (days). Optional. Carriers that updated their FMCSA registration recently (active, reachable companies).
run_max_charge_usdNoOptional. Hard spending cap for this call in USD (default from PANDA_MAX_CHARGE_USD, 0.50).

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the readOnly/openWorld annotations: per-carrier pricing, free runs when nothing matches, a hard spend cap via run_max_charge_usd, the run_max_items/maxResults billing interaction, typical 5-15s runtimes with timeout remediation, and a candid caveat that phone/email are self-filed and may be personal or stale. Minor deduction because the timeout/charge semantics are restated rather than resolved in one place (it is unclear whether run_timeout_secs truncates results or errors).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long but front-loaded: purpose, differentiation, exclusions, then a parameter-behavior paragraph and a field list, with no filler. Some sentences duplicate schema text (run_max_charge_usd, run_timeout_secs defaults) and the 25-field return list is dense, but for a 24-parameter tool the density is earned.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description supplies the full item shape (agentSummary, dotNumber, officers, safetyRating, fleetBand, etc.) plus the wrapper {actor, count, items}. It covers cost, latency, error remediation, and data-quality caveats, so nothing material to invoking this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is already 100%, so the baseline is 3; the description earns above that by explaining cross-parameter coupling the schema cannot express - mode=new consumes daysBack and sorts newest first, mode=search ignores daysBack and applies activeOnly, mode=lookup uses only dotNumbers. It also ranks the highest-signal narrowers (powerUnits/drivers bounds, carrierClass=forHire, requireEmail/requirePhone) and flags the run_max_items vs maxResults billing trap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ('Pull US and Canadian motor carrier, broker and freight-forwarder records from official FMCSA data') and enumerates the returned fields. It explicitly distinguishes itself from two named siblings, local_business_leads and npi_provider_lists, so an agent can route correctly without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides concrete use cases (new-entrant carrier leads for insurance/factoring/ELD/dispatch, carriers by lane/state/fleet/cargo, DOT enrichment) and an explicit exclusion ('Do not use for shipment tracking, load boards or rates'). It also states which mode corresponds to which intent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

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

  1. 8 tool updatesv0.1.0
    • First observedcompany_hiring_signals
    • First observedcompany_team_finder
    • First observedcompany_website_enricher
    • First observedlocal_business_leads
    • First observednpi_provider_lists
    • First observedpodcast_leads_finder
    • First observedtopic_trends_tracker
    • First observedtrucking_company_leads

TDQS

A4.6/5.0

Scored across 8 tools

Disambiguation5/5

Each tool targets a distinct source and entity type, and every description explicitly contrasts itself with the sibling tools (NPI registry vs OSM businesses vs FMCSA carriers; team people vs firmographics vs hiring signals). There is no realistic case where an agent would pick the wrong one, and the negative guidance ('do not use for...') is unusually thorough.

Naming Consistency4/5

All names are snake_case and noun-oriented, which is consistent enough to scan quickly. The suffixes vary by role (_leads, _finder, _enricher, _signals, _tracker, _lists), which is actually informative but means there is no single uniform pattern.

Tool Count5/5

Eight tools is a well-scoped set for a lead-generation and enrichment toolkit, and each one covers a genuinely different data source. Nothing appears redundant or like filler.

Completeness4/5

The surface covers discovery (local, healthcare, trucking, podcasts), enrichment (firmographics, people, hiring signals) and topic validation, which is a coherent pipeline. The main gap is email verification/validation — company_website_enricher explicitly points to an 'email_domain_security_checker' that is not in this set, and there is no de-duplication or export step across lists.

Maintenance

ActivityMaintained
ResponsivenessNo recent community issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Collection of B2B sales intelligence MCP servers. Includes website analysis, tech stack detection, hiring signals, review aggregation, ad tracking, social profiles, financial reporting and more for AI-powered prospecting
    1
    2
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    B2B lead generation MCP server with 20+ lead generation tools - Apollo scraping, Google Maps, email finder, email validator, mobile finder, skip trace, ecommerce store data, and more.
    25
    1,901 npm
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for Pubrio — the glocalized business data layer for AI agents. 50 tools to search companies, people, jobs, news & ads, enrich records, reveal contacts, manage signal monitors, and access reference data from around the globe.
    51
    46 npm
    MIT