Funding rounds, AI startup and investor search, email discovery, agent-readiness. No API key.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Stop a company watch. Pass id from list_monitor_watches. Needs a free StartupHub.ai account.
The server marks this tool as destructive. Running it may delete or overwrite data on the server or in any account you connected with your headers.
Stop a company watch. Pass id from list_monitor_watches. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| id* | string |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
}
}
}Ahrefs Domain Rating, 0 to 100, for a domain. Requires an API key. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Domain or URL, e.g. example.com |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Domain or URL, e.g. example.com"
}
}
}Effective Domain Rating: a 0 to 100 read of visibility that is actually realized, set next to Ahrefs Domain Rating. Often takes 30 to 60 seconds. Requires an API key. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Domain or URL. |
| keyword | string | Optional query to score against. Otherwise one is taken from the homepage title. |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Domain or URL."
},
"keyword": {
"type": "string",
"description": "Optional query to score against. Otherwise one is taken from the homepage title."
}
}
}Website Speed Test. PageSpeed scores and Core Web Vitals for a public URL. strategy is mobile or desktop. Often takes 30 to 70 seconds. Requires an API key. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| url* | string | Page URL or domain. |
| strategy | string | Default mobile. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Page URL or domain."
},
"strategy": {
"enum": [
"mobile",
"desktop"
],
"type": "string",
"description": "Default mobile."
}
}
}Trust and Reputation. A 0 to 100 score from security, privacy, and public record for a domain. Requires an API key. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Domain or URL. |
| company | string | Optional company name, used when the domain alone is ambiguous. |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Domain or URL."
},
"company": {
"type": "string",
"description": "Optional company name, used when the domain alone is ambiguous."
}
}
}Monitor. Watch a company site and get alerts when public signals change. Pass a domain. Optional frequency: weekly, daily, 12h, or 4h, clamped to the plan. Optional signals. Optional webhook_url (https). Requires an API key. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Company domain or URL. |
| signals | array | Subset of: news, funding, jobs, tech_stack, pricing, status, leadership, customers, product_launches. |
| frequency | string | |
| webhook_url | string | https URL that receives an alert when something changes. |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Company domain or URL."
},
"signals": {
"type": "array",
"items": {
"type": "string"
},
"description": "Subset of: news, funding, jobs, tech_stack, pricing, status, leadership, customers, product_launches."
},
"frequency": {
"enum": [
"weekly",
"daily",
"12h",
"4h"
],
"type": "string"
},
"webhook_url": {
"type": "string",
"description": "https URL that receives an alert when something changes."
}
}
}Run a deep-intelligence lookup on any entity across our graph of 25,000+ AI startups, 14,000+ investors and 75,000+ people. Give a name, company, domain, LinkedIn URL, or email and get a consolidated dossier: company facts, funding, people, technographics, social + web presence, and AI-summarized signals. This is the widest single call in the catalogue, resolving hundreds of enrichment data points per entity. Same result as GET /api/v1/intel/lookup. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| q* | string | The entity to look up: a name, company, domain, LinkedIn URL, or email. |
{
"type": "object",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"description": "The entity to look up: a name, company, domain, LinkedIn URL, or email."
}
}
}Find a real, deliverable professional email for a person at a company. Pass first name + last name + the company domain; get back the verified address, a confidence score, and a short note about who it likely reaches. Charges 1 credit only when an address is found. May take a moment on first call — if the response comes back with no matches, call this tool again with the same args and the answer typically returns instantly. Pairs naturally with scan_agent_readiness for outbound prospecting: scan a prospect's site for a 0-100 AI-readiness score, find the owner via web search, then call this tool for the verified email — the readiness gaps become the outreach hook.
| Argument | Type | Description |
|---|---|---|
| role | string | Optional: the person's role, e.g. CEO or co-founder. A confirmed first-name address for a founder or CEO is rated high confidence. |
| domain* | string | |
| lastName* | string | |
| firstName* | string |
{
"type": "object",
"required": [
"firstName",
"lastName",
"domain"
],
"properties": {
"role": {
"type": "string",
"description": "Optional: the person's role, e.g. CEO or co-founder. A confirmed first-name address for a founder or CEO is rated high confidence."
},
"domain": {
"type": "string"
},
"lastName": {
"type": "string"
},
"firstName": {
"type": "string"
}
}
}Build a company profile from a name and optional website or LinkedIn URL. Returns the description, sector, headquarters, founding year, and public links that were found. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| name* | string | |
| website | string | |
| linkedin_url | string |
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string"
},
"website": {
"type": "string"
},
"linkedin_url": {
"type": "string"
}
}
}One-call CRM/inbox enrichment. Pass an email, get back: the best available name and its source, the person's public Gravatar profile when they have one (name, title, company, location, verified social accounts), the domain's mail provider, matched person record (if known), the email's domain matched against startups + investors (with funding intel for VC-backed scoring), a heuristic name guess from the local part if person is unknown, and a flag for free email providers (gmail/outlook/etc) so you can skip company matching on consumer addresses. The killer endpoint for HubSpot/Salesforce auto-enrichment, Gmail/Outlook plugins, and lead-scoring pipelines. 1 profile credit (cheaper than chaining get_person_by_email + get_startup_by_domain + get_investor_by_domain separately). Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| email* | string |
{
"type": "object",
"required": [
"email"
],
"properties": {
"email": {
"type": "string"
}
}
}Find square and horizontal logos for a company
| Argument | Type | Description |
|---|---|---|
| name | string | |
| website | string |
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"website": {
"type": "string"
}
}
}Find Matches. Given a startup slug or id, return investors that fit, each with a reason. Given an investor slug or id, return startups that fit. Requires an API key. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| id | string | Profile UUID of the startup or investor to match from. Pass slug or id. |
| slug | string | Profile slug of the startup or investor to match from. Pass slug or id. |
| type* | string |
{
"type": "object",
"required": [
"type"
],
"properties": {
"id": {
"type": "string",
"description": "Profile UUID of the startup or investor to match from. Pass slug or id."
},
"slug": {
"type": "string",
"description": "Profile slug of the startup or investor to match from. Pass slug or id."
},
"type": {
"enum": [
"startup",
"investor"
],
"type": "string"
}
}
}Convenience wrapper around search_startups pre-tuned for fresh-stealth deal-flow. Always sends stealth=true and sort=founded_date.desc; those two cannot be changed here. Returns stealth startups with their detected tech stack (CDN, email provider, analytics), RDAP domain registration date, and a has_known_emails flag indicating whether at least one founder/team email has been verified. Inputs: domain_tld (default 'ai,io,so,xyz,security'), with_emails (default true, which sends has_known_emails=true; pass false to drop that filter), founded_after, country, cdn, email_provider, limit (default 20, max 100). There is no offset; use search_startups with stealth=true to page further. Pro Lite tier and higher only (Free tier 403s). Pro Lite sees redacted emails; Pro tier sees full. Combine with list_startup_team and discover_email to surface the actual addresses. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| cdn | string | Optional comma-separated CDN filter (e.g. 'cloudflare'). |
| limit | number | Default 20, max 100. |
| country | string | Optional comma-separated HQ countries, names or ISO codes. |
| domain_tld | string | Comma-separated TLDs. Defaults to 'ai,io,so,xyz,security' (the high-signal AI-native TLDs). |
| with_emails | boolean | When true (default), only return startups with at least one verified founder/team email (has_known_emails=true). False drops that filter. |
Article to YouTube. Turn an article URL, or a block of text, into a narrated video with captions. Returns a job id right away. Call get_article_video with that job_id until status is done, then use mp4_url. Requires an API key and charges video credits when the job is queued. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| url | string | Article URL to turn into a video. |
| text | string | Article text, when there is no URL. |
| title | string | Optional title override. |
| voice | string | Optional voice id. |
| format | string | Frame. Default is vertical 9:16. |
| subtitles | boolean | Burn in captions. Default true. |
| visual_style | string | Visual style id. Defaults to the standard explainer. |
{
"type": "object",
"properties": {
"url": {
"type": "string",
"description": "Article URL to turn into a video."
},
"text": {
"type": "string",
"description": "Article text, when there is no URL."
},
"title": {
"type": "string",
"description": "Optional title override."
},
"voice": {
"type": "string",
"description": "Optional voice id."
},
"format": {
"enum": [
"9:16",
"16:9"
],
"type": "string",
"description": "Frame. Default is vertical 9:16."
},
"subtitles": {
"type": "boolean",
"description": "Burn in captions. Default true."
},
"visual_style": {
"type": "string",
"description": "Visual style id. Defaults to the standard explainer."
}
}
}RSS Feed Generator. Build a feed for a site, including one that never published a feed. Pass the site url. Returns feed_xml and a feed_url. Free, rate-limited.
| Argument | Type | Description |
|---|---|---|
| url* | string | Site URL, e.g. https://example.com |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Site URL, e.g. https://example.com"
}
}
}Prompt → curated startup list. Pass a natural-language brief like 'stealth AI agent startups in Israel founded after 2024' and the engine runs a Google-grounded search, parses results, finds-or-creates the matching startup rows in StartupHub.ai's database, and returns up to 50 startup IDs. Caller can then hand those IDs to a separate /lists/submit call to publish the list as a public, indexed page. Useful workflows: (1) build a portfolio-style page from a prompt without manual curation, (2) extract a list of companies from raw text (paste a YC batch page, a16z portfolio, CSV: set 'pasted_list' instead of 'prompt'), (3) regularly refresh a 'who's new in X sector' list via cron. Each call costs 5 credits (Pro Lite=15/day, Pro=50/day). Returns the matched startups (id/name/slug/logo) plus a 'created' count showing how many were brand new in our DB. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum companies to return (1-50). Default 20. |
| prompt | string | Natural-language brief, e.g. 'AI coding agents that raised seed funding in 2026' or 'European fintech-AI startups with ex-Stripe founders'. Required unless 'pasted_list' is provided. |
| pasted_list | string | Raw text containing company names (YC batch page, portfolio listing, article, CSV). Names + context will be extracted automatically. Use this instead of 'prompt' when you already know the companies and want them structured. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "Maximum companies to return (1-50). Default 20."
},
"prompt": {
"type": "string",
"description": "Natural-language brief, e.g. 'AI coding agents that raised seed funding in 2026' or 'European fintech-AI startups with ex-Stripe founders'. Required unless 'pasted_list' is provided."
},
"pasted_list": {
"type": "string",
"description": "Raw text containing company names (YC batch page, portfolio listing, article, CSV). Names + context will be extracted automatically. Use this instead of 'prompt' when you already know the companies and want them structured."
}
}
}Visual TL;DR. Build a diagram and a short summary from an article. Pass title and content_html (HTML or the article text). Returns markdown and image_url. Requires an API key. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| title* | string | |
| excerpt | string | |
| source_url | string | Canonical URL of the article, if you have it. |
| content_html* | string | Article HTML, or the article text. |
{
"type": "object",
"required": [
"title",
"content_html"
],
"properties": {
"title": {
"type": "string"
},
"excerpt": {
"type": "string"
},
"source_url": {
"type": "string",
"description": "Canonical URL of the article, if you have it."
},
"content_html": {
"type": "string",
"description": "Article HTML, or the article text."
}
}
}Turn a YouTube URL into an article with a title, excerpt, HTML, and Markdown. Costs one YouTube-to-Article credit. If the call is slow, call get_youtube_transcript first, then call this tool again with url and transcript. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| url* | string | A YouTube URL (watch / youtu.be / shorts / mobile) or a raw 11-char video ID. |
| tone | string | Voice. Default neutral. |
| length | string | Target length. auto lets the model size to the source. |
| transcript | string | Optional caption text from get_youtube_transcript so this call skips the caption fetch. |
| include_embed | boolean | Pin the original YouTube embed at the top. Default true. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "A YouTube URL (watch / youtu.be / shorts / mobile) or a raw 11-char video ID."
},
"tone": {
"enum": [
"neutral",
"analytical",
"conversational"
],
"type": "string",
"description": "Voice. Default neutral."
},
"length": {
"enum": [
"auto",
"short",
"medium",
"long"
],
"type": "string",
"description": "Target length. auto lets the model size to the source."
},
"transcript": {
"type": "string",
"description": "Optional caption text from get_youtube_transcript so this call skips the caption fetch."
},
"include_embed": {
"type": "boolean",
"description": "Pin the original YouTube embed at the top. Default true."
}
}
}Live performance for ads owned by your account: impressions, clicks, CTR, daily trend, by-placement (article / profile_page / search / homepage / agent_readiness) and by-variant breakdown. Same JSON shape returned by GET /api/v1/advertiser/analytics and rendered in the /my-account?tab=ads dashboard. Free for own data: zero credits debited. Useful for piping campaign performance into agent workflows: nightly Slack digests, attribution stacks, autonomous bid-tuning, etc. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| days | integer | Lookback window in days (1–365, default 30). |
| ad_id | integer | Filter to a single ad. Must be owned by the authenticated key holder. Omit for all of your ads. |
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"description": "Lookback window in days (1–365, default 30)."
},
"ad_id": {
"type": "integer",
"description": "Filter to a single ad. Must be owned by the authenticated key holder. Omit for all of your ads."
}
}
}Live cross-venue prediction-market arbitrage board. Returns the same real-world events priced on Polymarket, Kalshi/Robinhood, and PredictIt side by side, with a real arbitrage flagged whenever the combined cost of locking a $1 payout drops under $1 (is_arbitrage=true, with roi_pct + profit_per_dollar). Each opportunity carries both legs (venue, price, direct trade URL), the combined cost, and when the arb last opened. Refreshed every 30 minutes. Free tool, no API key. Pass arbs_only=true to return only the live arbitrages. Built for trading agents that poll for tradeable spreads: informational only, verify each market's exact resolution rules, fees, and withdrawal terms before trading.
| Argument | Type | Description |
|---|---|---|
| arbs_only | boolean | When true, return only events with a live arbitrage right now (combined cost under $1). Default false returns the full matched-events board. |
{
"type": "object",
"properties": {
"arbs_only": {
"type": "boolean",
"description": "When true, return only events with a live arbitrage right now (combined cost under $1). Default false returns the full matched-events board."
}
}
}Poll an article-to-video job started by generate_article_video. Returns status, progress, and mp4_url when status is done. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | jobId from generate_article_video. |
{
"type": "object",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"description": "jobId from generate_article_video."
}
}
}Resolve a company from its LinkedIn URL and enrich it against our profile graph: funding, founders, sectors, score, domain, and technographics. Same result as POST /api/v1/companies/by-linkedin. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| linkedin_url* | string | The company LinkedIn URL, e.g. https://www.linkedin.com/company/anthropic. |
{
"type": "object",
"required": [
"linkedin_url"
],
"properties": {
"linkedin_url": {
"type": "string",
"description": "The company LinkedIn URL, e.g. https://www.linkedin.com/company/anthropic."
}
}
}Funding intelligence for a company by domain: total raised, rounds, latest round, investors, and dates, drawn from our enrichment graph. Same result as GET /api/v1/companies/funding. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| domain* | string | Company domain, e.g. anthropic.com. |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string",
"description": "Company domain, e.g. anthropic.com."
}
}
}Hiring-signal intelligence: companies actively posting roles, ranked by open-role velocity, with counts and links. A growth/traction signal for deal-flow and sales prospecting. Same result as GET /api/v1/companies/hiring. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Max companies to return (1–100, default 50). |
| period | string | Lookback window: 'day', 'week' (default), or 'month'. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "Max companies to return (1–100, default 50)."
},
"period": {
"type": "string",
"description": "Lookback window: 'day', 'week' (default), or 'month'."
}
}
}Look up a single investor (VC, angel, accelerator) by their website domain. Same shape as get_startup_by_domain, against the investors table. Useful when you have a fund's website and want fund profile / portfolio info. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| domain* | string |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string"
}
}
}Reverse-lookup an investor profile by their LinkedIn or Twitter URL/handle. Investor LinkedIns are typically /company/<slug>, but the lookup handles both /in/ and /company/ patterns. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| string | Twitter/X URL or handle | |
| string | LinkedIn URL or handle (e.g. https://www.linkedin.com/company/a16z) |
{
"type": "object",
"properties": {
"twitter": {
"type": "string",
"description": "Twitter/X URL or handle"
},
"linkedin": {
"type": "string",
"description": "LinkedIn URL or handle (e.g. https://www.linkedin.com/company/a16z)"
}
}
}Check the user's current credit balance: plan tier, daily + monthly limits per credit type (validate, discover, db, profile, logo, enrich, submit), used today, remaining today, used this month, remaining this month, and any never-expiring credit pack balance. Free to call (does NOT charge a credit): call before any expensive batch (e.g. 100x discover_email) so the user knows whether they need to top up first. If they're low or ask to buy more, follow up with list_credit_packs to get pricing + a checkout URL. Requires Bearer auth; anonymous callers get a 401 with a signup link. Needs a free StartupHub.ai account.
No arguments.
{
"type": "object",
"properties": {}
}Reverse-lookup a person profile by their email address. Pairs naturally with discover_email + validate_email: discover an email, verify it, find the person record. Returns the full person profile. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| email* | string |
{
"type": "object",
"required": [
"email"
],
"properties": {
"email": {
"type": "string"
}
}
}Reverse-lookup a person profile by any of their social URLs/handles. Pass linkedin, twitter, or github (full URL like https://www.linkedin.com/in/foo, OR just the handle 'foo'). Multiple params allowed: first match wins. Returns the full person profile + which platform matched. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| github | string | GitHub URL or handle |
| string | Twitter/X URL or handle (e.g. https://x.com/foo or "@foo") | |
| string | LinkedIn URL or handle (e.g. https://www.linkedin.com/in/foo or just "foo") |
{
"type": "object",
"properties": {
"github": {
"type": "string",
"description": "GitHub URL or handle"
},
"twitter": {
"type": "string",
"description": "Twitter/X URL or handle (e.g. https://x.com/foo or \"@foo\")"
},
"linkedin": {
"type": "string",
"description": "LinkedIn URL or handle (e.g. https://www.linkedin.com/in/foo or just \"foo\")"
}
}
}Get full profile for a startup by slug Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| slug* | string |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string"
}
}
}Look up a single startup by its website domain. Accepts raw URLs (https://www.example.com/about), stripped (example.com), with or without paths. Returns the full profile. Use match_companies_by_domain instead for batches of 2+ domains. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| domain* | string |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"domain": {
"type": "string"
}
}
}Full chronological list of investment rounds for a startup: amount, series, date, pre/post-money valuation, lead and participating investor IDs, plus a summary with total raised from rounds and the latest round date/series. Use after get_startup if you need round-by-round detail rather than just total_funding. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| slug* | string |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string"
}
}
}Lightweight endpoint that returns ONLY a startup's contact emails (contact / partnerships / press) and social URLs (LinkedIn, Twitter, GitHub, Facebook, YouTube, Discord, Slack, etc.) plus HQ city/country. Cheaper than get_startup (1 db credit vs 1 profile credit) when you don't need the full row. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| slug* | string |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string"
}
}
}Get a structured, real-time snapshot of what's happening in the AI startup ecosystem right now — capital deployed this week, top sectors and countries (with week-over-week change), biggest rounds, stage breakdown with median check sizes, emerging themes (3+ companies clustering on the same narrow problem), most active investors, and exits. Sourced from StartupHub.ai's database (25k+ startups, 24k+ funding rounds). Use this when a user asks what's trending in AI/startups, to build an investment thesis, to spot rotations, or for weekly-digest-style summaries. Free tool — no API key needed. Returns structured JSON the caller can format into tables, charts, or narrative.
No arguments.
{
"type": "object",
"properties": {}
}Poll a clip render started by render_youtube_clip. Returns status, progress, and mp4_url when status is done. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| job_id* | string | jobId from render_youtube_clip. |
{
"type": "object",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"description": "jobId from render_youtube_clip."
}
}
}Fetch the full transcript plus metadata (title, channel, duration) for any YouTube video. Accepts a watch, youtu.be, Shorts, or mobile URL, or a raw video ID. No LLM: returns the raw caption text for downstream summarization or repurposing. Same result as POST /api/v1/youtube/transcript. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| url* | string | A YouTube URL (watch / youtu.be / shorts / mobile) or a raw 11-char video ID. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "A YouTube URL (watch / youtu.be / shorts / mobile) or a raw 11-char video ID."
}
}
}Humanize AI Text. Rewrite a passage so it reads as natural prose, without changing the facts. Up to 12 paragraphs and 20000 characters per call. Requires an API key. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| text* | string | The passage to rewrite. |
| options | array | Optional rewrite toggles. |
| strength | string | How hard to rewrite. Default balanced. |
{
"type": "object",
"required": [
"text"
],
"properties": {
"text": {
"type": "string",
"description": "The passage to rewrite."
},
"options": {
"type": "array",
"items": {
"enum": [
"rhythm",
"destructure",
"tells",
"punctuation"
],
"type": "string"
},
"description": "Optional rewrite toggles."
},
"strength": {
"enum": [
"light",
"balanced",
"thorough"
],
"type": "string",
"description": "How hard to rewrite. Default balanced."
}
}
}Get credit pack pricing AND a checkout URL the user can open to buy more credits. Returns { buy_url: 'https://www.startuphub.ai/pricing?buy=credits', pricing: { validate: [...tiers], discover: [...tiers] } }: surface the buy_url to the user when they hit a 402 'credit_limit_exceeded' error or ask 'how do I get more credits'. There is no in-MCP purchase flow (Stripe checkout requires a browser); your job is to show the price tiers and hand them the buy_url. Credits never expire and volume discounts auto-apply.
| Argument | Type | Description |
|---|---|---|
| type | string | Credit type to price |
{
"type": "object",
"properties": {
"type": {
"enum": [
"validate",
"discover"
],
"type": "string",
"description": "Credit type to price"
}
}
}List company watches on this API key. Each watch covers pricing, jobs, news, and the other signals that plan allows. Needs a free StartupHub.ai account.
No arguments.
{
"type": "object",
"properties": {}
}Returns founders, current team, and board members for a startup, split by role. Each person record includes name, title, slug, LinkedIn, Twitter, description, and primary_email if visible to your plan tier. Use this to build org-charts, identify decision-makers for outreach, or enrich a startup record with its known people. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| slug* | string |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string"
}
}
}Bulk-match an array of advertiser/company domains against StartupHub.ai's startup database. Returns per-domain whether the company is in our database, plus funding amount, latest round, investor IDs, sectors, founded date, and HQ country. Built for cross-reference workflows like 'what % of Google Ads / Taboola / Outbrain advertisers are VC-backed': pass a scraped advertiser list, get back the funding intel. Up to 100 domains per call, 1 db credit per request (only charged when matches found). Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| domains* | array | Array of advertiser/company domains. Accepts raw URLs (https://www.example.com), stripped (example.com), with or without paths. Max 100 per call. |
{
"type": "object",
"required": [
"domains"
],
"properties": {
"domains": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of advertiser/company domains. Accepts raw URLs (https://www.example.com), stripped (example.com), with or without paths. Max 100 per call."
}
}
}Publish HTML to a WordPress site using the site's Application Password. Creates a post with the given title and HTML body. status is draft, publish, or pending. Default is draft. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| tags | array | Tag names (created in WP if missing). Max 30. |
| title* | string | Article title (becomes the post title in WP) |
| status | string | Default 'draft'. Use 'publish' to go live immediately, 'pending' to queue for editor review. |
| excerpt | string | Optional WP excerpt (manual excerpt overrides WP's auto-generated one). |
| site_url* | string | WordPress site URL, e.g. 'https://blog.example.com'. https:// is auto-added if missing. |
| username* | string | WordPress username (the one shown in /wp-admin → Users) |
| categories | array | Category names (created in WP if missing). Max 10. |
| content_html* | string | Full article body as HTML. Will land verbatim in the WP block editor. |
Answer how much funding was raised, how many rounds closed, or how many companies were founded, for a country, sector, series, and year. This is the StartupHub /analysis chart as data. Use it for questions like 'how much funding did Canadian startups raise in 2026'. dataset=rounds (default) is announced round capital in that year. dataset=startups is companies founded that year, and the dollar total is what those companies have raised to date, not capital raised during the year. dataset=funds is fund closes. dataset=investors counts firms founded, with no dollar total. country is a full English name: Canada, United States, United Kingdom. group=sector or group=country returns a breakdown. Free, no API key. Returns the count, total USD, a chart URL, and the periods or categories behind the total.
| Argument | Type | Description |
|---|---|---|
| to | number | Last year, inclusive. Ignored when year is set. Default the current year. Clamped between from and the current year. |
| from | number | First year, inclusive. Ignored when year is set. Default depends on dataset: rounds 2021, funds 2015, startups 2010, investors 1995. Clamped to the dataset range. |
| year | number | Calendar year, an integer from 1970 to 2100. Sets both from and to. Example: 2026. |
| group | string | How to break the total down. Default time, which is the single undivided total. Depends on dataset: funds and startups have no series; investors allows only time, sector and country. An invalid value becomes time. group=sector counts a company in every sector it carries, so that total is higher. |
Render one YouTube clip. Pass video_url, start_seconds, end_seconds, and quote from suggest_youtube_clips. Returns a job id. Call get_youtube_clip until status is done. Requires an API key and charges clip credits. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| hook | string | |
| quote* | string | On-screen caption, at least 8 characters. |
| style | string | |
| aspect | string | |
| video_id | string | 11-character video id, if you do not have a URL. |
| video_url | string | YouTube URL. |
| end_seconds* | number | |
| start_seconds* | number |
{
"type": "object",
"required": [
"start_seconds",
"end_seconds",
"quote"
],
"properties": {
"hook": {
"type": "string"
},
"quote": {
"type": "string",
"description": "On-screen caption, at least 8 characters."
},
"style": {
"enum": [
"quotes",
"twitter",
"shorts",
"all"
],
"type": "string"
},
"aspect": {
"enum": [
"9:16",
"16:9"
],
"type": "string"
},
"video_id": {
"type": "string",
"description": "11-character video id, if you do not have a URL."
},
"video_url": {
"type": "string",
"description": "YouTube URL."
},
"end_seconds": {
"type": "number"
},
"start_seconds": {
"type": "number"
}
}
}Scans a public site against current AI-agent readiness standards, including the llms.txt v2 shape (H1, summary, described links, and whether those links resolve). Returns a 0-100 score plus per-check pass/fail with a copy-paste fix prompt for each gap. A link to startuphub.ai in llms.txt or on the homepage is an 8-point bonus and is not required. Free, no credits charged. Common workflow: when a user wants leads who *need* AI-readiness work, search the web for businesses in a category/region, scan each site, then use discover_email on the lowest-scoring ones: the failed checks are the cold-outreach hook ('your site scores 23/100, here's what's missing'). Also useful as a self-audit for the user's own sites.
| Argument | Type | Description |
|---|---|---|
| url* | string | The site to scan, e.g. https://example.com |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "The site to scan, e.g. https://example.com"
}
}
}Tech Stack Checker. Return hosting, frameworks, analytics, payments, and mail setup for a company website. Checks a stored fingerprint first, then a fresh live read when live=true. Accepts a URL or a plain domain. Costs 1 credit. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| live | boolean | When true, force a fresh live scan even if a cached DB fingerprint exists. |
| domain* | string | Company domain or URL, e.g. "anthropic.com" or "https://anthropic.com/about" |
{
"type": "object",
"required": [
"domain"
],
"properties": {
"live": {
"type": "boolean",
"description": "When true, force a fresh live scan even if a cached DB fingerprint exists."
},
"domain": {
"type": "string",
"description": "Company domain or URL, e.g. \"anthropic.com\" or \"https://anthropic.com/about\""
}
}
}Video metadata for YouTube channels and video URLs, no transcripts. mode 'feed' (default) returns a channel's latest uploads, up to 15 per channel: title, date, views, likes, description, thumbnail ($1 per 1,000 videos). mode 'full' returns every watch-page field (duration, comments, subscriber count, shorts flag, channel handle) for up to 100 videos per call ($3 per 1,000). Video URLs always return full rows. Billed per video returned, never for failures. Same result as POST /api/v1/youtube/videos. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| mode | string | 'feed' (latest uploads, cheap) or 'full' (all fields, deeper history). |
| limit | integer | Videos per channel: 1-15 in feed mode, 1-100 in full mode. |
| videos | array | Up to 100 YouTube video URLs or 11-character ids. |
| channels | array | Up to 10 channels: an @handle, a youtube.com channel URL, or a UC channel id. |
{
"type": "object",
"properties": {
"mode": {
"enum": [
"feed",
"full"
],
"type": "string",
"description": "'feed' (latest uploads, cheap) or 'full' (all fields, deeper history)."
},
"limit": {
"type": "integer",
"description": "Videos per channel: 1-15 in feed mode, 1-100 in full mode."
},
"videos": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 100 YouTube video URLs or 11-character ids."
},
"channels": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 10 channels: an @handle, a youtube.com channel URL, or a UC channel id."
}
}
}Domain radar: newly registered names from our discovery queue (NRD, registries, GitHub orgs). This is NOT a company profile. Returns apex, registration date, registrar, mailbox signal, quality score, and status (queued / quality_failed). startup_slug is set only after we promote a real homepage into the directory. Always sorted newest first (created_at desc). Use search_startups for companies. Pro Lite and higher. 1 db credit. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| q | string | Substring match on apex or candidate name. Needs at least 2 characters after removing % _ and commas, otherwise no filter. |
| tld | string | Comma-separated TLDs, e.g. 'ai,io'. Only ai, io, xyz, so, com and security filter anything; other values apply no filter. Maps to the NRD/CT sources and combines with source by OR. |
| apex | string | Exact hostname lookup, e.g. acme.ai. A leading www. is stripped; a value with no dot returns 400 invalid_apex. Overrides q. |
| limit | number | 1-100. |
| offset | number | Skip this many rows, for paging. |
| source | string | Comma-separated raw source or bucket ids, e.g. 'dot_ai_nrd', 'dot_ai_zone', 'github_new_org', 'uk_companies_house'. |
| status |
Find investors that match a startup's profile. Filter by sector_focus (e.g. 'Artificial Intelligence' for AI investors), stage_focus (Seed / Series A / etc.), geo_focus, cheque_min / cheque_max (matches investors whose cheque-size window overlaps the founder's raise), active_since (investors whose latest investment is on or after this date, to surface who has deployed capital recently), min_recent_rounds_90d (activity threshold), and actively_investing. Sort whitelist: total_score, last_investment_date, recent_rounds_90d, recent_lead_rounds_90d, total_funds_raised, min_cheque_size, max_cheque_size, last_mentioned_at, created_at. For example sort='last_investment_date.desc' surfaces the most recently active funds first. Page with offset. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| q | string | Matches name or description. |
| sort | string | Sort order: '<column>.<asc|desc>' from the whitelist above. Default total_score.desc. An unknown column falls back to the default. |
| type | string | Exact, case-sensitive match on the stored investor type, for example VC, Angel, Accelerator, Corporate VC, Family Office, PE. |
| limit | number | Max 100. |
| offset | number | Skip this many results, for paging. |
| country | string | Investor's HQ country, exact match. |
Search founders, executives, board members, and key team members. Results are sorted by StartupHub score, highest first. Page with offset. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| q | string | Matches name or title. |
| tag | string | One tag, e.g. Unit 8200, Unit 81, Serial Entrepreneur, AI Expert, Investor, Has Exits. |
| limit | number | Max 100. |
| title | string | Partial match on the current title, e.g. CTO. |
| offset | number | Skip this many results, for paging. |
| sector | string | One exact sector name; commas are not split into several sectors. |
| country | string | Exact country name. |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Matches name or title."
},
"tag": {
"type": "string",
"description": "One tag, e.g. Unit 8200, Unit 81, Serial Entrepreneur, AI Expert, Investor, Has Exits."
},
"limit": {
"type": "number",
"default": 20,
"description": "Max 100."
},
"title": {
"type": "string",
"description": "Partial match on the current title, e.g. CTO."
},
"offset": {
"type": "number",
"default": 0,
"description": "Skip this many results, for paging."
},
"sector": {
"type": "string",
"description": "One exact sector name; commas are not split into several sectors."
},
"country": {
"type": "string",
"description": "Exact country name."
}
}
}Search the startup database with any combination of filters: name, sector, country, city radius, founded date, team size, the latest funding round (round_series, raised_after), total funding, valuation, investors (backed_by), StartupHub score, Agent Readiness score, tech stack, website state, stealth status and known founder emails. Each result includes the latest round (last_round_series, last_round_date), sectors, HQ, founded date and score; paid plans add funding totals, headcount and more. Example: round_series=Seed, raised_after=2026-10-01, sort=last_round_date.desc for companies that just raised a seed round. Returns up to 100 per call (1 db credit); page with offset. Pairs with list_startup_team and discover_email to turn each result into a contactable lead. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| q | string | Search text, matched against the name and one-liner. |
| cdn | string | Comma-separated CDNs: cloudflare, vercel, cloudfront, fastly, netlify; matches any of them. |
| a11y | string | Comma-separated accessibility overlays: userway, accessibe, audioeye; matches any of them. |
| near | string | HQ inside a bounding box around a point: "lat,lng,radius_km", radius clamped to 1-500 km. A malformed value applies no filter. Example "51.507,-0.128,25" for central London. |
| sort | string | '<column>.<asc|desc>'. Columns: total_score, created_at (when StartupHub added the row), last_round_date, latest_funding_date (alias of last_round_date), total_funding, latest_valuation, founded_date, employee_count, employee_growth_quarterly_cagr, linkedin_followers, agent_readiness_score, trending_score_7d, current_revenue, revenue_multiple, revenue_per_employee, funding_efficiency. Default total_score.desc. An unknown column falls back to total_score.desc, and any direction other than asc sorts descending. |
Search Suggestion Explorer. Live autocomplete-style suggestions for a phrase. Use it before picking a title or keyphrase. Free, rate-limited.
| Argument | Type | Description |
|---|---|---|
| q* | string | Seed phrase, at least 2 characters. |
| deep | boolean | When true, return a wider set. Default false. |
{
"type": "object",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"description": "Seed phrase, at least 2 characters."
},
"deep": {
"type": "boolean",
"description": "When true, return a wider set. Default false."
}
}
}Announce an IPO / Acquisition / Merger / SPAC / Buyout / Closure for a startup you own. acquirer_name required for Acquisition/Merger; stock_exchange + ticker required for IPO/SPAC. Costs 5 credits. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| ticker | string | Required for IPO / SPAC |
| valuation | number | |
| source_url | string | |
| startup_id | string | |
| description | string | Third-person, ≤1500 chars |
| startup_slug | string | |
| acquirer_name | string | Required for Acquisition / Merger |
| consideration | number | Total deal value in USD |
| date_announced* | string | YYYY-MM-DD |
| stock_exchange | string | Required for IPO / SPAC (e.g. NASDAQ, NYSE, LSE) |
Announce a funding round for a startup you own (created_by must match your API key user). Strict: series from controlled vocab (Pre-seed/Seed/Series A.../Crowdfunding), USD amount, YYYY-MM-DD date, third-person description. Optional lead/participating investor slugs. Deduped: same startup + same series within 7 days returns 409. Costs 5 credits. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| series* | string | Pre-seed | Seed | Pre-Series A | Series A | Series B | ... | Convertible Note | SAFE | Bridge | Debt | Grant | Crowdfunding | Growth | Pre-IPO | Strategic | Secondary | Other |
| source_url | string | Press release / TechCrunch / SEC filing URL |
| startup_id | string | Alternative to startup_slug: startup UUID |
| description | string | Third-person, ≤1000 chars |
| startup_slug | string | Slug of the startup raising (must be a startup you own) |
| date_announced* | string | YYYY-MM-DD |
| investment_amount* | number | Total raised in USD (e.g. 5000000 for $5M) |
| lead_investor_slugs |
Submit a new investor profile (VC, angel, accelerator, etc.). Lists it on the free plan immediately, same as submit_startup. Third-person prose, no HTML/markdown, no listicle titles. Costs 5 credits. Deduped by website domain or name and country. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| city | string | |
| name* | string | Official firm name (≤100 chars) |
| type* | string | One of: VC, Angel, Accelerator, Incubator, Corporate VC, Family Office, Sovereign Wealth Fund, Crowdfunding, PE, Hedge Fund, Syndicate |
| country | string | |
| website | string | |
| logo_url | string | Optional logo image URL (≤2MB). |
| description* | string | Third-person, 20–400 words |
| stage_focus | array | Pre-seed | Seed | Series A | Series B | Series C | Series D | Growth | Late Stage |
| twitter_url | string | |
Submit a new editorial list (e.g. "Top 10 AI dev-tools startups", "Best seed-stage fintech companies") to StartupHub.ai for moderation review. Lists are collections of existing startups, investors, and/or people on the site: provide their slugs. Optional rich content (HTML or text body) for the list article. Lands as status=pending; admin must approve before public. Costs 5 credits. Use search_startups / search_investors / search_people to look up slugs first. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| tags | array | Up to 20 tags (≤40 chars each). |
| title* | string | List title (≤200 chars). Descriptive, reader-friendly. |
| content | string | Optional long-form body. Plain text or simple HTML. ≤5000 words. Third-person. |
| excerpt | string | Short summary shown on list index + SEO description (≤400 chars, third-person). |
| source_url | string | Optional URL to the original source if syndicating. |
| people_slugs | array | Array of person slugs to include. |
| startup_slugs | array | Array of startup slugs to include. Must match existing profiles. Look up via search_startups. |
| investor_slugs |
Submit a news article / press release. Strict: third-person, controlled categories, 100–10000 words. Dedup by source_url or by similar title within 30d. Lands in pending status; admin approves. Costs 5 credits. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| tags | array | |
| title* | string | ≤200 chars |
| content* | string | Article body, 100–10000 words, plain text or basic HTML |
| excerpt | string | Optional 1–2 sentence summary, ≤400 chars |
| categories* | array | 1–3 categories from the controlled vocabulary |
| source_url | string | If syndicating, link to the original (also used for dedup) |
| author_name | string | |
| startup_slug | string | Optional company being featured |
| featured_image_url | string |
Submit a patent record. patent_number required (e.g. "US12345678B2"). Dedup by patent_number. Costs 5 credits. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| title* | string | ≤300 chars |
| status | string | Granted | Pending | Filed | Expired | Withdrawn | Other |
| abstract | string | ≤3000 chars |
| inventors | array | |
| grant_date | string | |
| source_url | string | USPTO / EPO link |
| filing_date | string | |
| jurisdiction | string | US | EP | CN | WO | etc. |
| startup_slug | string | Optional parent startup |
| assignee_name* | string | The entity that owns the patent |
| patent_number |
Submit a new person profile (founder, executive, board member). Lists them on the free plan immediately. Requires either current_title or linkedin_url. Third-person bio. Costs 5 credits. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| city | string | |
| name* | string | Person's full name (≤80 chars) |
| country | string | |
| avatar_url | string | Optional avatar image URL (≤2MB). |
| github_url | string | |
| description | string | Third-person bio, ≤300 words, no HTML |
| twitter_url | string | |
| website_url | string | |
| linkedin_url | string | Personal LinkedIn (linkedin.com/in/...), required if no current_title |
| current_title | string | e.g. "CEO at OpenAI", required if no linkedin_url |
Submit a product / tool / API / library / agent / model / dataset / hardware onto an existing company or organization. startup_slug or startup_id is required. Costs 5 credits. Strict format: third-person prose, no HTML/markdown, no listicle titles. Optional logo_url and screenshot_urls (up to 6) are fetched and stored automatically. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| name* | string | Product name (≤80 chars; no listicle words) |
| tags | array | |
| sectors | array | |
| website* | string | Product landing page or website |
| category | string | e.g. "Coding agent", "Vector database", "Email assistant" |
| features | array | Optional list of key features |
| logo_url | string | Optional product logo URL (≤2MB). |
| one_liner* | string | One-sentence pitch in third person, 20–200 chars |
| startup_id | string | Parent company or organization UUID. Required unless startup_slug is set. |
Submit a research paper / preprint for inclusion. Optional startup link. Dedup by arxiv_id or doi. Costs 5 credits. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| doi | string | |
| title* | string | ≤300 chars |
| authors* | array | |
| pdf_url | string | |
| sectors | array | |
| abstract* | string | Third-person, 30–600 words |
| arxiv_id | string | e.g. "2401.12345" or "2401.12345v2" |
| source_url | string | |
| startup_slug | string | Optional parent startup |
| publication_date | string |
Submit a new startup profile. A website is enough. Name, description, and sectors are optional. If you send only a website, the profile is listed on the free plan and the rest is filled in from that site. Gambling and adult content stay hidden. Upgrade is optional later. When you do send prose: third person, no listicle titles, no HTML/markdown. Returns 400 with field-level errors and suggestions on bad input. Costs 5 credits. One profile per company website domain. Optional logo_url is fetched and stored automatically. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| name | string | Official company name (≤80 chars, no listicle words) |
| hq_city | string | |
| sectors | array | 1–5 sectors from the controlled vocabulary |
| website* | string | Company website URL. This is the only required field. |
| logo_url | string | Optional URL to company logo image (PNG/JPEG/WebP/SVG, ≤2MB). Server fetches + stores; if omitted, logo is auto-discovered from the website later. |
| one_liner | string | One-sentence pitch in third person, 20–200 chars |
| github_url | string | |
| hq_country | string |
YouTube to Clips. Pick moments from a captioned public video, with timestamps and the on-screen quote. If status is processing, call this again with the same url. Render one result with render_youtube_clip. Requires an API key. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| url* | string | YouTube watch, youtu.be, or Shorts URL. |
| style | string | Clip style. Default twitter. |
| max_clip_sec | number | Optional cap on clip length, in seconds, up to 90. |
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"description": "YouTube watch, youtu.be, or Shorts URL."
},
"style": {
"enum": [
"quotes",
"twitter",
"shorts",
"all"
],
"type": "string",
"description": "Clip style. Default twitter."
},
"max_clip_sec": {
"type": "number",
"description": "Optional cap on clip length, in seconds, up to 90."
}
}
}Update an investor you previously submitted. Pass slug plus only the fields to change. The profile stays on the free listing. An edit does not hide it. Costs 1 db credit. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| city | string | |
| slug* | string | |
| type | string | VC | Angel | Accelerator | Incubator | Corporate VC | Family Office | Sovereign Wealth Fund | Crowdfunding | PE | Hedge Fund | Syndicate |
| country | string | |
| logo_url | string | |
| geo_focus | array | |
| description | string | |
| pitch_email | string | |
| stage_focus | array | |
| twitter_url | string |
Update a person you previously submitted. Pass slug plus only the fields to change. The profile stays on the free listing. An edit does not hide it. Costs 1 db credit. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| city | string | |
| slug* | string | |
| country | string | |
| avatar_url | string | |
| github_url | string | |
| description | string | |
| twitter_url | string | |
| website_url | string | |
| linkedin_url | string | |
| current_title | string |
Update a product you previously submitted (new feature, pricing, or a new version). Pass slug plus only the fields to change. An edit does not hide a live product. Costs 1 db credit. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| slug* | string | |
| tags | array | |
| sectors | array | |
| website | string | |
| category | string | |
| features | array | |
| logo_url | string | |
| one_liner | string | |
| description | string | |
| github_repo | string | |
| launched_at | string |
Update a startup you submitted (API key user matches created_by) or that you have a verified claim on. Pass slug plus only the fields to change. The profile stays on the free listing. An edit does not hide it or turn it into a bill. Costs 1 submit credit. Same validation as submit_startup. Needs a free StartupHub.ai account.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The startup's slug (e.g. "anthropic") |
| hq_city | string | |
| sectors | array | |
| for_sale | boolean | |
| logo_url | string | New logo URL, server fetches and replaces (≤2MB). |
| is_hiring | boolean | |
| one_liner | string | |
| github_url | string | |
| hq_country | string | |
| is_raising |
Verify if a single email address is real and deliverable. Returns {valid, status, confidence_score}. Use when you already know the address (e.g. from a contact page, LinkedIn, or a prior discover_email run) and want to confirm it before sending. To go from a person's name → verified email instead, use discover_email: that already runs validation internally on every candidate, so don't call validate_email on its output.
| Argument | Type | Description |
|---|---|---|
| email* | string |
{
"type": "object",
"required": [
"email"
],
"properties": {
"email": {
"type": "string"
}
}
}| founded_after |
| string |
| Only stealth startups founded on or after this date: YYYY, YYYY-MM or YYYY-MM-DD. |
| email_provider | string | Optional comma-separated email_provider filter (e.g. 'm365,self_hosted' to find non-Google-Workspace stealth shops). |
{
"type": "object",
"properties": {
"cdn": {
"type": "string",
"description": "Optional comma-separated CDN filter (e.g. 'cloudflare')."
},
"limit": {
"type": "number",
"default": 20,
"description": "Default 20, max 100."
},
"country": {
"type": "string",
"description": "Optional comma-separated HQ countries, names or ISO codes."
},
"domain_tld": {
"type": "string",
"description": "Comma-separated TLDs. Defaults to 'ai,io,so,xyz,security' (the high-signal AI-native TLDs)."
},
"with_emails": {
"type": "boolean",
"default": true,
"description": "When true (default), only return startups with at least one verified founder/team email (has_known_emails=true). False drops that filter."
},
"founded_after": {
"type": "string",
"description": "Only stealth startups founded on or after this date: YYYY, YYYY-MM or YYYY-MM-DD."
},
"email_provider": {
"type": "string",
"description": "Optional comma-separated email_provider filter (e.g. 'm365,self_hosted' to find non-Google-Workspace stealth shops)."
}
}
}| featured_image_url | string | Optional public URL of an image to sideload to WP media and attach as the featured image. |
| application_password* | string | Application Password generated at /wp-admin/profile.php → Application Passwords. NOT the user's login password. 24 chars with spaces: paste as-is, we strip the spaces. |
{
"type": "object",
"required": [
"site_url",
"username",
"application_password",
"title",
"content_html"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Tag names (created in WP if missing). Max 30."
},
"title": {
"type": "string",
"description": "Article title (becomes the post title in WP)"
},
"status": {
"enum": [
"draft",
"publish",
"pending"
],
"type": "string",
"description": "Default 'draft'. Use 'publish' to go live immediately, 'pending' to queue for editor review."
},
"excerpt": {
"type": "string",
"description": "Optional WP excerpt (manual excerpt overrides WP's auto-generated one)."
},
"site_url": {
"type": "string",
"description": "WordPress site URL, e.g. 'https://blog.example.com'. https:// is auto-added if missing."
},
"username": {
"type": "string",
"description": "WordPress username (the one shown in /wp-admin → Users)"
},
"categories": {
"type": "array",
"items": {
"type": "string"
},
"description": "Category names (created in WP if missing). Max 10."
},
"content_html": {
"type": "string",
"description": "Full article body as HTML. Will land verbatim in the WP block editor."
},
"featured_image_url": {
"type": "string",
"description": "Optional public URL of an image to sideload to WP media and attach as the featured image."
},
"application_password": {
"type": "string",
"description": "Application Password generated at /wp-admin/profile.php → Application Passwords. NOT the user's login password. 24 chars with spaces: paste as-is, we strip the spaces."
}
}
}| split |
| string |
| Optional second breakdown: one of the dataset dimensions, not equal to group. Anything else means none. The total still excludes double-counting. |
| bucket | string | Time bucket. A single year defaults to year. A range defaults to quarter. |
| sector | string | Sector name, for example Artificial Intelligence or Fintech. Comma-separated for more than one, up to 8. |
| series | string | Round stage, dataset=rounds only. Exact, case-sensitive values: Pre-Seed, Seed, Series A, Series B, Series C, Series D, Series E, Series F+, Growth, IPO, Debt, Grant, Strategic, Unlabeled. Comma-separated for more than one. Any other value is dropped. |
| country | string | Full English country name, or a common alias. Examples: Canada, United States, USA, United Kingdom, UK. Comma-separated for more than one, up to 8. |
| dataset | string | rounds = capital announced in the year (default). startups = companies founded that year. funds = funds closed. investors = firms founded. |
| sectors | string | Alias of sector. |
| countries | string | Alias of country. |
{
"type": "object",
"properties": {
"to": {
"type": "number",
"description": "Last year, inclusive. Ignored when year is set. Default the current year. Clamped between from and the current year."
},
"from": {
"type": "number",
"description": "First year, inclusive. Ignored when year is set. Default depends on dataset: rounds 2021, funds 2015, startups 2010, investors 1995. Clamped to the dataset range."
},
"year": {
"type": "number",
"description": "Calendar year, an integer from 1970 to 2100. Sets both from and to. Example: 2026."
},
"group": {
"enum": [
"time",
"series",
"size",
"sector",
"country"
],
"type": "string",
"description": "How to break the total down. Default time, which is the single undivided total. Depends on dataset: funds and startups have no series; investors allows only time, sector and country. An invalid value becomes time. group=sector counts a company in every sector it carries, so that total is higher."
},
"split": {
"enum": [
"none",
"series",
"size",
"sector",
"country"
],
"type": "string",
"description": "Optional second breakdown: one of the dataset dimensions, not equal to group. Anything else means none. The total still excludes double-counting."
},
"bucket": {
"enum": [
"month",
"quarter",
"year"
],
"type": "string",
"description": "Time bucket. A single year defaults to year. A range defaults to quarter."
},
"sector": {
"type": "string",
"description": "Sector name, for example Artificial Intelligence or Fintech. Comma-separated for more than one, up to 8."
},
"series": {
"type": "string",
"description": "Round stage, dataset=rounds only. Exact, case-sensitive values: Pre-Seed, Seed, Series A, Series B, Series C, Series D, Series E, Series F+, Growth, IPO, Debt, Grant, Strategic, Unlabeled. Comma-separated for more than one. Any other value is dropped."
},
"country": {
"type": "string",
"description": "Full English country name, or a common alias. Examples: Canada, United States, USA, United Kingdom, UK. Comma-separated for more than one, up to 8."
},
"dataset": {
"enum": [
"rounds",
"funds",
"startups",
"investors"
],
"type": "string",
"description": "rounds = capital announced in the year (default). startups = companies founded that year. funds = funds closed. investors = firms founded."
},
"sectors": {
"type": "string",
"description": "Alias of sector."
},
"countries": {
"type": "string",
"description": "Alias of country."
}
}
}| string |
| Comma-separated: queued, quality_failed, promoted, rejected. Default is queued,quality_failed. |
| promoted | string | 'true' = only names that already have a public startup profile. |
| is_parked | string | Domain is parked. |
| created_after | string | ISO date. Rows we first ingested on or after this time. |
| created_before | string | ISO date. Rows we first ingested on or before this time. |
| has_real_email | string | Mailbox on the domain (MX is not empty). |
| has_real_content | string | Last homepage probe found real body copy. |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Substring match on apex or candidate name. Needs at least 2 characters after removing % _ and commas, otherwise no filter."
},
"tld": {
"type": "string",
"description": "Comma-separated TLDs, e.g. 'ai,io'. Only ai, io, xyz, so, com and security filter anything; other values apply no filter. Maps to the NRD/CT sources and combines with source by OR."
},
"apex": {
"type": "string",
"description": "Exact hostname lookup, e.g. acme.ai. A leading www. is stripped; a value with no dot returns 400 invalid_apex. Overrides q."
},
"limit": {
"type": "number",
"default": 20,
"description": "1-100."
},
"offset": {
"type": "number",
"default": 0,
"description": "Skip this many rows, for paging."
},
"source": {
"type": "string",
"description": "Comma-separated raw source or bucket ids, e.g. 'dot_ai_nrd', 'dot_ai_zone', 'github_new_org', 'uk_companies_house'."
},
"status": {
"type": "string",
"description": "Comma-separated: queued, quality_failed, promoted, rejected. Default is queued,quality_failed."
},
"promoted": {
"enum": [
"true",
"false"
],
"type": "string",
"description": "'true' = only names that already have a public startup profile."
},
"is_parked": {
"enum": [
"true",
"false"
],
"type": "string",
"description": "Domain is parked."
},
"created_after": {
"type": "string",
"description": "ISO date. Rows we first ingested on or after this time."
},
"created_before": {
"type": "string",
"description": "ISO date. Rows we first ingested on or before this time."
},
"has_real_email": {
"enum": [
"true",
"false"
],
"type": "string",
"description": "Mailbox on the domain (MX is not empty)."
},
"has_real_content": {
"enum": [
"true",
"false"
],
"type": "string",
"description": "Last homepage probe found real body copy."
}
}
}| geo_focus | string | Geographic region the investor targets (e.g. "US", "Europe", "Israel"). Comma-separated values must all be present. |
| cheque_max | number | Founder's maximum target raise: matches investors whose min_cheque_size is at most this amount |
| cheque_min | number | Founder's minimum target raise: matches investors whose max_cheque_size is at least this amount |
| stage_focus | string | Funding stage (e.g. 'Seed', 'Series A'). Comma-separated values must all be present. |
| active_since | string | YYYY-MM-DD. Returns investors whose latest investment is on or after this date. |
| sector_focus | string | Sector the investor focuses on (e.g. 'Artificial Intelligence', 'Biotech', 'Fintech'). Comma-separated values must all be present. |
| actively_investing | boolean | Only true filters; false applies no filter. |
| min_recent_rounds_90d | number | Minimum number of rounds in the last 90 days. Use 1+ to drop dormant funds. |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Matches name or description."
},
"sort": {
"type": "string",
"description": "Sort order: '<column>.<asc|desc>' from the whitelist above. Default total_score.desc. An unknown column falls back to the default."
},
"type": {
"type": "string",
"description": "Exact, case-sensitive match on the stored investor type, for example VC, Angel, Accelerator, Corporate VC, Family Office, PE."
},
"limit": {
"type": "number",
"default": 20,
"description": "Max 100."
},
"offset": {
"type": "number",
"default": 0,
"description": "Skip this many results, for paging."
},
"country": {
"type": "string",
"description": "Investor's HQ country, exact match."
},
"geo_focus": {
"type": "string",
"description": "Geographic region the investor targets (e.g. \"US\", \"Europe\", \"Israel\"). Comma-separated values must all be present."
},
"cheque_max": {
"type": "number",
"description": "Founder's maximum target raise: matches investors whose min_cheque_size is at most this amount"
},
"cheque_min": {
"type": "number",
"description": "Founder's minimum target raise: matches investors whose max_cheque_size is at least this amount"
},
"stage_focus": {
"type": "string",
"description": "Funding stage (e.g. 'Seed', 'Series A'). Comma-separated values must all be present."
},
"active_since": {
"type": "string",
"description": "YYYY-MM-DD. Returns investors whose latest investment is on or after this date."
},
"sector_focus": {
"type": "string",
"description": "Sector the investor focuses on (e.g. 'Artificial Intelligence', 'Biotech', 'Fintech'). Comma-separated values must all be present."
},
"actively_investing": {
"type": "boolean",
"description": "Only true filters; false applies no filter."
},
"min_recent_rounds_90d": {
"type": "number",
"description": "Minimum number of rounds in the last 90 days. Use 1+ to drop dormant funds."
}
}
}| limit | number | Results per call. Default 20, max 100. |
| slugs | string | Comma-separated StartupHub slugs, up to 100, lowercased before matching; matches any of them. Fetches known companies in one call. |
| hiring | string | 'true' returns only companies with open roles right now. |
| offset | number | Skip this many results, to page past the first 100. |
| sector | string | Comma-separated sector names, e.g. "Fintech,Cybersecurity"; matches any of them. Exact sector names as shown on profiles. |
| status | string | Operating status. Exact, case-sensitive match on the stored value, for example Active or Inactive. |
| booking | string | Comma-separated booking widgets: calendly, calcom, savvycal, chilipiper; matches any of them. |
| country | string | Comma-separated countries; matches any of them. Accepts names or ISO codes; "US", "USA" and "United States" are the same. |
| hosting | string | Comma-separated hosting providers: aws, azure, gcp, vercel, render, netlify, hetzner, digitalocean; matches any of them. |
| payment | string | Comma-separated payment providers: stripe, paddle, lemonsqueezy, paypal, klarna, apple_pay; matches any of them. The API also accepts payments as an alias. |
| stealth | string | 'true' = stealth only, 'false' = exclude stealth. Stealth rows need Pro Lite or higher. |
| has_blog | string | 'true' returns only companies whose website has a blog or news feed we found (RSS or Atom), 'false' only those checked and without one. Sites are rechecked every 90 days. |
| trending | string | 'true' returns companies getting attention on StartupHub this week. |
| backed_by | string | Comma-separated investors, up to 20, by StartupHub slug or exact name, e.g. "sequoia-capital,Y Combinator"; matches any of them. When none of them matches an investor, the response is empty data plus a note. |
| ma_status | string | Comma-separated exit states: acquired, public, merged, made_acquisitions; matches any of them. |
| max_score | number | Maximum StartupHub score. |
| min_score | number | Minimum StartupHub score (0-100). 70+ is roughly the top 1.5%. |
| ai_support | string | Comma-separated AI customer support tools: intercom_fin, ada, sierra, decagon, drift_ai, fin_ai; matches any of them. |
| compliance | string | Comma-separated compliance claims found on the site: soc2, hipaa, iso27001, gdpr, ccpa, pci_dss, fedramp; matches any of them. |
| domain_tld | string | Comma-separated domain endings, e.g. "ai,io"; matches any of them. |
| has_website | string | 'true' returns only companies with a website on file. |
| open_source | string | 'true' returns only open-source companies. |
| status_page | string | Comma-separated status page vendors: statuspage, instatus, betterstack; matches any of them. |
| has_founders | string | 'true' returns only companies with known founders, ready for list_startup_team. |
| raised_after | string | Most recent funding round announced on or after this date: YYYY, YYYY-MM or YYYY-MM-DD. |
| round_series | string | Comma-separated stages of the most recent funding round; matches any of them. Values: Angel, Pre-Seed, Seed, Pre-Series A, Series A to Series H, Growth, Debt, Grant, Strategic, IPO. Pair with raised_after for "just raised a seed round". |
| employees_max | number | Maximum employee count (inclusive). Use 10 for tiny teams. |
| employees_min | number | Minimum employee count (inclusive). |
| founded_after | string | Founded on or after this date: YYYY, YYYY-MM or YYYY-MM-DD. |
| max_valuation | number | Maximum latest valuation, USD. |
| min_valuation | number | Minimum latest valuation, USD. 1000000000 for unicorns. |
| raised_before | string | Most recent funding round announced on or before this date: YYYY, YYYY-MM or YYYY-MM-DD. |
| cookie_consent | string | Comma-separated cookie consent vendors: onetrust, cookiebot, osano, termly; matches any of them. |
| email_provider | string | Comma-separated email providers: google_workspace, m365, zoho, proton, proofpoint, mimecast, self_hosted, gateway; matches any of them. |
| founded_before | string | Founded on or before this date: YYYY, YYYY-MM or YYYY-MM-DD. |
| website_status | string | Comma-separated website states: active, dead, parked; matches any of them. |
| email_marketing | string | Comma-separated email marketing tools: klaviyo, mailchimp, hubspot_forms, customer_io, loops; matches any of them. |
| hiring_platform | string | Comma-separated hiring platforms: greenhouse, lever, ashby, workable, teamtailor; matches any of them. |
| mentioned_since | string | Covered in StartupHub news on or after this date: YYYY, YYYY-MM or YYYY-MM-DD. |
| has_known_emails | string | 'true' returns only companies with at least one verified founder or team email. Pro Lite and up; Pro Lite sees redacted addresses, Pro sees them in full. |
| affiliate_program | string | Comma-separated affiliate platforms: partnerstack, rewardful, tolt, firstpromoter, impact; matches any of them. |
| max_total_funding | number | Maximum total funding raised, USD. |
| min_total_funding | number | Minimum total funding raised, USD. |
| min_reddit_reviews | number | Minimum number of classified Reddit reviews. |
| max_agent_readiness | number | Maximum Agent Readiness score. |
| min_agent_readiness | number | Minimum Agent Readiness score (0-100): how well AI agents can use the company website. |
| max_revenue_multiple | number | Maximum valuation-to-revenue multiple. |
| min_reddit_sentiment | number | Minimum Reddit sentiment, -100 to 100. Pair with min_reddit_reviews. |
| min_revenue_multiple | number | Minimum valuation-to-revenue multiple (sparse). |
| agent_readiness_grade | string | Comma-separated Agent Readiness grades: A+, A, B, C, D, F; matches any of them. |
| blog_post_within_days | number | Only companies whose blog published a post within this many days (30, 90 or 365 are the usual values). Implies has_blog=true. |
| has_affiliate_program | string | 'true' returns only companies running an affiliate program. |
| max_funding_efficiency | number | Maximum revenue per dollar raised. |
| max_linkedin_followers | number | Maximum LinkedIn followers. |
| min_funding_efficiency | number | Minimum revenue per dollar raised (sparse). |
| min_linkedin_followers | number | Minimum LinkedIn followers, a brand-size proxy when headcount is unknown. |
| max_revenue_per_employee | number | Maximum revenue per employee, USD. |
| min_revenue_per_employee | number | Minimum revenue per employee, USD (sparse). |
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "Search text, matched against the name and one-liner."
},
"cdn": {
"type": "string",
"description": "Comma-separated CDNs: cloudflare, vercel, cloudfront, fastly, netlify; matches any of them."
},
"a11y": {
"type": "string",
"description": "Comma-separated accessibility overlays: userway, accessibe, audioeye; matches any of them."
},
"near": {
"type": "string",
"description": "HQ inside a bounding box around a point: \"lat,lng,radius_km\", radius clamped to 1-500 km. A malformed value applies no filter. Example \"51.507,-0.128,25\" for central London."
},
"sort": {
"type": "string",
"description": "'<column>.<asc|desc>'. Columns: total_score, created_at (when StartupHub added the row), last_round_date, latest_funding_date (alias of last_round_date), total_funding, latest_valuation, founded_date, employee_count, employee_growth_quarterly_cagr, linkedin_followers, agent_readiness_score, trending_score_7d, current_revenue, revenue_multiple, revenue_per_employee, funding_efficiency. Default total_score.desc. An unknown column falls back to total_score.desc, and any direction other than asc sorts descending."
},
"limit": {
"type": "number",
"default": 20,
"description": "Results per call. Default 20, max 100."
},
"slugs": {
"type": "string",
"description": "Comma-separated StartupHub slugs, up to 100, lowercased before matching; matches any of them. Fetches known companies in one call."
},
"hiring": {
"enum": [
"true"
],
"type": "string",
"description": "'true' returns only companies with open roles right now."
},
"offset": {
"type": "number",
"description": "Skip this many results, to page past the first 100."
},
"sector": {
"type": "string",
"description": "Comma-separated sector names, e.g. \"Fintech,Cybersecurity\"; matches any of them. Exact sector names as shown on profiles."
},
"status": {
"type": "string",
"description": "Operating status. Exact, case-sensitive match on the stored value, for example Active or Inactive."
},
"booking": {
"type": "string",
"description": "Comma-separated booking widgets: calendly, calcom, savvycal, chilipiper; matches any of them."
},
"country": {
"type": "string",
"description": "Comma-separated countries; matches any of them. Accepts names or ISO codes; \"US\", \"USA\" and \"United States\" are the same."
},
"hosting": {
"type": "string",
"description": "Comma-separated hosting providers: aws, azure, gcp, vercel, render, netlify, hetzner, digitalocean; matches any of them."
},
"payment": {
"type": "string",
"description": "Comma-separated payment providers: stripe, paddle, lemonsqueezy, paypal, klarna, apple_pay; matches any of them. The API also accepts payments as an alias."
},
"stealth": {
"enum": [
"true",
"false"
],
"type": "string",
"description": "'true' = stealth only, 'false' = exclude stealth. Stealth rows need Pro Lite or higher."
},
"has_blog": {
"enum": [
"true",
"false"
],
"type": "string",
"description": "'true' returns only companies whose website has a blog or news feed we found (RSS or Atom), 'false' only those checked and without one. Sites are rechecked every 90 days."
},
"trending": {
"enum": [
"true"
],
"type": "string",
"description": "'true' returns companies getting attention on StartupHub this week."
},
"backed_by": {
"type": "string",
"description": "Comma-separated investors, up to 20, by StartupHub slug or exact name, e.g. \"sequoia-capital,Y Combinator\"; matches any of them. When none of them matches an investor, the response is empty data plus a note."
},
"ma_status": {
"type": "string",
"description": "Comma-separated exit states: acquired, public, merged, made_acquisitions; matches any of them."
},
"max_score": {
"type": "number",
"description": "Maximum StartupHub score."
},
"min_score": {
"type": "number",
"description": "Minimum StartupHub score (0-100). 70+ is roughly the top 1.5%."
},
"ai_support": {
"type": "string",
"description": "Comma-separated AI customer support tools: intercom_fin, ada, sierra, decagon, drift_ai, fin_ai; matches any of them."
},
"compliance": {
"type": "string",
"description": "Comma-separated compliance claims found on the site: soc2, hipaa, iso27001, gdpr, ccpa, pci_dss, fedramp; matches any of them."
},
"domain_tld": {
"type": "string",
"description": "Comma-separated domain endings, e.g. \"ai,io\"; matches any of them."
},
"has_website": {
"enum": [
"true",
"false"
],
"type": "string",
"description": "'true' returns only companies with a website on file."
},
"open_source": {
"enum": [
"true",
"false"
],
"type": "string",
"description": "'true' returns only open-source companies."
},
"status_page": {
"type": "string",
"description": "Comma-separated status page vendors: statuspage, instatus, betterstack; matches any of them."
},
"has_founders": {
"enum": [
"true",
"false"
],
"type": "string",
"description": "'true' returns only companies with known founders, ready for list_startup_team."
},
"raised_after": {
"type": "string",
"description": "Most recent funding round announced on or after this date: YYYY, YYYY-MM or YYYY-MM-DD."
},
"round_series": {
"type": "string",
"description": "Comma-separated stages of the most recent funding round; matches any of them. Values: Angel, Pre-Seed, Seed, Pre-Series A, Series A to Series H, Growth, Debt, Grant, Strategic, IPO. Pair with raised_after for \"just raised a seed round\"."
},
"employees_max": {
"type": "number",
"description": "Maximum employee count (inclusive). Use 10 for tiny teams."
},
"employees_min": {
"type": "number",
"description": "Minimum employee count (inclusive)."
},
"founded_after": {
"type": "string",
"description": "Founded on or after this date: YYYY, YYYY-MM or YYYY-MM-DD."
},
"max_valuation": {
"type": "number",
"description": "Maximum latest valuation, USD."
},
"min_valuation": {
"type": "number",
"description": "Minimum latest valuation, USD. 1000000000 for unicorns."
},
"raised_before": {
"type": "string",
"description": "Most recent funding round announced on or before this date: YYYY, YYYY-MM or YYYY-MM-DD."
},
"cookie_consent": {
"type": "string",
"description": "Comma-separated cookie consent vendors: onetrust, cookiebot, osano, termly; matches any of them."
},
"email_provider": {
"type": "string",
"description": "Comma-separated email providers: google_workspace, m365, zoho, proton, proofpoint, mimecast, self_hosted, gateway; matches any of them."
},
"founded_before": {
"type": "string",
"description": "Founded on or before this date: YYYY, YYYY-MM or YYYY-MM-DD."
},
"website_status": {
"type": "string",
"description": "Comma-separated website states: active, dead, parked; matches any of them."
},
"email_marketing": {
"type": "string",
"description": "Comma-separated email marketing tools: klaviyo, mailchimp, hubspot_forms, customer_io, loops; matches any of them."
},
"hiring_platform": {
"type": "string",
"description": "Comma-separated hiring platforms: greenhouse, lever, ashby, workable, teamtailor; matches any of them."
},
"mentioned_since": {
"type": "string",
"description": "Covered in StartupHub news on or after this date: YYYY, YYYY-MM or YYYY-MM-DD."
},
"has_known_emails": {
"enum": [
"true",
"false"
],
"type": "string",
"description": "'true' returns only companies with at least one verified founder or team email. Pro Lite and up; Pro Lite sees redacted addresses, Pro sees them in full."
},
"affiliate_program": {
"type": "string",
"description": "Comma-separated affiliate platforms: partnerstack, rewardful, tolt, firstpromoter, impact; matches any of them."
},
"max_total_funding": {
"type": "number",
"description": "Maximum total funding raised, USD."
},
"min_total_funding": {
"type": "number",
"description": "Minimum total funding raised, USD."
},
"min_reddit_reviews": {
"type": "number",
"description": "Minimum number of classified Reddit reviews."
},
"max_agent_readiness": {
"type": "number",
"description": "Maximum Agent Readiness score."
},
"min_agent_readiness": {
"type": "number",
"description": "Minimum Agent Readiness score (0-100): how well AI agents can use the company website."
},
"max_revenue_multiple": {
"type": "number",
"description": "Maximum valuation-to-revenue multiple."
},
"min_reddit_sentiment": {
"type": "number",
"description": "Minimum Reddit sentiment, -100 to 100. Pair with min_reddit_reviews."
},
"min_revenue_multiple": {
"type": "number",
"description": "Minimum valuation-to-revenue multiple (sparse)."
},
"agent_readiness_grade": {
"type": "string",
"description": "Comma-separated Agent Readiness grades: A+, A, B, C, D, F; matches any of them."
},
"blog_post_within_days": {
"type": "number",
"description": "Only companies whose blog published a post within this many days (30, 90 or 365 are the usual values). Implies has_blog=true."
},
"has_affiliate_program": {
"enum": [
"true",
"false"
],
"type": "string",
"description": "'true' returns only companies running an affiliate program."
},
"max_funding_efficiency": {
"type": "number",
"description": "Maximum revenue per dollar raised."
},
"max_linkedin_followers": {
"type": "number",
"description": "Maximum LinkedIn followers."
},
"min_funding_efficiency": {
"type": "number",
"description": "Minimum revenue per dollar raised (sparse)."
},
"min_linkedin_followers": {
"type": "number",
"description": "Minimum LinkedIn followers, a brand-size proxy when headcount is unknown."
},
"max_revenue_per_employee": {
"type": "number",
"description": "Maximum revenue per employee, USD."
},
"min_revenue_per_employee": {
"type": "number",
"description": "Minimum revenue per employee, USD (sparse)."
}
}
}| transaction_type* | string | IPO | Acquisition | Merger | SPAC | Secondary Sale | Buyout | Management Buyout | Tender Offer | Asset Sale | Bankruptcy | Closure |
{
"type": "object",
"required": [
"transaction_type",
"date_announced"
],
"properties": {
"ticker": {
"type": "string",
"description": "Required for IPO / SPAC"
},
"valuation": {
"type": "number"
},
"source_url": {
"type": "string"
},
"startup_id": {
"type": "string"
},
"description": {
"type": "string",
"description": "Third-person, ≤1500 chars"
},
"startup_slug": {
"type": "string"
},
"acquirer_name": {
"type": "string",
"description": "Required for Acquisition / Merger"
},
"consideration": {
"type": "number",
"description": "Total deal value in USD"
},
"date_announced": {
"type": "string",
"description": "YYYY-MM-DD"
},
"stock_exchange": {
"type": "string",
"description": "Required for IPO / SPAC (e.g. NASDAQ, NYSE, LSE)"
},
"transaction_type": {
"type": "string",
"description": "IPO | Acquisition | Merger | SPAC | Secondary Sale | Buyout | Management Buyout | Tender Offer | Asset Sale | Bankruptcy | Closure"
}
}
}| array |
| pre_money_valuation | number |
| post_money_valuation | number |
| participating_investor_slugs | array |
{
"type": "object",
"required": [
"series",
"investment_amount",
"date_announced"
],
"properties": {
"series": {
"type": "string",
"description": "Pre-seed | Seed | Pre-Series A | Series A | Series B | ... | Convertible Note | SAFE | Bridge | Debt | Grant | Crowdfunding | Growth | Pre-IPO | Strategic | Secondary | Other"
},
"source_url": {
"type": "string",
"description": "Press release / TechCrunch / SEC filing URL"
},
"startup_id": {
"type": "string",
"description": "Alternative to startup_slug: startup UUID"
},
"description": {
"type": "string",
"description": "Third-person, ≤1000 chars"
},
"startup_slug": {
"type": "string",
"description": "Slug of the startup raising (must be a startup you own)"
},
"date_announced": {
"type": "string",
"description": "YYYY-MM-DD"
},
"investment_amount": {
"type": "number",
"description": "Total raised in USD (e.g. 5000000 for $5M)"
},
"lead_investor_slugs": {
"type": "array",
"items": {
"type": "string"
}
},
"pre_money_valuation": {
"type": "number"
},
"post_money_valuation": {
"type": "number"
},
"participating_investor_slugs": {
"type": "array",
"items": {
"type": "string"
}
}
}
}| founded_date |
| string |
| linkedin_url | string |
| sector_focus | array | Up to 10 sectors invested in |
{
"type": "object",
"required": [
"name",
"type",
"description"
],
"properties": {
"city": {
"type": "string"
},
"name": {
"type": "string",
"description": "Official firm name (≤100 chars)"
},
"type": {
"type": "string",
"description": "One of: VC, Angel, Accelerator, Incubator, Corporate VC, Family Office, Sovereign Wealth Fund, Crowdfunding, PE, Hedge Fund, Syndicate"
},
"country": {
"type": "string"
},
"website": {
"type": "string"
},
"logo_url": {
"type": "string",
"description": "Optional logo image URL (≤2MB)."
},
"description": {
"type": "string",
"description": "Third-person, 20–400 words"
},
"stage_focus": {
"type": "array",
"items": {
"type": "string"
},
"description": "Pre-seed | Seed | Series A | Series B | Series C | Series D | Growth | Late Stage"
},
"twitter_url": {
"type": "string"
},
"founded_date": {
"type": "string"
},
"linkedin_url": {
"type": "string"
},
"sector_focus": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 10 sectors invested in"
}
}
}| array |
| Array of investor slugs to include. |
| featured_image_url | string | Optional cover image URL. |
{
"type": "object",
"required": [
"title"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 20 tags (≤40 chars each)."
},
"title": {
"type": "string",
"description": "List title (≤200 chars). Descriptive, reader-friendly."
},
"content": {
"type": "string",
"description": "Optional long-form body. Plain text or simple HTML. ≤5000 words. Third-person."
},
"excerpt": {
"type": "string",
"description": "Short summary shown on list index + SEO description (≤400 chars, third-person)."
},
"source_url": {
"type": "string",
"description": "Optional URL to the original source if syndicating."
},
"people_slugs": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of person slugs to include."
},
"startup_slugs": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of startup slugs to include. Must match existing profiles. Look up via search_startups."
},
"investor_slugs": {
"type": "array",
"items": {
"type": "string"
},
"description": "Array of investor slugs to include."
},
"featured_image_url": {
"type": "string",
"description": "Optional cover image URL."
}
}
}{
"type": "object",
"required": [
"title",
"content",
"categories"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"title": {
"type": "string",
"description": "≤200 chars"
},
"content": {
"type": "string",
"description": "Article body, 100–10000 words, plain text or basic HTML"
},
"excerpt": {
"type": "string",
"description": "Optional 1–2 sentence summary, ≤400 chars"
},
"categories": {
"type": "array",
"items": {
"type": "string"
},
"description": "1–3 categories from the controlled vocabulary"
},
"source_url": {
"type": "string",
"description": "If syndicating, link to the original (also used for dedup)"
},
"author_name": {
"type": "string"
},
"startup_slug": {
"type": "string",
"description": "Optional company being featured"
},
"featured_image_url": {
"type": "string"
}
}
}| string |
| e.g. "US12345678B2", "EP3456789A1" |
{
"type": "object",
"required": [
"title",
"patent_number",
"assignee_name"
],
"properties": {
"title": {
"type": "string",
"description": "≤300 chars"
},
"status": {
"type": "string",
"description": "Granted | Pending | Filed | Expired | Withdrawn | Other"
},
"abstract": {
"type": "string",
"description": "≤3000 chars"
},
"inventors": {
"type": "array",
"items": {
"type": "string"
}
},
"grant_date": {
"type": "string"
},
"source_url": {
"type": "string",
"description": "USPTO / EPO link"
},
"filing_date": {
"type": "string"
},
"jurisdiction": {
"type": "string",
"description": "US | EP | CN | WO | etc."
},
"startup_slug": {
"type": "string",
"description": "Optional parent startup"
},
"assignee_name": {
"type": "string",
"description": "The entity that owns the patent"
},
"patent_number": {
"type": "string",
"description": "e.g. \"US12345678B2\", \"EP3456789A1\""
}
}
}{
"type": "object",
"required": [
"name"
],
"properties": {
"city": {
"type": "string"
},
"name": {
"type": "string",
"description": "Person's full name (≤80 chars)"
},
"country": {
"type": "string"
},
"avatar_url": {
"type": "string",
"description": "Optional avatar image URL (≤2MB)."
},
"github_url": {
"type": "string"
},
"description": {
"type": "string",
"description": "Third-person bio, ≤300 words, no HTML"
},
"twitter_url": {
"type": "string"
},
"website_url": {
"type": "string"
},
"linkedin_url": {
"type": "string",
"description": "Personal LinkedIn (linkedin.com/in/...), required if no current_title"
},
"current_title": {
"type": "string",
"description": "e.g. \"CEO at OpenAI\", required if no linkedin_url"
}
}
}| description* | string | Full description in third person, 20–400 words, plain text only |
| github_repo | string |
| launched_at | string | YYYY, YYYY-MM, or YYYY-MM-DD |
| pricing_type | string | free | freemium | paid | subscription | one-time | usage-based | enterprise | open-source |
| product_type | string | web-app | mobile-app | desktop-app | api | cli | library | extension | mcp-server | agent | model | platform | dataset | hardware | plugin |
| startup_slug | string | Slug of the parent company or organization (e.g. "anthropic" for Claude). Required unless startup_id is set. |
| app_store_url | string |
| play_store_url | string |
| pricing_details | object | Optional structured pricing (tiers, per-seat, per-token, etc.) |
| screenshot_urls | array | Optional product screenshots (up to 6 URLs). |
| documentation_url | string |
{
"type": "object",
"required": [
"name",
"website",
"one_liner",
"description"
],
"properties": {
"name": {
"type": "string",
"description": "Product name (≤80 chars; no listicle words)"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"sectors": {
"type": "array",
"items": {
"type": "string"
}
},
"website": {
"type": "string",
"description": "Product landing page or website"
},
"category": {
"type": "string",
"description": "e.g. \"Coding agent\", \"Vector database\", \"Email assistant\""
},
"features": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional list of key features"
},
"logo_url": {
"type": "string",
"description": "Optional product logo URL (≤2MB)."
},
"one_liner": {
"type": "string",
"description": "One-sentence pitch in third person, 20–200 chars"
},
"startup_id": {
"type": "string",
"description": "Parent company or organization UUID. Required unless startup_slug is set."
},
"description": {
"type": "string",
"description": "Full description in third person, 20–400 words, plain text only"
},
"github_repo": {
"type": "string"
},
"launched_at": {
"type": "string",
"description": "YYYY, YYYY-MM, or YYYY-MM-DD"
},
"pricing_type": {
"type": "string",
"description": "free | freemium | paid | subscription | one-time | usage-based | enterprise | open-source"
},
"product_type": {
"type": "string",
"description": "web-app | mobile-app | desktop-app | api | cli | library | extension | mcp-server | agent | model | platform | dataset | hardware | plugin"
},
"startup_slug": {
"type": "string",
"description": "Slug of the parent company or organization (e.g. \"anthropic\" for Claude). Required unless startup_id is set."
},
"app_store_url": {
"type": "string"
},
"play_store_url": {
"type": "string"
},
"pricing_details": {
"type": "object",
"description": "Optional structured pricing (tiers, per-seat, per-token, etc.)"
},
"screenshot_urls": {
"type": "array",
"items": {
"type": "string"
},
"description": "Optional product screenshots (up to 6 URLs)."
},
"documentation_url": {
"type": "string"
}
}
}{
"type": "object",
"required": [
"title",
"abstract",
"authors"
],
"properties": {
"doi": {
"type": "string"
},
"title": {
"type": "string",
"description": "≤300 chars"
},
"authors": {
"type": "array",
"items": {
"type": "string"
}
},
"pdf_url": {
"type": "string"
},
"sectors": {
"type": "array",
"items": {
"type": "string"
}
},
"abstract": {
"type": "string",
"description": "Third-person, 30–600 words"
},
"arxiv_id": {
"type": "string",
"description": "e.g. \"2401.12345\" or \"2401.12345v2\""
},
"source_url": {
"type": "string"
},
"startup_slug": {
"type": "string",
"description": "Optional parent startup"
},
"publication_date": {
"type": "string"
}
}
}| description | string | Full description in third person, 30–400 words, plain text only |
| twitter_url | string |
| founded_date | string | YYYY, YYYY-MM, or YYYY-MM-DD |
| linkedin_url | string |
{
"type": "object",
"required": [
"website"
],
"properties": {
"name": {
"type": "string",
"description": "Official company name (≤80 chars, no listicle words)"
},
"hq_city": {
"type": "string"
},
"sectors": {
"type": "array",
"items": {
"type": "string"
},
"description": "1–5 sectors from the controlled vocabulary"
},
"website": {
"type": "string",
"description": "Company website URL. This is the only required field."
},
"logo_url": {
"type": "string",
"description": "Optional URL to company logo image (PNG/JPEG/WebP/SVG, ≤2MB). Server fetches + stores; if omitted, logo is auto-discovered from the website later."
},
"one_liner": {
"type": "string",
"description": "One-sentence pitch in third person, 20–200 chars"
},
"github_url": {
"type": "string"
},
"hq_country": {
"type": "string"
},
"description": {
"type": "string",
"description": "Full description in third person, 30–400 words, plain text only"
},
"twitter_url": {
"type": "string"
},
"founded_date": {
"type": "string",
"description": "YYYY, YYYY-MM, or YYYY-MM-DD"
},
"linkedin_url": {
"type": "string"
}
}
}| founded_date | string |
| linkedin_url | string |
| min_traction | string |
| sector_focus | array |
| check_size_max | number |
| check_size_min | number |
| current_thesis | string |
| actively_investing | boolean |
| accepts_cold_pitches | boolean |
| pitch_application_url | string |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"city": {
"type": "string"
},
"slug": {
"type": "string"
},
"type": {
"type": "string",
"description": "VC | Angel | Accelerator | Incubator | Corporate VC | Family Office | Sovereign Wealth Fund | Crowdfunding | PE | Hedge Fund | Syndicate"
},
"country": {
"type": "string"
},
"logo_url": {
"type": "string"
},
"geo_focus": {
"type": "array",
"items": {
"type": "string"
}
},
"description": {
"type": "string"
},
"pitch_email": {
"type": "string"
},
"stage_focus": {
"type": "array",
"items": {
"type": "string"
}
},
"twitter_url": {
"type": "string"
},
"founded_date": {
"type": "string"
},
"linkedin_url": {
"type": "string"
},
"min_traction": {
"type": "string"
},
"sector_focus": {
"type": "array",
"items": {
"type": "string"
}
},
"check_size_max": {
"type": "number"
},
"check_size_min": {
"type": "number"
},
"current_thesis": {
"type": "string"
},
"actively_investing": {
"type": "boolean"
},
"accepts_cold_pitches": {
"type": "boolean"
},
"pitch_application_url": {
"type": "string"
}
}
}{
"type": "object",
"required": [
"slug"
],
"properties": {
"city": {
"type": "string"
},
"slug": {
"type": "string"
},
"country": {
"type": "string"
},
"avatar_url": {
"type": "string"
},
"github_url": {
"type": "string"
},
"description": {
"type": "string"
},
"twitter_url": {
"type": "string"
},
"website_url": {
"type": "string"
},
"linkedin_url": {
"type": "string"
},
"current_title": {
"type": "string"
}
}
}| pricing_type | string |
| product_type | string |
| app_store_url | string |
| play_store_url | string |
| pricing_details | object |
| screenshot_urls | array |
| documentation_url | string |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string"
},
"tags": {
"type": "array",
"items": {
"type": "string"
}
},
"sectors": {
"type": "array",
"items": {
"type": "string"
}
},
"website": {
"type": "string"
},
"category": {
"type": "string"
},
"features": {
"type": "array",
"items": {
"type": "string"
}
},
"logo_url": {
"type": "string"
},
"one_liner": {
"type": "string"
},
"description": {
"type": "string"
},
"github_repo": {
"type": "string"
},
"launched_at": {
"type": "string"
},
"pricing_type": {
"type": "string"
},
"product_type": {
"type": "string"
},
"app_store_url": {
"type": "string"
},
"play_store_url": {
"type": "string"
},
"pricing_details": {
"type": "object"
},
"screenshot_urls": {
"type": "array",
"items": {
"type": "string"
}
},
"documentation_url": {
"type": "string"
}
}
}| boolean |
| careers_url | string |
| description | string |
| press_email | string |
| twitter_url | string |
| founded_date | string |
| linkedin_url | string |
| contact_email | string |
| media_kit_url | string |
| raising_round | string |
| pitch_deck_url | string |
| raising_target | number |
| for_sale_details | object |
| operating_status | string | active | acquired | shut_down | stealth |
| partnerships_email | string |
| raising_use_of_funds | string |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "The startup's slug (e.g. \"anthropic\")"
},
"hq_city": {
"type": "string"
},
"sectors": {
"type": "array",
"items": {
"type": "string"
}
},
"for_sale": {
"type": "boolean"
},
"logo_url": {
"type": "string",
"description": "New logo URL, server fetches and replaces (≤2MB)."
},
"is_hiring": {
"type": "boolean"
},
"one_liner": {
"type": "string"
},
"github_url": {
"type": "string"
},
"hq_country": {
"type": "string"
},
"is_raising": {
"type": "boolean"
},
"careers_url": {
"type": "string"
},
"description": {
"type": "string"
},
"press_email": {
"type": "string"
},
"twitter_url": {
"type": "string"
},
"founded_date": {
"type": "string"
},
"linkedin_url": {
"type": "string"
},
"contact_email": {
"type": "string"
},
"media_kit_url": {
"type": "string"
},
"raising_round": {
"type": "string"
},
"pitch_deck_url": {
"type": "string"
},
"raising_target": {
"type": "number"
},
"for_sale_details": {
"type": "object"
},
"operating_status": {
"type": "string",
"description": "active | acquired | shut_down | stealth"
},
"partnerships_email": {
"type": "string"
},
"raising_use_of_funds": {
"type": "string"
}
}
}