Skip to main content
Glama

🍖 BBQ MCP Server

An MCP (Model Context Protocol) server for BBQ cooking guidance with live ThermoWorks Cloud integration. Connect your ThermoWorks account to get real-time temperature readings, expert cooking guidance, stall detection, and perfectly timed cooks.

✨ What's New: Real ThermoWorks Authentication

Connect your actual ThermoWorks devices! This MCP server now authenticates directly with ThermoWorks Cloud using your existing account credentials (same as the ThermoWorks mobile app).

You: "Connect to my ThermoWorks account"
MCP: thermoworks_authenticate(email, password)
→ ✅ Connected! Found 1 device: Signals (SIG-12345)

You: "How's my brisket doing?"  
MCP: thermoworks_get_live_readings() + bbq_analyze_temperature()
→ 🌡️ Probe 1: 168°F | Target: 203°F | 78% complete
→ ⚠️ You're in the stall zone! Consider wrapping.

Related MCP server: InBiot MCP Server

Features

  • 📱 ThermoWorks Cloud Integration: Live readings from Signals, Smoke, BlueDOT, Node

  • 🎯 Cooking Guidance: Comprehensive instructions for 20+ proteins

  • 🌡️ Temperature Analysis: Real-time progress tracking with trend detection

  • ⏱️ Time Estimation: Accurate cook times based on weight and method

  • 🛑 Stall Detection: Detect and get recommendations for the dreaded stall

  • 😴 Rest Calculations: Know exactly when to pull and how long to rest

Supported Proteins

Beef

  • Brisket, Ribeye, Tri-Tip, Prime Rib, Short Ribs

Pork

  • Shoulder, Butt, Spare Ribs, Baby Back Ribs, Loin, Tenderloin, Belly

Poultry

  • Whole Chicken, Breast, Thighs, Wings, Whole Turkey, Turkey Breast

Lamb

  • Shoulder, Leg, Rack

Seafood

  • Salmon

Cooking Methods

Method

Temperature Range

Best For

Low & Slow Smoke

225-250°F

Brisket, Pork Butt, Ribs

Hot & Fast Smoke

275-325°F

Poultry, Pork Loin

Direct Grilling

400-500°F

Steaks, Chops

Indirect Grilling

300-350°F

Roasts, Larger Cuts

Reverse Sear

225°F → 500°F

Thick Steaks

Spatchcock

325-400°F

Whole Birds

Rotisserie

300-350°F

Whole Birds, Roasts

Installation

Local Installation

# Clone or copy the server files
cd bbq-mcp-server

# Install dependencies
npm install

# Build
npm run build

# Run (stdio mode for local use)
npm start

# Run (HTTP mode for remote access)
TRANSPORT=http npm start

Deploy to Smithery

This server is designed to work with Smithery for hosted deployment. Smithery handles containerization and scaling automatically.

1. Push to GitHub

git init
git add .
git commit -m "BBQ MCP Server"
git remote add origin https://github.com/YOUR_USERNAME/bbq-mcp-server.git
git push -u origin main

2. Connect to Smithery

  1. Go to smithery.ai and sign in

  2. Click "Add Server" and connect your GitHub repository

  3. Smithery will auto-detect the smithery.yaml and package.json configuration

  4. Click "Deploy"

3. Configure Session

When users connect to your server on Smithery, they can provide their ThermoWorks credentials via session configuration:

Parameter

Description

thermoworks_email

ThermoWorks account email (optional)

thermoworks_password

ThermoWorks account password (optional)

use_legacy_smoke

Set true for older Smoke Gateway devices

Users who don't provide credentials can still use all BBQ cooking guidance tools - only the live device reading tools require authentication.

4. Local Development with Smithery CLI

# Install Smithery CLI
npm install -D @smithery/cli

# Start development server with hot reload
npm run dev

# This opens the Smithery Playground for testing

ThermoWorks Cloud Authentication

Connecting Your Account

The MCP server authenticates directly with ThermoWorks Cloud (Firebase backend). Your credentials are sent directly to ThermoWorks servers and are never stored.

{
  "tool": "thermoworks_authenticate",
  "args": {
    "email": "your-thermoworks-email@example.com",
    "password": "your-password"
  }
}

For Automated/Headless Use

Set environment variables:

export THERMOWORKS_EMAIL="your-email@example.com"
export THERMOWORKS_PASSWORD="your-password"

Security Notes

  • ✅ Credentials sent directly to ThermoWorks/Firebase (HTTPS)

  • ✅ No credentials stored by the MCP server

  • ✅ Tokens auto-expire after 1 hour

  • ✅ Tokens auto-refresh when needed

  • ⚠️ Use environment variables in production, never hardcode credentials

Available Tools

ThermoWorks Cloud Tools

thermoworks_authenticate

Connect to ThermoWorks Cloud with your account.

{
  "email": "your@email.com",
  "password": "your-password",
  "use_legacy_smoke": false
}

thermoworks_get_live_readings

Get current temperature readings from all connected devices.

{
  "device_serial": "SIG-12345",  // optional, defaults to all
  "response_format": "markdown"
}

thermoworks_analyze_live

Get live reading and analyze against cooking targets.

{
  "device_serial": "SIG-12345",
  "probe_id": "1",
  "protein_type": "beef_brisket"
}

BBQ Cooking Tools

bbq_get_cooking_guidance

Get comprehensive cooking guidance for a specific protein.

{
  "protein_type": "beef_brisket",
  "weight_pounds": 14,
  "serving_time": "2024-12-25T18:00:00"
}

bbq_analyze_temperature

Analyze current temperature and get progress/recommendations.

{
  "current_temp": 165,
  "target_temp": 203,
  "protein_type": "beef_brisket",
  "previous_readings": [
    {"temp": 155, "timestamp": "2024-12-25T10:00:00"},
    {"temp": 160, "timestamp": "2024-12-25T11:00:00"},
    {"temp": 165, "timestamp": "2024-12-25T12:00:00"}
  ]
}

