Startup and SaaS tools and their alternatives, with prices and when a person last checked them.
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.
Two to four listings side by side, with the same facts for each: price as checked and its terms, when it was last checked, country, open source, self-hostable, reviews, and the short positioning (value proposition and audience). Slugs come from search_tools or find_alternatives; exact names work too.
Two to four listing slugs.
Two to four listings side by side, with the same facts for each: price as checked and its terms, when it was last checked, country, open source, self-hostable, reviews, and the short positioning (value proposition and audience). Slugs come from search_tools or find_alternatives; exact names work too.
| Argument | Type | Description |
|---|---|---|
| slugs* | array | Two to four listing slugs. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slugs"
],
"properties": {
"slugs": {
"type": "array",
"items": {
"type": "string",
"maxLength": 100,
"minLength": 1
},
"maxItems": 4,
"minItems": 2,
"description": "Two to four listing slugs."
}
}
}List what the NutsGrowth directory files as a replacement for a named product, e.g. "Notion" or "Google Drive", with the same filters as search_tools. Matching is on the product's name as the directory writes it; when nothing matches, the answer suggests names it does file alternatives for. Returns at most 10 listings and the total, in alphabetical order.
| Argument | Type | Description |
|---|---|---|
| tags | array | Up to 5 tag slugs from list_filters. A listing must carry all of them. |
| limit | integer | How many to return. At most 10, which is also the default. |
| country | string | Where the company is based: an ISO 3166-1 alpha-2 code such as "DE", or the name list_filters gives. |
| product* | string | The product to replace, by name. |
| category | string | A category slug from list_filters. Includes its sub-categories. |
| free_plan | boolean | Only listings that have (true) or do not have (false) a free plan or free tier, by a price a person checked. |
| open_source | boolean | Only listings that are (true) or are not (false) open source. |
| price_checked | boolean | Only listings whose price a person has (true) or has not (false) checked. |
| self_hostable | boolean | Only listings that can (true) or cannot (false) be run on your own servers. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"product"
],
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60
},
"maxItems": 5,
"description": "Up to 5 tag slugs from list_filters. A listing must carry all of them."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "How many to return. At most 10, which is also the default."
},
"country": {
"type": "string",
"maxLength": 80,
"description": "Where the company is based: an ISO 3166-1 alpha-2 code such as \"DE\", or the name list_filters gives."
},
"product": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The product to replace, by name."
},
"category": {
"type": "string",
"maxLength": 80,
"description": "A category slug from list_filters. Includes its sub-categories."
},
"free_plan": {
"type": "boolean",
"description": "Only listings that have (true) or do not have (false) a free plan or free tier, by a price a person checked."
},
"open_source": {
"type": "boolean",
"description": "Only listings that are (true) or are not (false) open source."
},
"price_checked": {
"type": "boolean",
"description": "Only listings whose price a person has (true) or has not (false) checked."
},
"self_hostable": {
"type": "boolean",
"description": "Only listings that can (true) or cannot (false) be run on your own servers."
}
}
}Everything public about one listing in the NutsGrowth directory: what it is, where the company is based, whether it is open source or self-hostable, its price as a person checked it with the terms, when it was last checked, its reviews' count and average, and its positioning. Positioning with written_by "vendor" is the company describing itself — a claim, not the directory's finding.
| Argument | Type | Description |
|---|---|---|
| slug* | string | The listing's slug, from search_tools or find_alternatives, or its exact name. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "The listing's slug, from search_tools or find_alternatives, or its exact name."
}
}
}The categories, countries and tags in use in the NutsGrowth directory, each with how many listings it has, so search_tools and find_alternatives can be given values that exist. Open source and self-hostable are filters of their own (open_source, self_hostable), not tags.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}Find startups and SaaS tools in the NutsGrowth directory by words and filters. Words are matched against the name, tagline, category, country, price, the products a listing replaces, and its tags; every word must appear. Give at least one of query, category, country, tags, open_source, self_hostable or free_plan. Returns at most 10 listings and the total; each has its page on NutsGrowth, the product's own website, its price as a person checked it ("Not checked" when nobody has — do not supply one from elsewhere as the directory's), and when it was last checked.
| Argument | Type | Description |
|---|---|---|
| tags | array | Up to 5 tag slugs from list_filters. A listing must carry all of them. |
| limit | integer | How many to return. At most 10, which is also the default. |
| query | string | Words to look for, e.g. "invoicing" or "crm freelancers". |
| country | string | Where the company is based: an ISO 3166-1 alpha-2 code such as "DE", or the name list_filters gives. |
| category | string | A category slug from list_filters. Includes its sub-categories. |
| free_plan | boolean | Only listings that have (true) or do not have (false) a free plan or free tier, by a price a person checked. |
| open_source |
Send a startup or SaaS product to the NutsGrowth review queue, the way the form at /submit does. A person reads every suggestion and writes the listing by hand, so it takes days. If the website is already listed, the answer gives its page and how to claim it; if it is already in the queue, when it arrived. Fill in what you know from the product's own site; leave out what you do not. Ask the person before sending.
| Argument | Type | Description |
|---|---|---|
| url* | string | Its website, as a full https:// address. |
| name* | string | The product's name. |
| tags | array | Up to 8 tag slugs from list_filters. Any other is dropped, and the answer names it. |
| string | The person's email, only if they gave it to you for this. NutsGrowth's promise about it, as /submit makes it: "We email you once, when it is listed — with a link to claim it if it is yours — and only otherwise to ask a follow-up question. Seen only by whoever reviews the queue, never published, and in no export. Leave it blank and the submission is still read." | |
| country | string | Where the company is based: an ISO code such as "DE", or the name. |
| tagline | string | One line on what it does. |
| audience | array | Who it is for: up to 8 short labels, each at most 40 characters. |
| boolean |
| Only listings that are (true) or are not (false) open source. |
| price_checked | boolean | Only listings whose price a person has (true) or has not (false) checked. |
| self_hostable | boolean | Only listings that can (true) or cannot (false) be run on your own servers. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 60
},
"maxItems": 5,
"description": "Up to 5 tag slugs from list_filters. A listing must carry all of them."
},
"limit": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 1,
"description": "How many to return. At most 10, which is also the default."
},
"query": {
"type": "string",
"maxLength": 100,
"description": "Words to look for, e.g. \"invoicing\" or \"crm freelancers\"."
},
"country": {
"type": "string",
"maxLength": 80,
"description": "Where the company is based: an ISO 3166-1 alpha-2 code such as \"DE\", or the name list_filters gives."
},
"category": {
"type": "string",
"maxLength": 80,
"description": "A category slug from list_filters. Includes its sub-categories."
},
"free_plan": {
"type": "boolean",
"description": "Only listings that have (true) or do not have (false) a free plan or free tier, by a price a person checked."
},
"open_source": {
"type": "boolean",
"description": "Only listings that are (true) or are not (false) open source."
},
"price_checked": {
"type": "boolean",
"description": "Only listings whose price a person has (true) or has not (false) checked."
},
"self_hostable": {
"type": "boolean",
"description": "Only listings that can (true) or cannot (false) be run on your own servers."
}
}
}| category | string | A category slug from list_filters. |
| overview | string | What it does, in a paragraph or two (at most 3000 characters). |
| replaces | array | Products it is a practical substitute for. |
| value_prop | string | Why somebody switches to it (at most 400 characters). |
| open_source | boolean | True if it is open source. |
| pricing_url | string | The page where its prices are published, as a full https:// address. |
| self_hostable | boolean | True if it can be run on your own servers. |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"name",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "Its website, as a full https:// address."
},
"name": {
"type": "string",
"description": "The product's name."
},
"tags": {
"type": "array",
"items": {
"type": "string"
},
"description": "Up to 8 tag slugs from list_filters. Any other is dropped, and the answer names it."
},
"email": {
"type": "string",
"description": "The person's email, only if they gave it to you for this. NutsGrowth's promise about it, as /submit makes it: \"We email you once, when it is listed — with a link to claim it if it is yours — and only otherwise to ask a follow-up question. Seen only by whoever reviews the queue, never published, and in no export. Leave it blank and the submission is still read.\""
},
"country": {
"type": "string",
"description": "Where the company is based: an ISO code such as \"DE\", or the name."
},
"tagline": {
"type": "string",
"description": "One line on what it does."
},
"audience": {
"type": "array",
"items": {
"type": "string"
},
"description": "Who it is for: up to 8 short labels, each at most 40 characters."
},
"category": {
"type": "string",
"description": "A category slug from list_filters."
},
"overview": {
"type": "string",
"description": "What it does, in a paragraph or two (at most 3000 characters)."
},
"replaces": {
"type": "array",
"items": {
"type": "string"
},
"description": "Products it is a practical substitute for."
},
"value_prop": {
"type": "string",
"description": "Why somebody switches to it (at most 400 characters)."
},
"open_source": {
"type": "boolean",
"description": "True if it is open source."
},
"pricing_url": {
"type": "string",
"description": "The page where its prices are published, as a full https:// address."
},
"self_hostable": {
"type": "boolean",
"description": "True if it can be run on your own servers."
}
}
}