The best vibe coding tools, ranked by what you want to build
Maintained byvibecodepicks.com(verified)Also a maintainer?
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.
Tools added or updated since this user's last check that match their saved tags. Optional since (YYYY-MM-DD or catalog v). When nothing matches, returns {new:0} — a minimal response when nothing new matches. Tracks last_checked. Max 3 items. Does not change recommend_tools. Optional key: same feed key passed to set_preferences, to read that project's profile.
YYYY-MM-DD or catalog version; defaults to last_checked
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http vibecodepicks https://vibecodepicks.com/api/mcp/
Tools added or updated since this user's last check that match their saved tags. Optional since (YYYY-MM-DD or catalog v). When nothing matches, returns {new:0} — a minimal response when nothing new matches. Tracks last_checked. Max 3 items. Does not change recommend_tools. Optional key: same feed key passed to set_preferences, to read that project's profile.
| Argument | Type | Description |
|---|---|---|
| key | string | |
| since | string | YYYY-MM-DD or catalog version; defaults to last_checked |
{
"type": "object",
"properties": {
"key": {
"type": "string"
},
"since": {
"type": "string",
"description": "YYYY-MM-DD or catalog version; defaults to last_checked"
}
}
}Side-by-side of two tools + comparison page url.
| Argument | Type | Description |
|---|---|---|
| a* | string | |
| b* | string | |
| verbose | boolean |
{
"type": "object",
"required": [
"a",
"b"
],
"properties": {
"a": {
"type": "string"
},
"b": {
"type": "string"
},
"verbose": {
"type": "boolean"
}
}
}Adjust this user's check_updates ranking for a listed tool. action is one of used, not_useful, not_relevant. Stores only the tool id and that enum. Does not change recommend_tools. Optional key: same feed key passed to set_preferences, to adjust that project's ranking.
| Argument | Type | Description |
|---|---|---|
| key | string | |
| action* | string | |
| tool_id* | string |
{
"type": "object",
"required": [
"tool_id",
"action"
],
"properties": {
"key": {
"type": "string"
},
"action": {
"enum": [
"used",
"not_useful",
"not_relevant"
],
"type": "string"
},
"tool_id": {
"type": "string"
}
}
}Tool profile by id. Default: summary, best_for, price, free, 2 strengths, 2 weaknesses, url. fields: summary description best_for not_for skill coding pricing platforms strengths weaknesses alternatives video compare official all.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| fields | array | |
| verbose | boolean |
{
"type": "object",
"required": [
"id"
],
"properties": {
"id": {
"type": "string"
},
"fields": {
"type": "array",
"items": {
"type": "string"
}
},
"verbose": {
"type": "boolean"
}
}
}Delete this client's anonymous id, tag profile and last_checked. Feedback is first folded into anonymous aggregate counters (tool_id × used/not_useful/not_relevant, no uid). Those aggregate counts are kept. If you pass a feed key, that keyed feed record is deleted too.
| Argument | Type | Description |
|---|---|---|
| key | string |
{
"type": "object",
"properties": {
"key": {
"type": "string"
}
}
}Alternatives to a tool. Rows: id|name|$from/mo|free.
| Argument | Type | Description |
|---|---|---|
| tool* | string | |
| limit | integer | |
| offset | integer | |
| verbose | boolean |
{
"type": "object",
"required": [
"tool"
],
"properties": {
"tool": {
"type": "string"
},
"limit": {
"type": "integer"
},
"offset": {
"type": "integer"
},
"verbose": {
"type": "boolean"
}
}
}Category and use-case keys with tool ids.
| Argument | Type | Description |
|---|---|---|
| verbose | boolean |
{
"type": "object",
"properties": {
"verbose": {
"type": "boolean"
}
}
}Use-case scenarios (e.g. ai-game-development, code-review) with top tools by community sentiment.
No arguments.
{
"type": "object",
"properties": {}
}Record a tool the user explicitly picked/rejected/tried/starred, or PURCHASED. Call it with action 'purchased' right after the user tells you they bought a paid plan of a listed tool (ask first; never log silently), and again later with action 'feedback' once they have used it for a while (e.g. weekly), passing rating and what worked / fell short. Optional fields apply to purchased/feedback only. Stored anonymously under the key; forget_me deletes it. picked/rejected also shape whats_new.
| Argument | Type | Description |
|---|---|---|
| id* | string | |
| key | string | |
| plan | string | Plan bought, e.g. 'Pro monthly' |
| combo | array | Ids of other tools used together with this one |
| action* | string | |
| period | string | |
| rating | integer | |
| worked | string | What worked well (short, no personal data) |
| price_usd | number | Price paid per period in USD |
| fell_short | string | What fell short (short, no personal data) |
{
"type": "object",
"required": [
"id",
"action"
],
"properties": {
"id": {
"type": "string"
},
"key": {
"type": "string"
},
"plan": {
"type": "string",
"description": "Plan bought, e.g. 'Pro monthly'"
},
"combo": {
"type": "array",
"items": {
"type": "string"
},
"description": "Ids of other tools used together with this one"
},
"action": {
"enum": [
"picked",
"rejected",
"tried",
"starred",
"purchased",
"feedback"
],
"type": "string"
},
"period": {
"enum": [
"month",
"year",
"one_time"
],
"type": "string"
},
"rating": {
"type": "integer",
"maximum": 5,
"minimum": 1
},
"worked": {
"type": "string",
"description": "What worked well (short, no personal data)"
},
"price_usd": {
"type": "number",
"description": "Price paid per period in USD"
},
"fell_short": {
"type": "string",
"description": "What fell short (short, no personal data)"
}
}
}Ranked best-fit tools for a goal, with why + caveat. Follows this ask only — saved tags do not change the ranking. On a new user's first call, also returns short onboarding questions (project types, platforms, budget, preferences, tools in use) for you to ask, then call set_preferences with tags only.
| Argument | Type | Description |
|---|---|---|
| goal* | string | |
| limit | integer | |
| budget | string | 'free' or max USD/mo |
| offset | integer | |
| verbose | boolean | |
| can_code | boolean | |
| platform | string |
{
"type": "object",
"required": [
"goal"
],
"properties": {
"goal": {
"type": "string"
},
"limit": {
"type": "integer"
},
"budget": {
"type": "string",
"description": "'free' or max USD/mo"
},
"offset": {
"type": "integer"
},
"verbose": {
"type": "boolean"
},
"can_code": {
"type": "boolean"
},
"platform": {
"type": "string"
}
}
}Replace the keyed-feed interest tags. Send allowed tags only (project types, platforms, budget, preferences) — do not send project names or other free text (they are dropped and never stored). Plus the feed mode ('by_interests' = only matching tools; 'all_new' = every new tool). Only used by whats_new.
| Argument | Type | Description |
|---|---|---|
| key | string | |
| mode | string | |
| interests | array | Allowed tags only (project types, platforms, budget, preferences). Do not send a project name. |
{
"type": "object",
"properties": {
"key": {
"type": "string"
},
"mode": {
"enum": [
"by_interests",
"all_new"
],
"type": "string"
},
"interests": {
"type": "array",
"items": {
"type": "string"
},
"description": "Allowed tags only (project types, platforms, budget, preferences). Do not send a project name."
}
}
}Tools competing in one scenario, ranked by community sentiment, with compact strengths/weak spots here.
| Argument | Type | Description |
|---|---|---|
| slug* | string | |
| limit | integer | |
| verbose | boolean |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string"
},
"limit": {
"type": "integer"
},
"verbose": {
"type": "boolean"
}
}
}Find vibe coding / AI tools. Rows: id|name|category|$from/mo|free(1/0). Use fetch(id) for details.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| query* | string | e.g. 'no-code SaaS builder' |
| offset | integer | |
| verbose | boolean |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer"
},
"query": {
"type": "string",
"description": "e.g. 'no-code SaaS builder'"
},
"offset": {
"type": "integer"
},
"verbose": {
"type": "boolean"
}
}
}Store the user's onboarding answers as non-sensitive tags only: project_types, platforms, budget (free|under_20|any), preferences (nocode|code|open-source|free-tier), and tools_in_use (catalog ids). Unknown values are dropped — never send names, emails, code, project names or free text. Used by check_updates, not by recommend_tools. Optional key: pass a feed key (from subscribe, or /api/mcp?k=KEY) to keep this profile separate per project; without it, the anonymous client identity is used.
| Argument | Type | Description |
|---|---|---|
| key | string | |
| budget | string | |
| platforms | array | |
| preferences | array | |
| tools_in_use | array | Catalog ids of tools already in use |
| project_types | array |
{
"type": "object",
"properties": {
"key": {
"type": "string"
},
"budget": {
"enum": [
"free",
"under_20",
"any"
],
"type": "string"
},
"platforms": {
"type": "array",
"items": {
"type": "string"
}
},
"preferences": {
"type": "array",
"items": {
"type": "string"
}
},
"tools_in_use": {
"type": "array",
"items": {
"type": "string"
},
"description": "Catalog ids of tools already in use"
},
"project_types": {
"type": "array",
"items": {
"type": "string"
}
}
}
}Create an anonymous feed key (no email/account). Save it in long-term memory / project instructions / rules, or connect with /api/mcp?k=KEY.
No arguments.
{
"type": "object",
"properties": {}
}Daily feed. With key: honors the saved feed mode — by_interests: new items relevant to ANY saved project; all_new: every new item (tagged with a project when one matches). Max 3/day, one line each, never repeats. {new:0} = nothing. Call at most daily. Without key: stateless by since/interests. Never affects other tools.
| Argument | Type | Description |
|---|---|---|
| key | string | |
| limit | integer | |
| since | string | |
| interests | array |
{
"type": "object",
"properties": {
"key": {
"type": "string"
},
"limit": {
"type": "integer"
},
"since": {
"type": "string"
},
"interests": {
"type": "array",
"items": {
"type": "string"
}
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 11, 2026.