find_similar_companies
ChatGPTFind 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
ChatGPTReturn 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
ChatGPTReturn 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
ChatGPTLook 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.
search_companies
ChatGPTSearch 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…