bbq_get_target_temperature

Get target temperature for a protein at specified doneness.

{
  "protein_type": "beef_ribeye",
  "doneness": "medium_rare"
}

bbq_list_proteins

List all supported proteins and their cooking info.

{
  "category": "beef"
}

bbq_estimate_cook_time

Estimate total cooking time.

{
  "protein_type": "pork_butt",
  "weight_pounds": 10,
  "cook_method": "smoke_low_slow"
}

bbq_detect_stall

Detect if your cook is experiencing a temperature stall.

{
  "protein_type": "beef_brisket",
  "current_temp": 160,
  "readings": [
    {"temp": 158, "timestamp": "2024-12-25T10:00:00"},
    {"temp": 159, "timestamp": "2024-12-25T11:00:00"},
    {"temp": 160, "timestamp": "2024-12-25T12:00:00"},
    {"temp": 160, "timestamp": "2024-12-25T13:00:00"}
  ]
}

bbq_get_cooking_tips

Get cooking tips for a protein and cooking phase.

{
  "protein_type": "beef_brisket",
  "current_phase": "stall"
}

bbq_calculate_rest_time

Calculate rest time and carryover cooking.

{
  "protein_type": "beef_brisket",
  "current_temp": 200
}

bbq_analyze_device_reading

Analyze readings from a ThermoWorks device.

{
  "device_type": "Signals",
  "probe_readings": [
    {"probe_id": "probe1", "name": "Brisket", "temperature": 175},
    {"probe_id": "ambient", "name": "Smoker", "temperature": 250}
  ],
  "protein_type": "beef_brisket",
  "target_temp": 203
}

bbq_convert_temperature

Convert between Fahrenheit and Celsius.

{
  "temperature": 225,
  "from_unit": "fahrenheit",
  "to_unit": "celsius"
}

Example Usage

Planning a Brisket Cook

"I have a 14 lb brisket and want to serve dinner at 6 PM. When should I start?"

The server will calculate:

  • Estimated cook time (~17-18 hours for low & slow)

  • Recommended start time (accounting for rest and buffer)

  • Target temperatures

  • Stall warnings

  • Resting instructions

Monitoring Progress

"My brisket is at 165°F and hasn't moved in 2 hours. Is this normal?"

The server will:

  • Detect the stall

  • Confirm this is normal behavior

  • Provide recommendations (wrap or ride it out)

  • Estimate remaining time

Getting to the Finish Line

"Brisket just hit 200°F. How long should I rest it?"

The server will:

  • Recommend 60+ minute rest

  • Calculate expected carryover (+5°F)

  • Provide resting instructions

  • Suggest cooler method for extended holding

ThermoWorks Integration

This server is designed to work with ThermoWorks Cloud-connected devices:

  • Signals: 4-probe thermometer with Billows fan control

  • Smoke: 2-probe wireless thermometer with gateway

  • BlueDOT: Bluetooth thermometer with app connectivity

While full API integration requires ThermoWorks Cloud credentials, the server can analyze temperature readings provided by users and simulate device workflows.

Temperature Guidelines (USDA)

Protein

Safe Minimum

Recommended

Beef (whole cuts)

145°F + 3 min rest

Medium-rare: 130°F

Pork (whole cuts)

145°F + 3 min rest

Medium: 145°F

Ground meats

160°F

160°F

Poultry

165°F

Breast: 165°F, Thigh: 175°F

Brisket/Pulled Pork

145°F safe

Pullable: 200-205°F

License

MIT

Smithery Deployment

This server is compatible with Smithery for hosted deployment.

Quick Deploy

  1. Push to a GitHub repository

  2. Connect to Smithery and import your repo

  3. Smithery will detect smithery.yaml and deploy automatically

Configuration Schema

When users connect, they can optionally provide:

Parameter

Type

Description

thermoworksEmail

string

ThermoWorks account email

thermoworksPassword

string

ThermoWorks account password

useLegacySmoke

boolean

Use legacy Smoke Gateway API

defaultTempUnit

enum

"fahrenheit" or "celsius"

Local Development with Smithery CLI

# Install Smithery CLI
npm install -g @smithery/cli

# Run dev server with hot-reload
npm run dev

# Or run playground
npx @smithery/cli playground

Files for Smithery

  • smithery.yaml - Smithery configuration

  • src/smithery.ts - Smithery-compatible entry point with configSchema export

Contributing

Contributions welcome! Areas of interest:

  • Additional protein profiles

  • Regional BBQ style variations

  • Enhanced ThermoWorks Cloud integration

  • Smoker/grill-specific recommendations

Available Tools

15 tools
bbq_analyze_device_readingAnalyze ThermoWorks Device ReadingA
Read-onlyIdempotent

Analyze temperature readings from a ThermoWorks device (Signals, Smoke, BlueDOT).

Simulates integration with ThermoWorks Cloud to provide analysis of multi-probe readings.

Args:

  • device_type: Type of ThermoWorks device ('Signals', 'Smoke', 'BlueDOT')

  • probe_readings: Array of probe readings with {probe_id, name, temperature}

  • protein_type: Type of protein being cooked (optional)

  • target_temp: Target temperature (optional)

  • response_format: 'markdown' or 'json'

Examples:

  • "Signals reading: Probe 1 at 165°F, Ambient at 250°F"

  • "Smoke shows 180°F on the meat probe"

