List implementation recipes
list_recipesList curated end-to-end implementation recipes for common ProsodyAI integration tasks, including adding prosody to LiveKit agents, streaming from browsers, wiring LangChain tools, and defining KPIs.
Instructions
List curated end-to-end implementation recipes for common ProsodyAI integration tasks (e.g. add prosody to a LiveKit agent, stream from a browser, wire the LangChain tool, define KPIs).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Implementation Reference
- src/server.ts:204-218 (handler)Handler for the list_recipes tool. Calls listEntries('recipes') and formats the results.
server.registerTool( "list_recipes", { title: "List implementation recipes", description: "List curated end-to-end implementation recipes for common ProsodyAI integration tasks (e.g. add prosody to a LiveKit agent, stream from a browser, wire the LangChain tool, define KPIs).", inputSchema: {}, }, async () => { const recipes = await listEntries("recipes"); if (!recipes.length) return textResponse("No recipes bundled."); const lines = recipes.map((r) => `- ${r.id} — ${r.title}\n ${r.description}`); return textResponse(lines.join("\n\n")); }, ); - src/server.ts:206-211 (schema)Schema/definition for list_recipes tool with title, description, and empty inputSchema.
{ title: "List implementation recipes", description: "List curated end-to-end implementation recipes for common ProsodyAI integration tasks (e.g. add prosody to a LiveKit agent, stream from a browser, wire the LangChain tool, define KPIs).", inputSchema: {}, }, - src/server.ts:204-218 (registration)Registration of the list_recipes tool via server.registerTool.
server.registerTool( "list_recipes", { title: "List implementation recipes", description: "List curated end-to-end implementation recipes for common ProsodyAI integration tasks (e.g. add prosody to a LiveKit agent, stream from a browser, wire the LangChain tool, define KPIs).", inputSchema: {}, }, async () => { const recipes = await listEntries("recipes"); if (!recipes.length) return textResponse("No recipes bundled."); const lines = recipes.map((r) => `- ${r.id} — ${r.title}\n ${r.description}`); return textResponse(lines.join("\n\n")); }, ); - src/lib/content.ts:145-148 (helper)Helper function listEntries that filters loaded content by section (used with 'recipes' section).
export async function listEntries(section?: ContentSection): Promise<ContentEntry[]> { const all = await loadContent(); return section ? all.filter((e) => e.section === section) : all; } - src/lib/content.ts:97-101 (helper)Helper function makeId used by loadContent to create stable IDs for content entries.
function makeId(relPath: string): string { // strip extension; normalise slashes return relPath.replace(/\\/g, "/").replace(/\.(md|mdx|json|yaml|yml)$/i, ""); }