BBQ MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@BBQ MCP Serverhow's my brisket doing?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🍖 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 startDeploy 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 main2. Connect to Smithery
Go to smithery.ai and sign in
Click "Add Server" and connect your GitHub repository
Smithery will auto-detect the
smithery.yamlandpackage.jsonconfigurationClick "Deploy"
3. Configure Session
When users connect to your server on Smithery, they can provide their ThermoWorks credentials via session configuration:
Parameter | Description |
| ThermoWorks account email (optional) |
| ThermoWorks account password (optional) |
| Set |
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 testingThermoWorks 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
Push to a GitHub repository
Connect to Smithery and import your repo
Smithery will detect
smithery.yamland deploy automatically
Configuration Schema
When users connect, they can optionally provide:
Parameter | Type | Description |
| string | ThermoWorks account email |
| string | ThermoWorks account password |
| boolean | Use legacy Smoke Gateway API |
| 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 playgroundFiles for Smithery
smithery.yaml- Smithery configurationsrc/smithery.ts- Smithery-compatible entry point withconfigSchemaexport
Contributing
Contributions welcome! Areas of interest:
Additional protein profiles
Regional BBQ style variations
Enhanced ThermoWorks Cloud integration
Smoker/grill-specific recommendations
Available Tools
15 toolsbbq_analyze_device_readingAnalyze ThermoWorks Device ReadingARead-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"
| Name | Required | Description | Default |
|---|---|---|---|
| device_type | Yes | Type of ThermoWorks device | |
| probe_readings | Yes | Temperature readings from each probe | |
| protein_type | No | Type of protein being cooked (if known) | |
| target_temp | No | Target temperature set on device | |
| response_format | No | Output format | markdown |
TDQS
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.
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.
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.
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.
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.
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 ProgressARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| current_temp | Yes | Current internal temperature reading in Fahrenheit | |
| target_temp | Yes | Target internal temperature in Fahrenheit | |
| protein_type | Yes | Type of protein being cooked | |
| cook_method | No | Cooking method being used | |
| cook_start_time | No | When the cook started in ISO 8601 format (e.g., '2024-12-25T06:00:00') | |
| previous_readings | No | Previous temperature readings to calculate trend (most recent last) | |
| response_format | No | Output format | markdown |
TDQS
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.
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.
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.
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.
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.
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 TimeARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| protein_type | Yes | Type of protein | |
| current_temp | Yes | Current internal temperature when removed from heat | |
| target_final_temp | No | Desired final temperature after resting | |
| response_format | No | Output format | markdown |
TDQS
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.
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.
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.
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.
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.
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 TemperatureARead-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'
| Name | Required | Description | Default |
|---|---|---|---|
| temperature | Yes | Temperature value to convert | |
| from_unit | No | Source temperature unit | fahrenheit |
| to_unit | No | Target temperature unit | fahrenheit |
TDQS
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.
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.
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.
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.
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.
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 StallARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| protein_type | Yes | Type of protein being cooked | |
| current_temp | Yes | Current internal temperature in Fahrenheit | |
| readings | Yes | At least 3 temperature readings to analyze trend (most recent last) | |
| response_format | No | Output format | markdown |
TDQS
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.
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.
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.
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.
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.
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 TimeARead-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'
| Name | Required | Description | Default |
|---|---|---|---|
| protein_type | Yes | Type of protein being cooked | |
| weight_pounds | Yes | Weight of the protein in pounds | |
| cook_method | Yes | Cooking method to use | |
| smoker_temp | No | Smoker/grill temperature in Fahrenheit. Defaults based on cook method. | |
| target_doneness | No | Target doneness level | |
| response_format | No | Output format | markdown |
TDQS
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.
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.
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.
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.
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.
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 GuidanceARead-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'
| Name | Required | Description | Default |
|---|---|---|---|
| protein_type | Yes | Type of protein being cooked (e.g., 'beef_brisket', 'pork_shoulder', 'chicken_whole') | |
| weight_pounds | Yes | Weight of the protein in pounds (e.g., 12.5 for a 12.5 lb brisket) | |
| target_doneness | No | Desired doneness level. If not specified, will use the recommended doneness for the protein type. | |
| cook_method | No | Cooking method to use. If not specified, will recommend the best method for this protein. | |
| serving_time | No | Target serving time in ISO 8601 format (e.g., '2024-12-25T18:00:00'). Used to calculate when to start cooking. | |
| response_format | No | Output format: 'markdown' for human-readable or 'json' for structured data | markdown |
TDQS
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.
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.
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.
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.
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.
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 TipsARead-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'
| Name | Required | Description | Default |
|---|---|---|---|
| protein_type | Yes | Type of protein | |
| cook_method | No | Specific cooking method for targeted tips | |
| current_phase | No | Current phase of the cook for phase-specific tips | |
| response_format | No | Output format | markdown |
TDQS
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.
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.
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.
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.
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.
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 TemperatureARead-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'
| Name | Required | Description | Default |
|---|---|---|---|
| protein_type | Yes | Type of protein | |
| doneness | No | Desired doneness level | |
| include_pull_temp | No | Whether to include pull temperature (accounting for carryover) | |
| response_format | No | Output format | markdown |
TDQS
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.
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.
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.
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.
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.
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 ProteinsARead-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'
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | Filter by protein category | all |
| response_format | No | Output format | markdown |
TDQS
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.
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.
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.
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.
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.
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 TemperatureARead-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'
| Name | Required | Description | Default |
|---|---|---|---|
| device_serial | Yes | Serial number of the device to analyze | |
| probe_id | No | Probe number to analyze (e.g., '1', '2', '3', '4' for Signals) | 1 |
| protein_type | Yes | Type of protein being cooked (e.g., 'beef_brisket') | |
| target_temp | No | Target temperature. If not provided, uses recommended temp for the protein. | |
| response_format | No | Output format | markdown |
TDQS
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.
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.
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.
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.
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.
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 CloudAIdempotent
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
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Email address used for your ThermoWorks account (same as in the ThermoWorks app) | ||
| password | Yes | Password for your ThermoWorks account | |
| use_legacy_smoke | No | Set to true if using older Smoke Gateway devices (pre-2022). Default false for newer ThermoWorks Cloud devices. |
TDQS
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.
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.
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.
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.
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.
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 StatusARead-onlyIdempotent
Check if you're currently authenticated with ThermoWorks Cloud.
Returns: Authentication status and token expiry time.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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 DevicesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| response_format | No | Output format | markdown |
TDQS
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.
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.
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.
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.
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.
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 ReadingsARead-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
| Name | Required | Description | Default |
|---|---|---|---|
| device_serial | No | Serial number of specific device to query. If not provided, returns readings from all devices. | |
| response_format | No | Output format | markdown |
TDQS
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.
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.
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.
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.
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.
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
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.
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.
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.
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
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
Food logging, nutrition summaries, and meal photo calorie and macro estimates.
Household-aware cooking brain: pantry, meal suggestions, dietary safety, recipes, shopping lists.
Privacy-first work tracking with summaries, reports, coaching, and AI-ready long-term memory.
Log workouts and meals by telling your AI. 873 exercises, muscle diagrams, food lookup.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceProvides 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.204MIT
- FlicenseNot gradedqualityNot gradedmaintenanceProvides 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.
- AlicenseBqualityDmaintenanceConnects your Meticulous espresso machine to an LLM, enabling recipe generation from natural language, shot analysis, grinder dial-in, and a persistent shot diary through Claude.281MIT
- FlicenseNot gradedqualityDmaintenanceEnables 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
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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