ParametersJSON Schema
NameRequiredDescriptionDefault
device_typeYesType of ThermoWorks device
probe_readingsYesTemperature readings from each probe
protein_typeNoType of protein being cooked (if known)
target_tempNoTarget temperature set on device
response_formatNoOutput formatmarkdown

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate the tool is read-only, non-destructive, and idempotent. The description adds context by stating it 'simulates integration with ThermoWorks Cloud,' which suggests it's a mock or test tool rather than a live API call. However, it does not disclose rate limits, authentication needs, or specific behavioral traits beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement, parameter list, and examples. It is appropriately sized, but the 'Args' section slightly duplicates schema information. Every sentence adds value, such as the simulation note and examples, making it efficient overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, 100% schema coverage, annotations provided, no output schema), the description is adequate but has gaps. It explains the tool's purpose and simulation aspect but does not detail the analysis output (e.g., what insights are provided) or how it differs from sibling tools, leaving room for improvement in contextual guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters. The description lists parameters in an 'Args' section but does not add meaningful semantics beyond the schema (e.g., it repeats 'device_type' and 'probe_readings' without extra context). The examples illustrate usage but do not clarify parameter meanings further.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Analyze temperature readings from a ThermoWorks device (Signals, Smoke, BlueDOT).' It specifies the verb ('analyze'), resource ('temperature readings'), and device types, distinguishing it from siblings like 'bbq_analyze_temperature' (generic) or 'thermoworks_analyze_live' (live data).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for analyzing multi-probe readings from ThermoWorks devices, but does not explicitly state when to use this tool versus alternatives like 'thermoworks_analyze_live' (for live data) or 'bbq_analyze_temperature' (generic analysis). It mentions simulation of ThermoWorks Cloud integration, which provides some context but lacks clear exclusions or comparisons.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bbq_analyze_temperatureAnalyze Temperature ProgressA
Read-onlyIdempotent

Analyze current temperature reading and provide progress assessment, trend analysis, and recommendations.

Use this tool to interpret live temperature data from a thermometer. It provides:

  • Progress percentage toward target

  • Temperature trend (rising, falling, stalled, stable)

  • Rate of temperature change per hour

  • Estimated time remaining

  • Stall detection

  • Actionable recommendations

Args:

  • current_temp: Current internal temperature in °F

  • target_temp: Target internal temperature in °F

  • protein_type: Type of protein being cooked

  • cook_method: Cooking method (optional)

  • cook_start_time: When cook started, ISO 8601 format (optional)

  • previous_readings: Array of {temp, timestamp} for trend analysis (optional)

  • response_format: 'markdown' or 'json'

Examples:

  • "My brisket is at 165°F, target is 203°F" -> current_temp=165, target_temp=203, protein_type='beef_brisket'

  • "Temperature hasn't moved in 2 hours" -> Include previous_readings for stall detection

ParametersJSON Schema
NameRequiredDescriptionDefault
current_tempYesCurrent internal temperature reading in Fahrenheit
target_tempYesTarget internal temperature in Fahrenheit
protein_typeYesType of protein being cooked
cook_methodNoCooking method being used
cook_start_timeNoWhen the cook started in ISO 8601 format (e.g., '2024-12-25T06:00:00')
previous_readingsNoPrevious temperature readings to calculate trend (most recent last)
response_formatNoOutput formatmarkdown

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond annotations. While annotations indicate read-only, non-destructive, and idempotent operations, the description specifies what the tool provides: progress percentage, trend analysis, rate of change, estimated time, stall detection, and recommendations. This gives the agent concrete expectations about output behavior that annotations alone don't convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and efficiently uses every sentence. It starts with a clear purpose statement, provides a bulleted list of outputs, gives usage guidance with examples, and explains parameter relationships. No sentence is wasted, and information is front-loaded for quick comprehension.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters, rich annotations, and no output schema, the description provides strong context. It explains what the tool returns (progress, trend, recommendations), when to use it, and how parameters interact. The main gap is lack of explicit output format details, but the description compensates well given the comprehensive annotations and schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the baseline is 3. The description adds meaningful context: it explains that previous_readings enable 'trend analysis' and 'stall detection,' and provides concrete examples showing how parameters relate to real-world scenarios (e.g., 'My brisket is at 165°F' maps to current_temp=165, target_temp=203, protein_type='beef_brisket'). This enhances understanding beyond the schema's technical descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Analyze current temperature reading and provide progress assessment, trend analysis, and recommendations.' It specifies the verb ('analyze'), resource ('temperature reading'), and distinguishes from siblings like bbq_detect_stall (focused only on stall detection) and bbq_estimate_cook_time (focused only on time estimation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'Use this tool to interpret live temperature data from a thermometer.' It includes examples showing when to use it (e.g., 'My brisket is at 165°F, target is 203°F') and when to include optional parameters ('Temperature hasn't moved in 2 hours' → include previous_readings). This clearly distinguishes it from alternatives like bbq_get_cooking_guidance or thermoworks_analyze_live.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bbq_calculate_rest_timeCalculate Rest TimeA
Read-onlyIdempotent

Calculate recommended rest time and expected carryover cooking.

Resting allows juices to redistribute and temperature to equalize. This tool provides rest time recommendations and predicts final temperature after carryover.

Args:

  • protein_type: Type of protein

  • current_temp: Current internal temperature when removed from heat

  • target_final_temp: Desired final temperature after resting (optional)

  • response_format: 'markdown' or 'json'

Examples:

  • "Brisket is at 200°F, how long to rest?" -> protein_type='beef_brisket', current_temp=200

  • "Pulled steak at 125°F for medium-rare" -> protein_type='beef_ribeye', current_temp=125, target_final_temp=130

