Get Ideas
get_ideasRetrieve ideas from personal, Codaissance, or TamperTantrum Labs idea banks. Filter by source and status to find raw, validating, validated, rejected, or moved to projects ideas.
Instructions
Get ideas from personal, Codaissance, or TamperTantrum Labs idea banks
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | Which idea source to retrieve (defaults to all) | |
| status | No | Filter by idea status |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes |
Implementation Reference
- api/mcp.ts:417-455 (handler)The 'get_ideas' tool handler registered via server.registerTool. It accepts optional 'source' (personal/codaissance/tampertantrum-labs/all) and 'status' (raw/validating/validated/rejected/moved_to_projects) filters, reads ideas from JSON files on GitHub, filters by status, and returns the matching ideas grouped by source.
// Tool: Get Ideas server.registerTool( "get_ideas", { title: "Get Ideas", description: "Get ideas from personal, Codaissance, or TamperTantrum Labs idea banks", inputSchema: { source: z.enum(["personal", "codaissance", "tampertantrum-labs", "all"]).optional().describe("Which idea source to retrieve (defaults to all)"), status: z.enum(["raw", "validating", "validated", "rejected", "moved_to_projects"]).optional().describe("Filter by idea status"), }, outputSchema: textContentOutputSchema, }, async ({ source, status }) => { const sources: Record<string, string> = { personal: "ideas/personal/ideas.json", codaissance: "ideas/business/codaissance/ideas.json", "tampertantrum-labs": "ideas/business/tampertantrum-labs/ideas.json", }; const sourcesToCheck = source && source !== "all" ? [source] : ["personal", "codaissance", "tampertantrum-labs"]; const allIdeas: Array<{ source: string; ideas: Idea[] }> = []; for (const s of sourcesToCheck) { try { const data = await readJsonFile<IdeasData>(sources[s]); let ideas = data.ideas || []; if (status) { ideas = ideas.filter(i => i.status === status); } if (ideas.length > 0) { allIdeas.push({ source: s, ideas }); } } catch { // File may not exist } } return { content: [{ type: "text", text: JSON.stringify(allIdeas, null, 2) }] }; } ); - src/types.ts:339-361 (schema)Type definitions for Idea, IdeasData, and IdeasResult interfaces used by the get_ideas tool.
export interface Idea { name: string; description: string; problem: string; solution: string; target_audience: string; effort: string; potential_value: string; status: string; validation_report: unknown | null; notes: string; date_added: string; date_updated: string; } export interface IdeasData { ideas: Idea[]; } export interface IdeasResult { source: string; ideas: Idea[]; } - api/mcp.ts:22-24 (helper)Import of IdeasData and Idea types from src/types.ts used by the get_ideas handler.
IdeasData, Idea, } from "../src/types.js"; - api/mcp.ts:40-43 (helper)The readJsonFile helper function that fetches JSON data from GitHub, used by get_ideas to load idea bank files.
async function readJsonFile<T>(relativePath: string): Promise<T> { const content = await fetchFromGitHub(relativePath); return JSON.parse(content) as T; } - api/mcp.ts:418-419 (registration)Registration of the 'get_ideas' tool via server.registerTool with its name.
server.registerTool( "get_ideas",