MCP App Store
by KeenEthics
Canonical Company Search icon

Canonical Company Search

By VY Labs Technologies Private LTD.

Get New App Alerts

Overview

Canonical is a company data API and remote MCP server built for the long tail — the companies others miss. Describe what you want in plain English (or pass structured filters) and it retrieves from a curated corpus of millions, verifying each candidate against products/services, target customer, and business model with an LLM evaluator. You get a precise, domain-keyed shortlist: signal, not a noisy page of links. Two workflows, one graph. Discovery: search for companies matching an ICP, or pull look-alikes from a seed domain. Enrichment: resolve a free-text company name to a canonical domain, then retrieve the full company record — funding (round series from pre-seed through growth, amount raised, post-money valuation, investors, last-raise date), founding year, employee count, HQ city/state/country, founder and executive slates with role, LinkedIn, and prior-employer tags like FAANG or unicorn, plus corporate-family links (parents, ultimate parent, subsidiaries, joint ventures). Founder and leadership coverage is a curated subset, not the whole corpus. Built for agents: everything is keyed by domain, so an agent runs the whole loop without holding state — look up a name, drill into the profile, hop to a related company, or fan out to look-alikes. Free tier to start with, no credit card required.

Tools

find_people

ChatGPT
Find people — founders and executives — at companies, or a company's leadership. Covers company founders, executives and other business leaders in their professional roles; returns no email addresses, phone numbers or home addresses. Scope it one of three ways: - company_domains: the leadership of up to 25 known companies (e.g. domains from a previous search). Up to 10 people per company. - description and/or company filters (cities, countries, employee_count_min, funding_series, ...): people at companies that match, exactly as search_companies matches companies. - previously_at alone: people who used to work at those companies and now hold a role elsewhere; add company filters to narrow where they are now. Person conditions — combine freely; all must hold for the same person: - roles: when omitted, returns decision-makers (founders, C-suite, and VPs / heads / directors / owners / partners / presidents). - title_contains: any of these terms in the person's current title. - person_location: where the PERSON is based ("London"). Use cities / countries for where the company is headquartered. - previously_at + previous_title_contains: a prior employer (name or domain) and the title held THERE. Internships don't count. Each term matches whole words; a term of five or more letters also matches words that start with it ("engineer" matches "Engineering"). Each person: name, role, title, company {name, domain}, location, linkedin_url, prior_companies (up to 3), confidence ("high" | "medium"), last_verified (date). Pass company.domain to get_company_details for the full company profile. warnings lists companies that couldn't be resolved; an ambiguous name lists candidate domains — ask the user which one, or retry with a domain. When next_cursor is present there are more people: call again with the same arguments plus cursor for the next page (pages stay available for 24 hours). company_domains returns everything in one call. Costs 1 credit per person returned; with company_domains, 1 credit per company that returned people. Nothing found is free. The response includes credits_used and credits_remaining. Args: description: What the companies do, as in search_companies. cities: Company HQ cities. states: Company HQ states / regions. countries: Company HQ countries. employee_count_min: Minimum company headcount. employee_count_max: Maximum company headcount. founding_year_min: Earliest company founding year. founding_year_max: Latest company founding year. is_public: true for listed companies only. funding_series: Latest funding round, as in search_companies. funded_after: Latest round on or after this date (YYYY-MM-DD). funded_before: Latest round on or before this date (YYYY-MM-DD). funding_investor: Companies backed by these investors. company_domains: Leadership mode — up to 25 company domains. roles: "founder", "cofounder", "ceo", "cto", "cfo", "coo", "chief_other", "exec_other". title_contains: Any of these terms in the current title, e.g. ["growth"]. person_location: Where the person is based, e.g. "Berlin". previously_at: Prior employers (names or domains), up to 10. Internships don't count. previous_title_contains: Any of these terms in the title held at the prior employer, e.g. ["cto", "chief technology"]. top_k: People per page, 1-100 (default 25). cursor: next_cursor from the previous page.

find_similar_companies