ParametersJSON Schema
NameRequiredDescriptionDefault
protein_typeYesType of protein
current_tempYesCurrent internal temperature when removed from heat
target_final_tempNoDesired final temperature after resting
response_formatNoOutput formatmarkdown

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, covering safety and idempotency. The description adds valuable context beyond annotations: it explains the purpose of resting ('allows juices to redistribute and temperature to equalize') and specifies what the tool provides ('rest time recommendations and predicts final temperature after carryover'). This enhances understanding without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose in the first sentence. Each subsequent section (explanation, args, examples) is concise and directly relevant. There is no wasted text; every sentence earns its place by clarifying usage or providing practical examples.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (4 parameters, no output schema), the description is reasonably complete. It covers purpose, usage context, and examples. However, it lacks details on output format specifics or error handling, which could be useful since there's no output schema. Annotations provide good behavioral coverage, but the description could add more on result interpretation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter well-documented in the schema (e.g., protein_type enum values, current_temp range). The description adds minimal param semantics: it lists args and provides examples that illustrate usage but does not explain parameter interactions or constraints beyond what the schema already provides. Baseline 3 is appropriate given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool's purpose: 'Calculate recommended rest time and expected carryover cooking.' It uses specific verbs ('calculate,' 'provides,' 'predicts') and clearly identifies the resource (rest time and temperature predictions). It distinguishes from siblings like bbq_estimate_cook_time or bbq_get_target_temperature by focusing on post-cooking resting rather than cooking itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: 'Resting allows juices to redistribute and temperature to equalize.' The examples illustrate typical scenarios (e.g., 'Brisket is at 200°F, how long to rest?'). However, it does not explicitly state when NOT to use it or name alternatives among siblings, such as bbq_analyze_temperature for real-time analysis.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bbq_convert_temperatureConvert TemperatureA
Read-onlyIdempotent

Convert temperature between Fahrenheit and Celsius.

Args:

  • temperature: Temperature value to convert

  • from_unit: Source unit ('fahrenheit' or 'celsius')

  • to_unit: Target unit ('fahrenheit' or 'celsius')

Examples:

  • "What is 225°F in Celsius?" -> temperature=225, from_unit='fahrenheit', to_unit='celsius'

  • "Convert 100°C to Fahrenheit" -> temperature=100, from_unit='celsius', to_unit='fahrenheit'

ParametersJSON Schema
NameRequiredDescriptionDefault
temperatureYesTemperature value to convert
from_unitNoSource temperature unitfahrenheit
to_unitNoTarget temperature unitfahrenheit

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide clear hints (readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false), so the description does not need to repeat these. It adds value by including practical examples that illustrate the tool's behavior in real-world scenarios, but does not disclose additional traits like error handling or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with a clear purpose statement, followed by arg definitions and practical examples. Every sentence serves a purpose, with no redundant information, making it easy to scan and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity, rich annotations, and full schema coverage, the description is mostly complete. It lacks an output schema, but the examples implicitly show the expected result format. A minor gap is the absence of explicit error cases or edge-case handling, though this is less critical for a simple conversion tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with all parameters well-documented in the schema. The description adds minimal semantics beyond the schema, such as clarifying 'from_unit' and 'to_unit' in the examples, but does not provide significant additional meaning. The baseline of 3 is appropriate given the comprehensive schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Convert temperature') and resources involved ('between Fahrenheit and Celsius'), distinguishing it from sibling tools like 'bbq_analyze_temperature' or 'bbq_get_target_temperature' which perform different functions. The verb 'convert' is precise and the scope is well-defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly defines usage context through the examples, showing when to use this tool for unit conversion tasks. However, it does not explicitly state when NOT to use it or name alternatives among sibling tools, such as 'bbq_analyze_temperature' for analysis rather than conversion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bbq_detect_stallDetect Temperature StallA
Read-onlyIdempotent

Analyze temperature readings to detect if a cook is experiencing a stall.

The stall is a phenomenon where internal temperature plateaus, common with large cuts like brisket and pork shoulder. This tool analyzes temperature trend to detect stalls and provides recommendations.

Args:

  • protein_type: Type of protein being cooked

  • current_temp: Current internal temperature in °F

  • readings: Array of at least 3 readings with {temp, timestamp}

  • response_format: 'markdown' or 'json'

Examples:

  • "Is my brisket stalling?" -> Provide current_temp and readings array

  • "Temp hasn't moved in 2 hours" -> Include readings over that period

ParametersJSON Schema
NameRequiredDescriptionDefault
protein_typeYesType of protein being cooked
current_tempYesCurrent internal temperature in Fahrenheit
readingsYesAt least 3 temperature readings to analyze trend (most recent last)
response_formatNoOutput formatmarkdown

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, so the agent knows this is a safe, deterministic read operation. The description adds useful context about the stall phenomenon and that it 'provides recommendations,' which goes beyond annotations. However, it does not detail behavioral aspects like rate limits, error conditions, or the format of recommendations, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and appropriately sized: it starts with the core purpose, explains the stall phenomenon, and includes an 'Args' section and examples. Most sentences earn their place, but the 'Args' section slightly duplicates schema information, and the examples could be more concise. Overall, it is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (4 parameters, 100% schema coverage, annotations provided, no output schema), the description is mostly complete. It covers purpose, context, and usage examples. However, it lacks details on output structure (since no output schema exists) and does not fully address behavioral nuances like error handling or recommendation formats, leaving minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds minimal value beyond the schema: it mentions 'analyzes temperature trend' and provides examples that imply usage of current_temp and readings, but does not explain parameter interactions or semantics not covered by the schema. This meets the baseline of 3 when schema coverage is high.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Analyze temperature readings to detect if a cook is experiencing a stall.' It specifies the verb ('analyze'), resource ('temperature readings'), and distinct outcome ('detect stall'), differentiating it from siblings like bbq_analyze_temperature or bbq_analyze_device_reading by focusing on stall detection rather than general analysis.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: when analyzing temperature trends to detect stalls, common with large cuts like brisket and pork shoulder. The examples ('Is my brisket stalling?' and 'Temp hasn't moved in 2 hours') illustrate typical scenarios. However, it does not explicitly state when not to use it or name specific alternatives among siblings, such as bbq_analyze_temperature for non-stall analysis.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bbq_estimate_cook_timeEstimate Cook TimeA
Read-onlyIdempotent

Estimate total cooking time for a protein based on weight and cooking method.

Provides time estimates with confidence levels and accounts for factors like stalls.

Args:

  • protein_type: Type of protein

  • weight_pounds: Weight in pounds

  • cook_method: Cooking method to use

  • smoker_temp: Smoker/grill temperature in °F (optional)

  • target_doneness: Target doneness level (optional)

  • response_format: 'markdown' or 'json'

