grocy-mcp
Provides tools for managing Grocy, including stock, shopping lists, recipes, chores, batteries, equipment, calendar exports, file groups, print helpers, and generic entity management.
Click on "Deploy 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., "@grocy-mcpWhat's on my shopping list?"
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.
grocy-mcp
Python MCP server and CLI for Grocy.
grocy-mcp lets AI agents and terminal users work with Grocy through one shared codebase. It exposes stock, shopping lists, recipes, chores, batteries, equipment, calendar exports, file groups, print helpers, workflow preview/apply helpers, discovery tools, and generic entity management through:
an MCP server for tools like Claude Desktop, Claude Code, and other MCP clients
a
grocyCLI for direct command-line use
Choose your path
Want to connect Grocy to Claude, ChatGPT, or another MCP client? Install
grocy-mcp, run the MCP server, and point your client at it.Want to manage Grocy from the terminal? Install the package and use the
grocyCLI directly.Want to build chat, OCR, or photo-driven flows? Normalize items outside this repo, then call the workflow preview/apply tools here.
If you only want the fastest possible first run, this is enough:
pip install grocy-mcp
export GROCY_URL="https://grocy.example.com"
export GROCY_API_KEY="your-api-key-here"
grocy stock overviewRelated MCP server: Mealie MCP
Why this project
Grocy already has a solid REST API, but most day-to-day interactions still require either:
clicking through the Grocy UI
writing one-off API scripts
wiring ad hoc automations around numeric IDs
grocy-mcp packages those API capabilities into a cleaner operator experience:
human-friendly names instead of IDs for common flows
a reusable MCP surface for AI agents
a mirrored CLI for shell workflows and scripting
one shared implementation for both interfaces
Features
80+ MCP tools across stock, shopping, recipes, chores, locations, tasks, meal plans, batteries, equipment, calendar, files, print, discovery, workflow helpers, and system operations
Full Typer CLI with grouped subcommands under
grocyGlobal
--jsonmode for machine-readable output on the supported list/view/reporting commandsTop-level CLI config overrides via
--urland--api-keyName-based resolution for products, recipes, chores, locations, batteries, and equipment
Stable workflow-oriented JSON contracts for preview/apply flows driven by chat, OCR, or vision clients
Batch preview/apply helpers for product matching, stock intake, and shopping-list reconciliation
First-class catalog helpers for shopping metadata, quantity metadata, task categories, meal-plan sections, and price-history views
First-class household helpers for batteries, equipment, calendar summaries, file groups, print actions, and discovery
Streamable HTTP and stdio MCP transports
Async client layer with retry handling for transient server errors
Generic entity access for Grocy resources outside the dedicated commands
Test suite built with
pytest,pytest-asyncio, andrespx
Current status
This project is in active development and the current published version is 0.2.0.
Python:
3.11+Grocy:
v4.4.1+Packaging: PyPI package plus a multi-architecture OCI image at
ghcr.io/rubio-enterprises/grocy-mcp
Installation
Install from PyPI:
pip install grocy-mcpOr run without a permanent install:
uvx grocy-mcp --transport stdioOr run the Streamable HTTP server as a container:
docker run --rm -p 8000:8000 \
-e GROCY_URL="https://grocy.example.com" \
-e GROCY_API_KEY="your-api-key-here" \
ghcr.io/rubio-enterprises/grocy-mcp:v0.2.0-rubio.1Quick start
1. Configure access to Grocy
Use whichever option fits your environment best.
Bash / zsh:
export GROCY_URL="https://grocy.example.com"
export GROCY_API_KEY="your-api-key-here"PowerShell:
$env:GROCY_URL = "https://grocy.example.com"
$env:GROCY_API_KEY = "your-api-key-here"Or create a config file:
[grocy]
url = "https://grocy.example.com"
api_key = "your-api-key-here"Expected config path:
Linux:
~/.config/grocy-mcp/config.tomlmacOS:
~/Library/Application Support/grocy-mcp/config.tomlWindows: platform-specific
grocy-mcp/config.tomlconfig dir viaplatformdirs
2. Pick your path
If you want to use an MCP client such as Claude Desktop or Claude Code, start the server:
Local stdio clients:
grocy-mcp --transport stdioHTTP transport:
grocy-mcp --transport streamable-http --host 0.0.0.0 --port 8000 --path /mcpIf you just want the CLI, run a command immediately:
grocy stock overview
grocy shopping view
grocy recipes list
grocy chores overdueIf you want structured output for scripts or LLM clients:
grocy --json stock overview
grocy --json workflow match-products-preview '[{"label":"whole milk","quantity":2}]'MCP usage
Example Claude Desktop / Claude Code-style MCP configuration:
{
"mcpServers": {
"grocy": {
"command": "grocy-mcp",
"args": ["--transport", "stdio"],
"env": {
"GROCY_URL": "https://grocy.example.com",
"GROCY_API_KEY": "your-api-key-here"
}
}
}
}The MCP server currently supports:
stdiostreamable-http80+ registered tools in the current implementation
Architecture split
grocy-mcp intentionally stays on the Grocy side of the boundary.
This repo handles Grocy-aware matching, preview/apply flows, CLI commands, and MCP tools.
Raw images, OCR payloads, and model-specific prompting stay outside this repo.
ChatGPT, Claude, or another client should first turn receipts, photos, or chat into normalized JSON items, then call the workflow tools here.
That keeps the project easier to test, safer for mutations, and usable by any model or automation stack.
Stable workflow contracts
The workflow layer is designed for multi-step, confirmation-first flows.
Normalized input items are used for preview only:
{
"label": "whole milk",
"quantity": 2,
"unit_text": "cartons",
"barcode": "5000112637922",
"note": "organic"
}Preview results return matched, ambiguous, or unmatched plus candidate Grocy products:
{
"input_index": 0,
"label": "whole milk",
"status": "matched",
"matched_product_id": 12,
"matched_product_name": "Whole Milk",
"candidates": [{"product_id": 12, "name": "Whole Milk"}],
"suggested_amount": 2,
"unit_text": "cartons"
}Apply steps accept explicit IDs only:
{
"product_id": 12,
"amount": 2,
"note": "organic"
}Matching policy for preview tools:
exact barcode match
exact normalized product-name match
case-insensitive substring match
If a stage returns multiple plausible products, the result is ambiguous and should be confirmed before any apply step.
Agent workflow examples
These are practical multi-step workflows an AI agent can perform by chaining grocy-mcp tools together:
"What can I cook tonight?"
recipes_list_tool— see all available recipesrecipe_fulfillment_tool("Spaghetti Bolognese")— check if ingredients are in stockIf fulfillable:
recipe_consume_tool("Spaghetti Bolognese")— deduct ingredientsIf not:
recipe_add_to_shopping_tool("Spaghetti Bolognese")— add missing items to shopping list
"Restock after a grocery run"
shopping_list_view_tool— see what was on the listFor each purchased item:
stock_add_tool("Milk", 2)— add to stockshopping_list_remove_tool(item_id)— clear purchased items from the list
"Weekly kitchen check"
stock_expiring_tool— find expiring or below-minimum productschores_overdue_tool— find overdue household choresshopping_list_add_missing_tool— auto-add understocked products to shopping listFor each overdue chore:
chore_execute_tool("Vacuum living room")— mark as done
"Add a new recipe from a description"
stock_search_tool("flour")— find product IDs for ingredientsrecipe_create_tool("Banana Bread", "Easy banana bread", '[{"product_id": 3, "amount": 2}, ...]')— create the reciperecipe_fulfillment_tool("Banana Bread")— check if you can make it right away
Workflow-oriented chat and vision examples
These flows use the workflow surface instead of asking an LLM to mutate Grocy directly.
Receipt text -> preview -> confirm -> apply
External client extracts normalized items from a receipt:
[
{"label": "whole milk", "quantity": 2, "unit_text": "cartons"},
{"label": "bananas", "quantity": 6},
{"label": "oat milk", "quantity": 1}
]Call
workflow_match_products_preview_tool(...)or:
grocy --json workflow match-products-preview '[{"label":"whole milk","quantity":2},{"label":"bananas","quantity":6}]'Confirm any
ambiguousorunmatchedlines with the user.Apply confirmed stock additions:
grocy --json workflow stock-intake-apply '[{"product_id":12,"amount":2},{"product_id":44,"amount":6}]'Preview shopping reconciliation:
grocy --json workflow shopping-reconcile-preview '[{"product_id":12,"amount":2},{"product_id":44,"amount":6}]'Apply only the explicit actions returned by the preview.
Grocery photo interpreted by an LLM -> preview -> confirm -> apply
ChatGPT or Claude looks at a grocery-bag photo and produces normalized JSON items.
Call
workflow_stock_intake_preview_tool(...).Review the proposed product matches and quantities.
Confirm explicit
product_idvalues.Call
workflow_stock_intake_apply_tool(...).
Pantry photo -> read-only audit preview
External model describes visible pantry items as normalized JSON.
Call
workflow_match_products_preview_tool(...).Use the preview as a read-only audit to compare what the model sees against Grocy product names.
Do not apply anything until quantities and matches are confirmed.
Sample prompts for ChatGPT and Claude
Use prompts like these outside grocy-mcp to produce normalized items before calling MCP/CLI workflow commands:
Read this grocery receipt and return only JSON.
Return an array of objects with:
- label
- quantity
- unit_text
- barcode
- note
Do not guess Grocy product IDs.
If quantity is unclear, use 1.Look at this grocery photo and list the likely purchased items as JSON only.
Use this schema for each item:
{"label":"string","quantity":number,"unit_text":"string|null","barcode":"string|null","note":"string|null"}
Do not include commentary.
Do not invent product IDs.Look at this pantry photo and return the visible products as JSON only.
Keep the output read-only and approximate if needed, but do not invent Grocy IDs.
Use the same normalized item schema as above.CLI usage
Top-level command groups:
grocy stock ...
grocy shopping ...
grocy recipes ...
grocy chores ...
grocy locations ...
grocy tasks ...
grocy meal-plan ...
grocy catalog ...
grocy batteries ...
grocy equipment ...
grocy calendar ...
grocy files ...
grocy print ...
grocy discover ...
grocy workflow ...
grocy system ...
grocy entity ...Use grocy --help or grocy <group> --help to explore the full surface. The examples below focus on the highest-value day-to-day commands.
Example commands
# Stock and shopping
grocy stock overview
grocy stock info Milk
grocy stock add Milk 2
grocy shopping view --list-id 1
grocy shopping add "Oat Milk" --amount 2 --list-id 2 --note "for breakfast"
# Recipes and chores
grocy recipes list
grocy recipes details "Spaghetti Bolognese"
grocy recipes add-to-shopping "Spaghetti Bolognese"
grocy chores overdue
grocy chores execute "Vacuum living room"
# Workflow preview/apply
grocy --json workflow match-products-preview '[{"label":"whole milk","quantity":2}]'
grocy --json workflow stock-intake-preview '[{"label":"whole milk","quantity":2}]'
grocy --json workflow stock-intake-apply '[{"product_id":12,"amount":2}]'
grocy --json workflow shopping-reconcile-preview '[{"product_id":12,"amount":2}]'
# Catalog, planning, and discovery
grocy --json catalog list shopping-lists
grocy --json batteries list
grocy --json meal-plan summary --from 2026-04-01 --to 2026-04-07
grocy --json calendar summary --from 2026-04-01 --to 2026-04-07
grocy --json discover search products milkProject structure
src/grocy_mcp/
client.py async HTTP client for the Grocy REST API
config.py environment/config loading
exceptions.py typed error hierarchy
models.py pydantic models
workflow_models.py stable workflow JSON contracts
core/ shared business logic for MCP and CLI
core/batteries.py battery views and charge-cycle actions
core/calendar.py combined planning summaries and iCal helpers
core/equipment.py equipment views with linked battery context
core/files.py file-group download/upload/delete and print helpers
core/reference_data.py first-class metadata/discovery helpers
core/workflows.py preview/apply workflow helpers
mcp/server.py FastMCP entry point
cli/app.py Typer CLI entry point
tests/
unit tests for client, core modules, MCP entry point, and CLIDevelopment
Clone and install for local development:
git clone https://github.com/Rubio-Enterprises/grocy-mcp
cd grocy-mcp
pip install -e ".[dev]"Run checks:
pytest -v
ruff check src/ tests/
ruff format --check src/ tests/Run a specific test:
pytest tests/test_stock.py -v
pytest tests/test_stock.py::test_stock_overview -vRun the deterministic end-to-end testbed:
python -m testbed.seed.reset_demo_env
python -m testbed.runners.run_suite prTroubleshooting
"Grocy URL not configured"
Set GROCY_URL via environment variable, config file, or --url flag. The URL
should be the base URL of your Grocy instance (e.g. https://grocy.example.com),
not the API endpoint.
"Auth failed (401)"
Your API key is invalid or expired. Generate a new one in Grocy under
Settings → Manage API keys. Pass it via GROCY_API_KEY, config file, or --api-key.
"Connection failed" or timeouts Check that the Grocy URL is reachable from the machine running grocy-mcp. Common causes: wrong port, firewall rules, Grocy behind a reverse proxy without proper forwarding.
"No products found matching '...'"
The name resolver uses case-insensitive substring matching. Check grocy stock search
to see available product names. You can also pass numeric IDs directly.
"Multiple products match '...'" Be more specific with the name, or use the numeric ID shown in the error message.
MCP server not connecting in Claude Desktop
Make sure the command in your MCP config points to the grocy-mcp executable
and that GROCY_URL and GROCY_API_KEY are set in the env block. Check
Claude Desktop logs for error details.
Documentation
Contributing
See CONTRIBUTING.md for setup instructions, code style, and guidelines.
License
MIT
Available Tools
89 toolsbatteries_due_toolBatteries Due ToolB
Return batteries due within the next given number of days.
| Name | Required | Description | Default |
|---|---|---|---|
| days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only states the basic function ('Return batteries due') and implies a read operation via 'Return', but does not disclose any behavioral details such as sorting, pagination, inclusion/exclusion of overdue batteries, or any side effects. It adds little beyond the tool name.
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 a single, concise sentence with no redundant words. It is front-loaded with the primary purpose and immediately communicates the core functionality.
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 simple tool with one optional parameter and an output schema (not shown), the description is minimally adequate. It does not mention edge cases (e.g., whether overdue batteries are included) or clarify the meaning of 'due', but given the low complexity, it is not severely incomplete.
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 schema has a single optional parameter 'days' with a default of 7, and schema description coverage is 0%. The description mentions 'given number of days', which clarifies the parameter's meaning but does not explain the default behavior or edge cases (e.g., days=0). It provides minimal added value over the 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 action ('Return batteries due') and the temporal scope ('within the next given number of days'), distinguishing it from the sibling 'batteries_overdue_tool' (past due) and 'batteries_list_tool' (all batteries). However, it does not explicitly name alternatives or contrast with them, leaving some ambiguity for an agent.
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?
No guidance is provided on when to use this tool versus its siblings like 'batteries_overdue_tool' or 'batteries_list_tool'. The description only states what it does, not when it should be selected or what conditions exclude it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batteries_list_toolBatteries List ToolA
List batteries with next estimated charge times.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral transparency burden. The verb 'List' implies a non-mutating read operation, and 'with next estimated charge times' gives some insight into the output behavior. However, it does not explicitly state read-only semantics, scope (all batteries vs. filtered), or any other operational caveats, which would be valuable given the absence of 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 a single, well-structured sentence that front-loads the action and target resource. It contains no wasted words or redundant information, making it an exemplar of concise documentation.
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 zero-parameter tool with an output schema, the description is largely sufficient: it communicates the primary purpose and output focus. Slight ambiguity remains over whether it lists all batteries or only a subset, and 'next estimated charge times' is not elaborated, but the overall definition is adequate for a simple list operation.
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 zero parameters and the input schema is an empty object, so the baseline per the rubric is 4. The description adds no parameter-specific information because there is nothing to document; this matches expectations for a parameterless tool.
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 uses a specific verb ('List') and resource ('batteries'), and adds 'with next estimated charge times' to convey the output focus. This distinguishes it from siblings like batteries_due_tool and batteries_overdue_tool, which imply filtered views, and battery_details_tool, which is singular. An agent can readily identify the tool's purpose.
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 no guidance on when to use this tool versus alternatives such as batteries_due_tool or batteries_overdue_tool. It only states what the tool does, leaving the agent to infer usage context. No exclusions or alternative routing is mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
batteries_overdue_toolBatteries Overdue ToolA
Return batteries that are already overdue for charging.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only states what is returned, not how the results are ordered, whether the list is paginated, or what fields are included. The meaning of 'overdue' is left undefined. This minimal detail is insufficient for a tool that relies solely on its description.
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 a single, direct sentence with no superfluous words. It is perfectly concise and front-loads the core action and target.
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 no parameters and a simple list-returning purpose, the description is nearly complete. Since an output schema is present, return format details are not required. The only minor omission is clarifying the threshold for 'overdue,' but the overall context is adequate for a straightforward query 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?
There are no parameters, so the schema provides complete coverage. The description adds no parameter information because none exist, but this is not a gap. The baseline of 4 for zero parameters is appropriate.
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 action ('Return') and the specific resource ('batteries that are already overdue for charging'). It distinguishes itself from siblings like 'batteries_due_tool' by emphasizing the 'already overdue' condition, making the purpose unambiguous.
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 retrieving overdue batteries but does not explicitly state when to prefer this over the similar 'batteries_due_tool' or other battery list tools. There is no mention of exclusions or alternatives, leaving the agent to infer the context from the tool name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
battery_charge_toolBattery Charge ToolC
Track a battery charge cycle.
| Name | Required | Description | Default |
|---|---|---|---|
| battery | Yes | ||
| tracked_time | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavior disclosure. 'Track a battery charge cycle' does not state whether the tool creates a new history entry, updates battery state, or has side effects such as changing due dates. The behavioral impact remains unspecified beyond the vague action word 'track.'
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 short and front-loaded with no filler, which is good for this dimension, but it is too underspecified to be considered well-structured for effective use. One terse sentence does eight words' worth of work, yet it sacrifices helpfulness.
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 zero annotation coverage, 0% schema description coverage, and two parameters, the description is far from complete. An agent cannot determine side effects, required prerequisite battery state, or parameter semantics from the provided text. The existing output schema does not compensate for these input and behavior 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 0%, and the description adds no explanation of what values to pass for 'battery' or 'tracked_time.' The agent is left to guess whether 'battery' is an ID, name, or ID, and what format or semantics 'tracked_time' expects. The description fails to compensate for the schema's missing documentation.
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 states a clear action verb and resource: 'Track a battery charge cycle.' It is clear enough to understand that this tool records or marks a charge event for a battery, and it is distinguishable from obvious siblings like battery_history_tool or battery_undo_cycle_tool, though it does not explicitly name them.
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?
There is no guidance on when to use this tool versus alternatives such as battery_history_tool, battery_update_tool, or batteries_due_tool. The sentence implies only the general scenario of tracking a charge cycle, but provides no conditions, exclusions, or routing hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
battery_create_toolBattery Create ToolC
Create a battery object.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| used_in | No | ||
| description | No | ||
| charge_interval_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Create a battery object' only indicates the basic action. It does not mention persistence, created identifiers, duplicate-name behavior, or any side effects, which is a significant gap for a mutation tool.
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 extremely concise with no wasted words, which is structurally clean. However, it is so terse that it barely adds value over the tool title, making this under-specification rather than effective 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?
For a tool with four parameters, no annotations, and no usage guidance, the description is incomplete. The presence of an output schema helps with return values, but the description still leaves parameter semantics, when to create, and behavioral expectations unresolved.
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 0%, and the description adds no explanation for any of the four parameters. The description does not clarify that `name` is required or clarify the meaning or expected format of `used_in`, `description`, or `charge_interval_days`, leaving the agent without compensating information.
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 states a specific action ('Create') and a specific resource ('a battery object'), so the agent knows the core behavior. It does not explicitly differentiate itself from sibling battery tools such as battery_update_tool or battery_charge_tool, but the verb makes the purpose reasonably clear.
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 gives no guidance on when to use this tool versus alternatives, no prerequisites, and no indication of when creation is appropriate. It neither names sibling tools nor explains how to choose between creating and updating a battery.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
battery_details_toolBattery Details ToolB
Return detailed information for a battery by name or ID.
| Name | Required | Description | Default |
|---|---|---|---|
| battery | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations supplied, the description carries the full burden, and 'Return' reasonably signals a side-effect-free lookup. However, it does not disclose behavior for missing or unknown batteries, match semantics, preconditions, or error cases, leaving transparency only minimally adequate.
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?
One concise, front-loaded sentence states the action, target, and accepted identifier forms with no filler. Every word earns its place.
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 one-parameter read operation with an output schema present, the description is mostly sufficient for a basic call. It is weakened by offering no pointer to related battery tools and no mention of not-found behavior, leaving a moderate gap in selection context.
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 schema only documents a required string property named 'battery' with 0% description coverage. The description adds real added meaning by clarifying that this single parameter may be either a name or an ID, which is important for correct invocation.
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 names a specific verb ('Return'), a resource ('battery'), and the accepted identifier forms ('name or ID'), so an agent knows what operation this is. It is more specific than a bare 'Battery Details Tool' label, though it does not fully distinguish itself from battery_history_tool or batteries_list_tool.
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?
No guidance is provided for when to use this tool over nearby siblings such as battery_history_tool, batteries_list_tool, or battery_charge_tool. The agent must infer usage context entirely from the title and sibling names, with no exclusions given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
battery_history_toolBattery History ToolC
Return charge-cycle history for a battery.
| Name | Required | Description | Default |
|---|---|---|---|
| battery | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, but it only says the tool 'returns' data. It does not explicitly state that it is read-only, what happens for an unknown battery, or how the history is ordered or presented.
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 a single front-loaded sentence with no filler and a clear noun phrase, 'charge-cycle history.' Its brevity is efficient, though it contributes to the lack of parameter and usage detail elsewhere.
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 one-parameter read tool with an output schema, the description is minimally usable. However, it still does not explain how to identify the battery or when to choose this tool over related battery tools, so an agent must rely on external context.
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 schema's only property has no description, and the tool description merely repeats that a battery is needed. It does not specify whether the parameter should be an ID, name, serial, or some other identifier, so it does not compensate for the 0% 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 uses a specific verb ('Return') and a specific resource ('charge-cycle history') and picks out a distinct data view from siblings like battery_details_tool or battery_charge_tool. It is clear what the tool does, but it does not explicitly contrast itself with those siblings, so it stops short of a 5.
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?
No guidance is provided about when to prefer this tool over battery_details_tool, battery_charge_tool, or other battery-related tools. There are no prerequisites, exclusions, or alternatives mentioned; only the word 'history' implies a use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
battery_undo_cycle_toolBattery Undo Cycle ToolC
Undo a tracked battery charge cycle.
| Name | Required | Description | Default |
|---|---|---|---|
| cycle_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description alone must disclose behavioral traits. 'Undo' implies a mutation, but it does not explain the effects (e.g., whether the cycle is deleted, whether the action is reversible, what happens to associated stock or state), nor does it mention idempotency or failure conditions. The description is minimal and leaves key behaviors unspecified.
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 a single, front-loaded sentence with no filler. It achieves maximum conciseness and structural efficiency for the information it conveys.
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?
While the output schema exists and there is only one parameter, the description is incomplete for a mutation tool. It fails to explain how to obtain the cycle_id, what the undo action entails, whether it can be undone, or any side effects. An agent would need additional context to use it correctly and safely.
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 0%, so the description must compensate for the undocumented parameter. However, it does not mention cycle_id at all, nor does it explain what the value represents, where to find it, or its format. The parameter name is suggestive but the description adds no meaning beyond the 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 states a specific verb ('Undo') and resource ('a tracked battery charge cycle'), making the tool's purpose immediately clear. It is also distinguishable from siblings like battery_charge_tool and battery_history_tool by the combination of name and description, even without an explicit alternative reference.
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?
No guidance is provided about when to use this tool, prerequisites (e.g., how to obtain a cycle_id), or when not to use it. The description does not mention alternatives, exclusions, or conditions that would help an agent decide between this and other battery-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
battery_update_toolBattery Update ToolD
Update a battery object.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| battery | Yes | ||
| used_in | No | ||
| description | No | ||
| charge_interval_days | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing side effects, yet it only repeats the word 'update'. It does not explain whether the operation is a partial update, whether null values clear fields, whether changes are reversible, or what happens to existing data; this is effectively no transparency.
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 single sentence is short but it earns its place only by restating the title; it is under-specified rather than efficiently complete. There is no front-loaded core information beyond what the name already conveys.
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?
Despite a straightforward CRUD operation and an output schema, the definition lacks enough context to be safely invoked: no update semantics, no field explanations, and no use-case guidance. An agent would know the target resource but not what a successful update entails or how optional parameters behave.
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 0% and the description mentions none of the five parameters. The schema provides names like name, used_in, description, and charge_interval_days, but neither the schema nor the description explains their meaning, format, or optionality semantics, so the description adds no 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 'Update a battery object' is essentially a restatement of the tool name and title, adding only the generic noun 'object'. It identifies the resource, but says nothing about which attributes are updatable, so it is closer to a tautology than a purpose statement and does not clearly differentiate from sibling battery mutations like battery_charge_tool.
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?
There is no guidance about when to use this tool versus alternatives such as battery_create_tool, battery_charge_tool, or battery_details_tool. No conditions, prerequisites, or exclusions are stated, so an agent must infer usage entirely from the schema and sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_ical_toolCalendar Ical ToolA
Return the raw Grocy iCal export.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read operation ('Return') but does not explicitly state that the tool makes no modifications, requires no authentication (if applicable), or what the output format exactly entails beyond being an iCal export. This is insufficient for a tool with zero annotation support.
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 a single, concise sentence with no filler words. The action and resource are front-loaded, and every word adds value. This is an exemplary level of 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?
For a 0-parameter tool with an output schema, the description is nearly complete. It tells the agent exactly what the tool returns. The only minor gap is not explicitly stating that the tool is read-only, but that is more of a behavioral transparency issue than a completeness issue. Overall, the essential information for calling the tool is present.
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 zero parameters, so the description is not required to explain parameter meanings. The rules set a baseline of 4 for 0-parameter tools, and the description appropriately avoids inventing unnecessary parameter details.
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 action ('Return') and the specific resource ('raw Grocy iCal export'). It distinguishes itself from siblings like calendar_summary_tool (summary) and calendar_sharing_link_tool (link) by emphasizing 'raw' and 'export', which tells an agent this provides the actual iCal 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?
No guidance is given about when to use this tool versus alternatives. The description does not mention that this should be used when raw iCal data is needed, nor does it explain the difference between this and calendar_summary_tool or calendar_sharing_link_tool. An agent must infer the use case from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_sharing_link_toolCalendar Sharing Link ToolB
Return the public Grocy iCal sharing link.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It only states the output and gives no information about side effects, authentication, or that this is a read-only operation. The minimal description does not add behavioral context beyond the basic function.
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 a single, clear sentence that states the purpose immediately without any fluff. It is optimally sized for a tool with no parameters and a simple output.
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?
The description is complete for the tool's simple nature (no parameters, output schema exists), but it lacks context about when to use this tool over siblings like calendar_ical_tool. It also does not mention any prerequisites or that the link is public (though that is in the description). Given the absence of annotations, a bit more context would be beneficial.
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 zero parameters, and the schema coverage is 100% (empty schema). According to the rubric, a zero-parameter tool gets a baseline of 4, and the description adds no parameter information because there is nothing to describe.
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 action ('Return') and the resource ('public Grocy iCal sharing link'), making it specific. However, it does not differentiate from sibling tools like calendar_ical_tool, which might also deal with iCal data, so it falls short of a 5.
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 no guidance on when to use this tool versus alternatives. There is no mention of conditions or exclusions, and no reference to calendar_ical_tool or calendar_summary_tool, leaving the agent to infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
calendar_summary_toolCalendar Summary ToolC
Return a read-only planning summary across tasks, chores, batteries, and meal plan.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | ||
| start_date | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden of behavioral disclosure. It states read-only, but does not specify whether the summary includes detailed items or just aggregates, whether it respects date ranges, or what happens with null dates. The lack of depth for a cross-domain summary tool is a significant gap.
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?
Single concise sentence, front-loaded with the key behavior (read-only planning summary) and scope. No fluff, but could benefit from a terse note on usage or parameters, though this is not required for 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 aggregates multiple domains (tasks, chores, batteries, meal plan) and has no annotations, the description is insufficient. It does not specify the output structure despite having an output schema, but it also fails to clarify key behaviors like date handling, summary granularity, and how it relates to domain-specific list tools. An agent would struggle to know what to expect.
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 schema has 0% description coverage, with start_date and end_date lacking any description of format or meaning. The description implies date-range filtering but does not specify date format, inclusive/exclusive bounds, or default behavior. This leaves the agent to guess, but since the parameters are optional and the schema is simple, it is minimally adequate.
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 states a clear purpose: returning a read-only planning summary across tasks, chores, batteries, and meal plan. However, it lacks specificity about what the summary contains (e.g., counts, dates, statuses) and does not differentiate from similar tools like meal_plan_summary_tool or tasks_list_tool, making it partially ambiguous.
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 gives no guidance on when to use this tool versus alternatives such as tasks_list_tool, chores_list_tool, or meal_plan_summary_tool. It mentions 'planning summary' but does not clarify whether this aggregates data from those tools or how it differs, leaving the agent to infer its usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catalog_create_toolCatalog Create ToolC
Create a record in a writable first-class catalog entity.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| entity | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure, but it only says the tool creates a record. It does not mention validation, persistence, permissions, error behavior, idempotency, or what happens if the target catalog entity is not writable.
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 a single front-loaded sentence with the core action appearing immediately and no filler words. It loses a point because the unclear phrase 'writable first-class catalog entity' consumes valuable space without adding useful clarity.
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?
An output schema exists, so the description need not explain return values, but the tool is still under-specified. With no annotations, opaque parameters, and no behavioral or usage guidance, an agent does not have enough information to invoke this tool correctly.
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 0%, so the description must compensate by explaining the two required parameters. It does not clarify what entity values are valid, what format data should take, or how they relate to the 'record' being created, leaving the agent to guess.
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 states a concrete action ('Create a record') and identifies the resource as a catalog entity, which helps distinguish it from catalog_list_tool, catalog_details_tool, and catalog_update_tool. However, the phrase 'writable first-class catalog entity' is jargon and never explains what type of resource a catalog entity actually is.
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?
There is no guidance about when to use this tool instead of alternatives such as entity_create_tool or catalog_update_tool. The word 'writable' hints at a precondition, but no when/when-not conditions or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catalog_details_toolCatalog Details ToolC
Return details for a first-class catalog entity record.
| Name | Required | Description | Default |
|---|---|---|---|
| entity | Yes | ||
| obj_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It implies a read operation by saying 'Return details,' but it does not explain how entities are resolved, whether permissions are needed, or any error/edge-case behavior. This is minimal beyond the stated purpose.
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 a single short sentence and is front-loaded, but it is under-specified rather than appropriately concise. It omits critical context about the catalog entity concept and parameter semantics, so the brevity comes at the cost of usefulness.
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?
An output schema exists, so return structure does not need to be in the description, and there are only two required parameters. Even so, both parameters are undocumented and the phrase 'first-class catalog entity record' is not explained, leaving an agent unable to reliably construct a valid call.
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 0%, and the description adds no meaning for the 'entity' or 'obj_id' parameters. An agent cannot determine acceptable entity values, whether obj_id is a catalog-internal ID or a raw database ID, or how the two parameters relate.
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 states a specific verb ('Return') and resource ('details for a first-class catalog entity record'), so an agent can infer this is a lookup/read tool. However, it does not differentiate from sibling tools like catalog_list_tool, describe_entity_tool, or entity_list_tool, and 'first-class catalog entity' is left undefined.
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?
There is no guidance about when to use this tool versus alternatives such as catalog_list_tool or describe_entity_tool. The description gives no context for selection, no exclusions, and no mention of when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catalog_list_toolCatalog List ToolA
List first-class catalog and metadata entities.
Supported entities include shopping_lists, shopping_locations, quantity_units, quantity_unit_conversions, product_groups, task_categories, meal_plan_sections, products_last_purchased, and products_average_price.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| entity | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It states a read-only 'List' action and gives the entity scope, but says nothing about whether the optional query filters results, pagination, or other side effects. This is minimal but not misleading.
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?
Two sentences, front-loaded with the action, and the long entity list is necessary information rather than filler. Every sentence earns its place.
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 2-parameter list tool with an output schema, the description covers the main resource and entity values but is incomplete around query behavior and sibling differentiation. It is minimally viable, with clear 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?
The description adds valid values for the 'entity' parameter by listing supported entity types, which is useful given 0% schema coverage. However, the 'query' parameter is not mentioned at all, so its filtering semantics remain unexplained.
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 opens with the specific verb 'List' and the resource 'first-class catalog and metadata entities', then enumerates supported entity types. This clearly identifies the tool's scope, though it does not explicitly contrast it with sibling list tools like entity_list_tool.
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 supported-entity list implies when to use the tool (e.g., for shopping_lists or quantity_units), but there is no explicit when-not guidance or mention of alternatives. Given the large sibling set, an agent would still have to infer where this differs from other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
catalog_update_toolCatalog Update ToolC
Update a record in a writable first-class catalog entity.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | ||
| entity | Yes | ||
| obj_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. 'Writable' hints at a constraint, but the description does not explain what makes an entity writable, what effects an update has, whether it is idempotent, what happens if the record does not exist, or what the response contains. This is a significant transparency gap for a mutation tool.
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 a single sentence with no filler and is front-loaded with the action. It is concise, though the jargon 'writable first-class' is not earning its place because it is unexplained.
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?
The tool has three required parameters, zero annotation support, and zero schema descriptions, yet the description provides no invocation context, no parameter meaning, no edge-case behavior, and no relationship to sibling tools. This is far from complete enough for an agent to select and call it correctly.
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 0%, and the description does not compensate. entity, obj_id, and data are all required but entirely unexplained, leaving the agent to guess that obj_id identifies a record and data carries the new values. For a three-parameter tool with no schema descriptions, this is severely inadequate.
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 states a clear verb ('update') and resource ('a record in a writable first-class catalog entity'), so it is not a tautology. However, 'writable first-class catalog entity' is unexplained domain jargon and does not distinguish this from generic entity_update_tool or catalog_create_tool. The core purpose is understandable but vague.
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?
There is no guidance about when to use this tool versus catalog_create_tool, entity_update_tool, or the many other update tools. No context, exclusions, or alternative routing is provided, though nothing actively misleads the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chore_create_toolChore Create ToolB
Create a new chore in Grocy.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for the chore (e.g. "Clean bathroom"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Create' without mentioning side effects, permissions, idempotency, or what happens on failure. The existence of an output schema is not referenced in the description, and no additional context is given.
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 a single sentence that is front-loaded and contains zero fluff. It efficiently communicates the core purpose without any unnecessary details.
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 simple create tool with one parameter and an output schema (which presumably covers return values), the description is minimal but not fully complete. It doesn't mention any prerequisites, constraints, or edge cases, though the simplicity of the operation mitigates the gap. It's adequate but leaves room for more context.
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 fully describes the single parameter 'name' with an example. The description adds no extra meaning beyond the schema, so with 100% schema coverage, the baseline of 3 is appropriate.
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 verb 'Create' and the resource 'a new chore' within Grocy. It distinguishes itself from sibling chore tools like chore_execute_tool or chores_list_tool by the explicit action of creating, so an agent can easily tell when to use it.
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?
There is no guidance on when to use this tool versus alternatives. It doesn't mention conditions like 'Use this to add a new chore; for tracking completions use chore_execute_tool.' The description only states the action, leaving usage context to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chore_execute_toolChore Execute ToolA
Mark a chore as done.
This records an execution and advances the next scheduled time.
| Name | Required | Description | Default |
|---|---|---|---|
| chore | Yes | Chore name (e.g. "Vacuum living room") or numeric chore ID. | |
| done_by | No | Optional Grocy user ID of the person who did the chore. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It explicitly states that the tool records an execution and advances the next scheduled time, which makes the mutation effect clear. It does not mention permissions or reversibility, but the core behavioral consequence is adequately disclosed.
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 two short sentences with no filler. The primary action is front-loaded, and the second sentence adds meaningful behavioral context about execution recording and schedule advancement.
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 two-parameter tool with fully documented schema and an output schema, this description is sufficient. It tells the agent what the tool does and what side effect to expect, and the schema supplies the remaining invocation details.
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 input schema already documents both parameters: 'chore' as name or ID and 'done_by' as an optional user ID. The description adds no additional parameter-specific meaning, so it rests at 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 uses a specific verb 'Mark' and resource 'chore', clearly stating the action: 'Mark a chore as done.' The second sentence adds the operational effect—recording an execution and advancing the schedule—which further distinguishes it from siblings like chore_undo_tool or chores_list_tool.
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 intended usage is implied: use this when a chore has been completedsomeone, since it 'records an execution and advances the next scheduled time.' However, there is no explicit guidance about when not to use it or how it compares to related tools like chore_undo_tool or task_complete_tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chores_list_toolChores List ToolA
List all chores with their IDs and next scheduled execution time.
Use this to see what chores exist and when they are due next.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states the tool 'lists' chores, implying a read-only operation, and specifies the output includes IDs and next scheduled time. However, it does not mention whether it returns only incomplete chores or includes details dependencies, but the core behavioral transparency is adequate.
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 concise, two sentences, front-loading the key output (IDs and next scheduled time) and then providing a usage hint. No inflated text.
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 zero parameters and an output schema (which likely documents the return fields), the description is complete for an agent to call and understand the result. It does not specify any filtering or sorting flags, but those are absent from the schema, so nothing is missing.
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 zero parameters, and the description explicitly states 'List all chores' with no parameters needed. Since there are no parameters, the description need not explain them; this is effectively a perfect match for the 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 states a clear verb and resource: 'List all chores with their IDs and next scheduled execution time.' It is distinguishable from sibling tools such as chores_overdue_tool (which likely lists only overdue chores) and chore_execute_tool (which executes a chore). The purpose is specific and unambiguous.
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 includes a second sentence: 'Use this to see what chores exist and when they are due next,' which provides a use case. However, it does not explicitly state when not to use this tool or mention alternatives like chores_overdue_tool for overdue filtering, so some inference is required.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chores_overdue_toolChores Overdue ToolA
List chores that are past their scheduled execution time.
Returns only chores where the next execution time is in the past.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It does state that the tool returns only filtered chores, which is a behavioral trait, but it does not explicitly confirm it is a read-only operation or mention any potential side effects (though none are expected). It also omits details like sorting, pagination, or field completeness, which could be relevant for an agent. It provides basic transparency but not comprehensive.
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 exceptionally concise: two sentences with no filler. The main action is front-loaded, and the second sentence adds a precise clarification. Every word earns its place, 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?
For a simple parameterless query tool, the description provides the essential information: what it returns and the exact filter condition. The presence of an output schema means return structure need not be explained in the description. It lacks only minor optional details like sorting order or whether all chore fields are included, but these are not critical for correct invocation.
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 zero parameters, and the schema is empty with 100% coverage. Per the baseline for 0 parameters, a score of 4 is appropriate because there are no parameter semantics to explain; the description correctly avoids any irrelevant parameter details.
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 states a specific action (List) on a specific resource (chores) with a clear filter (past scheduled execution time). It clearly distinguishes this from a general chores_list_tool by specifying the overdue criterion, and the second sentence reinforces the exact condition (next execution time in the past). This leaves no ambiguity about what the tool does.
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 tells the agent when to use this tool (when overdue chores are needed), but it does not explicitly contrast it with siblings like chores_list_tool or mention when not to use it. There is no direct guidance on alternatives or exclusions, so the usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
chore_undo_toolChore Undo ToolA
Undo the most recent execution of a chore.
Removes the last recorded execution and reverts the schedule.
| Name | Required | Description | Default |
|---|---|---|---|
| chore | Yes | Chore name (e.g. "Vacuum living room") or numeric chore ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full disclosure burden. It explicitly states that this is a destructive action ('Removes the last recorded execution') and describes the secondary effect ('reverts the schedule'). This is more transparent than typical mutation-tool descriptions, though it does not detail edge cases like undoing when no execution exists.
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?
Two sentences with no wasted words. The primary action is front-loaded in the first sentence, and the second sentence adds the concrete behavioral detail. It is appropriately sized for a simple one-parameter tool.
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 single-parameter tool with an output schema and no annotations, the description covers the core operation and its effect sufficiently. It lacks only explicit edge-case behavior (e.g., what happens if there is no prior execution), but this is not critical for the common invocation path.
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 coverage is 100%, and the single parameter is already well documented with an example and accepted forms ('Chore name ... or numeric chore ID'). The description adds no additional parameter semantics beyond what the schema provides, so the baseline of 3 applies.
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 opens with a specific verb and resource: 'Undo the most recent execution of a chore.' It then clarifies the effect ('Removes the last recorded execution and reverts the schedule'), which clearly distinguishes this from chore_execute_tool, chore_create_tool, task_undo_tool, and battery_undo_cycle_tool.
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 makes the intended context clear: it is for reverting the latest chore execution, not for general chore management. It does not explicitly name alternatives or state when not to use it, but the context is unambiguous enough that an agent can infer when it applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_entity_toolDescribe Entity ToolC
Describe a Grocy entity and its discovered fields.
| Name | Required | Description | Default |
|---|---|---|---|
| entity | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. The verb 'Describe' reasonably implies a read-only/introspection operation, and 'discovered fields' hints at metadata inspection. However, it does not explicitly state that no data is modified, nor clarify what 'discovered' means in practice.
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 a single concise sentence with no filler or redundant phrasing. The core action is front-loaded. It is slightly too terse to fully support tool selection, but structurally it is 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?
Because the output schema exists, the return shape is covered, but the description still leaves key gaps: what constitutes a valid entity, what 'discovered fields' means, and how this relates to sibling tools like discover_fields_tool and entity_list_tool. With no annotations and 0% parameter schema coverage, the description is not complete enough.
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 a bare 'entity: string' with 0% schema description coverage and no enums. The description adds the context that the entity is a 'Grocy entity,' but it does not explain acceptable entity identifiers, naming conventions, or examples. This does not adequately compensate for the schema gap.
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 states a clear verb and resource: it describes a Grocy entity and its discovered fields. It avoids a pure tautology by adding the 'discovered fields' concept. However, it does not distinguish itself from sibling tools such as discover_fields_tool or entity_list_tool, so it falls short of a 5.
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 gives no explicit guidance on when to use this tool instead of alternatives. It does not mention related tools like discover_fields_tool or entity_list_tool, nor does it state exclusions or prerequisites. An agent must infer usage from the verb 'Describe' alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_candidates_toolDiscover Candidates ToolC
Search products, recipes, chores, locations, tasks, or supported metadata domains.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes | ||
| entity | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It says 'Search,' which implies a read-only operation, but it does not state what the tool returns, whether results are limited, how the limit parameter behaves, or whether any side effects occur. This is minimal coverage for a tool with no structured annotation clues.
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 a single sentence with no wasted words, and it front-loads the core action and object. However, it is so short that it omits necessary context, so while efficient, it is not fully effective.
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 three undocumented parameters, no annotations, and a broad scope across multiple domains, the description is far from complete. It does not clarify what 'candidates' means, which values the entity parameter accepts beyond the named examples, how query matching works, or how limit affects results. The presence of an output schema does not compensate for these input-side 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 0%, so the description must compensate for the undocumented parameters. It adds some value by listing likely values for the entity parameter (products, recipes, chores, locations, tasks, metadata domains), but it does not explain the query parameter semantics or the limit parameter. The vague 'supported metadata domains' further reduces its usefulness.
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 states a clear verb ('Search') and names concrete resources: products, recipes, chores, locations, tasks, or supported metadata domains. This distinguishes it from single-entity list tools like recipes_list_tool or chores_list_tool, though it does not explicitly differentiate from similar cross-entity search tools or explain the 'candidates' concept.
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?
There is no guidance about when to use this tool versus an alternative. The description only implies it is a generic cross-domain search, but never says 'use this instead of X when...' or mentions any exclusions. An agent is left to infer the exact selection criteria from the tool name and sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_fields_toolDiscover Fields ToolC
Return discovered sample fields for a Grocy entity.
| Name | Required | Description | Default |
|---|---|---|---|
| entity | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool returns sample fields but does not disclose whether this is a read-only operation, whether it requires prior discovery steps, what happens for invalid or unknown entities, or how the returned fields are structured. The term 'discovered' hints at a dependency on a prior discovery process, but this is not explicitly explained.
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 a single concise sentence with no wasted words. It front-loads the action ('Return') and the object ('discovered sample fields'). However, it is so brief that it sacrifices useful context, which is a minor structural tradeoff rather than a verbosity issue.
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 has one parameter, no annotations, and an output schema, the description is too thin to be complete. It does not explain the purpose of 'discovered sample fields' in the broader Grocy workflow, how this tool relates to discover_candidates_tool and describe_entity_tool, or what an agent should do with the output. The presence of an output schema reduces the need to describe return values, but the missing usage and dependency context remains a significant 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 0%, so the description must compensate for the undocumented 'entity' parameter. The description mentions 'a Grocy entity' but does not clarify what values are valid, whether it accepts an entity name or ID, or how it relates to the entity_list_tool's entity identifiers. The single parameter's semantics are only partially conveyed.
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 states a specific verb ('Return') and resource ('discovered sample fields for a Grocy entity'), which is clear enough to identify the tool's basic function. However, it does not distinguish this tool from its close siblings discover_candidates_tool and describe_entity_tool, which likely serve related discovery/description purposes. The phrase 'discovered sample fields' is somewhat ambiguous without context on what 'discovered' means in this workflow.
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?
No guidance is provided on when to use this tool versus alternatives like discover_candidates_tool or describe_entity_tool. The description does not mention any prerequisites, such as whether the entity must first be discovered or described, nor does it explain the relationship between this tool and its siblings. An agent would have to infer usage context from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entity_create_toolEntity Create ToolA
Create a new object of any Grocy entity type.
This is a low-level tool — prefer the domain-specific create tools (recipe_create_tool, chore_create_tool) when available.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | JSON object with fields for the new entity. Required fields vary by entity type. Example for products: '{"name": "Oat Milk"}'. Example for locations: '{"name": "Pantry", "is_freezer": 0}'. | |
| entity | Yes | Entity type name (e.g. 'products', 'locations', 'tasks'). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions 'low-level' which hints at a raw operation, but it doesn't disclose any side effects, validation behavior, permissions, or consequences of invalid data. For a mutation tool, this is a significant gap.
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?
Two concise sentences with zero waste. The core purpose is front-loaded, and the usage guidance is included without redundancy.
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?
The description is adequate for a generic tool with a full schema and output schema. It tells the agent what it does and when to use it. However, it lacks any behavioral context such as error handling, data validation, or reversibility, which would be useful for a low-level operation.
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 both parameters. The description adds no extra meaning about parameters beyond what the schema provides. Baseline 3 is appropriate.
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?
Description clearly states the action: 'Create a new object of any Grocy entity type.' It identifies the resource (Grocy entities) and the verb (create). It also explicitly differentiates itself from domain-specific tools, making it distinct from siblings like recipe_create_tool and chore_create_tool.
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 instructs to prefer domain-specific create tools when available, naming examples. This gives the agent clear guidance on when to use this generic tool versus alternatives, leaving no ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entity_delete_toolEntity Delete ToolA
Delete a Grocy entity object by its ID. This cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| entity | Yes | Entity type name (e.g. 'products', 'locations'). | |
| obj_id | Yes | The object ID to delete (use entity_list_tool to find IDs). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden; it does state that deletion 'cannot be undone,' which is a critical warning. However, it does not disclose cascading effects, failure behavior when the object is missing, permissions, or whether deletion is hard or soft. The irreversibility warning is valuable but incomplete.
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 two short sentences: the first states the action and target, and the second warns about irreversibility. Every word earns its place, and the most important information is front-loaded.
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 simple delete-by-ID operation, the description covers the core action and irreversibility, and an output schema exists for return values. However, it does not mention whether deletion cascades to related records, whether the entity type must be a valid Grocy entity, or what happens if the object does not exist, which would matter for a destructive tool with no annotations.
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 baseline is 3 even though the main description adds no parameter detail. The schema itself adequately documents entity as an entity type name and obj_id as the object ID, including the pointer to entity_list_tool.
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 uses a specific verb ('Delete'), names the resource ('a Grocy entity object'), and scopes the operation ('by its ID'), making it clearly distinguishable from sibling entity operations like entity_create_tool, entity_update_tool, and entity_list_tool. The irreversibility warning also reinforces the action's nature.
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 gives no explicit guidance on when to use this tool versus alternatives such as task_delete_tool, file_delete_tool, or other specialized deletion tools. The schema's obj_id parameter does suggest using entity_list_tool to find IDs, which is a useful prerequisite, but there are no exclusions or alternative-selection criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entity_list_toolEntity List ToolA
List all objects of a Grocy entity type.
This is a generic tool for browsing any Grocy data table.
| Name | Required | Description | Default |
|---|---|---|---|
| entity | Yes | Entity type name. Common values: 'products', 'locations', 'product_groups', 'quantity_units', 'shopping_list', 'recipes', 'chores', 'batteries', 'tasks'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral burden. 'List all' and 'browsing' indicate a read-only, unfiltered operation, but the tool does not disclose potential response size, pagination/limits, or any additional behavior beyond the basic listing; the output schema covers return shape.
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?
Two tightly worded sentences, with the action front-loaded and the generic scope immediately following. No redundant words or filler.
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 simple one-parameter read tool with a full input schema description and an output schema, the description plus schema is largely sufficient. The main missing context is how to discover valid entity type names beyond the listed common values and when the specialized list tools would be safer or better.
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 schema already documents the single 'entity' parameter at 100% coverage, so the description adds little parameter-level meaning beyond labeling the domain as 'Grocy entity type'. The description's mention of 'any Grocy data table' adds context but not syntax or format details beyond the 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 uses a specific verb and resource ('List all objects of a Grocy entity type') and adds that it is a generic tool for 'any Grocy data table'. This distinguishes it from domain-specific list siblings in spirit, but it never explicitly names or contrasts those alternatives.
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 phrase 'generic tool for browsing any Grocy data table' implies when to use it: when a caller needs an unfiltered list for an arbitrary entity. However, it gives no explicit guidance about preferring specialized list tools (e.g., recipes_list_tool, locations_list_tool) or about when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
entity_update_toolEntity Update ToolB
Update an existing Grocy entity object by its ID.
Only the fields provided in data are changed; other fields are left as-is.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | JSON object with fields to update. Example: '{"name": "Updated Name", "description": "New desc"}'. | |
| entity | Yes | Entity type name (e.g. 'products', 'locations'). | |
| obj_id | Yes | The object ID to update (use entity_list_tool to find IDs). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations, the description carries the full behavioral burden. It does disclose one genuinely important trait beyond the verb: 'Only the fields provided in data are changed; other fields are left as-is,' which communicates partial-update/merge semantics rather than full overwrite. However, it does not cover error behavior (e.g., invalid entity name or field, nonexistent obj_id) or any permission/safety implications of a mutating operation.
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?
Two sentences with no filler: the first identifies the action and target, the second adds the critical partial-update behavioral detail. The key differentiating trait is front-loaded and every sentence earns its place.
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?
This is a generic, moderately complex CRUD tool, and the combination of a tight description, 100% parameter coverage in the schema, and an output schema covers most of what an agent needs. The partial-update disclosure compensates for the absent annotations on a mutating tool. The remaining gap is minor: no description of failure semantics when the entity or obj_id is invalid.
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 baseline is 3; the schema already documents all three parameters well, including an example JSON payload for data and a pointer to entity_list_tool for obj_id. The description itself adds no parameter-level meaning, which is acceptable given the schema's thoroughness.
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 states a specific verb and resource: 'Update an existing Grocy entity object by its ID.' This clearly distinguishes it from entity_create_tool and entity_delete_tool by operation type. However, it does not explicitly distinguish itself from the many specialized sibling update tools (recipe_update_tool, catalog_update_tool, battery_update_tool, equipment_update_tool), leaving the generic-vs-specialized routing implicit.
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 offers no guidance on when to use this tool versus the specialized *_update_tool siblings or the entity_create/entity_delete tools. The only usage pointer ('use entity_list_tool to find IDs') lives in the schema's obj_id parameter, not the description, and it says nothing about when NOT to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
equipment_create_toolEquipment Create ToolC
Create an equipment item.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| battery_id | No | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only says 'Create an equipment item' and does not mention required fields, defaults, side effects, or what happens on creation. The schema shows name is required and battery_id/description have defaults, but the description adds no behavioral context.
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 extremely short and front-loaded, with no wasted words. However, it is under-specified rather than efficiently concise; a single sentence that adds no information beyond the tool name is not a well-structured description.
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 create tool with no annotations, no parameter documentation, and a large sibling set, the description is incomplete. It does not explain what an equipment item is, what fields are expected, or how this tool relates to equipment_list_tool/equipment_update_tool. The output schema exists but the description still leaves key usage questions unanswered.
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 0%, so the description must compensate for the undocumented parameters. It does not explain what 'name', 'battery_id', or 'description' mean in the equipment context, nor how they relate to other entities like batteries. The schema provides only types and defaults, leaving the agent to guess semantics.
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 states a clear verb and resource ('Create an equipment item'), which is minimally adequate. However, it does not distinguish this tool from sibling create tools like equipment_update_tool or entity_create_tool, and the title merely restates the name.
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?
No guidance is provided on when to use this tool versus alternatives such as equipment_update_tool or catalog_create_tool. The context of equipment creation is implied by the name, but no explicit conditions or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
equipment_details_toolEquipment Details ToolA
Return details for an equipment item by name or ID.
| Name | Required | Description | Default |
|---|---|---|---|
| equipment | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Return details' and gives no information about not-found behavior, case sensitivity, whether the operation is read-only, or what happens with ambiguous name matches.
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?
A single, front-loaded sentence that conveys the core purpose and the key parameter semantic without wasted words. Every part earns its place.
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 simple single-parameter lookup tool, the description covers the input semantics and the existence of an output schema covers the return format. The main missing piece is error/not-found behavior, but given the low complexity this is a minor 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 0%, and the schema only says the 'equipment' parameter is a string. The description adds useful meaning by clarifying that the parameter can be either a name or an ID, but it does not provide examples or disambiguate what takes precedence if both could match.
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?
States a specific action ('Return details'), resource ('equipment item'), and lookup mechanism ('by name or ID'). This clearly distinguishes it from equipment_list_tool (which presumably lists items) and equipment_create_tool/equipment_update_tool (which mutate items).
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 this tool is used when you need details for a specific equipment item, especially when you have a name or ID. However, it does not explicitly explain when not to use it or mention alternatives like equipment_list_tool for browsing all items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
equipment_list_toolEquipment List ToolA
List equipment with linked battery visibility where available.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. 'List' makes the read-only nature clear, and 'where available' signals that battery visibility is conditional, but the description does not disclose ordering, scope, or how missing battery links will appear beyond that phrase.
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 a single, front-loaded sentence: the core operation 'List equipment' comes first, followed by the qualifier 'with linked battery visibility where available.' There is no filler or redundancy.
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 parameterless list tool with an output schema, the description is essentially sufficient: it states the resource, the action, and the key visible feature. It loses one point only because 'where available' is vague and no sibling relationship or expected scope is mentioned.
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 zero parameters and no properties, so there is nothing for the description to explain. With no parameters, the baseline is 4; the description does not need to add parameter-level semantics.
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 uses a specific verb ('List') and names the resource ('equipment'), while adding a distinguishing feature ('linked battery visibility where available') that separates it from a plain equipment list and from battery-specific tools. It doesn't explicitly contrast with equipment_details_tool, but the intent is clear and unambiguous.
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 clearly implies use when the agent needs an overview of equipment with battery associations, but it provides no explicit when-to-use or when-not-to-use guidance. It does not mention alternatives such as batteries_list_tool or equipment_details_tool, so usage guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
equipment_update_toolEquipment Update ToolD
Update an equipment item.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| equipment | Yes | ||
| battery_id | No | ||
| description | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavioral traits. It only says 'Update', implying mutation, but does not describe side effects, reversibility, required permissions, or response behavior. For an update operation, this is severely lacking.
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 a single sentence, which is concise, but it is under-specified rather than appropriately sized. It fails to include essential information about parameters or usage, so the brevity is a drawback, not a virtue.
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 four parameters, no annotations, no schema descriptions, and no usage guidance, the description is completely inadequate. The agent cannot correctly invoke this tool without additional information from other sources.
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 0%, meaning the input schema provides no descriptions for the four parameters. The description mentions none of them, so it adds zero meaning beyond the raw schema. The agent gets no help understanding what 'name', 'battery_id', or 'description' mean or how to use them.
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 states a clear verb ('Update') and resource ('an equipment item'), which identifies the tool's basic function. However, it does not distinguish itself from sibling tools like equipment_create_tool or equipment_details_tool, nor does it mention what fields can be updated, so it is slightly above minimal but lacks differentiation.
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?
There is no guidance on when to use this tool versus alternatives, no mention of prerequisites, and no exclusion criteria. The description is entirely silent on usage context, leaving the agent to guess when this tool is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file_delete_toolFile Delete ToolC
Delete a Grocy-managed file.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | ||
| file_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the action (delete) but does not disclose whether deletion is permanent, whether it requires confirmation, what happens to associated references, or whether any permissions are needed. For a destructive operation, this is a significant gap.
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 a single short sentence with no wasted words. It is appropriately sized, though it sacrifices necessary detail for brevity.
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 destructive tool with no annotations, no parameter documentation, and no usage context, the description is incomplete. The output schema exists but does not help the agent understand how to invoke the tool correctly. The description does not explain what 'group' refers to, how to identify a file, or what the consequences of deletion are.
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 0%, so the description must compensate for the two parameters, group and file_name. The description only says 'Grocy-managed file' and does not explain what 'group' means, how file_name should be formatted, or how the two parameters relate. This leaves the agent to guess at valid values.
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 states a specific verb and resource ('Delete a Grocy-managed file'), which is clear enough to identify the operation. However, it does not distinguish this tool from its sibling file_download_tool or file_upload_tool beyond the verb, and the name already conveys the same meaning.
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?
No guidance is provided on when to use this tool versus alternatives, such as file_upload_tool or file_download_tool. There is no mention of prerequisites, safety checks, or conditions under which deletion is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file_download_toolFile Download ToolB
Download a Grocy-managed file as base64 content.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | ||
| file_name | Yes | ||
| force_picture | No | ||
| best_fit_width | No | ||
| best_fit_height | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral disclosure burden. It does state that the operation is a download returning base64 content, which implies a read-only, non-destructive action. However, it does not mention failure behavior, permission requirements, or side effects, leaving some behavioral ambiguity.
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 a single efficient sentence with no filler, front-loading the action and resource. It earns its place, though the brevity contributes to the lack of parameter guidance.
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?
An output schema exists, so return values may not need explanation, but the input semantics are entirely undocumented. The tool has five parameters including image-resizing options that are not self-explanatory, and no indication of what 'group' values are valid or how the optional parameters behave. The description is not complete enough for an agent to reliably choose and use the 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 0% and the description provides no meaning for any of the five parameters: group, file_name, force_picture, best_fit_width, or best_fit_height. Since the schema properties have no descriptions, the tool description was the only place to explain them, and it does not.
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 uses a specific verb ('Download'), names the exact resource ('Grocy-managed file'), and specifies the return format ('base64 content'). This clearly distinguishes it from siblings like file_upload_tool and file_delete_tool without needing to inspect schemas.
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 context for use is clear: when an agent needs the contents of a Grocy-managed file. It does not explicitly exclude alternatives like file_upload_tool or file_delete_tool, so it misses explicit when-not/alternative guidance, but the verb and resource make the intended use obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
file_upload_toolFile Upload ToolC
Upload a Grocy-managed file from base64 content.
| Name | Required | Description | Default |
|---|---|---|---|
| group | Yes | ||
| file_name | Yes | ||
| content_base64 | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It indicates mutation via 'upload' but does not mention side effects (e.g., overwriting existing files), required permissions, or error conditions. The existence of an output schema partially mitigates return-value clarity, but other behavioral aspects remain 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?
A single, concise sentence that front-loads the core action and resource. There is no redundancy or filler; every word earns its place.
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?
Despite having an output schema, the tool lacks annotations and schema descriptions. The description fails to explain the meaning of 'group' and 'file_name,' leaving the agent without enough context to construct a valid request. For a three-parameter tool, this is a significant 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 0%, so the description must compensate for all three parameters. It only hints at content_base64 ('from base64 content') but says nothing about 'group' or 'file_name,' leaving these critical parameters unexplained.
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 action (upload), the resource (Grocy-managed file), and the input format (base64 content). It distinguishes this tool from file_download_tool and file_delete_tool, making the purpose unambiguous.
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?
No guidance is provided on when to use this tool versus alternatives, nor any exclusions or prerequisites. The description implies usage only through the verb 'upload,' leaving the agent to infer context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
location_create_toolLocation Create ToolA
Create a new storage location.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Location name (e.g. "Pantry", "Garage fridge"). | |
| is_freezer | No | Whether this location is a freezer (default false). | |
| description | No | Optional description. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The description says 'Create' implies mutation/persistence, which is useful, but it does not disclose duplicate-name handling, idempotency, permissions, or any side effects beyond creation.
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 a single focused sentence with no filler. It front-loads the key action and resource, making it immediately readable.
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?
The parameter schema is complete and an output schema exists, so basic invocation is supported. However, with no annotations, the description lacks behavioral details such as duplicate handling or uniqueness constraints, which would make it more contextually complete.
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% and includes examples and defaults, so the schema already documents all three parameters. The tool description adds no extra parameter meaning beyond the 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 verb 'Create a storage location' and names the resource type, 'a new storage location', distinguishing it immediately from list/read, update, delete, and generic entity tools. An agent can correctly recognize this as the location-creation operation.
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 usage context is implied: use this when a new storage location must be created. It does not mention when not to use it, any prerequisites, or name alternatives like entity_create_tool or locations_list_tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
locations_list_toolLocations List ToolA
List all storage locations in Grocy.
Shows location names, IDs, and whether each is a freezer.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It conveys a read-only operation through 'List' and 'Shows', and it discloses the output contents (names, IDs, freezer flag). It does not cover edge cases like empty results, but for a simple list tool this is reasonably transparent.
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 two short sentences with no filler. The primary action and resource are front-loaded, and the additional output details earn their place.
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 parameterless list tool with an output schema available, the description is complete: it states what is listed and what fields are shown. Nothing needed for correct selection or invocation is missing.
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 zero parameters and 100% schema coverage, so the description does not need to explain parameters. Baseline 4 applies because no parameter information is missing.
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 a specific verb ('List') and resource ('all storage locations in Grocy'), and it adds the key output fields (names, IDs, freezer status). This is enough to distinguish it from other sibling list tools and from location_create_tool.
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 makes the usage context obvious: call it whenever the full set of storage locations is needed. It does not explicitly name alternatives or exclusions, but there is no sibling tool that competes for this exact resource, so the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meal_plan_add_toolMeal Plan Add ToolA
Add an entry to the meal plan.
Either specify a recipe or a free-text note (or both).
| Name | Required | Description | Default |
|---|---|---|---|
| day | Yes | Date in YYYY-MM-DD format (e.g. "2026-04-05"). | |
| note | No | Optional free-text note (e.g. "Eat out" or "Leftovers"). | |
| recipe | No | Optional recipe name or ID to schedule. | |
| meal_type | No | Optional meal type (e.g. "recipe", "note"). Auto-detected if not provided. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It communicates the additive nature of the operation but does not disclose behavior on conflicts, whether the recipe must already exist, permission requirements, or side effects. For a mutation tool with zero annotation coverage, this is a meaningful gap.
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?
Two short sentences deliver the action and the core input constraint without unnecessary words. The essential information is front-loaded and every sentence earns its place.
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 simple tool, the description plus full schema coverage is adequate for basic invocation. However, with no annotations and minimal behavioral context, edge cases such as validation failures, duplicate entries, or return values are left unexplained; output schema may cover returns, but the tool description itself is incomplete on its own.
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 each parameter already has a clear definition. The description adds one useful semantic detail—that recipe and note can be combined—but provides minimal additional meaning beyond what the schema already states.
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 uses a specific verb ('Add') and a specific resource ('entry to the meal plan'), and further clarifies that an entry can be a recipe, a free-text note, or both. This clearly differentiates it from sibling meal plan tools like list, remove, and summary tools.
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 gives input-mode guidance ('Either specify a recipe or a free-text note (or both)') but does not state when to use this tool versus alternatives, nor any when-not-to-use exclusions. Usage context is implied rather than explicitly articulated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meal_plan_list_toolMeal Plan List ToolA
List all meal plan entries sorted by date.
Shows scheduled meals with their dates, recipe names, and notes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden of behavioral disclosure. It does state that the tool lists entries and shows specific fields, implying a read-only operation without explicit confirmation. It does not mention side effects, permissions, or limitations such as pagination, but for a simple list tool this is minimally sufficient. The description is not misleading, but lacks deeper behavioral context like whether entries are filtered by date range or if the list is exhaustive.
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 two sentences, concise and front-loaded with the core purpose ('List all meal plan entries sorted by date'). The second sentence adds relevant detail about what is shown without redundancy. Every word earns its place, and there is no fluff.
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 there are no parameters and an output schema exists, the description does not need to explain return values. It covers what the tool does and what information is displayed. However, it lacks any mention of limitations or when to use this tool instead of meal_plan_summary, which might be relevant for full context. The tool is simple enough that this gap is minor, so a 4 is appropriate.
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 zero parameters, so the schema covers everything trivially. The description adds no parameter information because none exists. Per the rubric, with 0 params the baseline is 4, and the description does not need to explain anything further. The description's mention of sorting and displayed fields is relevant to output, not parameters.
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 states a specific action ('List all meal plan entries') and resource ('meal plan entries'), and adds sorting by date and the fields shown (dates, recipe names, notes). This clearly distinguishes it from other list tools and meal_plan_summary, which likely aggregates rather than lists entries. The verb 'list' and explicit resource make the purpose unambiguous.
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?
No guidance is provided on when to use this tool versus alternatives. Siblings like meal_plan_summary, meal_plan_shopping, and meal_plan_add are present, but the description does not mention them or explain when a user should prefer this list tool over a summary or other meal-plan tools. The intended usage is only implied by the word 'list'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meal_plan_remove_toolMeal Plan Remove ToolB
Remove an entry from the meal plan.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | Yes | The meal plan entry ID (from meal_plan_list_tool output). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for behavioral disclosure. It only says 'Remove an entry' without mentioning side effects, irreversibility, permissions, or error behavior. It does not even explicitly state that the removal is permanent, which is a significant gap for a mutation tool.
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 a single, clear sentence with no filler. It is front-loaded and concise, making it efficient for an 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?
While the tool is simple with one parameter, the description lacks critical context such as whether the operation is irreversible, what happens on failure (e.g., invalid entry_id), or any return value. Although an output schema exists, the description does not mention any outcome, leaving the agent with incomplete information for a mutation.
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 schema has 100% coverage for the only parameter (entry_id), including its source from meal_plan_list_tool. The description adds no additional parameter information beyond the schema, so it meets the baseline of 3 but does not exceed it.
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 uses a specific verb ('Remove') and resource ('an entry from the meal plan'), clearly distinguishing it from siblings like meal_plan_add_tool and meal_plan_list_tool. It unambiguously states what the tool does.
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 does not explicitly mention when to use this tool versus alternatives, but it implies usage by stating the action. The parameter hint that entry_id comes from meal_plan_list_tool output provides some context for usage, but there is no explicit guidance on exclusions or alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meal_plan_shopping_toolMeal Plan Shopping ToolA
Add missing ingredients for all planned recipes to the shopping list.
Scans the meal plan (optionally filtered by date range), finds all scheduled recipes, and adds their unfulfilled ingredients to the shopping list. This is the "plan meals → shop" workflow in one step.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | Optional end date filter (YYYY-MM-DD, inclusive). | |
| start_date | No | Optional start date filter (YYYY-MM-DD, inclusive). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool scans the meal plan, finds scheduled recipes, and adds unfulfilled ingredients. It also notes the optional date range filter. However, it does not disclose whether this is a read-only operation or a mutation, whether it overwrites existing shopping list items, or whether it can be undone. The description is decent but leaves behavioral ambiguity.
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 compact and front-loaded. The first sentence states the core action, and the second sentence explains the workflow and optional filtering. Every sentence earns its place; no filler.
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 has only 2 optional parameters, 100% schema coverage, and an output schema, the description is largely complete. It explains the workflow and the optional date filter. The only gap is the lack of clarity on whether the operation is destructive or reversible, but for a tool with this simplicity, the description is sufficient.
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 documents both parameters (start_date and end_date) with format and inclusivity. The description adds the context that these filter the meal plan scan, which is helpful but not deeply beyond the schema. Baseline 3 is appropriate.
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 states a specific verb ('Add missing ingredients'), a resource ('shopping list'), and the source ('all planned recipes' / meal plan). It also distinguishes itself from a simple shopping list add by describing the workflow it automates ('plan meals → shop' in one step). This is clear and specific.
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 clearly explains when to use it: when you want to add missing ingredients for all planned recipes to the shopping list. It also mentions the optional date range filter, which helps the agent decide how to scope the call. However, it does not explicitly name alternatives or say when NOT to use it (e.g., when only adding a single item, use shopping_list_add_tool).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
meal_plan_summary_toolMeal Plan Summary ToolB
Return a structured meal-plan summary with recipe and section names.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | No | Optional end date filter in YYYY-MM-DD format. | |
| section_id | No | Optional meal-plan section filter. | |
| start_date | No | Optional start date filter in YYYY-MM-DD format. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool returns a structured summary with recipe and section names, which is useful, but it does not describe any side effects, read-only nature, or behavior around missing data. Since it's a summary/read tool, the lack of explicit read-only disclosure is a minor gap.
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 a single, concise sentence that front-loads the main purpose. It earns its place without wasted words, though it could add a bit more context about the summary's scope.
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?
The tool has an output schema, so return values are covered. The description is adequate for a simple read/summary tool, but it lacks explicit guidance on how it differs from meal_plan_list_tool and whether any filters are required. Given the sibling set includes several meal-plan tools, a bit more context would improve completeness.
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 documents all three parameters. The description adds no additional meaning beyond what the schema provides, so the baseline 3 is appropriate.
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 states a specific verb ('Return') and resource ('structured meal-plan summary'), and mentions it includes recipe and section names. It is clear enough to distinguish from meal_plan_list_tool, which likely lists meal plans, but it doesn't explicitly differentiate itself from that sibling.
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 this tool is for retrieving a summary of a meal plan, and the optional date/section filters suggest when it might be used. However, it does not explicitly state when to use this tool versus meal_plan_list_tool or meal_plan_shopping_tool, nor does it mention any exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
print_battery_label_toolPrint Battery Label ToolC
Trigger printing of a battery label.
| Name | Required | Description | Default |
|---|---|---|---|
| battery | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It only states that printing is triggered, but does not mention side effects, printer dependencies, idempotency, failure modes, or whether the battery must already 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 a single front-loaded sentence with no filler or redundant phrasing. It is efficiently structured, though its brevity comes at the cost of missing semantic detail that is penalized in other dimensions.
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?
Even with an output schema present, the description is incomplete: it lacks parameter semantics, usage context, and behavioral details. For a tool with no annotations, more context is needed for an agent to know how to call it successfully.
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 coverage is 0% and the description does not explain the only required parameter, 'battery'. An agent cannot tell whether this expects an ID, a name, or some other identifier, making correct invocation uncertain.
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 uses a clear action ('Trigger printing') and specific resource ('battery label'), which immediately distinguishes it from sibling print tools like print_product_label_tool or print_recipe_label_tool. The resource is specific enough that an agent can infer what this tool does without opening the schema.
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 gives no guidance about when to use this tool versus the many other label-printing and battery-management siblings. There are no explicit conditions, exclusions, or references to alternatives, so the agent must rely on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
print_chore_label_toolPrint Chore Label ToolC
Trigger printing of a chore label.
| Name | Required | Description | Default |
|---|---|---|---|
| chore | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only says 'trigger printing', which implies a physical action but does not mention side effects, required hardware, error states, or what the output schema contains. The presence of an output schema is not acknowledged in the description.
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 extremely short (one sentence), which makes it concise, but it lacks essential details. It front-loads the purpose but omits necessary context, so it is under-specified rather than appropriately concise.
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?
The tool has a simple schema (one parameter) and an output schema exists, but the description does not explain the return value or the meaning of the chore parameter. Given the large set of sibling print tools, the description is insufficient for an agent to confidently select and invoke this tool correctly.
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 schema has one required parameter 'chore' (string) with 0% coverage in the description. The description does not explain whether 'chore' is an ID, a name, or a label text, nor its expected format. This is a significant gap for a single parameter.
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 action (trigger printing) and the resource (chore label), which distinguishes it from sibling print tools for other entities (e.g., stock, product, battery). However, it does not explain what a 'chore label' contains or how it is generated, leaving some 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?
There is no guidance on when to use this tool versus the many other print_* tools. The name implies it's for chore labels, but no explicit conditions, prerequisites, or alternatives are provided. An agent would need to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
print_product_label_toolPrint Product Label ToolC
Trigger printing of a product label.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description must carry the behavioral disclosure burden. It only says 'Trigger printing' without mentioning whether a printer must be configured, whether printing is irreversible, or what side effects or errors occur.
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 single sentence is efficient and free of filler, making it easy to parse. However, it is concise to the point of under-specification, which limits its practical value.
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?
The tool has no annotations and one opaque string parameter, and the description does not cover identifier format, printer prerequisites, or return/error behavior. The output schema exists but cannot compensate for the missing parameter and side-effect context.
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 0%, and the description adds no meaning to the sole 'product' string parameter. An agent cannot tell whether this expects a product ID, SKU, name, or another identifier.
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 a specific action ('trigger printing') and resource ('product label'). It differentiates from sibling print tools for recipes, chores, batteries, and shopping lists, though it does not clarify whether 'product' means a catalog product or a stock entry.
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?
No guidance is given on when to use this tool versus alternatives like print_stock_entry_label_tool or print_recipe_label_tool. The name implies the use case, but the description does not provide explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
print_recipe_label_toolPrint Recipe Label ToolD
Trigger printing of a recipe label.
| Name | Required | Description | Default |
|---|---|---|---|
| recipe | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description is the sole source of behavioral disclosure. It only states a basic print action without explaining side effects, prerequisites (e.g., printer availability), success/failure indication, or any other behavior that would help the agent anticipate consequences. This is a significant gap.
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 a single short sentence with no fluff, but it is under-specified. It is not concise in the sense of efficiently covering necessary details; it omits critical context. Under-specification is penalized rather than rewarded as 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?
Even though the tool is simple and has an output schema, the description is not complete enough. The parameter is unexplained, and the return behavior is not hinted at. The description does not provide sufficient context for an agent to invoke this tool correctly without additional guessing.
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 coverage is 0% and the description does not explain the 'recipe' parameter at all. An agent cannot know whether to provide a name, ID, or other identifier, or what format is expected. The description fails to compensate for the schema's lack of any parameter description.
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 states a specific action (trigger printing) on a specific resource (a recipe label), which distinguishes it from sibling print tools like print_stock_entry_label_tool and print_product_label_tool. It is not a tautology and conveys the core purpose clearly.
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 no guidance on when to use this tool versus alternatives. It does not mention any conditions, prerequisites, or reference sibling tools, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
print_shopping_list_thermal_toolPrint Shopping List Thermal ToolA
Trigger thermal printing of the shopping list.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden of behavioral disclosure. It only states the action ('trigger thermal printing') without mentioning side effects (e.g., physical paper output, printer connectivity requirements) or any possible errors. The output schema exists but the description does not hint at what the tool returns or any safety 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 a single, clear sentence with no unnecessary words. The essential information (action and target) is front-loaded, and there is no redundancy.
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 zero-parameter tool with an output schema, the description is mostly adequate. However, it omits practical context such as whether the action requires a physical printer, whether it is reversible, or any expected output format. These gaps are minor for a simple trigger action but still leave room for agent uncertainty.
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 zero parameters, so the baseline is 4. The description adds no parameter information because none exists. This is appropriate; there is nothing to explain.
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 action ('Trigger') and the specific resource ('thermal printing of the shopping list'). It distinguishes from sibling print tools (e.g., print_stock_entry_label, print_product_label) which target other entities. No ambiguity about what this tool does.
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 gives no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., a configured thermal printer, existing shopping list) or any exclusion conditions. Siblings like shopping_list_view_tool are not referenced for comparison.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
print_stock_entry_label_toolPrint Stock Entry Label ToolC
Trigger printing of a stock-entry label.
| Name | Required | Description | Default |
|---|---|---|---|
| entry_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Trigger printing' hints at a physical side effect but does not disclose whether printing is asynchronous, whether a printer must be configured, what happens when entry_id is invalid, or the reversibility/failure modes of a print job. This is a significant gap for a tool with real-world side effects.
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?
One grammatically complete sentence with zero filler, front-loading the verb and object. It is efficiently written; the thinness is a completeness problem, not a conciseness problem.
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 a physical printing side effect, no annotations, and one undocumented parameter, the description should explain what triggering entails, prerequisites, and failure behavior. The output schema covers return values, but the behavioral and selection context is largely missing.
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 0%, and the description never mentions entry_id at all. It adds nothing about what entry_id refers to, how to obtain it, or any constraints. The agent is left to infer the parameter's meaning from the tool name alone.
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 uses a specific verb ('Trigger printing') and a resource ('stock-entry label'), and the noun 'stock-entry' naturally distinguishes it from the sibling print_*_label_tools (product, recipe, chore, battery). It does not explicitly name an alternative, so it is clear but not exceptional.
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?
No guidance is given for when to use this tool versus the many print_*_label_tool siblings or other stock tools. The only implied context is that a stock entry must exist to print its label, but no exclusions, prerequisites, or alternatives are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recipe_add_ingredient_toolRecipe Add Ingredient ToolB
Add an ingredient to an existing recipe using the product name.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | Quantity needed for the recipe (default 1). | |
| recipe | Yes | Recipe name or ID. | |
| product | Yes | Product name (e.g. "Flour") — resolved automatically. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must disclose side effects. It only restates the operation and notes product-name resolution; it does not mention that this modifies a recipe, how duplicates are handled, or what happens if the recipe or product does not exist. This is insufficient behavioral disclosure for a mutation tool.
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 a single, front-loaded sentence with no redundancy. It is concise, though it omits useful behavioral context that would make it more informative.
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?
The tool is simple with three fully documented parameters and an output schema, so the core call inputs are covered. However, with no annotations and no usage or error guidance, the description leaves behavioral gaps around mutation and failure cases, making it minimally adequate rather than complete.
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 coverage is 100%, so the baseline is 3. The description adds no parameter semantics beyond the schema; the phrase 'using the product name' and the schema's 'resolved automatically' cover the product parameter, while recipe and amount are already documented.
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 states a specific action ('Add an ingredient') and target ('an existing recipe') plus the lookup method ('using the product name'). It clearly conveys the function, though it does not explicitly contrast with sibling tools such as recipe_remove_ingredient_tool.
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 the tool is for adding ingredients to an already-created recipe, but it gives no explicit when-to-use guidance or mention of alternatives. There are no exclusions or conditions, so the context must be inferred from the action itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recipe_add_to_shopping_toolRecipe Add To Shopping ToolA
Add only the missing ingredients for a recipe to the shopping list.
Does not add ingredients that are already sufficiently in stock.
| Name | Required | Description | Default |
|---|---|---|---|
| recipe | Yes | Recipe name (e.g. "Spaghetti Bolognese") or numeric recipe ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It does disclose a key trait: it skips ingredients already sufficiently in stock. However, it does not mention other side effects such as how existing list entries are handled, whether it creates new items, or what happens when a recipe is not found.
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?
Two short sentences with no filler. The primary action and the key exclusion behavior are front-loaded, and every sentence is informative.
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, single well-documented parameter, and presence of an output schema, the description covers what is needed to call it. It could be more complete by contrasting it with shopping_list_add_missing_tool, but that is a minor 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 coverage is 100% and the parameter already documents that it accepts a recipe name or numeric ID. The description adds no further parameter-level meaning, so the baseline of 3 is appropriate.
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 uses a specific verb ('add') and resource ('missing ingredients for a recipe... shopping list'), and clearly scopes behavior to only missing items. This distinguishes it from generic shopping-list add tools and recipe consumption tools.
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 (when you need missing recipe ingredients on the shopping list) but does not explicitly state when to prefer this over the highly similar sibling shopping_list_add_missing_tool or recipe_fulfillment_tool. There is clear context but no exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recipe_consume_preview_toolRecipe Consume Preview ToolA
Preview what stock would be consumed without actually consuming.
Shows each ingredient, the amount needed, and whether there is enough in stock. Use this before recipe_consume_tool to verify.
| Name | Required | Description | Default |
|---|---|---|---|
| recipe | Yes | Recipe name or ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of safety disclosure. It clearly states the tool is a preview ('without actually consuming') and thus non-destructive. It also describes the behavioral output (list of ingredients, amounts, stock sufficiency). It does not mention permissions or side effects, but the non-mutating nature is explicitly conveyed, which is the key behavioral trait.
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 two sentences, front-loaded with the core purpose and safety property. Each sentence earns its place: the first states what the tool does, the second explains the output and the recommended usage. No fluff or redundancy.
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 parameter) and the presence of an output schema (which covers return values), the description sufficiently conveys the non-destructive behavior and the situational context. It could mention error handling for unknown recipes, but that is minor and the core requirement—previewing consumption—is fully covered.
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 parameter 'recipe' is already documented as 'Recipe name or ID.' The tool description adds no extra meaning about the parameter beyond confirming that the preview is for a recipe. This meets the baseline for high coverage but does not elevate the semantics 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 states a specific verb ('Preview'), a resource ('what stock would be consumed'), and explicitly distinguishes it from recipe_consume_tool by saying 'without actually consuming'. It also defines the output scope (each ingredient, amount needed, stock sufficiency), making it easy to differentiate from siblings.
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 gives an explicit usage directive: 'Use this before recipe_consume_tool to verify.' This clearly tells the agent when to invoke the tool. However, it does not mention when not to use it (e.g., for just viewing recipe details) or compare it with other preview/simulation tools like recipe_fulfillment_tool, so it falls short of full exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recipe_consume_toolRecipe Consume ToolA
Consume stock for all ingredients of a recipe (as if you cooked it).
This deducts each ingredient amount from stock. Check fulfillment first to make sure all ingredients are available.
| Name | Required | Description | Default |
|---|---|---|---|
| recipe | Yes | Recipe name (e.g. "Spaghetti Bolognese") or numeric recipe ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral disclosure. It clearly states the main effect (deducts each ingredient amount from stock) and advises checking fulfillment, but does not disclose whether it partially consumes if some ingredients are missing, whether it is reversible, or any error behavior. The mention of 'check fulfillment first' hints at a potential failure condition but leaves ambiguity.
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 two sentences, front-loaded with the primary action and a clear secondary directive. Every word adds value; no fluff or redundancy.
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?
The tool is simple (one parameter) and has an output schema, so return value explanation is not needed. The description covers the core behavior and a prerequisite. However, it does not mention the existence of recipe_consume_preview_tool for dry-running, which could be helpful context, and it doesn't clarify behavior when ingredients are insufficient. Still, it is adequate for a straightforward consume action.
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 documents the 'recipe' parameter (name or numeric ID). The description adds no additional semantic detail about the parameter, staying at the baseline for full 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 action: 'Consume stock for all ingredients of a recipe' and elaborates that it deducts each ingredient amount from stock. It distinguishes from siblings like stock_consume_tool (single item) and recipe_consume_preview_tool (preview only) by focusing on the actual execution.
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?
It provides a clear usage context ('as if you cooked it') and a critical prerequisite: 'Check fulfillment first to make sure all ingredients are available.' While it doesn't explicitly name alternatives or when not to use it, the prerequisite implies a logical order. It lacks direct comparison to recipe_consume_preview_tool or recipe_fulfillment_tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recipe_create_by_name_toolRecipe Create By Name ToolA
Create a recipe with ingredients specified by product name instead of ID.
This is the easier alternative to recipe_create_tool — you can use product names directly, and they will be resolved automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Recipe name (e.g. "Banana Bread"). | |
| description | No | Optional description or instructions. | |
| ingredients | No | JSON array of ingredient objects. Each should have "product" (name string) and "amount" (number). Example: '[{"product": "Flour", "amount": 2}, {"product": "Banana", "amount": 3}]'. | [] |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It does add useful behavior beyond the schema: product names are resolved automatically rather than passed as IDs. However, it does not mention what happens if a product name cannot be resolved, whether products must already exist, or any other side effects of creation.
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 compact, front-loaded with the core purpose, and contains no filler. The second sentence earns its place by differentiating the tool from its sibling.
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?
With a complete input schema and an output schema present, the description covers the key facts an agent needs: what the tool does, how it differs from recipe_create_tool, and how product names are handled. It could add a note about unresolved product names, but that is a minor gap for a simple creation 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 coverage is 100%, so the baseline is 3. The description adds meaningful semantics by clarifying that the ingredients parameter uses product names rather than IDs and that resolution happens automatically, which goes beyond the raw schema text.
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 states a specific action ('Create a recipe') and the key distinguishing scope: ingredients are specified by product name instead of ID. It explicitly names recipe_create_tool as the alternative, so an agent can immediately tell this tool apart from its sibling.
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?
It directly says this is 'the easier alternative to recipe_create_tool' and explains when to choose it: when you want to use product names directly, which are resolved automatically. This gives the agent a clear routing signal versus the ID-based sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recipe_create_toolRecipe Create ToolC
Create a new recipe in Grocy.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Recipe name (e.g. "Banana Bread"). | |
| description | No | Optional description or instructions for the recipe. | |
| ingredients | No | JSON array of ingredient objects. Each object should have "product_id" (integer) and "amount" (number). Use stock_search_tool to find product IDs. Example: '[{"product_id": 1, "amount": 2}, {"product_id": 5, "amount": 0.5}]'. | [] |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only restates the basic create action and does not mention side effects, whether a created recipe can be edited later, required permissions, or what the operation returns.
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 a single efficient sentence with no filler. It is front-loaded and easy to process, though it is arguably brief to the point of omitting useful usage and behavioral context.
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?
The input schema fully documents the three parameters and an output schema is present, so invoking the tool is possible, but the description alone is only minimally viable. It lacks any mention of when to choose this tool over recipe_create_by_name_tool and gives no behavioral context for a mutating operation.
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 schema covers 100% of parameters with descriptions and examples, so the description does not need to compensate. The description itself adds no parameter meaning beyond what the input schema already provides, which matches 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 action and resource: 'Create a new recipe in Grocy.' This is specific enough to identify the tool's purpose from its name alone, but it does not differentiate it from the closely related sibling recipe_create_by_name_tool, which also creates recipes.
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 no guidance on when to use this tool versus alternatives such as recipe_create_by_name_tool or recipe_update_tool. There are no stated conditions, exclusions, or sibling comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recipe_details_toolRecipe Details ToolA
Show full details for a recipe including all ingredients and amounts.
| Name | Required | Description | Default |
|---|---|---|---|
| recipe | Yes | Recipe name (e.g. "Spaghetti Bolognese") or numeric recipe ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. The verb 'Show' clearly implies a non-mutating, read-only operation, and the phrase 'including all ingredients and amounts' sets expectations about what is returned. It does not discuss error behavior, but for a simple getter this is a reasonable level of transparency.
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 a single, front-loaded sentence with no wasted words. It immediately communicates the action, the target resource, and the key content of the output.
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 simple one-parameter read tool with a complete input schema and an output schema present, the description is sufficient for an agent to invoke it correctly. It could be enhanced by explaining how to pick this tool over related recipe tools, but that gap is already covered under usage guidelines.
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%, and the parameter description already explains that the recipe can be a name or numeric ID. The tool description adds no additional parameter-level meaning, so the baseline of 3 is appropriate.
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 action ('Show full details') and resource ('a recipe'), and specifies the content scope ('including all ingredients and amounts'). It does not explicitly contrast with sibling tools like recipes_list_tool, but the focus on a single recipe's details is unambiguous enough.
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 gives no guidance on when to use this tool versus alternatives such as recipe_consume_preview_tool or recipes_list_tool. With many recipe-related siblings present, an agent must infer usage context from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recipe_fulfillment_toolRecipe Fulfillment ToolA
Check whether a recipe can be made with current stock.
Reports whether all ingredients are available and how many are missing.
| Name | Required | Description | Default |
|---|---|---|---|
| recipe | Yes | Recipe name (e.g. "Spaghetti Bolognese") or numeric recipe ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It uses non-mutating language ('Check', 'Reports') and discloses the output semantics, but it does not explicitly state that no stock is consumed or modified, nor what happens for invalid or unknown recipes.
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 two short sentences with no filler. The core action and expected report are front-loaded, 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?
For a one-parameter read-only check with an output schema available, the description covers the essential invocation context. It could be slightly richer by mentioning side-effect-free behavior or sibling distinctions, but nothing critical is missing for calling the tool correctly.
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 already documents the single 'recipe' parameter with type and format examples at 100% coverage. The description adds no additional parameter-level meaning, so the baseline score of 3 applies.
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 a specific action ('Check whether a recipe can be made') and the resource involved ('current stock'), and it explains the result ('whether all ingredients are available and how many are missing'). It does not explicitly distinguish itself from related recipe/stock tools, so it falls short of full sibling differentiation.
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 the main use case: determining recipe feasibility against current stock. However, it provides no when-not-to-use guidance, exclusions, or pointers to alternatives like recipe_consume_preview_tool or shopping_list_add_missing_tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recipe_remove_ingredient_toolRecipe Remove Ingredient ToolB
Remove an ingredient from a recipe.
Use recipe_details_tool to see ingredient position IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| position_id | Yes | The recipe ingredient position ID to remove. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It indicates that it removes an ingredient, implying mutation, but does not disclose whether the action is irreversible, if any confirmation is required, or what the effect on the recipe is. It does provide a helpful pointer to recipe_details_tool, but leaves out important behavioral details for a deletion-like operation.
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 brief and to the point, with two sentences that both carry value: the first states the purpose, and the second provides a key usage hint. It is front-loaded with the main action, making it efficient without unnecessary fluff.
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 presence of an output schema, the description need not explain return values, but for a single-parameter tool with no annotations, the guidance to use recipe_details_tool is useful. However, it lacks details on any side effects, permissions, or error conditions, making it adequate but not fully comprehensive.
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 description says to use recipe_details_tool to see ingredient position IDs, which adds context to the 'position_id' parameter beyond the schema's simple 'the recipe ingredient position ID to remove'. However, schema coverage is 100%, so the baseline is 3, and while the description adds practical guidance, it doesn't elaborate on the parameter's format or semantics beyond what the schema already states.
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 that the tool removes an ingredient from a recipe, specifying the action and resource. It distinguishes itself from sibling tools like 'recipe_add_ingredient_tool' and 'recipe_update_tool' by focusing on removal, though it doesn't explicitly name those alternatives.
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 suggests a workflow by telling users to use recipe_details_tool to see position IDs, which provides usage context. However, it does not explicitly state when not to use this tool or mention any prerequisites beyond obtaining the position ID, leaving some guidance to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recipes_list_toolRecipes List ToolA
List all recipes with their IDs and descriptions.
Use this to discover available recipes before checking fulfillment or consuming ingredients.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool lists all recipes with IDs and descriptions, which is a read-only operation, but doesn't explicitly state that it has no side effects or that it returns the full set without filtering. The behavior is simple enough that the description is adequate.
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 two sentences with no wasted words. The primary action is stated first, and the usage context is provided in the second sentence. Every sentence earns its place.
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 simple list tool with zero parameters and an output schema, the description is complete enough. It states what is returned (IDs and descriptions) and when to use it. It doesn't mention pagination or ordering, but for a recipe list tool this is a minor 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?
The tool has zero parameters, so there is no parameter semantics to clarify. The description correctly implies that no input is needed, and the schema confirms this. Baseline 4 is appropriate for a zero-parameter tool.
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 states a specific verb ('List') and resource ('all recipes') and mentions the output includes IDs and descriptions. It is clear about what the tool does, though it doesn't explicitly differentiate from sibling tools like recipe_details_tool or recipe_fulfillment_tool.
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: 'Use this to discover available recipes before checking fulfillment or consuming ingredients.' This implies when to use it, though it doesn't explicitly name alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recipe_update_toolRecipe Update ToolA
Update a recipe's name or description.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | New name (omit to keep current). | |
| recipe | Yes | Current recipe name or ID to update. | |
| description | No | New description (omit to keep current). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It only states 'Update a recipe's name or description' without revealing consequences such as whether the recipe must exist, what happens if both fields are omitted, or whether the operation is destructive or reversible. The description adds little beyond the title and name, so it fails to disclose important behavioral traits.
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 a single concise sentence that front-loads the action and resource. Every word is necessary and no redundancy exists, making it appropriately sized for a simple update tool.
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, the schema fully documents parameters, and an output schema exists, the description covers the essential missing context: which fields can be updated. It does not explicitly mention that the recipe must already exist or that both fields can be updated simultaneously, but these are minor gaps and not critical for correct invocation.
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%, and the schema already documents each parameter (e.g., 'New name (omit to keep current)'). The description does not add any parameter-specific meaning beyond what the schema provides, so it meets the baseline but does not enhance 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 states a specific action (update) on a specific resource (recipe) and lists the exact fields affected (name or description). It clearly differentiates from recipe_create_tool (creation) and recipe_details_tool (viewing), so an agent can select it correctly 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 implies usage when updating a recipe's name or description, which is clear context. However, it does not explicitly exclude other fields or mention alternative tools for different updates (e.g., adding ingredients), so it lacks explicit when-not guidance but is still understandable in the context of the sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shopping_list_add_missing_toolShopping List Add Missing ToolA
Add all products that are below their minimum stock level to the shopping list.
This is a bulk operation — it scans all products and adds any that are below their configured minimum stock quantity.
| Name | Required | Description | Default |
|---|---|---|---|
| list_id | No | Shopping list ID to add missing products to (default 1). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It does disclose that this is a bulk operation that scans all products and adds under-minimum items. However, it does not mention potential side effects such as duplicate handling, whether existing quantities are updated, or other list modifications beyond adding missing items.
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 concise and front-loaded with the core action in the first sentence. The second sentence adds useful elaboration without redundancy or unnecessary detail.
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 low-complexity tool with one optional parameter and an output schema, the description plus schema provide enough context for correct invocation. Deeper edge-case behavior is not fully described, but nothing essential appears to be missing for normal 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?
Schema coverage is 100%, and the only parameter list_id has its own description in the schema. The tool description adds no additional parameter-level meaning beyond the schema, so the baseline of 3 applies.
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 states a specific action and resource: 'Add all products that are below their minimum stock level to the shopping list.' It clearly differentiates this from sibling tools like shopping_list_add_tool by emphasizing the bulk operation and scanning all products.
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 clearly conveys when to use the tool: when the user wants to add every understocked product in bulk. It does not explicitly name alternatives or explicit exclusions, but the context is clear enough for an agent to distinguish it from manual add tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shopping_list_add_toolShopping List Add ToolC
Add a product to the shopping list.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | Optional free-text note (e.g. "salted" or "organic"). | |
| amount | No | Quantity to buy (default 1). | |
| list_id | No | Shopping list ID (default 1). | |
| product | Yes | Product name (e.g. "Butter") or numeric product ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that the operation adds a product, but does not explain what happens on duplicate products, whether it merges with existing entries, how list_id defaults behave, or any side effects. This is insufficient for a mutation tool.
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 a single, front-loaded sentence with no wasted words. It loses a point because it borders on restating the title and provides no additional context, but it is structurally clean and immediately readable.
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 existence of many closely related shopping-list tools and four parameters, this minimal description is not complete enough. It does not address use cases, edge cases, or how the add operation behaves relative to sibling tools, leaving an agent to guess at key invocation decisions.
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%, and every parameter (product, amount, note, list_id) already has a clear schema description with defaults and examples. The tool description adds no parameter-level meaning beyond the schema, so the baseline score of 3 is appropriate.
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 states a clear verb ('Add') and a specific resource ('product to the shopping list'), making the core operation obvious. It does not explicitly distinguish itself from siblings like shopping_list_add_missing_tool or recipe_add_to_shopping_tool, though the phrasing is specific enough that an agent can infer the primary target.
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 gives no guidance on when to use this tool versus the many shopping-list siblings (view, update, remove, clear, add_missing, set_amount, set_note). There are no exclusions, prerequisites, or alternative tool mentions, so an agent must rely on the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shopping_list_clear_toolShopping List Clear ToolA
Remove ALL items from a shopping list. This cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| list_id | No | Shopping list ID to clear (default 1). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It explicitly warns that the operation cannot be undone and uses 'ALL items' to disclose the destructive scope. It does not cover permissions or partial failure, but the core irreversible behavior is well conveyed.
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?
Two short sentences front-load the core action and add a critical warning. There is no filler, repetition, or unnecessary detail.
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 single-parameter destructive tool with an output schema, the description is adequate: it tells the agent what happens and that it is irreversible. It doesn't explicitly state that the list remains after clearing, but that is inferable and not critical for correct invocation.
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 coverage is 100%, and the list_id parameter is already documented with a default and description. The description adds no extra semantic detail for the parameter, so the baseline 3 applies.
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?
States the action (remove), the resource (shopping list), and the scope (ALL items), distinguishing it from sibling tools that operate on individual items. The irreversibility warning further clarifies intent.
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 mention of 'ALL items' clearly signals bulk clearing, which implies it is not for single-item removal. However, it does not explicitly name alternatives like shopping_list_remove_tool or provide explicit when-to-use conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shopping_list_remove_toolShopping List Remove ToolA
Remove a single item from the shopping list.
Use shopping_list_view_tool first to find the item_id.
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | The shopping list item ID to remove. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It clearly states the operation is a removal (destructive), which is transparent about the mutation. However, it doesn't disclose what happens if the item_id doesn't exist, whether removal is permanent, or any side effects. The prerequisite hint is useful but the behavioral detail is minimal.
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?
Two sentences with zero waste. The core action is stated first, and the prerequisite guidance is a single clear sentence. Every word earns its place.
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 single-parameter removal tool, the description is nearly complete. It states the action, the resource, and the prerequisite for obtaining the parameter. It doesn't describe the return value or error behavior, but with an output schema present and a simple operation, this is a minor 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%, so the schema already documents the item_id parameter. The description adds the context that item_id should be obtained from shopping_list_view_tool, which is helpful but not a deep semantic addition. Baseline 3 is appropriate since the 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 states a specific verb ('Remove'), a specific resource ('a single item from the shopping list'), and distinguishes it from sibling tools like shopping_list_clear_tool (which removes all items) and shopping_list_update_tool (which modifies rather than removes). The scope is unambiguous.
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 instructs to use shopping_list_view_tool first to find the item_id, which is a clear usage prerequisite. It doesn't explicitly mention when not to use this tool (e.g., for bulk removal use shopping_list_clear_tool), but the prerequisite guidance is strong and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shopping_list_set_amount_toolShopping List Set Amount ToolA
Change the quantity for a shopping list item.
A simpler alternative to shopping_list_update_tool when you only need to change the amount.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | New quantity. | |
| item_id | Yes | The shopping list item ID (from shopping_list_view_tool). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the full burden of behavioral disclosure. It only states 'change the quantity' – implying mutation – but does not mention side effects, prerequisites (e.g., item must exist), whether the amount is overwritten or adjusted, or any error conditions. This is a significant gap for a mutation tool.
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?
Two short sentences: the first states the operation, the second provides usage guidance. No redundant phrasing, perfectly front-loaded. Every word earns its place.
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 simple 2-parameter tool with an output schema, the description covers the primary purpose and use case adequately. However, because annotations are absent and the tool mutates data, the description should ideally disclose behavioral expectations (e.g., overwrite semantics, required item existence) to fully complete the picture 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?
Schema coverage is 100%, so the schema already documents both parameters. The description itself adds no extra parameter details beyond what the schema provides, but it does reference the item ID source in the schema. This meets the baseline for full 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 action ('change the quantity') and the resource ('a shopping list item'), which directly distinguishes it from sibling tools like shopping_list_update_tool. The explicit mention of being a simpler alternative reinforces its specific role.
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 tells the agent when to use this tool: 'when you only need to change the amount', and names the alternative (shopping_list_update_tool). This gives clear selection criteria without ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shopping_list_set_note_toolShopping List Set Note ToolA
Set or update the note on a shopping list item.
A simpler alternative to shopping_list_update_tool when you only need to change the note.
| Name | Required | Description | Default |
|---|---|---|---|
| note | Yes | The new note text (e.g. "organic", "2 for 1 deal"). | |
| item_id | Yes | The shopping list item ID (from shopping_list_view_tool). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of behavioral disclosure. It indicates a mutation ('set or update') but does not mention side effects, idempotency, or what happens if the item doesn't exist. For a simple note update, this might be acceptable, but it adds no behavioral context beyond the obvious mutation.
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?
Two sentences with zero wasted words. The core purpose is front-loaded, and the usage distinction follows immediately. Every sentence earns its place.
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 low-complexity tool with two well-documented parameters and an existing output schema, the description is complete. It tells the agent exactly what it does and when to use it, and even references shopping_list_view_tool for obtaining the item ID, which aids correct invocation.
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 schema covers 100% of the parameters (item_id and note) with clear descriptions. The tool description adds no additional parameter semantics, so the baseline of 3 applies per the rubric 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 states a specific verb ('Set or update') and resource ('note on a shopping list item'), and explicitly distinguishes itself from shopping_list_update_tool by calling itself a simpler alternative. This clearly separates it from the sibling tool without needing to inspect the schema.
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?
It explicitly says it's a simpler alternative to shopping_list_update_tool when only the note needs to be changed, providing a clear condition for when to use this tool and implying when not to (i.e., when other fields also need updating). This is direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shopping_list_update_toolShopping List Update ToolB
Update fields on an existing shopping list item.
Use shopping_list_view_tool first to find the item_id.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | JSON object with fields to update. Supported fields include "amount" (number), "note" (string), and "product_id" (integer). Example: '{"amount": 3, "note": "unsalted"}'. | |
| item_id | Yes | The shopping list item ID (from shopping_list_view_tool output). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It doesn't state whether updates are partial merges or full replacements, whether the 'data' JSON replaces the entire item, or what happens to unspecified fields. For a mutation tool with zero annotation coverage, this is a significant gap.
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?
Two sentences with no waste. The core action is front-loaded, and the usage hint is a single follow-up sentence. It earns its place without redundancy.
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?
The tool has an output schema and 100% schema coverage, so the description doesn't need to explain return values or parameters. However, the lack of behavioral transparency about merge semantics and the absence of annotations leave a gap for a mutation tool. It's adequate but not complete.
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 documents both parameters. The description adds the workflow hint about item_id coming from shopping_list_view_tool, which is useful, but doesn't add meaning beyond the schema for the 'data' parameter. Baseline 3 is appropriate.
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 states a specific verb ('Update') and resource ('fields on an existing shopping list item'), which clearly distinguishes it from add/remove/clear siblings. It doesn't enumerate which fields are updatable in the description itself, but the schema covers that, so the purpose is clear enough.
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 instructs to use shopping_list_view_tool first to find the item_id, which is a clear usage prerequisite. It doesn't explicitly say when not to use this tool versus shopping_list_set_amount_tool or shopping_list_set_note_tool, but the general workflow guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shopping_list_view_toolShopping List View ToolA
View all items on a shopping list.
Returns each item with its ID, product name, quantity, and optional note. Item IDs are needed for update and remove operations.
| Name | Required | Description | Default |
|---|---|---|---|
| list_id | No | Shopping list ID (default 1, which is the primary list). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It clearly states it is a view operation and describes the output fields. As a read-only operation with no side effects, this is adequate. Does not disclose edge cases like empty lists or errors, but for a simple list view that is acceptable.
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?
Two sentences: first states purpose, second lists output and mentions the need for IDs. Concise, front-loaded, and no filler.
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 a simple view with one optional parameter and an output schema, the description is complete. It explains what is returned and why you might need it (for update/remove). No missing information an agent needs to call it correctly.
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 covers 100% of parameters (list_id has a description with default and primary list context). The tool description adds no extra semantics beyond the schema, so baseline 3 applies.
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?
States a specific verb and resource: 'View all items on a shopping list.' Clearly indicates a read operation and lists the returned fields (ID, product name, quantity, note), distinguishing it from mutation tools like shopping_list_add_tool or shopping_list_remove_tool.
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?
Clearly implies when to use: when you need to see items on a list. Explicitly mentions that item IDs are needed for update and remove operations, guiding the agent to call this tool before those mutations. Does not name alternatives explicitly but context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_add_toolStock Add ToolB
Add stock for a product (e.g. after a purchase).
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Quantity to add (e.g. 2.0 for two units). | |
| product | Yes | Product name (e.g. "Milk") or numeric product ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals only that stock increases; it does not state whether the product must already exist, which location receives the stock, whether negative amounts are accepted, or any side effects. This matches the calibration precedent for mutation tools with zero annotation coverage.
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?
A single, front-loaded sentence that states the action and a use-case example with no wasted words. It is appropriately sized for a simple tool, though the parenthetical adds context rather than essential behavioral detail.
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?
Although the tool is simple (2 required, fully documented params) and has an output schema, it is a mutating operation with zero annotations. Missing context—location semantics, behavior for unknown products, negative-amount handling—means an agent cannot fully predict the outcome of the call. The description needed to compensate for the annotation gap and does not.
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 'product' and 'amount' already documented in the schema. The description adds no parameter-level meaning beyond what the schema provides, so the baseline 3 applies.
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?
States a specific verb ('add') and resource ('stock for a product'), with a clarifying example ('after a purchase'). The verb clearly separates it from inverse/move siblings like stock_consume_tool and stock_transfer_tool, though no sibling is explicitly named. Lacks the explicit differentiation required for a 5.
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 '(e.g. after a purchase)' parenthetical implies a key usage scenario, and the verb 'add' vs. siblings 'consume'/'transfer' gives implicit routing. However, it never states when not to use it, nor does it point to alternatives such as stock_transfer_tool for moving existing stock between locations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_barcode_lookup_toolStock Barcode Lookup ToolA
Look up a product and its current stock level by exact barcode.
Returns the product name and quantity in stock. For partial or name-based searches, use stock_search_tool instead.
| Name | Required | Description | Default |
|---|---|---|---|
| barcode | Yes | The exact barcode string (e.g. "5000112637922"). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so this description is the only behavioral disclosure. It clearly signals a read-only lookup via 'Look up' and 'Returns the product name and quantity in stock,' and adds exact-match semantics. It doesn't describe not-found behavior, but the tool is simple, non-destructive, and its core behavior is transparent.
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?
Three short sentences front-load the main purpose and returns, then note the sibling alternative. No filler or repeated schema content.
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 one-parameter lookup with an output schema, the description is complete: it specifies purpose, result, and the sibling alternative. An agent has enough context to invoke it correctly without needing more detail.
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%: the barcode parameter already has a clear type and example. The description only restates 'exact barcode' and adds no new semantic information beyond the 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 states a specific action — 'Look up a product and its current stock level by exact barcode' — and names the exact resource and return scope. It also distinguishes from stock_search_tool by emphasizing exact barcode matching.
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?
It explicitly tells the agent when to use the tool: exact barcode searches. It also names an alternative and the condition that should route to it: 'For partial or name-based searches, use stock_search_tool instead.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_consume_toolStock Consume ToolA
Consume stock for a product (reduces the quantity on hand).
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Quantity to consume. | |
| product | Yes | Product name (e.g. "Milk") or numeric product ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the core behavior (reduces quantity on hand). Since no annotations are provided, the description carries the full burden. It lacks details on edge cases like negative stock, error handling, or permission requirements, but the primary effect is transparent.
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?
One short sentence with the verb front-loaded. No unnecessary words or repetition. Perfectly sized for the tool's simplicity.
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?
Adequate for a simple operation with an output schema present, so return values need not be described. However, it does not differentiate from recipe_consume_tool, which also consumes stock, and lacks mention of validation rules (e.g., whether negative amounts are allowed). Minor gaps given the sibling set.
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 covers both parameters with descriptions (product and amount), so the description adds no extra meaning. With 100% schema coverage, baseline 3 is appropriate; the description does not compensate 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?
States a specific verb 'consume' with resource 'stock for a product' and clarifies the effect 'reduces the quantity on hand'. This clearly distinguishes it from siblings like stock_add_tool (adds) and stock_transfer_tool (transfers), making the purpose unambiguous.
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?
No guidance on when to use this tool versus alternatives. It does not mention when to prefer direct stock consumption over recipe_consume_tool, nor any exclusions or prerequisites. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_expiring_toolStock Expiring ToolA
List products that are expiring soon, already expired, or below minimum stock.
Useful for daily checks or deciding what to consume or restock first.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. The verb 'List' implies a read-only operation with no side effects, which is adequate. However, it does not disclose return format details, ordering, or what 'expiring soon' precisely means. Since it's a simple list, this is acceptable but not rich. The description adds minimal behavioral context beyond the implied read-only nature.
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 exactly two sentences with no filler. The core purpose is front-loaded in the first sentence, and the usage context is a single concise follow-up. Every word earns its place.
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 simple list tool with no parameters and an output schema, the description is complete: it states what is listed, the conditions, and a typical use case. It does not explain output formatting, but the output schema covers that. Minor gaps like the exact definition of 'expiring soon' are acceptable given the low complexity.
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 zero parameters, so there is nothing for the description to explain beyond the schema. The baseline for 0 params is 4, and the description correctly omits any parameter details. It adds no confusion and the schema is trivially 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 states a specific verb ('List') and resource ('products') with clear criteria (expiring soon, expired, below minimum stock). This unambiguously distinguishes it from siblings like stock_overview_tool or stock_search_tool, which serve different purposes. The scope is precise and immediately understandable.
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?
It provides practical usage context: 'Useful for daily checks or deciding what to consume or restock first.' This tells the agent when to invoke the tool, though it doesn't explicitly exclude alternatives or name other tools that might be better for different stock queries. The guidance is sufficient for a simple read-only list tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_inventory_toolStock Inventory ToolA
Correct the stock level for a product by setting an absolute quantity.
Use this when the actual count differs from what Grocy shows — e.g. after a manual count. This replaces the current amount, not adds to it.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | Product name (e.g. "Milk") or numeric product ID. | |
| new_amount | Yes | The corrected total stock quantity. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states the key behavior: it replaces the current amount rather than adding to it. It also implies a write operation (correct the stock level). It does not mention side effects like stock journal entries or permission requirements, but the core mutation behavior is transparent. No contradiction with annotations (there are none).
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 two sentences with zero fluff. The purpose is front-loaded in the first sentence, and the use case and replacement behavior follow immediately. Every word earns its place. It is well-structured and easy to scan.
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 simple tool with only two parameters, an output schema present, and no annotations, the description covers everything an agent needs: what it does, when to use it, and the critical behavioral distinction (replace vs. add). It also implicitly differentiates from the many stock siblings. There are no significant 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?
The schema already describes both parameters with 100% coverage, so the baseline is 3. The description adds extra meaning by emphasizing 'absolute quantity' for new_amount, clarifying that the value is a total, not a delta. It also implicitly links the product parameter to the product being corrected. This goes beyond the schema's basic field 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 action: 'Correct the stock level for a product by setting an absolute quantity.' It identifies the specific resource (stock level) and the verb (correct/set). It also distinguishes itself from sibling stock tools by clarifying that it replaces the amount rather than adding or consuming, so an agent can tell it apart from stock_add_tool or stock_consume_tool without opening the schema.
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 says when to use this tool: 'Use this when the actual count differs from what Grocy shows — e.g. after a manual count.' It also contrasts with alternatives by stating 'This replaces the current amount, not adds to it,' which implicitly tells the agent not to use it for incremental adjustments. This is clear, actionable guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_journal_toolStock Journal ToolA
View recent stock transaction history.
Shows the 50 most recent stock changes (purchases, consumption, transfers, inventory corrections). Optionally filter by product.
| Name | Required | Description | Default |
|---|---|---|---|
| product | No | Optional product name or ID to filter by. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must carry the burden. It discloses the 50-entry limit and the types of changes, and the optional filter. It does not explicitly state that the operation is read-only (though 'View' implies it), nor does it describe pagination or output format. Given the presence of an output schema, some of this is covered, but the read-only nature is only implied.
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?
Two sentences with no filler. The primary action is front-loaded, and the detail about the 50 most recent changes and types is concise. No wasted words.
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?
The description covers the essential behavior: what is shown, the limit, the types, and the filter. Since an output schema exists, the return structure is handled. The only minor gap is an explicit statement that the tool is read-only, but 'View' implies that. Overall sufficient for the tool's simplicity.
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% – the 'product' parameter is described as 'Optional product name or ID to filter by.' The description adds a sentence 'Optionally filter by product,' which is redundant. The description does not add meaningful semantic value beyond the 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?
States a specific verb (View) and resource (recent stock transaction history), and lists the change types (purchases, consumption, transfers, inventory corrections). This distinguishes it from other stock tools like stock_overview_tool which likely shows current stock levels. Clear and specific.
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 when you need recent transaction history, but does not explicitly state when to use this tool over siblings like stock_overview_tool or stock_search_tool. No exclusions or alternative routing provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_open_toolStock Open ToolB
Mark stock units as opened (e.g. an opened bottle of milk).
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | Number of units to mark as opened (default 1). | |
| product | Yes | Product name (e.g. "Milk") or numeric product ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of explaining behavior. It only states that units are marked as opened, with no disclosure of side effects, such as whether stock quantity changes, whether the action is reversible, or how this state relates to consumption. This is a significant gap for a mutating stock tool.
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 a single sentence that front-loads the action, resource, and an illustrative example. There is no redundancy or filler; every word earns its place.
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 simple two-parameter schema, full parameter documentation, and presence of an output schema, the description is syntactically sufficient. However, the complete absence of behavioral context and usage differentiation means an agent still cannot fully judge consequences of calling this tool, so it is only minimally complete.
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%, and both parameters already have clear descriptions. The tool description adds only a product example ('Milk'), which slightly reinforces the product parameter but does not substantively improve on the 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 uses a specific verb ('Mark') and resource ('stock units') and clarifies the meaning with an example ('opened bottle of milk'). However, it does not explicitly distinguish this from the related stock_add, stock_consume, or stock_transfer tools, so it stops short of a full 5.
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 example implies the tool should be used when a unit has been opened but not consumed, but the description never states this explicitly. It gives no guidance on when to choose this over sibling tools, leaving the agent to infer the intended lifecycle context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_overview_toolStock Overview ToolA
List all products currently in stock with their quantities.
Returns each product with its ID, name, and amount. Use this to see what is available before adding, consuming, or transferring stock.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It discloses the return content (ID, name, amount) and the fact it lists current stock. It does not explicitly state it is read-only, though it is implied by 'see what is available'. It also lacks any mention of potential performance or ordering behavior, which is acceptable for a simple list tool.
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 two sentences, front-loaded with the core purpose ('List all products currently in stock with their quantities') followed by return details and usage. There is no fluff; every sentence earns its place.
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 there is an output schema, the return format is already specified. The description aligns with that (ID, name, amount) and adds the usage guidance. For a zero-parameter list tool, this is complete.
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 zero parameters, so there is nothing to explain. The schema coverage is trivially 100%. Per the rubric, a baseline of 4 is appropriate for a no-parameter tool, and the description does not need to add anything.
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 states a specific action ('List all products currently in stock') with a clear resource and scope ('all products', 'with their quantities'). It distinguishes itself from siblings by emphasizing 'all' and the overview nature, which contrasts with tools like stock_search or stock_expiring.
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 context: 'Use this to see what is available before adding, consuming, or transferring stock.' This tells the agent when to invoke it (before mutations). It does not explicitly mention alternatives, but the context is clear enough to differentiate from other stock tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_product_info_toolStock Product Info ToolA
Get detailed stock information for a single product.
Returns current amount, best-before date, and product metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| product | Yes | Product name (e.g. "Milk") or numeric product ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It explicitly frames the operation as read-only ('Returns') and lists what it returns: current amount, best-before date, and product metadata. It does not discuss errors or permissions, but for a straightforward lookup this is acceptable.
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 two short sentences with no filler: the action is front-loaded in the first sentence, and the return summary is in the second. Every sentence earns its place.
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 single-parameter, read-only lookup tool with a full output schema, the description covers what the tool does, what input it takes, and what it returns. Nothing necessary for correct invocation is missing.
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%, and the description adds essentially the same meaning as the schema's parameter description ('Product name or numeric product ID'). Since the schema already documents the parameter fully, the description provides no additional semantic value beyond the baseline.
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 uses a specific verb ('Get') and resource ('detailed stock information for a single product'), making its scope immediately clear. The phrase 'single product' distinguishes it from broader stock tools like stock_overview_tool and stock_expiring_tool.
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 clearly communicates the intended context: use it when you need detailed information about one specific product. It does not explicitly name alternatives or state when not to use it, but the 'single product' scoping provides enough guidance for a simple lookup tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_search_toolStock Search ToolA
Search for products by name substring or barcode.
Returns matching product names and IDs. Use this when you are not sure of the exact product name. For a direct barcode lookup with stock details, use stock_barcode_lookup_tool instead.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search string to match against product names and barcodes. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral burden. It discloses that this is a read-only search operation, that it returns matching product names and IDs, and indirectly signals that stock details are not its purpose by routing barcode queries elsewhere. Minor gaps remain around edge cases like empty results, but they are not critical for a simple search tool.
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?
Three short, front-loaded sentences none of which are redundant. The first sentence states the core operation, the second the return value, and the third gives usage context and an alternative.
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 single-parameter search tool with an output schema, the description provides enough information: what to search, what the response contains, when to use it, and which sibling tool to choose for barcode-with-stock-details. Nothing essential is missing.
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 documents the query parameter as matching product names and barcodes. The description adds the useful 'substring' nuance, which is useful but does not dramatically expand the schema's meaning.
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 uses a specific verb ('Search for products') and clearly defines the resource and matching behavior (name substring or barcode). It also distinguishes itself from stock_barcode_lookup_tool by naming that sibling, so an agent can tell them apart.
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?
It explicitly states when to use this tool ('when you are not sure of the exact product name') and points to stock_barcode_lookup_tool as the alternative for direct barcode lookup with stock details. This gives clear route selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
stock_transfer_toolStock Transfer ToolC
Move stock of a product to a different storage location.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Quantity to transfer. | |
| product | Yes | Product name (e.g. "Milk") or numeric product ID. | |
| to_location | Yes | Destination location name (e.g. "Fridge") or numeric location ID. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action without detailing side effects (e.g., decrementing source stock, requiring sufficient quantity), error conditions, or what the output schema contains. For a mutation tool, this is insufficient disclosure of behavior beyond the basic verb.
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 a single, efficient sentence that conveys the essential purpose without extraneous words. It is appropriately front-loaded with the verb and resource. However, given the tool's complexity (a transfer with implicit source logic), it is arguably too brief and omits necessary context, though the conciseness itself is good.
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?
The tool is a mutation with no annotations and no explanation of source determination, side effects, or return value beyond the existence of an output schema (which is not shown). For an agent to invoke this correctly, it needs to know whether the source is inferred from the product's current location, whether the transfer is reversible, and what happens if stock is insufficient. These gaps make the description incomplete.
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 provides descriptions for all three parameters (product, amount, to_location), achieving 100% schema description coverage. The tool description itself adds no parameter-specific meaning beyond the schema, so the baseline of 3 is appropriate; the schema already documents the parameter semantics.
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 uses a specific verb ('Move stock') and identifies the resource ('product') and the action's target ('a different storage location'), which clearly conveys the tool's core function. It distinguishes from add/consume tools by implying a transfer between locations, but it does not explicitly contrast with siblings like stock_add_tool or stock_consume_tool, so a small deduction for lack of explicit differentiation.
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?
There is no guidance on when to use this tool versus alternatives. It does not mention prerequisites (e.g., product must exist, sufficient stock), nor does it explain how the source location is determined since no 'from_location' parameter is present. The description gives no context for selecting this tool over other stock-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
system_info_toolSystem Info ToolA
Show Grocy server version, PHP version, and SQLite version.
Useful for verifying connectivity and checking compatibility.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the tool's read-only nature implicitly by saying 'Show', but does not mention potential failure modes (e.g., connection errors) or whether it makes a network call. For a simple info tool this is acceptable, but it could add more behavioral detail.
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 two short sentences, with the core purpose front-loaded and a concise usage rationale second. No wasted words, perfectly sized for the tool's simplicity.
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 zero-parameter, read-only diagnostic tool with an output schema, the description fully covers what it does and when to use it. Nothing essential is missing; the output schema handles return-value documentation.
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 zero parameters, so the schema is trivially complete and there is nothing to explain. Baseline for 0 parameters is 4; the description adds no parameter info because none is needed.
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 function: 'Show Grocy server version, PHP version, and SQLite version.' It names a specific verb ('Show') and a precise resource (version details), making it unambiguous and distinct from the many sibling tools that perform operations on 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 context for when to use the tool: 'Useful for verifying connectivity and checking compatibility.' It does not explicitly list alternatives or exclusion criteria, but given the tool's unique diagnostic role among siblings, the usage hint is adequate. A more explicit 'use when... not when...' would push it higher.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_complete_toolTask Complete ToolB
Mark a task as done.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The task ID (from tasks_list_tool output). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the outcome ('done') but does not mention idempotency, whether the action can be reversed, side effects, or any state changes beyond the basic status update. This is a significant gap for a mutation tool.
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 a single sentence with zero wasted words. It is front-loaded and appropriately sized for a tool with one parameter, achieving clarity without unnecessary elaboration.
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 simple tool with one documented parameter and an output schema, the description is minimally viable. However, the lack of behavioral details—such as what happens if the task is already done or which sibling tool reverts the action—leaves gaps that the agent must infer, so it is not fully complete.
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%: task_id is documented as 'The task ID (from tasks_list_tool output)'. The description itself adds nothing about the parameter, so the baseline score of 3 applies because the schema already explains it well.
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 'Mark a task as done' uses a specific verb and resource, clearly indicating the action. It does not explicitly differentiate from siblings like task_undo_tool or task_delete_tool, but the verb 'complete' is semantically distinct enough that an agent can infer the purpose 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?
No guidance is provided about when to use this tool versus alternatives such as task_undo_tool or task_delete_tool. There is no mention of prerequisites, sequencing, or conditions under which this should be called, leaving the agent to rely solely on tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_create_toolTask Create ToolB
Create a new task.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Task description (e.g. "Buy birthday present"). | |
| due_date | No | Optional due date in YYYY-MM-DD format. | |
| description | No | Optional longer description or notes. | |
| assigned_to_user_id | No | Optional Grocy user ID to assign the task to. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden of behavioral disclosure. It only states 'Create a new task' without describing side effects, authentication requirements, response behavior, or any constraints beyond the scheme. It implies a write operation but does not explicitly disclose what happens on success or failure.
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 a single sentence with no filler, front-loading the core action. It is concise and to the point, though it could incorporate a small amount of usage context without becoming bloated. It is not a tautology, so it earns a solid score.
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 a create tool with no annotations, the description is too sparse to be considered complete. Although the input schema and output schema cover parameters and return values, the description lacks usage guidance, behavioral context, and any indication of how it fits into the task management workflow alongside sibling tools.
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 of the four parameters (name, due_date, description, assigned_to_user_id) already documented in the input schema. The description itself adds no parameter-specific meaning, but the high schema coverage meets the baseline of 3.
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 uses a specific verb and resource ('Create a new task'), clearly distinguishing it from sibling tools like task_delete_tool, task_complete_tool, task_undo_tool, and tasks_list_tool. An agent can unambiguously tell this is the creation tool within the task CRUD family.
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 no guidance on when to use this tool versus alternatives. It does not mention that this is for adding new tasks only, nor does it contrast with tasks_list_tool, task_complete_tool, or task_delete_tool. No prerequisites or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_delete_toolTask Delete ToolA
Delete a task. This cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The task ID to delete. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. The statement 'This cannot be undone' clearly warns about irreversibility, which is the key behavioral trait for a delete operation. It does not mention permissions or side effects, but the explicit permanence warning is a meaningful disclosure.
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 extremely concise: two short sentences with no filler. The primary action is front-loaded, and the critical irreversibility warning is placed immediately after, making the structure 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?
For a simple one-parameter delete tool with an output schema, the description is nearly complete. It clearly states the action and the permanence of the operation. It doesn't mention what happens if the task doesn't exist or whether there are cascading effects, but those details are likely covered by the output schema and are not essential for basic invocation.
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 schema has 100% description coverage for the only parameter, task_id, which is documented as 'The task ID to delete.' The description adds no additional parameter semantics, so the baseline score of 3 is appropriate since the schema already fully explains the parameter.
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 uses a specific verb and resource ('Delete a task') and is unambiguous about what the tool does. It doesn't explicitly contrast with sibling tools like task_complete_tool or task_undo_tool, but the delete operation is distinct enough that an agent can recognize its purpose.
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 when to use the tool: when a task needs to be permanently removed. However, it gives no explicit guidance about when not to use it or alternatives, such as completing or undoing a task instead. For a simple destructive operation this is adequate but not thorough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tasks_list_toolTasks List ToolA
List tasks (to-do items separate from chores).
By default shows only incomplete tasks.
| Name | Required | Description | Default |
|---|---|---|---|
| show_done | No | If true, also include completed tasks. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It explicitly states the default behavior of showing only incomplete tasks, which is meaningful behavioral context. As a read-only list tool, no side effects are implied or claimed, though side-effect/reversibility caveats are absent.
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 two short, front-loaded sentences. It states the purpose first and the key default behavior second, with no repetition or filler. It is appropriately concise for a tool with one optional parameter.
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 simple one-parameter list tool with an output schema available, the description covers the essential context: what is listed and the default filter. It does not mention how to include completed tasks, but that is fully documented in the input schema, so the lack of redundancy is acceptable.
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 schema already fully documents the single show_done parameter with 100% coverage, including default false. The description's 'By default shows only incomplete tasks' restates that semantics in natural language rather than adding new parameter-level meaning.
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 lists tasks and explicitly scopes tasks as to-do items separate from chores, which helps distinguish it from sibling tools like chores_list_tool. It does not name sibling alternatives, but the semantic distinction is clear and sufficient.
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 parenthetical 'separate from chores' and the default incomplete-task behavior imply when the tool should be used: for to-do items, not chores. However, there is no explicit when-not-to-use or comparison with alternatives such as chores_list_tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
task_undo_toolTask Undo ToolA
Mark a task as not completed.
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | The task ID to undo. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It clearly states the state change (completed → not completed), which is the key behavioral trait. However, it doesn't disclose whether the operation is reversible, whether it affects dependent data, or what the response contains. With no annotations, a 3 is appropriate – it covers the core behavior but not edge cases.
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?
A single sentence with zero waste. The action is stated directly and the description is appropriately sized for a simple one-parameter tool.
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 simple state-reversal tool with one parameter and an output schema, the description is mostly complete. However, it doesn't clarify what happens if the task is already not completed (idempotency), or whether there are any prerequisites. The output schema exists, so return values are covered, but the edge-case behavior is undocumented.
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% – the single parameter task_id is fully described in the schema as 'The task ID to undo.' The description adds no additional meaning beyond the schema, so the baseline 3 applies.
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 'Mark a task as not completed' clearly states the verb (mark) and resource (task) with a specific state change. It distinguishes itself from task_complete_tool and task_delete_tool among siblings, though it doesn't explicitly name them.
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: use this when a task was completed and needs to be reverted. It doesn't explicitly state when to use it vs task_complete_tool or task_delete_tool, but the semantics are clear enough that an agent can infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflow_match_products_preview_toolWorkflow Match Products Preview ToolA
Preview product matches for normalized external items.
Use this when an LLM or another client has already converted a receipt, chat message, or image into a normalized item list and you need Grocy product IDs before applying stock changes.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | JSON array of normalized input items. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. The description signals this is a non-mutating preview ('Preview' and 'before applying stock changes'), which is useful, but it does not disclose behavior around unmatched items, matching confidence, failure behavior, or what happens if no Grocy product is found.
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 two sentences, front-loads the primary action, and uses the second sentence to convey when the tool should be used. No filler or redundant restatement of the title.
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 single-parameter preview tool with an output schema, the description covers what it does, when to use it, the input format, and the non-mutating nature. It could mention expected output structure or edge-case handling, but the output schema likely covers return shape.
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 coverage is 100%, so the baseline is 3. The description adds meaningful context by explaining that 'items' are normalized external items derived from a receipt, chat message, or image, and that the purpose is to obtain Grocy product IDs before stock operations. This goes beyond the schema's bare 'JSON array of normalized input items.'
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 opens with a specific verb and resource: 'Preview product matches for normalized external items.' It clearly states what the tool does and distinguishes it from the broad set of sibling workflow tools by naming the normalized-item preview use case.
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 it: after an LLM/client has converted a receipt, chat message, or image into a normalized item list and Grocy product IDs are needed before stock changes. It gives clear context but does not explicitly name alternatives or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflow_shopping_reconcile_apply_toolWorkflow Shopping Reconcile Apply ToolB
Apply explicit shopping-list reconciliation actions from a preview step.
| Name | Required | Description | Default |
|---|---|---|---|
| actions | Yes | JSON array of action objects from workflow_shopping_reconcile_preview_tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. The description says 'Apply' which implies a mutating action, but it doesn't disclose what the action does to the shopping list (e.g., adds/removes items, updates quantities), whether it's reversible, or what the output schema contains. The description is too terse to provide meaningful behavioral transparency beyond the basic mutation implication.
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 a single sentence that is concise and front-loaded with the key verb and resource. It wastes no words. It could arguably include more detail, but for what it is, it's efficiently structured.
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 has an output schema and only one parameter, the description is somewhat complete for basic invocation. However, the tool is a mutating apply step in a two-phase workflow, and the description doesn't explain the workflow context, what the actions do, or any prerequisites (e.g., must run preview first). The output schema exists but the description doesn't clarify what the apply step returns or how errors are handled. For a mutation tool with no annotations, this is a significant 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% for the single parameter 'actions', which is described as 'JSON array of action objects from workflow_shopping_reconcile_preview_tool.' The description adds a bit of context by naming the source tool, but it doesn't explain the structure of the action objects or what actions are valid. Since the schema already covers the parameter, baseline 3 is appropriate.
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 states a specific verb ('Apply') and resource ('explicit shopping-list reconciliation actions from a preview step'). It clearly identifies the tool's role as the apply counterpart to the preview tool. However, it doesn't explicitly distinguish itself from other apply tools like workflow_stock_intake_apply_tool, though the 'shopping-list reconciliation' qualifier provides reasonable differentiation.
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: it should be used after a preview step, and the actions parameter comes from workflow_shopping_reconcile_preview_tool. This is clear enough for an agent to infer the workflow sequence. However, it doesn't explicitly state when NOT to use it or mention alternatives (e.g., if no preview was run, or if the user wants to modify the shopping list directly, use shopping_list_* tools).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflow_shopping_reconcile_preview_toolWorkflow Shopping Reconcile Preview ToolA
Preview shopping-list removals and amount updates after a purchase.
Provide confirmed Grocy product IDs for what was purchased and this tool will propose explicit shopping-item actions without applying them.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | JSON array of confirmed apply items, each with product_id and amount. | |
| list_id | No | Shopping list ID to reconcile against. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosing behavior. It explicitly states that this tool 'will propose explicit shopping-item actions without applying them,' which is a crucial non-mutating behavior signal. This is clear and prevents an agent from assuming the tool commits changes.
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 two short sentences with no filler. It front-loads the core purpose, then gives the necessary input guidance and the critical non-mutation caveat. Every sentence earns its place.
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 output schema exists and the input schema covers both parameters, the description is sufficiently complete for an agent to invoke this preview tool correctly. It clearly explains what the tool does, what input is needed, and that no changes are applied. It could be slightly richer by naming the corresponding apply tool explicitly, but the sibling list provides that context.
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 coverage is 100%, so the baseline is 3. The description adds value by clarifying that the product IDs are 'confirmed Grocy product IDs' corresponding to purchased items, which gives real-world meaning beyond the schema's terse 'confirmed apply items' phrasing. It does not need to restate the schema's parameter 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 action ('Preview shopping-list removals and amount updates') and identifies the triggering context ('after a purchase'). The phrase 'without applying them' explicitly distinguishes this preview tool from the related apply tool, so an agent can understand its role immediately.
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 gives a clear use context: after a purchase, with confirmed Grocy product IDs, to preview proposed shopping-item actions. It implies the agent should use this before applying changes, and the sibling name workflow_shopping_reconcile_apply_tool makes the alternative obvious, though it does not explicitly say 'use the apply tool to commit these changes.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflow_stock_intake_apply_toolWorkflow Stock Intake Apply ToolA
Apply confirmed stock additions using explicit Grocy product IDs.
Apply only confirmed IDs from a prior preview step. This tool does not resolve names implicitly.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | JSON array of confirmed apply items, each with product_id and amount. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. It does state that the tool does not resolve names implicitly, which is important. However, it doesn't describe the mutation effect on stock, error handling, or any side effects. It's minimal but not misleading.
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?
Two concise sentences, front-loaded with the purpose, followed by a key constraint. No unnecessary words.
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 output schema exists, the description doesn't need to detail returns. It adequately explains the requirement of prior confirmation and the explicit ID constraint. It could name the preview tool explicitly but the reference to 'prior preview step' is sufficient.
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 schema already describes items as a JSON array of confirmed apply items with product_id and amount, giving 100% coverage. The description adds clarity that product IDs must be explicit Grocy IDs and that names are not resolved, which enhances the schema's meaning.
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 applies confirmed stock additions using explicit Grocy product IDs, and explicitly notes it does not resolve names implicitly. This distinguishes it from other stock tools that might resolve names and ties it to the preview workflow.
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?
It explicitly instructs to only apply confirmed IDs from a prior preview step, establishing a clear workflow prerequisite. It also states that names are not resolved implicitly, which guides when not to use this tool. However, it doesn't name specific alternative tools, but the usage context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
workflow_stock_intake_preview_toolWorkflow Stock Intake Preview ToolA
Preview Grocy stock additions for normalized external items.
This uses the same matching contract as workflow_match_products_preview_tool, but is named for the common "I bought these groceries" workflow.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | JSON array of normalized input items. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. The word 'Preview' reasonably implies a non-mutating, look-before-you-apply operation, and the reference to the matching contract adds behavioral context. However, it never explicitly states that no stock changes are made or that this is a dry-run, which would be especially valuable without 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 two sentences, front-loads the core action, and uses the second sentence only to clarify naming and relationship to a sibling tool. Every sentence earns its place with no filler or repetition.
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?
The tool is simple: one required parameter with full schema coverage, and an output schema is present. The description sufficiently communicates the preview purpose and relationship to the matching preview tool. It does not need to explain return values because an output schema exists, though an explicit 'no changes are applied' statement would make it fully complete.
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 already describes the only parameter as a 'JSON array of normalized input items' with 100% coverage. The description adds the phrase 'normalized external items' in context, but provides no additional parameter-level meaning beyond what the schema already exposes. Baseline 3 is appropriate.
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 states a specific operation — 'Preview Grocy stock additions for normalized external items' — and links it to the matching contract of workflow_match_products_preview_tool, giving the agent a clear sense of what the tool does. It is not a tautology and its preview intent is understandable, though the 'same matching contract' phrasing still relies on knowing the sibling tool.
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 when the tool is intended: for the common 'I bought these groceries' workflow, and it references workflow_match_products_preview_tool as a related contract. However, it does not explicitly contrast this with workflow_stock_intake_apply_tool or state when previewing is preferable to applying, so the usage guidance is implied rather than fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
89 tool updates
v0.2.0- First observed
batteries_due_tool - First observed
batteries_list_tool - First observed
batteries_overdue_tool - First observed
battery_charge_tool - First observed
battery_create_tool - First observed
battery_details_tool - First observed
battery_history_tool - First observed
battery_undo_cycle_tool - First observed
battery_update_tool - First observed
calendar_ical_tool - First observed
calendar_sharing_link_tool - First observed
calendar_summary_tool - First observed
catalog_create_tool - First observed
catalog_details_tool - First observed
catalog_list_tool - First observed
catalog_update_tool - First observed
chore_create_tool - First observed
chore_execute_tool - First observed
chore_undo_tool - First observed
chores_list_tool - First observed
chores_overdue_tool - First observed
describe_entity_tool - First observed
discover_candidates_tool - First observed
discover_fields_tool - First observed
entity_create_tool - First observed
entity_delete_tool - First observed
entity_list_tool - First observed
entity_update_tool - First observed
equipment_create_tool - First observed
equipment_details_tool - First observed
equipment_list_tool - First observed
equipment_update_tool - First observed
file_delete_tool - First observed
file_download_tool - First observed
file_upload_tool - First observed
location_create_tool - First observed
locations_list_tool - First observed
meal_plan_add_tool - First observed
meal_plan_list_tool - First observed
meal_plan_remove_tool - First observed
meal_plan_shopping_tool - First observed
meal_plan_summary_tool - First observed
print_battery_label_tool - First observed
print_chore_label_tool - First observed
print_product_label_tool - First observed
print_recipe_label_tool - First observed
print_shopping_list_thermal_tool - First observed
print_stock_entry_label_tool - First observed
recipe_add_ingredient_tool - First observed
recipe_add_to_shopping_tool - First observed
recipe_consume_preview_tool - First observed
recipe_consume_tool - First observed
recipe_create_by_name_tool - First observed
recipe_create_tool - First observed
recipe_details_tool - First observed
recipe_fulfillment_tool - First observed
recipe_remove_ingredient_tool - First observed
recipe_update_tool - First observed
recipes_list_tool - First observed
shopping_list_add_missing_tool - First observed
shopping_list_add_tool - First observed
shopping_list_clear_tool - First observed
shopping_list_remove_tool - First observed
shopping_list_set_amount_tool - First observed
shopping_list_set_note_tool - First observed
shopping_list_update_tool - First observed
shopping_list_view_tool - First observed
stock_add_tool - First observed
stock_barcode_lookup_tool - First observed
stock_consume_tool - First observed
stock_expiring_tool - First observed
stock_inventory_tool - First observed
stock_journal_tool - First observed
stock_open_tool - First observed
stock_overview_tool - First observed
stock_product_info_tool - First observed
stock_search_tool - First observed
stock_transfer_tool - First observed
system_info_tool - First observed
task_complete_tool - First observed
task_create_tool - First observed
task_delete_tool - First observed
task_undo_tool - First observed
tasks_list_tool - First observed
workflow_match_products_preview_tool - First observed
workflow_shopping_reconcile_apply_tool - First observed
workflow_shopping_reconcile_preview_tool - First observed
workflow_stock_intake_apply_tool - First observed
workflow_stock_intake_preview_tool
TDQS
Scored across 89 tools
Most tools have distinct scopes with clear descriptions and cross-references (e.g., stock_search vs stock_barcode_lookup). Some overlap exists between recipe_fulfillment and recipe_consume_preview, and between shopping_list_set_amount and shopping_list_update, but descriptions help disambiguate. Overall, an agent can generally tell tools apart despite the large set.
The dominant pattern is <domain>_<action>_tool, which is predictable and readable. However, singular/plural prefixes are inconsistent (chores_list vs chore_execute, batteries_list vs battery_details), and a few tools like discover_candidates_tool break the pattern. Still, the convention is mostly consistent.
89 tools is far above the typical well-scoped range and feels excessive. Many tools are near-duplicates (six print label tools, multiple shopping-list population tools, and generic entity CRUD alongside domain-specific CRUD). This could be consolidated with parameterized tools, making the surface heavy and harder to navigate.
Core workflows (stock, shopping list, recipes, chores, tasks, meal plans, batteries, equipment) are well covered. However, there are notable lifecycle gaps: recipe deletion, chore update, location update/delete, battery delete, equipment delete, and file listing are missing. Generic entity tools partially mask these gaps but require low-level knowledge, so agents may hit dead ends.
Maintenance
Related MCP Connectors
Manage Superlist tasks and lists in plain language from any MCP-compatible AI agent.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Shared memory and actions for Claude, Kiro, OpenAI, Cursor, and other MCP-compatible AI clients.
Your org's AI agents, tasks, runs, search, and brain files as MCP tools and resources.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceEnables interaction with Grocy's API through MCP, allowing management of grocery inventory, shopping lists, and household tasks via natural language.119 npm29MIT
- AlicenseBqualityBmaintenanceExposes a self-hosted Mealie instance to MCP clients, enabling management of recipes, meal plans, shopping lists, and organizers through natural language.21Eclipse Public 2.0
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to manage household operations including groceries, inventory, chores, recipes, and shopping lists through the Grocy self-hosted ERP system.3MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for Grocy that enables AI assistants to read and manage pantry stock, product catalogs, and shopping lists, with safety checks against common errors.MIT