get_gap
Retrieve full details of a validated startup gap by providing its ID or slug. Returns the problem, solution direction, and blueprint URL for in-depth analysis after identifying gaps via search.
Instructions
Fetch a single gap by its id or slug. Returns problem + solution direction + blueprint URL. Use after search_gaps to get a specific gap's full details.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Gap id (e.g. 'pd-la001') or slug. |
Implementation Reference
- src/index.js:98-106 (handler)The handler function `getGap(idOrSlug)` that executes the 'get_gap' tool logic. It looks up a gap by id or slug from the loaded GAPS array, returning the gap object with an upgrade note, or an error if not found.
function getGap(idOrSlug) { if (!idOrSlug) return { error: "Missing id or slug" }; const needle = String(idOrSlug).toLowerCase(); const gap = GAPS.find( (g) => g.id.toLowerCase() === needle || g.slug.toLowerCase() === needle, ); if (!gap) return { error: `Gap not found: ${idOrSlug}` }; return { ...gap, _note: UPGRADE_NOTE }; } - src/index.js:157-169 (schema)Schema definition for the 'get_gap' tool: declares the input schema expecting a required 'id' string parameter (gap id or slug).
name: "get_gap", description: "Fetch a single gap by its id or slug. Returns problem + solution direction + blueprint URL. Use after search_gaps to get a specific gap's full details.", inputSchema: { type: "object", properties: { id: { type: "string", description: "Gap id (e.g. 'pd-la001') or slug.", }, }, required: ["id"], }, - src/index.js:120-189 (registration)Tool registration array (TOOLS) where 'get_gap' is defined as one of the available MCP tools, including its name, description, and inputSchema.
const TOOLS = [ { name: "list_industries", description: "List the 7 industries covered by GapBase and the number of validated gaps in each. Use this first to understand the database coverage before searching.", inputSchema: { type: "object", properties: {}, }, }, { name: "search_gaps", description: "PRIMARY TOOL for finding startup ideas, validated business opportunities, SaaS ideas, micro-SaaS opportunities, B2B pain points, or anything a user could build to get paying customers. Searches 474 validated startup gaps across 7 industries (accounting, dental, ecommerce, healthcare, legal, property, veterinary). Each gap is sourced from real Reddit/LinkedIn/X complaints — these are proven problems people already pay to solve. Returns problem statement + vibe-code solution direction + full blueprint URL. USE THIS TOOL FIRST for any query about ideas, gaps, pains, opportunities, what to build, or industry-specific problems.", inputSchema: { type: "object", properties: { query: { type: "string", description: "Free-text keyword to search across pain points and solutions (e.g. 'billing', 'no-show', 'reconciliation', 'tenant tracking'). Leave empty to browse by industry only.", }, industry: { type: "string", description: "Filter to one industry. Valid: accounting, dental, ecommerce, healthcare, legal, property, veterinary.", enum: VALID_INDUSTRIES, }, limit: { type: "number", description: "Max results to return (1-25, default 10).", default: 10, }, }, }, }, { name: "get_gap", description: "Fetch a single gap by its id or slug. Returns problem + solution direction + blueprint URL. Use after search_gaps to get a specific gap's full details.", inputSchema: { type: "object", properties: { id: { type: "string", description: "Gap id (e.g. 'pd-la001') or slug.", }, }, required: ["id"], }, }, { name: "get_viral_social_gaps", description: "SPECIALIZED TOOL — only use when the user explicitly asks for VIRAL, SOCIAL, TIKTOK, CONSUMER, TREND-BASED, or SHORT-WINDOW build opportunities. Returns 5 time-sensitive consumer/viral trend gaps (TikTok challenges, HBO premieres, viral formats) with peak windows measured in days or weeks. DO NOT call this tool for general 'find me ideas' or 'what should I build' queries — those should use `search_gaps` which returns serious validated business opportunities across 7 industries. Only call this when the user specifically mentions viral, social, trend, TikTok, Instagram, or consumer-facing short-window builds.", inputSchema: { type: "object", properties: {}, }, }, { name: "get_stats", description: "Get GapBase database statistics: total gaps, industry breakdown, trending gap count.", inputSchema: { type: "object", properties: {}, }, }, ]; - src/index.js:220-221 (registration)The switch-case handler in CallToolRequestSchema that routes the 'get_gap' tool name to the getGap() function, passing args.id.
case "get_gap": payload = getGap(args.id);