Examples:

  • "How long for a 10 lb pork butt?" -> protein_type='pork_butt', weight_pounds=10, cook_method='smoke_low_slow'

  • "Time for hot and fast brisket" -> protein_type='beef_brisket', cook_method='smoke_hot_fast'

ParametersJSON Schema
NameRequiredDescriptionDefault
protein_typeYesType of protein being cooked
weight_poundsYesWeight of the protein in pounds
cook_methodYesCooking method to use
smoker_tempNoSmoker/grill temperature in Fahrenheit. Defaults based on cook method.
target_donenessNoTarget doneness level
response_formatNoOutput formatmarkdown

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating a safe, non-mutating operation. The description adds valuable context beyond annotations by mentioning 'confidence levels' and 'accounts for factors like stalls', which helps the agent understand the tool's analytical nature and potential variability in outputs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, followed by parameter explanations and relevant examples. Every sentence adds value without redundancy, and the length is appropriate for a tool with 6 parameters and no output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, no output schema) and rich annotations, the description is mostly complete. It covers purpose, parameters, and examples, but could better address output behavior (e.g., format of time estimates with confidence levels) since no output schema exists. Still, it provides sufficient context for effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema fully documents all parameters. The description lists parameters and provides examples that illustrate usage (e.g., mapping natural language to parameter values), but doesn't add significant semantic details beyond what's in the schema descriptions. Baseline 3 is appropriate given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verb ('estimate') and resource ('total cooking time for a protein'), and distinguishes it from siblings like 'bbq_calculate_rest_time' or 'bbq_get_target_temperature' by focusing on time estimation rather than rest periods or temperature targets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through examples (e.g., 'How long for a 10 lb pork butt?'), but lacks explicit guidance on when to use this tool versus alternatives like 'bbq_get_cooking_guidance' or 'bbq_detect_stall'. No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bbq_get_cooking_guidanceGet BBQ Cooking GuidanceA
Read-onlyIdempotent

Get comprehensive cooking guidance for a specific protein including target temperatures, time estimates, and tips.

This is the primary tool for planning a cook. It provides:

  • Target internal temperature based on desired doneness

  • Pull temperature (accounting for carryover)

  • Estimated cook time based on weight and method

  • Timeline for when to start if serving time is specified

  • Stall warnings for large cuts

  • Resting instructions

  • Pro tips for the specific protein

Args:

  • protein_type: Type of meat (e.g., 'beef_brisket', 'pork_shoulder', 'chicken_whole')

  • weight_pounds: Weight in pounds (e.g., 12.5)

  • target_doneness: Desired doneness level (optional, uses recommended if not specified)

  • cook_method: Cooking method (optional, uses recommended if not specified)

  • serving_time: Target serving time in ISO 8601 format (optional)

  • response_format: 'markdown' or 'json'

Examples:

  • "How should I cook a 14 lb brisket?" -> protein_type='beef_brisket', weight_pounds=14

  • "I want to serve pulled pork at 6pm" -> protein_type='pork_butt', serving_time='2024-12-25T18:00:00'

ParametersJSON Schema
NameRequiredDescriptionDefault
protein_typeYesType of protein being cooked (e.g., 'beef_brisket', 'pork_shoulder', 'chicken_whole')
weight_poundsYesWeight of the protein in pounds (e.g., 12.5 for a 12.5 lb brisket)
target_donenessNoDesired doneness level. If not specified, will use the recommended doneness for the protein type.
cook_methodNoCooking method to use. If not specified, will recommend the best method for this protein.
serving_timeNoTarget serving time in ISO 8601 format (e.g., '2024-12-25T18:00:00'). Used to calculate when to start cooking.
response_formatNoOutput format: 'markdown' for human-readable or 'json' for structured datamarkdown

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false. The description adds valuable behavioral context beyond annotations: it details the comprehensive output structure (target temperatures, time estimates, tips, stall warnings, resting instructions, etc.), specifies that it provides timeline calculations if serving_time is given, and mentions optional parameter defaults. This enriches the agent's understanding of what to expect from the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and appropriately sized. It starts with a clear purpose statement, then details the output components, lists parameters with examples, and includes practical examples. Every sentence adds value, though the 'Args' section slightly duplicates schema information. It's front-loaded with the core purpose and comprehensive nature.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, comprehensive output), no output schema, and rich annotations, the description is largely complete. It thoroughly explains the tool's purpose, usage context, and behavioral output. The main gap is the lack of explicit output structure details (e.g., format of returned guidance), but the description compensates by listing output components. It's sufficient for an agent to understand and invoke the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents all parameters. The description adds minimal value beyond the schema: it lists parameters in the 'Args' section but repeats information already in the schema descriptions. The examples provide some contextual usage but don't add significant semantic depth. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get comprehensive cooking guidance for a specific protein including target temperatures, time estimates, and tips.' It specifies the verb ('Get comprehensive cooking guidance') and resource ('for a specific protein'), and distinguishes itself from siblings like bbq_estimate_cook_time and bbq_get_cooking_tips by offering a broader, integrated planning function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'This is the primary tool for planning a cook.' It distinguishes when to use this tool versus alternatives by positioning it as the comprehensive planning tool, implying that more specialized tools (e.g., bbq_estimate_cook_time, bbq_get_target_temperature) are for specific aspects rather than full planning.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bbq_get_cooking_tipsGet Cooking TipsA
Read-onlyIdempotent

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'