ChatGPT
Find companies similar to a given company by domain. Args: company_domain: Domain of the seed company (e.g. "stripe.com") top_k: Number of similar companies to return (1-100, default 20) intent: Optional ranking profile that reorders the similar set AFTER similarity filtering — same taxonomy and selection rule as search_companies (pick the slug matching the user's use case; omit / pass null for relevance-only ordering). Intent only changes the ORDER of the matched set; it never changes which companies are in it, the candidate pool, or the credits charged. Use it for requests like "companies similar to Stripe that are hiring/growing fast" or "...ranked for who's buying now". Allowed slugs: - "sales_prospecting": general outbound ICP list. - "sales_timing": accounts with a near-term buying window. - "sales_expansion": existing customers ripe for upsell. - "competitive_tracking": monitor NAMED competitors' direction. - "emerging_competitor_scan": discover rising new entrants. - "talent_source": companies to poach candidates from. - "recruiter_employer_vet": vet a company for a candidate. - "jobseeker_stability": job security over upside. - "jobseeker_growth": career-growth / high-momentum companies. See search_companies for the full per-slug guidance. include_partials: When True, also returns LLM-evaluated "partial" matches (close but not strong). Off by default because partials aren't billed; opt in only when the user wants exploratory context beyond strong matches. Default False. exclude_company_domains: Optional list of company domains to exclude from the similar-companies results. Useful when the seed has obvious near-clones you want to skip (e.g. "similar to Stripe, not Square or Adyen"). Unresolvable domains appear in warnings. When presenting results to the user, render each company's domain as a clickable link to the company's website (e.g. as a Markdown link to https://<domain>). Note: each candidate is independently LLM-verified, so the exact set (and therefore the result count and credits charged) can vary slightly between otherwise-identical calls — borderline matches may pass on one run and not the next. This is expected and is not affected by intent.

get_account_status

ChatGPT
Return the authenticated org's credit balance, plan, and search rate limits. Use this to check remaining credits before issuing a search, or to pace requests against the org's per-minute and per-day limits. This call is completely free — it charges no credits and does not count against the search rate budget. Returns: - credits: bucket breakdown (total, subscription, extra) and subscription_resets_at (ISO datetime string or null) — when the subscription bucket will next be refilled. - plan: the org's current plan name (e.g. "free", "starter", "pro"). - rate_limits: per_minute and per_day search operation limits for the current plan. - billing_url: URL to the billing page to top up or upgrade.

get_company_details

ChatGPT
Return the full detail payload for one canonical company by domain. Use this AFTER a search to drill into a specific company. Returns: - company: full canonical fields (name, domain, description, hq, employees, funding, dimensions). Includes defunct (bool) — when true the company has shut down, so don't route users to it. Always present when the domain resolves to a known company. Internal id fields are intentionally not included. - people: key people (cofounders + C-suite/execs — not only founders) with role, headline, LinkedIn URL, and prior_companies (each with category tags like 'faang', 'unicorn', 'top_startup', 'big_tech', 'mbb', and a domain handle you can pass back into this tool to walk the company graph). May be empty. - leadership_data: "available" (people populated), "not_available" (company is in our DB but not in the leadership subset — most companies fall here), or "error" (transient lookup failure). Free to call but rate-limited to prevent enumeration. When showing this to the user, render the domain as a clickable link to the company's website (e.g. as a Markdown link to https://<domain>). Args: company_domain: Domain of the company (e.g. "stripe.com") — the same handle returned in search results.

lookup_companies

ChatGPT
Look up companies by name to disambiguate before another tool. Use this when a user names a company you'll feed into find_similar_companies (as a seed) or search_companies (as an exclude_company_domains entry) and the name might be ambiguous. Returns, per input name: - candidates: ranked (best-guess-first) list, each with name, domain, headquarters, description, is_primary, and payload_richness. - confidence: "high" (one entity) | "medium" (a dominant entity among rivals) | "low" (comparable rivals — a real toss-up). - primary_candidate_domain: the recommended domain, or null when asking. - auto_resolve_recommended: bool. Disambiguation policy — FOLLOW THIS: - If auto_resolve_recommended is true, proceed silently with primary_candidate_domain (the one candidate marked is_primary). Do NOT ask the user — the match is unambiguous (one entity, or a clear dominant one). - If auto_resolve_recommended is false, primary_candidate_domain is null and NO candidate is is_primary — none is authoritative. Present candidates to the user as a list and WAIT for them to pick before calling the next tool. Do not auto-select even if one looks right — disambiguation is the point. Free, rate-limited. Args: names: One or more free-text company names to look up. k: How many candidates to return per name (1-25, default 5). disambiguation_mode: Override the recommendation for non-interactive callers. "auto_when_confident" (default) follows the policy above; "always_auto" never asks (use the primary); "always_ask" always asks.

lookup_people

ChatGPT
Find specific people by name — their current role and company. Covers company founders, executives and other business leaders in their professional roles; returns no email addresses, phone numbers or home addresses. Pass up to 10 people, each {name, company}. company is optional but strongly improves the match: a domain ("stripe.com") or a company name. Returns the best matches per name (up to k), each with matched_name (the name you passed) plus the same fields as find_people. Several matches for one name are different people who share it: show their companies and ask which one. Names with no match are listed in unmatched. A name found only at companies other than the company you gave is listed in unconfirmed, without those people; look it up without company to see them. Returned matches that are not at that company are flagged company_match: false. Costs 1 credit per name that matched at least one person; unmatched and unconfirmed names are free. The response includes credits_used and credits_remaining. Args: people: Up to 10 entries of {"name": ..., "company": ... (optional)}. k: Matches to return per name, 1-5 (default 3).

search_companies

ChatGPT
Search Canonical's verified company graph for the long tail — the companies others miss. This is precise, LLM-verified company discovery, not a web search that returns ranked links. description is the only fuzzy / semantic field: it expresses a free-text concept (e.g. "enterprise SaaS for supply-chain visibility"), which is passed to an LLM verifier that checks each candidate against the intent and returns a verdict. Everything else is an exact, hard filter — the pipeline enforces it before the verifier sees a result. IMPORTANT — unsupported constraints: there is intentionally NO field for constraints we cannot enforce (founder demographics, profitability, YC / accelerator batch, individual revenue figures). If the user asks for one, tell them it isn't a supported filter rather than pretending it was applied — or fold the idea into description for loose semantic verification. For example "YC S22 company" → description="Y Combinator Summer 2022 batch startup", which the verifier will check loosely. Args: description: Free-text semantic concept describing what the company does. This is the ONLY fuzzy field — the LLM verifier reads it and checks each candidate for match/partial/irrelevant. Examples: "B2B SaaS for HR teams", "consumer fintech targeting millennials", "climate tech in renewable energy storage". Omit (or pass null) for purely filter-driven searches (e.g. "all Series B companies in India with 50-100 employees"). cities: Restrict to companies headquartered in these cities. Exact match (case-insensitive). Example: ["San Francisco", "New York"]. For a metro/region, list all constituent cities and include common name variants (e.g. Gurgaon/Gurugram, Bengaluru/Bangalore). states: Restrict to these states/provinces. Example: ["California", "New York"]. Use full name, not abbreviation. countries: Restrict to these countries. Expand geographic regions to their constituent countries before passing — e.g. "Southeast Asia" → ["Indonesia", "Vietnam", "Thailand", "Philippines", "Malaysia", "Singapore"]; "Nordics" → ["Sweden", "Norway", "Denmark", "Finland", "Iceland"]. Single country: ["India"]. employee_size: Headcount band. One of: "1-10", "11-50", "51-100", "101-500", "501-1000", "1001-5000", "5001+". For "well-funded startup" signals, use funding_min_usd instead. founding_year_min: Lowest founding year to include (inclusive 4-digit year). E.g. 2015 means "founded in 2015 or later". Combine with founding_year_max to express a range. founding_year_max: Highest founding year to include (inclusive). E.g. 2020 means "founded in 2020 or earlier". For an exact year, set founding_year_min == founding_year_max. founding_year_exclude_min: Lowest year of a contiguous range to EXCLUDE (inclusive). Both exclude_min and exclude_max must be set together; for a single-year exclusion ("not founded in 2020"), set both to the same year. founding_year_exclude_max: Highest year of the contiguous range to EXCLUDE (inclusive). Note on NULLs: companies with unknown founding year are DROPPED when including (min/max), but KEPT when excluding — matching the intuitive reading of "not founded in 2020" (unknowns might be). funding_series: One or more funding-round labels to include. Values: "pre_seed", "seed", "series_a", "series_b", "series_c", "series_d", "series_e", "series_f", "series_g_plus", "growth", "late", "bridge", "venture", "angel", "other". funding_min_usd: Minimum TOTAL funding raised (USD). Heuristics: "well-funded startup" ≈ 50_000_000; "unicorn-range" use funding_post_money_min_usd instead. funding_post_money_min_usd: Minimum post-money valuation (USD). Heuristic: "unicorn" ≈ 1_000_000_000. funded_after: Only include companies that raised a round after this ISO date (YYYY-MM-DD). Example: "2022-01-01". funding_investor: Filter to companies backed by these investors. Pass the investor firm name; the server expands it to canonical variants and fund-family splits automatically. Example: "Sequoia" resolves to "Sequoia Capital", "Peak XV Partners", "Sequoia Capital India". You may pass multiple investors for an OR match. has_repeat_fo…

find_similar_companies

Claude

get_account_status

Claude

get_company_details

Claude

lookup_companies

Claude

search_companies

Claude

Example Prompts

Click any prompt to copy it.

Similar Apps