Skip to main content
Glama

bbq_get_cooking_tips

Get expert BBQ cooking tips for specific proteins, methods, and cooking phases to improve your grilling and smoking results.

Instructions

Get cooking tips and best practices for a specific protein and situation.

Args:

  • protein_type: Type of protein

  • cook_method: Specific cooking method (optional)

  • current_phase: Current cooking phase for targeted tips (optional)

    • 'prep': Preparation and seasoning

    • 'cooking': Active cooking

    • 'stall': Temperature stall

    • 'wrapping': Texas crutch / wrapping

    • 'final_push': End of cook

    • 'resting': Rest period

    • 'serving': Slicing and serving

  • response_format: 'markdown' or 'json'

Examples:

  • "Tips for smoking brisket" -> protein_type='beef_brisket', cook_method='smoke_low_slow'

  • "Help with the stall" -> protein_type='beef_brisket', current_phase='stall'

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
protein_typeYesType of protein
cook_methodNoSpecific cooking method for targeted tips
current_phaseNoCurrent phase of the cook for phase-specific tips
response_formatNoOutput formatmarkdown

Implementation Reference

  • The inline handler function passed to server.registerTool that executes the tool logic: retrieves tips using getCookingTips, formats as JSON or Markdown, handles errors.
    async (params: GetCookingTipsInput) => { try { const tips = getCookingTips(params.protein_type, params.cook_method, params.current_phase); if (params.response_format === "json") { const output = { proteinType: params.protein_type, cookMethod: params.cook_method, currentPhase: params.current_phase, tips, }; return { content: [{ type: "text", text: JSON.stringify(output, null, 2) }], structuredContent: output, }; } const markdown = formatTipsMarkdown(tips, params.protein_type); return { content: [{ type: "text", text: markdown }], }; } catch (error) { const message = error instanceof Error ? error.message : "Unknown error occurred"; return { isError: true, content: [{ type: "text", text: `Error getting cooking tips: ${message}` }], }; } }
  • Zod schema for input validation: requires protein_type, optional cook_method, current_phase, response_format.
    export const GetCookingTipsSchema = z .object({ protein_type: ProteinTypeSchema.describe("Type of protein"), cook_method: CookMethodSchema.optional().describe("Specific cooking method for targeted tips"), current_phase: z .enum(["prep", "cooking", "stall", "wrapping", "final_push", "resting", "serving"]) .optional() .describe("Current phase of the cook for phase-specific tips"), response_format: ResponseFormatSchema.describe("Output format"), }) .strict(); export type GetCookingTipsInput = z.infer<typeof GetCookingTipsSchema>;
  • src/index.ts:690-719 (registration)
    Registration of the 'bbq_get_cooking_tips' tool with server.registerTool, including metadata, description, input schema reference, and annotations.
    server.registerTool( "bbq_get_cooking_tips", { title: "Get Cooking Tips", description: `Get cooking tips and best practices for a specific protein and situation. Args: - protein_type: Type of protein - cook_method: Specific cooking method (optional) - current_phase: Current cooking phase for targeted tips (optional) - 'prep': Preparation and seasoning - 'cooking': Active cooking - 'stall': Temperature stall - 'wrapping': Texas crutch / wrapping - 'final_push': End of cook - 'resting': Rest period - 'serving': Slicing and serving - response_format: 'markdown' or 'json' Examples: - "Tips for smoking brisket" -> protein_type='beef_brisket', cook_method='smoke_low_slow' - "Help with the stall" -> protein_type='beef_brisket', current_phase='stall'`, inputSchema: GetCookingTipsSchema, annotations: { readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false, }, },
  • Core helper function that generates cooking tips based on protein profile, cook method, and current phase by combining base tips with contextual additions.
    export function getCookingTips( proteinType: ProteinType, cookMethod?: CookMethod, currentPhase?: string ): string[] { const profile = getProteinProfile(proteinType); const tips: string[] = [...profile.tips]; // Add method-specific tips if (cookMethod) { const methodInfo = COOK_METHOD_INFO[cookMethod]; tips.push(`For ${methodInfo.displayName}: Cook at ${methodInfo.tempRange}`); if (cookMethod === "reverse_sear") { tips.push("Start at 225°F until 10-15°F below target, then sear at high heat for 1-2 minutes per side."); } else if (cookMethod === "spatchcock") { tips.push( "Remove backbone with kitchen shears, flatten bird for more even cooking and crispier skin." ); } } // Add phase-specific tips if (currentPhase) { switch (currentPhase) { case "prep": tips.push("Season liberally - salt enhances flavor and aids bark formation."); tips.push("Let meat come to room temperature (30-60 min) for more even cooking."); break; case "stall": tips.push("The stall is caused by evaporative cooling - moisture on the surface keeps temps flat."); tips.push("Options: Wrap in butcher paper/foil (Texas crutch) or ride it out."); break; case "wrapping": tips.push("Butcher paper allows some smoke penetration while speeding the cook."); tips.push("Foil is faster but can soften the bark."); break; case "resting": tips.push("Don't skip the rest! It allows juices to redistribute."); tips.push("Large cuts can rest in a cooler for hours without losing much heat."); break; } } return tips; }
  • Helper function to format the array of cooking tips into Markdown bullet list with protein title.
    export function formatTipsMarkdown(tips: string[], proteinType: ProteinType): string { const profile = PROTEIN_PROFILES[proteinType]; let output = `## 💡 Cooking Tips: ${profile.displayName}\n\n`; for (const tip of tips) { output += `- ${tip}\n`; } return output; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jweingardt12/bbq-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server