ParametersJSON 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

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, non-destructive, and idempotent behavior, which the description doesn't contradict. The description adds valuable context beyond annotations by specifying the tool's focus on 'tips and best practices' and providing usage examples, though it doesn't detail rate limits or authentication needs. With annotations covering safety, this earns a strong score for added practical guidance.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement, arg explanations, and examples, all in a compact format. Every sentence adds value, but the inclusion of a full enum list for current_phase in the description is slightly redundant given the schema, preventing a perfect score for optimal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (4 parameters, no output schema), the description is largely complete. It covers purpose, parameters via examples, and usage context. However, it doesn't detail output behavior (e.g., format of tips returned) or potential errors, which could enhance completeness for an agent, though annotations help mitigate this gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each parameter well-documented in the schema (e.g., enums and descriptions). The description adds minimal semantics beyond the schema, mainly through examples that illustrate parameter usage (e.g., mapping 'Help with the stall' to current_phase='stall'). This meets the baseline of 3 for high schema coverage without significant extra value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Get cooking tips and best practices for a specific protein and situation,' which is a specific verb (get) + resource (cooking tips) with clear scope. It effectively distinguishes itself from siblings like bbq_get_cooking_guidance (likely more general) or bbq_analyze_temperature (technical measurement).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for usage through examples (e.g., 'Tips for smoking brisket' maps to specific parameters) and implies when to use it—for targeted cooking advice. However, it lacks explicit guidance on when NOT to use it or direct alternatives among siblings (e.g., vs. bbq_get_cooking_guidance), keeping it from a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bbq_get_target_temperatureGet Target TemperatureA
Read-onlyIdempotent

Get the target internal temperature for a specific protein and doneness level.

Returns both the target serving temperature and the pull temperature (when to remove from heat) accounting for carryover cooking.

Args:

  • protein_type: Type of protein

  • doneness: Desired doneness level (optional, uses recommended if not specified)

  • include_pull_temp: Whether to include pull temperature (default: true)

  • response_format: 'markdown' or 'json'

Examples:

  • "What temp for medium-rare ribeye?" -> protein_type='beef_ribeye', doneness='medium_rare'

  • "When is chicken done?" -> protein_type='chicken_whole'

ParametersJSON Schema
NameRequiredDescriptionDefault
protein_typeYesType of protein
donenessNoDesired doneness level
include_pull_tempNoWhether to include pull temperature (accounting for carryover)
response_formatNoOutput formatmarkdown

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, but the description adds valuable behavioral context beyond annotations by explaining that it 'returns both the target serving temperature and the pull temperature (when to remove from heat) accounting for carryover cooking.' This provides important operational details about the tool's behavior that annotations don't cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly structured and front-loaded: the first sentence states the core purpose, followed by key behavioral details, then parameter explanations with practical examples. Every sentence serves a clear purpose with zero waste, making it highly efficient for an AI agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, rich annotations, and complete schema coverage, the description provides excellent contextual completeness. It explains the tool's purpose, key behavioral aspects (carryover cooking consideration), and includes practical examples. The only minor gap is the lack of output schema, but the description adequately compensates by describing what the tool returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already documents all parameters thoroughly. The description adds minimal additional parameter semantics beyond what's in the schema - mainly clarifying that doneness is optional and uses recommended defaults if not specified, which is already implied by the schema's structure. This meets the baseline expectation when schema coverage is complete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get the target internal temperature') and resource ('for a specific protein and doneness level'), distinguishing it from siblings like bbq_analyze_temperature or bbq_estimate_cook_time. It precisely defines what the tool does without being tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about when to use this tool (to get target temperatures with carryover cooking considerations) and includes examples that illustrate typical use cases. However, it doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

bbq_list_proteinsList Supported ProteinsA
Read-onlyIdempotent

List all supported protein types with their key cooking information.

Use this to discover available proteins and their identifiers for use with other tools.

Args:

  • category: Filter by category ('beef', 'pork', 'poultry', 'lamb', 'seafood', 'all')

  • response_format: 'markdown' or 'json'

Examples:

  • "What meats can you help me cook?" -> category='all'

  • "Show me beef options" -> category='beef'

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoFilter by protein categoryall
response_formatNoOutput formatmarkdown

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide strong behavioral hints (readOnlyHint=true, destructiveHint=false, idempotentHint=true, openWorldHint=false), covering safety and idempotency. The description adds valuable context by explaining that this tool is for 'discovery' and that outputs include 'identifiers for use with other tools,' which clarifies its role in the workflow beyond what annotations convey. No contradictions with annotations exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with a clear purpose statement, usage guidance, parameter listing, and examples—all in four concise sentences. Each section adds value without redundancy, and information is front-loaded with the core purpose stated first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (2 parameters, no output schema), annotations covering key behavioral aspects, and 100% schema coverage, the description is complete. It effectively explains the tool's role in discovery and integration with other tools, addressing all necessary contextual elements without needing to detail return values or complex behaviors.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters well-documented in the schema (category filter and output format). The description includes an 'Args' section that lists parameters but adds minimal semantic value beyond the schema, such as brief examples of category usage. This meets the baseline of 3 for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('List all supported protein types') and resources ('with their key cooking information'). It explicitly distinguishes this from sibling tools by emphasizing discovery of available proteins and identifiers for use with other tools, which is unique among the listed siblings that focus on analysis, calculation, and guidance rather than cataloging.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool: 'Use this to discover available proteins and their identifiers for use with other tools.' It includes practical examples that illustrate specific scenarios ('What meats can you help me cook?' and 'Show me beef options'), effectively guiding the agent on appropriate invocation contexts.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

thermoworks_analyze_liveAnalyze Live TemperatureA
Read-only

Get live temperature from a connected ThermoWorks device and analyze cooking progress.

Combines real-time device data with the BBQ cooking knowledge base to provide actionable recommendations.

Requires authentication first via thermoworks_authenticate.

Args:

  • device_serial: Serial number of the device

  • probe_id: Probe number to analyze (default: '1')

  • protein_type: Type of protein being cooked

  • target_temp: Target temperature (optional, uses protein default)

  • response_format: 'markdown' or 'json'

Returns: Current temperature, progress percentage, trend analysis, and recommendations.

Examples:

  • "How's my brisket doing?" -> Analyzes probe 1 against brisket targets

  • "Check the turkey on probe 2" -> protein_type='turkey_whole', probe_id='2'

