Find where to submit your startup. Searches a free list of directories with real submission results.
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.
The full record of one place on the list, as readable text: cost and catch, what the free path needs and doesn't, the wait, review, backlink, which products, audiences, stages, and regions it takes, the list's notes, when it was last checked, the maintainer's own attempt, and where each fact came from. Takes an id from search or find_directories; a name or website also works. Returns id, title, text, url (the place's row on the website, for citing), and metadata.
The place's id from search, for example "indie-hackers".
The full record of one place on the list, as readable text: cost and catch, what the free path needs and doesn't, the wait, review, backlink, which products, audiences, stages, and regions it takes, the list's notes, when it was last checked, the maintainer's own attempt, and where each fact came from. Takes an id from search or find_directories; a name or website also works. Returns id, title, text, url (the place's row on the website, for citing), and metadata.
| Argument | Type | Description |
|---|---|---|
| id* | string | The place's id from search, for example "indie-hackers". |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The place's id from search, for example \"indie-hackers\"."
}
}
}Shortlist places to submit or launch a startup (directories, launch sites, communities, editorial sites) that fit a founder's product and limits. Use it when someone asks where to list, launch, or promote their startup or product. Returns a ranked list: Free with no catch first, then free with a catch, then paid by lowest listed price, then cost not on record. Within each group: shortest wait, then fewest unknown facts, then name. Never ranked by my own traffic results. Each result gives the cost and catch (cost, free), what the free path needs (needs), the wait, why it fits (why), which facts the query needs that are not on record (unknown), the list's notes, when it was last checked, and rowUrl, the place's row on the website. Leave out any filter that doesn't matter. Use get_directory for every fact about one place, and list_filters for allowed values and example arguments.
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many results to return, 1 to 50. Default 20. |
| budget | number | The most the founder will pay for one listing, in USD unless currency is set. 0 means free paths only (free, and free with a catch). Leave out for any cost. |
| cannot | array | Other requirements the founder can't meet: account, engagement (upvote, comment on, or rate other products first), socialProfile, phone, captcha, ownDomain, invitation, revenueProof. badge and domainEmail also work here. |
| offset | integer | Skip this many results, for paging. Default 0. |
| strict | boolean | true to drop places where any fact the query needs isn't on record. Default false: they stay in, with the unknown facts listed. |
| country | string | Where the startup is based, as an ISO 3166-1 alpha-2 code (AU, US, GB, IN); a country name such as Australia also works. Regional places limited to other countries drop out. Leave out for no region filter. |
| formats | array | Only these listing formats: directory, launch (a dated launch), profile, editorial (a pitch for coverage), community (a post), app-review, review-site, gallery, beta-testing. |
| markets | array | Markets the founder wants to reach (ISO alpha-2 codes or country names), for regional sites that cover a market or language rather than requiring a headquarters there. |
| audience | string | Who the product is for. b2c drops places that only take business-to-business products (G2 and similar). |
Every fact about one place on the list, for when a founder asks about a specific directory or launch site. Returns a short summary (cost and catch, what the free path needs, the wait, review, backlink, rowUrl), then the full record: the list's notes and Free? label, structured facts (cost, what it accepts, free-path requirements, wait, review, backlink), where each fact came from and when, the status of the maintainer's own attempt, and links. Look it up by id (from find_directories or search), name, or website URL.
| Argument | Type | Description |
|---|---|---|
| id_or_name* | string | The place's id (for example "indie-hackers"), its name ("Indie Hackers"), or its website ("indiehackers.com"). |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"id_or_name"
],
"properties": {
"id_or_name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The place's id (for example \"indie-hackers\"), its name (\"Indie Hackers\"), or its website (\"indiehackers.com\")."
}
}
}The allowed values for find_directories: product types (and the types each implies), audiences, formats, sections of the list, requirements for cannot, the limited regions on record, price currencies, counts, and example arguments for common questions.
No arguments.
{
"type": "object",
"properties": {}
}Keyword search over the list of places to submit a startup. A place's exact name or website ("Indie Hackers", "indiehackers.com") puts it first. Asking for free ("free", "no cost", "$0") leaves out places that are paid only. Product words ("web app", "SaaS", "AI tool", "mobile app") keep only places that take that kind of product. Kind-of-place words ("launch site", "directory", "community") put places of that kind first. Other words match names, websites, regions, and the list's notes. For example "free launch sites for a web app", "AI tool directories", or "Australia". Returns up to 20 places, best match first, each with id, title, url (its row on submitmystartup.com, for citing), and a one-line summary. A query with no specific words returns the best free places. Use fetch with an id for the full record, and find_directories to shortlist by a founder's product and limits.
| Argument | Type | Description |
|---|---|---|
| query* | string | What to look for, in a few words. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 500,
"description": "What to look for, in a few words."
}
}
}| currency | string | ISO 4217 currency of budget. Default USD. Prices in another currency count as unknown. |
| released | boolean | true if the product is publicly released and usable, false if it is pre-release or in beta. |
| categories | array | Only these sections of the list: directories, specialist (only for some startups), reddit, paid, problems. |
| early_stage | boolean | true if the startup meets early-stage rules (for example under 5 years old, at most two institutional rounds). |
| subdivision | string | ISO 3166-2 state or province, when a place is limited to one (US-WA). Implies the country. |
| within_days | integer | The listing must go live within this many days on the free path. A place whose wait isn't on record counts as unknown. |
| can_add_badge | boolean | false if the founder can't put a badge or backlink on their site. Default true. |
| domain_rating | number | The product site's domain rating, for places that set a minimum. |
| product_types | array | What the product is, as tags (see list_filters), for example ["web-apps"] or ["saas", "developer-tools"]. Give only tags that are true of the product: a product without AI features leaves out ai-tools, so places that only take AI products drop out. web-apps also counts as software and websites; saas also counts as software, web-apps, and websites. Without tags, places limited to some products count as unknown. |
| has_domain_email | boolean | false if the founder has no email address on the product's own domain (only Gmail or similar). Default true. |
| include_problem_sites | boolean | true to include places reported broken, inactive, closed, or dead. Default false. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "How many results to return, 1 to 50. Default 20."
},
"budget": {
"type": "number",
"maximum": 1000000,
"minimum": 0,
"description": "The most the founder will pay for one listing, in USD unless currency is set. 0 means free paths only (free, and free with a catch). Leave out for any cost."
},
"cannot": {
"type": "array",
"items": {
"enum": [
"account",
"badge",
"domainEmail",
"engagement",
"socialProfile",
"phone",
"captcha",
"ownDomain",
"invitation",
"revenueProof"
],
"type": "string"
},
"maxItems": 10,
"description": "Other requirements the founder can't meet: account, engagement (upvote, comment on, or rate other products first), socialProfile, phone, captcha, ownDomain, invitation, revenueProof. badge and domainEmail also work here."
},
"offset": {
"type": "integer",
"maximum": 1000,
"minimum": 0,
"description": "Skip this many results, for paging. Default 0."
},
"strict": {
"type": "boolean",
"description": "true to drop places where any fact the query needs isn't on record. Default false: they stay in, with the unknown facts listed."
},
"country": {
"type": "string",
"maxLength": 60,
"minLength": 2,
"description": "Where the startup is based, as an ISO 3166-1 alpha-2 code (AU, US, GB, IN); a country name such as Australia also works. Regional places limited to other countries drop out. Leave out for no region filter."
},
"formats": {
"type": "array",
"items": {
"enum": [
"directory",
"launch",
"profile",
"editorial",
"community",
"app-review",
"review-site",
"gallery",
"beta-testing"
],
"type": "string"
},
"maxItems": 9,
"description": "Only these listing formats: directory, launch (a dated launch), profile, editorial (a pitch for coverage), community (a post), app-review, review-site, gallery, beta-testing."
},
"markets": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60,
"minLength": 2
},
"maxItems": 20,
"description": "Markets the founder wants to reach (ISO alpha-2 codes or country names), for regional sites that cover a market or language rather than requiring a headquarters there."
},
"audience": {
"enum": [
"b2b",
"b2c",
"both"
],
"type": "string",
"description": "Who the product is for. b2c drops places that only take business-to-business products (G2 and similar)."
},
"currency": {
"type": "string",
"pattern": "^[A-Za-z]{3}$",
"description": "ISO 4217 currency of budget. Default USD. Prices in another currency count as unknown."
},
"released": {
"type": "boolean",
"description": "true if the product is publicly released and usable, false if it is pre-release or in beta."
},
"categories": {
"type": "array",
"items": {
"enum": [
"directories",
"reddit",
"paid",
"specialist",
"problems"
],
"type": "string"
},
"maxItems": 5,
"description": "Only these sections of the list: directories, specialist (only for some startups), reddit, paid, problems."
},
"early_stage": {
"type": "boolean",
"description": "true if the startup meets early-stage rules (for example under 5 years old, at most two institutional rounds)."
},
"subdivision": {
"type": "string",
"pattern": "^[A-Za-z]{2}-[A-Za-z0-9]{1,3}$",
"description": "ISO 3166-2 state or province, when a place is limited to one (US-WA). Implies the country."
},
"within_days": {
"type": "integer",
"maximum": 3650,
"minimum": 0,
"description": "The listing must go live within this many days on the free path. A place whose wait isn't on record counts as unknown."
},
"can_add_badge": {
"type": "boolean",
"description": "false if the founder can't put a badge or backlink on their site. Default true."
},
"domain_rating": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "The product site's domain rating, for places that set a minimum."
},
"product_types": {
"type": "array",
"items": {
"enum": [
"software",
"web-apps",
"websites",
"saas",
"mobile-apps",
"mac-apps",
"desktop-apps",
"browser-extensions",
"services",
"ai-tools",
"ai-developer-tools",
"developer-tools",
"no-code-tools",
"marketing-tools",
"open-source",
"kids-apps",
"ecommerce",
"agencies",
"media-buyers",
"products-with-confetti",
"computing-topics",
"designs",
"free-online-tools",
"single-purpose-utilities",
"converters",
"ai-tool-aggregators",
"mobile-only-apps",
"waitlist-only",
"adult",
"gambling",
"crypto",
"mlm"
],
"type": "string"
},
"maxItems": 12,
"description": "What the product is, as tags (see list_filters), for example [\"web-apps\"] or [\"saas\", \"developer-tools\"]. Give only tags that are true of the product: a product without AI features leaves out ai-tools, so places that only take AI products drop out. web-apps also counts as software and websites; saas also counts as software, web-apps, and websites. Without tags, places limited to some products count as unknown."
},
"has_domain_email": {
"type": "boolean",
"description": "false if the founder has no email address on the product's own domain (only Gmail or similar). Default true."
},
"include_problem_sites": {
"type": "boolean",
"description": "true to include places reported broken, inactive, closed, or dead. Default false."
}
}
}