ParametersJSON Schema
NameRequiredDescriptionDefault
device_serialYesSerial number of the device to analyze
probe_idNoProbe number to analyze (e.g., '1', '2', '3', '4' for Signals)1
protein_typeYesType of protein being cooked (e.g., 'beef_brisket')
target_tempNoTarget temperature. If not provided, uses recommended temp for the protein.
response_formatNoOutput formatmarkdown

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond annotations: it specifies the authentication prerequisite, describes the combination of real-time data with knowledge base, and outlines the return content. Annotations already cover safety (readOnlyHint=true, destructiveHint=false), so the bar is lower, but the description provides useful operational context without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, prerequisites, args, returns, examples) and front-loads the core functionality. It could be slightly more concise by removing redundant default values already in schema, but every sentence adds value for agent understanding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (5 parameters, no output schema), the description provides good context: purpose, prerequisites, parameter overview, return content, and usage examples. It doesn't fully explain the 'analyze' algorithm or knowledge base details, but with annotations covering safety and the schema documenting parameters well, it's sufficiently complete for agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the input schema already documents all parameters thoroughly. The description adds minimal additional semantics (e.g., 'default: '1'' for probe_id is redundant with schema, protein examples are helpful but not essential). It meets the baseline for high schema coverage without significantly enhancing parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Get live temperature', 'analyze cooking progress') and resources ('connected ThermoWorks device', 'BBQ cooking knowledge base'). It distinguishes from siblings by combining real-time device data with analysis, unlike simpler tools like thermoworks_get_live_readings or generic bbq_analyze_temperature.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool ('Requires authentication first via thermoworks_authenticate') and provides clear examples showing context ('How's my brisket doing?', 'Check the turkey on probe 2'). It implicitly distinguishes from siblings by emphasizing live data analysis with protein-specific recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

thermoworks_authenticateAuthenticate with ThermoWorks CloudA
Idempotent

Connect to ThermoWorks Cloud using your ThermoWorks account credentials.

This allows the BBQ MCP Server to access live temperature data from your connected ThermoWorks devices (Signals, Smoke, BlueDOT, etc.).

IMPORTANT: Your credentials are only used to authenticate with ThermoWorks' servers and are not stored. The authentication token expires after 1 hour.

Args:

  • email: Your ThermoWorks account email (same as the ThermoWorks app)

  • password: Your ThermoWorks account password

  • use_legacy_smoke: Set to true for older Smoke Gateway devices (pre-2022)

Returns: Authentication status and list of connected devices.

Security Notes:

  • Credentials are sent directly to ThermoWorks/Firebase servers over HTTPS

  • No credentials are stored by the MCP server

  • For production use, set credentials via environment variables: THERMOWORKS_EMAIL and THERMOWORKS_PASSWORD

Examples:

  • "Connect to my ThermoWorks account" -> Provide email and password

  • "I have an older Smoke Gateway" -> Set use_legacy_smoke=true

ParametersJSON Schema
NameRequiredDescriptionDefault
emailYesEmail address used for your ThermoWorks account (same as in the ThermoWorks app)
passwordYesPassword for your ThermoWorks account
use_legacy_smokeNoSet to true if using older Smoke Gateway devices (pre-2022). Default false for newer ThermoWorks Cloud devices.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds significant behavioral context beyond annotations: it explains credential handling ('credentials are not stored'), token expiration ('expires after 1 hour'), security practices (HTTPS transmission, environment variable recommendation), and legacy device support. While annotations provide structural hints (not read-only, idempotent), the description enriches understanding of the authentication lifecycle and security implications.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, important notes, args, returns, security, examples) and front-loads key information. Some redundancy exists between 'Args' and schema descriptions, but each sentence serves a purpose in clarifying authentication behavior and security.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an authentication tool with no output schema, the description provides comprehensive context: it explains the purpose, parameters, security model, token behavior, and even includes practical examples. Given the annotations cover idempotency and non-destructive nature, and the schema fully documents inputs, the description completes the picture by addressing real-world usage concerns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage, the schema already documents all parameters thoroughly. The description adds minimal extra context in the 'Args' section (repeating schema info) and provides usage examples that illustrate parameter application. It doesn't add substantial semantic value beyond the schema, but maintains clarity without contradiction.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Connect to ThermoWorks Cloud'), resource ('ThermoWorks account credentials'), and purpose ('access live temperature data from your connected ThermoWorks devices'). It distinguishes this authentication tool from sibling tools like thermoworks_get_devices or thermoworks_get_live_readings by focusing on establishing the connection rather than retrieving data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('to access live temperature data') and includes examples for specific scenarios (older Smoke Gateway devices). However, it doesn't explicitly state when NOT to use it or mention alternatives like using environment variables for authentication, though it hints at this in security notes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

thermoworks_check_authCheck ThermoWorks Auth StatusA
Read-onlyIdempotent

Check if you're currently authenticated with ThermoWorks Cloud.

Returns: Authentication status and token expiry time.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide key behavioral hints (readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false). The description adds value by specifying what the tool returns ('Authentication status and token expiry time'), which isn't covered by annotations. It doesn't contradict annotations, as 'checking' aligns with read-only and non-destructive behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise and well-structured: the first sentence directly states the purpose, and the second clarifies the return values. Both sentences earn their place by providing essential information without redundancy or fluff, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, no output schema, rich annotations), the description is adequately complete. It explains what the tool does and what it returns, covering the core functionality. However, it could slightly enhance completeness by mentioning typical use cases (e.g., pre-operation verification) or error scenarios, though this isn't critical for such a straightforward tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 0 parameters, and schema description coverage is 100% (though trivial due to no parameters). The description doesn't need to add parameter details, so it appropriately focuses on output semantics. This meets the baseline for zero-parameter tools, as there's no schema burden to compensate for.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Check if you're currently authenticated with ThermoWorks Cloud.' It specifies the verb ('Check') and resource ('ThermoWorks Cloud authentication status'), making the intent unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'thermoworks_authenticate' beyond the obvious difference in action (checking vs. establishing authentication).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context by focusing on authentication status, suggesting it should be used to verify connectivity before performing other ThermoWorks operations. However, it lacks explicit guidance on when to use this tool versus alternatives (e.g., 'thermoworks_authenticate' for initial setup) or any exclusions, leaving the agent to infer optimal usage scenarios.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

thermoworks_get_devicesGet ThermoWorks DevicesA
Read-onlyIdempotent

Get a list of all ThermoWorks devices connected to your account.

Requires authentication first via thermoworks_authenticate.

Args:

  • response_format: 'markdown' or 'json'

Returns: List of devices with serial numbers, names, and types.

ParametersJSON Schema
NameRequiredDescriptionDefault
response_formatNoOutput formatmarkdown

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already indicate this is a read-only, non-destructive, idempotent, and open-world operation. The description adds valuable context by specifying the authentication requirement, which is not covered by annotations. However, it doesn't mention potential rate limits, error conditions, or pagination behavior, leaving some behavioral aspects undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose in the first sentence, followed by prerequisite information and parameter/return details in a structured format. Every sentence serves a clear purpose without redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one optional parameter), rich annotations, and no output schema, the description is mostly complete. It covers purpose, prerequisites, parameters, and return values. However, it lacks details on output structure (e.g., device attributes beyond serial numbers, names, and types) and error handling, which could enhance completeness for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the parameter 'response_format' fully documented in the schema. The description adds minimal value by restating the enum options ('markdown' or 'json') and noting it affects output format, but doesn't provide additional semantics beyond what the schema already covers. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get a list') and resource ('all ThermoWorks devices connected to your account'), distinguishing it from siblings like thermoworks_get_live_readings (which focuses on readings rather than devices) and thermoworks_authenticate (which handles authentication). It precisely defines the tool's scope without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to use this tool by specifying the prerequisite 'Requires authentication first via thermoworks_authenticate,' providing clear guidance on the necessary context. It also implies usage for listing devices rather than analyzing data or performing other operations covered by sibling tools, though it doesn't explicitly name alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

thermoworks_get_live_readingsGet Live Temperature ReadingsA
Read-only

Get current temperature readings from your ThermoWorks devices.

Requires authentication first via thermoworks_authenticate.

Args:

  • device_serial: Serial number of specific device (optional, defaults to all devices)

  • response_format: 'markdown' or 'json'

Returns: Current probe temperatures, alarm settings, and timestamps.

Examples:

  • "What are my current temperatures?" -> Gets all device readings

  • "Show me the Signals readings" -> Specify device_serial

ParametersJSON Schema
NameRequiredDescriptionDefault
device_serialNoSerial number of specific device to query. If not provided, returns readings from all devices.
response_formatNoOutput formatmarkdown

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, covering safety and data scope. The description adds valuable context beyond this: it specifies the authentication requirement (not covered by annotations) and hints at return content (temperatures, alarms, timestamps). However, it doesn't mention rate limits or error behaviors, keeping it from a perfect score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with sections (Args, Returns, Examples), making it easy to scan. It's front-loaded with the core purpose and authentication requirement. However, the examples could be more concise, and some details (like restating parameter defaults) are slightly redundant given the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, no output schema, rich annotations), the description is largely complete. It covers purpose, prerequisites, parameters, and return content. The main gap is the lack of an output schema, but the description compensates by summarizing return values. It doesn't detail error cases or pagination, which is acceptable for this tool type.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with clear descriptions for both parameters (device_serial and response_format). The description adds minimal value beyond the schema: it restates that device_serial is optional and defaults to all devices, and lists the enum values for response_format, but doesn't provide additional semantic context like format differences or device identification tips.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get current temperature readings') and resource ('from your ThermoWorks devices'), distinguishing it from siblings like thermoworks_get_devices (which likely lists devices) and thermoworks_analyze_live (which likely analyzes readings). The verb 'Get' is precise and the scope is well-defined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states 'Requires authentication first via thermoworks_authenticate', providing a clear prerequisite. It also distinguishes usage through examples: getting all device readings vs. specifying a device_serial, though it doesn't explicitly name alternatives like thermoworks_get_devices for device lists.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.1/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between bbq_analyze_device_reading and thermoworks_analyze_live, both analyzing ThermoWorks device data, and between bbq_analyze_temperature and bbq_detect_stall, both handling temperature trends. Descriptions help differentiate, but an agent might occasionally misselect between these pairs.

Naming Consistency4/5

Tools follow a consistent snake_case pattern with clear prefixes: 'bbq_' for general BBQ tools and 'thermoworks_' for device-specific ones. Minor deviations exist, such as thermoworks_analyze_live not fully matching the verb_noun pattern of others like thermoworks_get_devices, but overall naming is predictable and readable.

Tool Count5/5

With 15 tools, the count is well-scoped for the BBQ cooking domain, covering analysis, estimation, guidance, and device integration. Each tool serves a clear purpose, from planning (e.g., bbq_estimate_cook_time) to live monitoring (e.g., thermoworks_get_live_readings), without feeling excessive or insufficient.

Completeness5/5

The tool set provides comprehensive coverage for BBQ cooking, including planning (guidance, time estimation), execution (temperature analysis, stall detection), and integration with ThermoWorks devices (authentication, live readings). No obvious gaps exist; it supports full lifecycle from prep to serving with actionable insights.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides access to a comprehensive food database with 300,000+ items, enabling nutritional data lookups, food searches, and barcode scanning with all processing happening locally for privacy and speed.
    204
    MIT
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides real-time air quality monitoring and historical data analysis for InBiot MICA sensors with integrated WELL Building Standard compliance checks. It allows users to compare indoor conditions with outdoor weather and receive actionable health recommendations based on global air quality standards.
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to search recipes, compose nutritionally balanced meals, optimize weekly meal plans based on macro targets for family members, and generate consolidated grocery lists from a personal recipe database.

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