Skip to main content
Glama

mealie-mcp

A Model Context Protocol (MCP) server for Mealie, the self-hosted recipe manager, meal planner and shopping-list app.

It exposes every endpoint of the Mealie REST API as an MCP tool, so an LLM (Claude, etc.) can read and manage your recipes, meal plans, shopping lists, cookbooks, households, users and more.

  • 🧩 Broad API coverage, sane baseline — one tool per Mealie endpoint, trimmed to a safe baseline (~211 of ~259) so clients aren't overwhelmed and risky endpoints aren't reachable.

  • 🔄 Auto-adapts to your Mealie version — on startup it fetches the OpenAPI schema from your instance, so the tools always match exactly what your server supports. A bundled snapshot is used as a fallback if the fetch fails.

  • 🚀 Zero install — runs straight from npx, ideal for MCPHub, Claude Desktop, Cursor, and any other MCP client.

  • 🔒 Safe by default — admin/server-ops endpoints are never exposed, plus read-only mode and per-category include/exclude filtering to narrow further.

  • 🔑 Flexible auth — a static API token, or an OAuth2 client-credentials flow that fetches and refreshes access tokens for you.


Quick start

You need three things:

  1. Node.js 22+ installed on your machine

  2. The base URL of your Mealie instance, e.g. https://mealie.example.com

  3. A Mealie API token (see Getting an API token)

Run it with npx:

MEALIE_BASE_URL="https://mealie.example.com" \
MEALIE_API_TOKEN="your-long-lived-token" \
npx -y mealie-mcp

The server speaks MCP over stdio, so you normally won't run it by hand — your MCP client launches it for you using the config below.


Related MCP server: Mealie MCP Server

Client configuration

MCPHub / Claude Desktop / Cursor (generic MCP config)

Add an entry to your client's MCP servers config (for Claude Desktop this is claude_desktop_config.json; MCPHub uses an equivalent mcpServers block):

{
  "mcpServers": {
    "mealie": {
      "command": "npx",
      "args": ["-y", "mealie-mcp"],
      "env": {
        "MEALIE_BASE_URL": "https://mealie.example.com",
        "MEALIE_API_TOKEN": "your-long-lived-token"
      }
    }
  }
}

That's the only required configuration. Everything else is optional tuning.


Getting an API token

In Mealie:

  1. Click your user avatar → Manage Your Profile.

  2. Open the API Tokens section (/user/profile/api-tokens).

  3. Create a token, give it a name, and copy it.

The token inherits the permissions of the user that created it, so create it under a user/household with the access you want the LLM to have. To give the model read-only-ish safety, also see MEALIE_READ_ONLY.


Configuration

All configuration is via environment variables.

Variable

Required

Default

Description

MEALIE_BASE_URL

✅

—

Base URL of your Mealie instance, e.g. https://mealie.example.com.

MEALIE_API_TOKEN

–

—

Long-lived Mealie API token (sent as Authorization: Bearer). Most endpoints need it. MEALIE_TOKEN is accepted as an alias. Ignored when OAuth is configured.

MEALIE_OAUTH_TOKEN_URL

–

—

IdP token endpoint. Setting this (plus client id/secret) enables the OAuth2 client-credentials flow, which takes precedence over MEALIE_API_TOKEN. See Authenticating with OAuth.

MEALIE_OAUTH_CLIENT_ID

–

—

OAuth client id (required for the OAuth flow).

MEALIE_OAUTH_CLIENT_SECRET

–

—

OAuth client secret (required for the OAuth flow).

MEALIE_OAUTH_SCOPE

–

—

Optional space-delimited OAuth scopes.

MEALIE_OAUTH_AUDIENCE

–

—

Optional OAuth audience (some IdPs, e.g. Auth0, need it to mint a Mealie-targeted token).

MEALIE_READ_ONLY

–

false

When true, only expose GET endpoints. Great for a safe, read-only assistant.

MEALIE_TOOLS

–

—

Comma-separated allow-list of tool names or category slugs to expose (e.g. recipe,households_shopping_lists). Empty = the full safe baseline.

MEALIE_EXCLUDE_TOOLS

–

—

Comma-separated deny-list of tool names or category slugs to hide further (e.g. groups_seeders,groups_migrations). Applied on top of the always-on baseline trim.

MEALIE_USE_BUNDLED_SPEC

–

false

Skip the live OpenAPI fetch and use the snapshot bundled with the package.

MEALIE_OPENAPI_URL

–

${MEALIE_BASE_URL}/openapi.json

Override where the OpenAPI schema is fetched from.

MEALIE_TOOL_NAME_MAX

–

50

Max length of generated tool names (clamped to 16–64). Lower it if your MCP client prefixes tool names (e.g. mcp__<server>__<tool>) and the combined name exceeds the 64-char API limit.

MEALIE_TIMEOUT

–

60000

Per-request timeout in milliseconds.

MEALIE_RETRIES

–

2

Extra attempts for idempotent (GET) requests that hit a network error or a retryable status (429/5xx), with exponential backoff (clamped to 0–5). Non-GET methods are never retried automatically. Set 0 to disable.

MEALIE_DEBUG

–

false

When true, log each outgoing request (method, path, response status) to stderr. Useful for troubleshooting from your MCP client.

MEALIE_ACCEPT_LANGUAGE

–

—

Optional Accept-Language header forwarded to Mealie (affects e.g. ingredient parsing locale).

MEALIE_ALLOWED_UPLOAD_DIRS

–

—

Comma-separated directories that file uploads may read from. Unset (the default) means uploads are disabled. See Restricting file uploads.

Note: Only path and query parameters are exposed as tool inputs. The few Mealie endpoints that read a custom request header or cookie are not driven through those parameters — Accept-Language is forwarded via MEALIE_ACCEPT_LANGUAGE, and authentication is handled globally.

Restricting file uploads

A handful of Mealie endpoints take a file — recipe images, recipe assets, ZIP imports, backups. For those, the tool argument is a path on the machine running this server, and the server reads that path and sends the bytes to Mealie.

That means anything the server process can read, a tool call can upload. Since the tool call is chosen by a model, and models read recipe pages and other untrusted text, a prompt-injection payload can in principle ask for a path you never intended — ~/.ssh/id_rsa rather than a photo of dinner.

MEALIE_ALLOWED_UPLOAD_DIRS bounds that. Set it to a comma-separated list of directories, and any upload resolving outside all of them is refused:

MEALIE_ALLOWED_UPLOAD_DIRS="/home/me/Pictures/recipes,/srv/mealie/imports"

Paths are compared after symlinks are resolved on both sides, so a symlink inside an allowed directory cannot point out of it, a symlinked allowed directory still works, and /srv/mealie/imports-scratch is not treated as being inside /srv/mealie/imports. If the variable is set but none of its directories exist, every upload is refused rather than silently falling back to unrestricted.

Leaving it unset disables all uploads for security. If you use upload tools, setting this variable is required. If you never upload files, consider dropping those tools entirely with MEALIE_EXCLUDE_TOOLS, or run the server read-only with MEALIE_READ_ONLY=true.

Authenticating with OAuth (client credentials)

By default the server authenticates with a static MEALIE_API_TOKEN. As an alternative — useful for headless/machine-to-machine setups — it can obtain an access token from your identity provider using the OAuth2 client-credentials grant, then send it as the Authorization: Bearer credential and refresh it automatically (proactively before expiry, and reactively on a 401).

MEALIE_OAUTH_TOKEN_URL="https://idp.example.com/oauth/token"
MEALIE_OAUTH_CLIENT_ID="your-client-id"
MEALIE_OAUTH_CLIENT_SECRET="your-client-secret"
# Optional, IdP-dependent:
MEALIE_OAUTH_SCOPE="mealie"
MEALIE_OAUTH_AUDIENCE="https://mealie.example.com"

When these are set, OAuth takes precedence and MEALIE_API_TOKEN is ignored.

Precondition: your Mealie must be a version that validates IdP-issued access tokens as bearer tokens (via the provider's JWKS). The client sends the credentials in the request body (client_secret_post). If your IdP requires HTTP Basic client auth instead, open an issue.

The safe baseline (≈211 of 259 endpoints)

Mealie exposes ~259 endpoints, but the server ships a safe baseline of ~211 so clients aren't overwhelmed and risky endpoints aren't reachable at all. Two groups are permanently excluded — they can't be re-enabled by configuration:

  • Admin / server-ops endpoints (backups, maintenance, multi-tenant user/group/household management, debug, email config, AI providers). These are powerful, rarely what a recipe assistant needs, and a security footgun, so the server never exposes them. Manage your instance through Mealie's own UI/API.

  • Endpoints with little value to an LLM: password-reset and registration flows, the docker healthcheck route, the SSE stream duplicates of plain-JSON recipe-import endpoints, and zip/file download routes that return opaque bytes. (The Users: Authentication category is kept, since the server can authenticate via OAuth.)

You can narrow further from this baseline — but not widen past it — with MEALIE_TOOLS / MEALIE_EXCLUDE_TOOLS using category slugs (or exact tool names). Examples:

# Only recipes, meal plans and shopping lists:
MEALIE_TOOLS="recipe,households_mealplans,households_shopping_lists"

# Baseline, but also drop group seeders + migrations:
MEALIE_EXCLUDE_TOOLS="groups_seeders,groups_migrations"

# Read-only recipe browsing assistant:
MEALIE_READ_ONLY=true
MEALIE_TOOLS="recipe,explore"

On startup the server names any category your settings hide completely, so a missing tool is traceable to the setting responsible rather than looking like a gap in the server:

[mealie-mcp] Exposing 75/259 tools across 12 categories.
[mealie-mcp] MEALIE_TOOLS hides 33 categories entirely: ... (+25 more; MEALIE_DEBUG=true lists them).

How tools are named

Each tool name is derived from the Mealie OpenAPI tag (category) and operation. Uniquely-named operations use their bare operation name (e.g. suggest_recipes); operations whose name is reused across resources (the CRUD verbs get_all, get_one, create_one, update_one, delete_one, …) are prefixed with their category to stay unique and to keep them grouped. All names are kept well under the 64-character tool-name limit. For example:

Tool

Method & path

recipe_crud_get_all

GET /api/recipes

recipe_crud_get_one

GET /api/recipes/{slug}

recipe_crud_create_one

POST /api/recipes

households_shopping_lists_get_all

GET /api/households/shopping/lists

households_mealplans_create_one

POST /api/households/mealplans

app_about_get_app_info

GET /api/app/about

Each tool's input schema declares its path parameters, query parameters and (where relevant) a body object — all generated directly from Mealie's OpenAPI schema, so the model gets accurate, fully-typed arguments.

How tools are described

Mealie's spec is generated by FastAPI, so most operations carry only a title-cased summary (Patch One, Get All) and often no description at all. That is far too little text for a model — or a hub's tool-search index — to match a query like "update recipe" against, so each description is rebuilt from the parts of the spec that do carry meaning: the tag, the path and the HTTP method.

Patch One — Recipe: CRUD. Partially update recipe.
[PATCH /api/recipes/{slug}]
Updates a recipe by existing slug and data.
Keywords: patch_one, patch one, patch recipe, update recipe, edit recipe,
modify recipe, change recipe, write recipe, recipe, recipes, recipe crud,
patch, update, edit, modify, change, write, mealie.

Line

Contents

Headline

The spec summary, its tag, and a generated sentence naming the action and the resource (Partially update recipe.)

Route

The literal [METHOD /path], which clients do match on

Detail

The spec's own prose, when it has any

Keywords

The tool's own name, its category and tag, the resource in both singular and plural, and every verb that means the same thing as the HTTP method

Because the keyword line carries the tool's own name, even a terse name like patch_one is findable by name — no tool has to be renamed to become searchable, so existing MEALIE_TOOLS filters and client allow-lists keep working.

The generated text also spells out words Mealie writes as a single token (mealplans → meal plans), so meal-plan tools are findable by the words a user would actually type. Only the spec's own prose is truncated when a description would exceed the 2000-character budget — the keyword line is never the part that gets cut.

File uploads

Endpoints that upload files (recipe images, ZIP imports, backups, assets, …) take their file fields as absolute paths to local files, which the server reads and sends as multipart form data. The tool description tells the model which fields are file paths.

Troubleshooting: "name: String should have at most 64 characters"

Some MCP clients/hubs (e.g. MCPHub, remote connectors) prefix every tool name with the server name — mcp__<server>__<tool> — and the combined string must stay within the API's 64-character limit. If you hit this error:

  1. Keep the server's name/alias short (mealie is ideal).

  2. Lower the tool-name cap, e.g. MEALIE_TOOL_NAME_MAX=30, until it fits.

  3. The error is global — Claude rejects the whole tool list if any tool (from any server) is too long, so the culprit may be a different server.

Categories

Category

Tools

admin_about

3

admin_ai_providers

4

admin_backups

6

admin_debug

1

admin_email

2

admin_maintenance

5

admin_manage_groups

5

admin_manage_households

5

admin_manage_users

7

app_about

3

explore_categories

2

explore_cookbooks

2

explore_foods

2

explore_households

2

explore_recipes

3

explore_tags

2

explore_tools

2

groups_ai_provider_settings

2

groups_ai_providers

4

groups_households

2

groups_migrations

1

groups_multi_purpose_labels

5

groups_reports

3

groups_seeders

3

groups_self_service

6

households_cookbooks

6

households_event_notifications

6

households_invitations

3

households_mealplan_rules

5

households_mealplans

7

households_recipe_actions

6

households_self_service

7

households_shopping_list_items

8

households_shopping_lists

9

households_webhooks

7

organizer_categories

7

organizer_tags

7

organizer_tools

6

recipe_bulk_actions

8

recipe_comments

6

recipe_crud

23

recipe_exports

2

recipe_images_and_assets

5

recipe_ingredient_parser

2

recipe_shared

2

recipe_timeline

6

recipes_foods

6

recipes_units

6

shared_recipes

4

users_authentication

5

users_crud

6

users_images

1

users_passwords

2

users_ratings

5

users_registration

1

users_tokens

2

utils

1


Development

git clone https://github.com/2fst4u/mealie-mcp.git
cd mealie-mcp
npm install

npm run build       # compile TypeScript to dist/
npm test            # run the test suite (node:test)
npm run typecheck   # type-check without emitting

# Run from source against a Mealie instance:
MEALIE_BASE_URL="https://demo.mealie.io" npm run dev

Updating the bundled OpenAPI snapshot

The server prefers the live schema from your own instance, but the bundled snapshot (used as a fallback) can be refreshed from any Mealie instance:

npm run refresh-spec -- https://demo.mealie.io

Project layout

Path

Purpose

src/index.ts

Entry point: load config + spec, start stdio server.

src/config.ts

Environment-variable configuration.

src/auth.ts

Resolve the Authorization header (static token or OAuth client credentials).

src/openapi-loader.ts

Fetch live OpenAPI schema with bundled fallback.

src/tools.ts

Generate one MCP tool per OpenAPI operation; built-in trimming.

src/schema.ts

Build self-contained JSON Schemas ($ref → $defs).

src/http-client.ts

Execute requests (JSON / urlencoded / multipart / binary).

src/server.ts

MCP server wiring (tools/list, tools/call).

openapi.snapshot.json

Bundled fallback OpenAPI schema.

Releases

Pull requests are type-checked, built and tested on Node 22 and 24. Merges to main that touch source files are built, tested, version-bumped, published to npm and tagged with a matching GitHub Release automatically.


License

MIT

This project is an independent client for Mealie and is not affiliated with the Mealie project.

Available Tools

211 tools
add_favoriteC

Add Favorite — Users: Ratings. Create favorite. [POST /api/users/{id}/favorites/{slug}] Adds a recipe to the user's favorites Keywords: add_favorite, add favorite, create favorite, new favorite, make favorite, write favorite, favorite, favorites, users ratings, users, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
slugYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It implies a write via 'Adds' and shows POST, but never says whether the operation is idempotent when the recipe is already favorited, what permissions are needed, or what is returned/errored.

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

Conciseness3/5

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

The functional sentence and endpoint are front-loaded and short, but the 'Keywords: ...' block is pure filler that merely restates the tool name and synonyms, adding no selection value.

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

Completeness3/5

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

For a simple two-parameter write tool with no annotations or output schema, the description covers the action and endpoint but omits idempotency, auth expectations, and success/failure behavior that an agent would need to call it safely.

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

Parameters3/5

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

Schema coverage is 0%, but the endpoint template '/api/users/{id}/favorites/{slug}' usefully maps id to a user identifier and slug to a recipe identifier, and the schema supplies the uuid4 format for id. It still gives no guidance on where the caller obtains slug or whose user id is expected.

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

Purpose4/5

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

The line 'Adds a recipe to the user's favorites' states a concrete verb and resource, and the endpoint template shows it is scoped to a user. It is distinguishable from siblings like remove_favorite and get_favorites, though the leading fragments ('Users: Ratings. Create favorite.') add noise rather than precision.

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

Usage Guidelines2/5

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

Nothing states when to use this instead of remove_favorite, get_favorites, or set_rating, nor any precondition (e.g., recipe must exist, user must be the caller). Usage is only implied by the verb.

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

add_recipe_ingredients_to_listC

Add Recipe Ingredients To List — Households: Shopping Lists. Create recipe. [POST /api/households/shopping/lists/{item_id}/recipe] Keywords: add_recipe_ingredients_to_list, add recipe ingredients to list, create recipe, add recipe, new recipe, make recipe, write recipe, recipe, households shopping lists, households, shopping, lists, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden and discloses almost nothing: it does not say the operation mutates a shopping list, what happens to existing items, whether it is idempotent, or what permissions are needed. The misleading 'Create recipe' phrase actively adds confusion rather than transparency.

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

Conciseness2/5

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

The purpose is front-loaded, but roughly half the text is a ~50-term keyword dump ('recipe, households, shopping, lists, create, add, new, make, write, post, mealie') that consumes space without adding meaning. Wasteful rather than concise.

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

Completeness2/5

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

No annotations, no output schema, and 0% parameter description coverage for a mutating endpoint that takes a complex nested bulk body. An agent cannot determine authentication needs, response shape, or how to construct the body from this definition alone; it covers the endpoint and rough purpose but little else.

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

Parameters2/5

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

Schema description coverage is 0% and the body is a deeply nested array of ShoppingListAddRecipeParamsBulk objects (recipeId, recipeIngredients, recipeIncrementQuantity) with no field descriptions anywhere. The description compensates only implicitly through its title, giving no semantics for item_id, recipeId, or the increment quantity.

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

Purpose3/5

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

The title phrase 'Add Recipe Ingredients To List' names a specific verb and resource, so the core purpose is identifiable. However, the immediately following 'Create recipe' contradicts that framing (this endpoint attaches recipe ingredients to an existing shopping list, it does not create a recipe), and there is no differentiation from the sibling 'add_single_recipe_ingredients_to_list' or 'remove_recipe_ingredients_from_list'.

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

Usage Guidelines2/5

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 bulk endpoint versus 'add_single_recipe_ingredients_to_list', nor any prerequisite or context statement. The remainder of the text is a keyword dump, not usage instruction.

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

add_single_recipe_ingredients_to_listC

(DEPRECATED) Add Single Recipe Ingredients To List — Households: Shopping Lists. Create recipe. [POST /api/households/shopping/lists/{item_id}/recipe/{recipe_id}] Keywords: add_single_recipe_ingredients_to_list, add single recipe ingredients to list, create recipe, add recipe, new recipe, make recipe, write recipe, recipe, households shopping lists, households, shopping, lists, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
item_idYes
recipe_idYes

TDQS

C2.1/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It implies mutation via 'add' and the POST verb, and flags deprecation, but says nothing about permissions, side effects on existing list items, or the presence of a request body (recipeIngredients / recipeIncrementQuantity).

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

Conciseness2/5

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

The deprecation and endpoint are front-loaded, which is good, but the 'Keywords:' block is a long list of near-duplicate search terms (create/add/new/make/write recipe) that bloats the definition without adding meaning.

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

Completeness2/5

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

This is a mutating tool with no annotations, no output schema, and 0% parameter documentation, so the description should do more work. It names the endpoint but omits request body structure, permissions, and the deprecation replacement, leaving the agent under-informed.

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

Parameters1/5

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

Schema description coverage is 0% across 3 parameters, and the description adds no meaning for item_id, recipe_id, or the optional body. The keyword block ('post', 'create') adds noise rather than parameter guidance, so it fails to compensate for the coverage gap.

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

Purpose3/5

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

The title/name phrase 'Add Single Recipe Ingredients To List' gives a specific verb+resource, and the bracketed POST path pins down the exact endpoint and its two path params. However the body line 'Create recipe' contradicts the add-to-list purpose and the description never distinguishes this single-recipe variant from the sibling add_recipe_ingredients_to_list.

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

Usage Guidelines2/5

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

The '(DEPRECATED)' marker is the only usage signal, and it is not followed by a named replacement such as add_recipe_ingredients_to_list, so an agent is told to avoid the tool but not what to use instead. No context on when adding a recipe's ingredients to a list is appropriate.

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

app_about_get_app_infoC

Get App Info — App: About. Get about. [GET /api/app/about] Get general application information Keywords: app_about_get_app_info, app about get app info, get about, fetch about, read about, retrieve about, view about, show about, about, app about, app, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.7/5.0
Behavior2/5

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. The '[GET /api/app/about]' path and the 'read-only' keyword imply a safe read, but the description says nothing about authentication requirements, rate limits, or what the response contains beyond 'general application information.'

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

Conciseness2/5

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

The description is bloated with redundant phrases ('Get App Info,' 'App: About,' 'Get about') and an exhaustive keyword dump that duplicates the name. The one useful sentence ('Get general application information') is buried at the end instead of being front-loaded.

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

Completeness3/5

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

For a zero-parameter read tool this is minimally adequate: an agent knows it can call it with no arguments to get app info. But with no output schema, no annotations, and only 'general application information' to describe the return, the agent cannot anticipate what fields or configuration values it will receive.

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

Parameters4/5

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

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing parameter-related for the description to clarify or omit.

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

Purpose3/5

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

The description ends with a substantive statement, 'Get general application information,' which gives the tool a verb and resource. However, the leading phrases ('Get App Info — App: About. Get about.') are largely tautological restatements of the name, and nothing distinguishes this 'general application information' from siblings like get_startup_info or get_app_theme.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no conditions, and no mention of alternatives. The trailing keyword list ('fetch about, read about, retrieve about') is search fodder, not usage guidance, leaving the agent to infer the tool's role from its name alone.

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

bulk_categorize_recipesD

Bulk Categorize Recipes — Recipe: Bulk Actions. Create categorize. [POST /api/recipes/bulk-actions/categorize] Keywords: bulk_categorize_recipes, bulk categorize recipes, create categorize, add categorize, new categorize, make categorize, write categorize, categorize, recipe bulk actions, recipes, bulk actions, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

D1.8/5.0
Behavior2/5

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 reveals only that the operation is a POST bulk action, but does not explain whether categories replace or append to existing ones, what permissions are required, or whether the change is reversible.

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

Conciseness2/5

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

The first line identifies the tool, but the remainder is keyword-stuffed SEO text that does not earn its place. The structure is noisy rather than front-loaded with useful details.

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

Completeness1/5

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

For a bulk mutation tool with no annotations and no output schema, the description is inadequate. It omits the body semantics, usage context, and behavioral effects needed to call the tool correctly.

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

Parameters1/5

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 explain the single required body parameter or its nested 'recipes' and 'categories' fields. The agent gets no semantic guidance beyond the schema's structural titles.

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

Purpose2/5

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

The description largely restates the tool name, cycling through 'Bulk Categorize Recipes' and 'Create categorize' without explaining what categorizing actually means or how it differs from sibling bulk actions like bulk_tag_recipes. The endpoint and keyword list add no clarifying substance.

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

Usage Guidelines2/5

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 bulk_tag_recipes, bulk_settings_recipes, or bulk_delete_recipes. The keyword list provides search terms but no context or exclusions.

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

bulk_delete_recipesC

Bulk Delete Recipes — Recipe: Bulk Actions. Delete recipe. [POST /api/recipes/bulk-actions/delete] Keywords: bulk_delete_recipes, bulk delete recipes, delete recipe, create recipe, add recipe, new recipe, make recipe, write recipe, recipe, recipes, recipe bulk actions, bulk actions, delete, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.3/5.0
Behavior2/5

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 for a destructive bulk operation. It reveals only the route and HTTP method (POST .../bulk-actions/delete); it says nothing about irreversibility, whether deletion is soft or hard, permission requirements, or failure semantics when some IDs are invalid.

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

Conciseness2/5

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

The name and endpoint are front-loaded, but the body is dominated by a long keyword dump that repeats the tool name and adds irrelevant create/add/new verbs. The useful content could fit in one sentence, so most of the text does not earn its place.

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

Completeness2/5

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

For a destructive bulk mutation with no annotations, no output schema, and an undocumented parameter, the description should at minimum cover the deletion target format and consequences. Instead it stops at the route and keyword padding, leaving the agent without enough to invoke it confidently.

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

Parameters2/5

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

Schema description coverage is 0% for the single required body parameter containing a 'recipes' array, so the description must compensate and does not. The word 'bulk' weakly implies multiple records per call, but nothing clarifies whether the array holds IDs, slugs, or names, nor any size limit.

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

Purpose3/5

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

The opening states a specific verb+resource ('Bulk Delete Recipes ... Delete recipe'), so the core action is identifiable. However, there is no differentiation from close siblings such as recipe_crud_delete_one, delete_many, or shared_recipes_delete_one, and the keyword block injects contradictory verbs ('create recipe, add recipe, new recipe, make recipe'), which muddies rather than sharpens the purpose.

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

Usage Guidelines2/5

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

No when-to-use guidance is given: nothing says to prefer this over recipe_crud_delete_one for single deletes or delete_many for other resources, nor any prerequisite (e.g., confirmation, ownership checks). The keyword list is not usage guidance, so the agent gets no routing information.

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

bulk_export_recipesC

Bulk Export Recipes — Recipe: Bulk Actions. Export recipe. [POST /api/recipes/bulk-actions/export] Keywords: bulk_export_recipes, bulk export recipes, export recipe, create recipe, add recipe, new recipe, make recipe, write recipe, recipe, recipes, recipe bulk actions, bulk actions, export, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.3/5.0
Behavior2/5

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, and it adds almost nothing: it discloses only the HTTP method (POST) via the route. It does not say whether this triggers a background report/job, whether the export is asynchronous, what permissions are needed, or how the result is delivered.

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

Conciseness2/5

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

The useful content is one sentence; the remainder is redundant keyword padding that repeats the tool name and enumerates near-synonyms ('bulk export recipes, export recipe, create recipe, add recipe...'). This bloats the definition and injects noise rather than front-loaded meaning.

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

Completeness2/5

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

With no annotations, no output schema, and 0% parameter coverage, the description should explain the parameter contract and what the export returns (e.g., a downloadable report). It covers the endpoint only, leaving the agent unable to call it correctly or predict the outcome.

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

Parameters2/5

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

Schema description coverage is 0% and the single required parameter is a nested object (body with recipes[] and an exportType enum). The description says nothing about supplying a recipe list or the accepted export format, so it fails to compensate for the schema gap; only the name loosely implies a recipe list.

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

Purpose3/5

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

The description does identify a verb+resource ('Export recipe') and give the POST endpoint, so the basic action is discernible. However, the trailing keyword list mixes in contradictory verbs — 'create recipe, add recipe, new recipe, make recipe, write recipe' — which muddies whether this tool exports or creates. It also gives no differentiation from siblings such as purge_export_data or create_recipe_from_html_or_json.

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

Usage Guidelines2/5

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

No statement of when to use this tool versus alternatives. The phrase 'Recipe: Bulk Actions' hints at a bulk context but never says when bulk export is appropriate or what distinguishes it from single-recipe retrieval or purge_export_data.

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

bulk_settings_recipesD

Bulk Settings Recipes — Recipe: Bulk Actions. Create setting. [POST /api/recipes/bulk-actions/settings] Keywords: bulk_settings_recipes, bulk settings recipes, create setting, add setting, new setting, make setting, write setting, setting, settings, recipe bulk actions, recipes, bulk actions, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

D1.5/5.0
Behavior1/5

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 does not explain that this is a bulk mutation affecting multiple recipes, what permissions are required, whether existing settings are overwritten, or what the POST response contains.

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

Conciseness1/5

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

The definition is dominated by a long SEO-style keyword list that repeats the tool name and generic verbs. Only the endpoint line conveys factual information, and the rest does not earn its place.

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

Completeness1/5

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

With no annotations, no output schema, and no parameter descriptions, the description should compensate for missing structured guidance. Instead it gives an inaccurate "create" framing and omits the bulk-assignment behavior 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.

Parameters1/5

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 single body parameter. It does not explain that body.recipes identifies target recipes or that body.settings contains locked, public, showAssets, and other boolean flags.

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

Purpose2/5

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

The description says "Create setting" and lists the endpoint, but the input schema shows the tool actually bulk-applies settings to a list of recipes. This makes the purpose misleading rather than simply vague. It also fails to distinguish itself from sibling bulk tools like bulk_tag_recipes or bulk_categorize_recipes.

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

Usage Guidelines2/5

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

The description provides no when-to-use guidance, no prerequisites, and no alternatives among the many sibling tools. The keyword list contains "bulk actions" and "recipes" but does not tell an agent when this bulk settings operation is appropriate instead of other bulk recipe tools.

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

bulk_tag_recipesD

Bulk Tag Recipes — Recipe: Bulk Actions. Create tag. [POST /api/recipes/bulk-actions/tag] Keywords: bulk_tag_recipes, bulk tag recipes, create tag, add tag, new tag, make tag, write tag, tag, recipe bulk actions, recipes, bulk actions, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

D1.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, yet it discloses only that this is a POST to /api/recipes/bulk-actions/tag. It says nothing about whether tags must pre-exist, how duplicates are handled, whether assignment is additive or replacing, or permission requirements.

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

Conciseness1/5

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

The description is dominated by a long comma-separated keyword-stuffing block ('bulk_tag_recipes, bulk tag recipes, create tag, add tag, new tag, make tag, write tag...') that adds no semantic value. Front-loaded header is present but buried under noise.

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

Completeness1/5

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

With no annotations, no output schema, and 0% parameter coverage, the description should compensate heavily. Instead it omits the request body structure, tag/recipe semantics, and any return or error behavior, leaving the definition inadequate for correct invocation.

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

Parameters1/5

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

Schema description coverage is 0% and the single 'body' parameter is a nested AssignTags object with required 'tags' and 'recipes' arrays. The description provides no explanation of these fields, adding no meaning beyond the bare schema, so an agent cannot learn the required shape from the text.

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

Purpose3/5

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

The name 'bulk_tag_recipes' and the header 'Bulk Tag Recipes' convey a bulk tagging operation, which is close to the schema's AssignTags (recipes + tags) intent. However, the body text 'Create tag' is imprecise and mildly misleading — the endpoint assigns existing tags to recipes rather than creating a tag. No differentiation from siblings like bulk_categorize_recipes or organizer_tags_create_one.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives despite many nearby siblings (bulk_categorize_recipes, bulk_settings_recipes, delete_recipe_tag). The tool name implies bulk tagging but the description never states the conditions that select it.

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

create_api_tokenC

Create Api Token — Users: Tokens. Create api token. [POST /api/users/api-tokens] Create api_token in the Database Keywords: create_api_token, create api token, add api token, new api token, make api token, write api token, api token, api tokens, users tokens, users, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries full behavioral burden. It says the token is created 'in the Database' but does not disclose whether the token is shown only once, its lifetime, required auth, or that it is a long-lived (LongLiveTokenIn) token. This is a significant gap for a security-sensitive credential-creation tool.

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

Conciseness2/5

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

The core sentence is short and front-loaded, but the trailing keyword list ('create, add, new, make, write, post, mealie') is pure filler that adds no semantic value and bloats the definition.

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

Completeness2/5

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

For a credential-minting mutation with no annotations, no output schema, and 0% parameter documentation, the description should explain token lifetime, visibility, and required permissions. It leaves all of that to guesswork.

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

Parameters2/5

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

Schema coverage is 0% and the nested body object is undocumented. The description adds no explanation of the 'name' and optional 'integrationId' (default 'generic') fields, so an agent cannot know what values are valid or what the integration id does.

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

Purpose4/5

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

States a clear verb+resource: 'Create api token' with the HTTP endpoint POST /api/users/api-tokens. It distinguishes from siblings like get_token, refresh_token, create_invite_token by naming the exact resource, though the keyword spam dilutes the signal.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance. It does not clarify how this long-lived API token differs from get_token, refresh_token, or oauth_login, leaving the agent to infer selection among several token-related siblings.

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

create_invite_tokenC

Create Invite Token — Households: Invitations. Create invitation. [POST /api/households/invitations] Keywords: create_invite_token, create invite token, create invitation, add invitation, new invitation, make invitation, write invitation, invitation, invitations, households invitations, households, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.5/5.0
Behavior2/5

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, and it discloses almost nothing: no required role/permission, no token expiry or lifecycle, no confirmation that it only creates (not sends) the invitation, no indication of what the response contains. Only the POST verb implies mutation.

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

Conciseness2/5

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

The core sentence is front-loaded and fine, but it is followed by a long keyword-stuffing block that repeats the same terms ('create invitation, add invitation, new invitation, make invitation, write invitation') with no informational value. The useful content is roughly one line out of many.

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

Completeness2/5

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

For a mutation tool with no annotations, no output schema, and zero parameter documentation, the description should explain permissions, the meaning of 'uses', and how the created token is consumed. None of that is present, leaving the agent unable to call it confidently beyond guessing.

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

Parameters2/5

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 parameter meaning at all. The most important field, 'uses' (presumably how many times the invite token can be redeemed), and the optional groupId/householdId scoping are entirely unexplained in both the schema and the description.

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

Purpose4/5

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

States a specific verb+resource ('Create invitation', 'Create Invite Token') and gives the HTTP route POST /api/households/invitations, so the agent knows what the tool does. However, it never distinguishes itself from close siblings like email_invitation, get_invite_tokens, or create_api_token — the keyword blob lists generic terms ('create', 'add', 'new', 'make', 'write') instead.

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

Usage Guidelines2/5

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

No statement of when to use this versus email_invitation (which presumably sends the invite) or get_invite_tokens (which lists them). The only routing signal is the 'Households: Invitations' grouping and the endpoint path, which the agent must infer.

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

create_manyC

Create Many — Households: Shopping List Items. Bulk create shopping item. [POST /api/households/shopping/items/create-bulk] Keywords: create_many, create many, bulk create shopping item, create shopping item, add shopping item, new shopping item, make shopping item, write shopping item, shopping item, shopping items, households shopping list items, households, shopping, items, create bulk, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it only supplies the HTTP verb and path (POST .../create-bulk). It omits important traits for a bulk mutation: auth requirements, whether it is atomic or partially succeeds, duplicate handling, and whether items are appended or replace existing ones.

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

Conciseness2/5

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

The first two sentences are front-loaded and useful, but they are followed by a long keyword/synonym dump ('create_many, create many, bulk create shopping item... mealie') that is pure noise and inflates the definition without adding meaning.

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

Completeness2/5

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

For a bulk mutation over a complex nested payload with no annotations and no output schema, the description should explain required inputs, auth, and failure semantics. It supplies only the endpoint, leaving the agent under-informed for a non-trivial write operation.

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

Parameters1/5

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

The single 'body' parameter is an array of ShoppingListItemCreate with 0% schema description coverage, and the description says nothing about the payload shape, the required shoppingListId, or the per-item fields (food, unit, quantity, position). An agent gets no semantic help about parameters from the description.

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

Purpose4/5

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

The description states a specific verb and resource: 'Bulk create shopping item' scoped to 'Households: Shopping List Items', which is clearer than the bare name 'create_many'. It does not, however, explicitly contrast itself with siblings like households_shopping_list_items_create_one, so the reader must infer that 'bulk' is the distinguishing factor.

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

Usage Guidelines2/5

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

There is no when-to-use guidance. Nothing says when to prefer this bulk endpoint over households_shopping_list_items_create_one vs add_recipe_ingredients_to_list, nor any prerequisite such as needing an existing shopping list id. The keyword list adds no routing information.

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

create_random_mealC

Create Random Meal — Households: Mealplans. Create random. [POST /api/households/mealplans/random] create_random_meal is a route that provides the randomized functionality for mealplaners. It operates by following the rules set out in the household's mealplan settings. If no settings are set, it will return any random meal.

Refer to the mealplan settings routes for more information on how rules can be applied to the random meal selector. Keywords: create_random_meal, create random meal, create random, add random, new random, make random, write random, random, households meal plans, households mealplans, households, meal plans, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It does disclose genuine behavior beyond the name: selection is governed by household mealplan rules and degrades to an arbitrary meal when no rules exist. It does not say that this writes a new entry into the mealplan, what a non-random repeated call would do, or whether permissions are required, leaving meaningful gaps for a mutation route.

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

Conciseness2/5

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

The useful content is two sentences; the rest is a long keyword dump ('Keywords: create_random_meal, create random meal, create random, add random ... mealie') that repeats the tool name and synonyms without adding semantics. Space that could document the input parameter is spent on SEO filler.

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

Completeness2/5

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

There is no output schema and no annotations, so the description should cover what is created and returned, plus permission requirements. Instead it explains only the randomization rule source; the actual artifact created (a dated mealplan entry of a randomly chosen recipe) and the response shape are unstated, and the sole parameter is undocumented.

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

Parameters2/5

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

Schema description coverage is 0%, and the description adds nothing about the single required 'body' parameter — it never mentions 'date' (the sole required field) or 'entryType' (which defaults to 'dinner'). An agent must open the schema to learn anything about inputs, and even then the enum values for entryType carry no explanation.

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

Purpose4/5

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

The description gives a specific verb+resource: it creates a randomly-selected mealplan entry under a household, via POST /api/households/mealplans/random. That distinguishes it reasonably well from the sibling households_mealplans_create_one (manual entry creation), though the sibling is never named. The scattered keyword block dilutes but does not obscure the core statement.

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

Usage Guidelines3/5

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

It explains the operating context (randomization follows the household's mealplan settings, falling back to any random meal if none exist) and points to the mealplan settings routes. However, it never states when to prefer this over households_mealplans_create_one, nor any prerequisites or side effects, so usage is only implied.

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

create_recipe_from_html_or_jsonC

Create Recipe From Html Or Json — Recipe: CRUD. Create recipe. [POST /api/recipes/create/html-or-json] Takes in raw HTML or a https://schema.org/Recipe object as a JSON string and parses it like a URL Keywords: create_recipe_from_html_or_json, create recipe from html or json, create recipe, add recipe, new recipe, make recipe, write recipe, recipe, recipes, recipe crud, create, html or json, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It reveals the method (POST) and that content is "parsed like a URL", but says nothing about authentication requirements, whether duplicates are created, what the response returns, or how parsing failures are handled.

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

Conciseness3/5

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

The substantive content is front-loaded and reasonably tight, but the trailing keyword list is pure SEO padding that repeats the name and adds no decision-relevant information, bloating the definition.

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

Completeness2/5

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

For a mutation tool with no annotations, no output schema, and 0% parameter documentation, the description leaves too much unsaid: no return shape, no permissions/auth context, and no explanation of the required nested body object.

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

Parameters2/5

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. It only loosely explains the required "data" string (HTML or schema.org JSON) and completely omits the "url", "includeTags", and "includeCategories" fields and the "body" wrapper structure that the schema requires.

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

Purpose4/5

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

States a specific verb and resource ("Create recipe") and clarifies the accepted input formats: raw HTML or a schema.org Recipe JSON string. The name itself distinguishes it from the zip/image siblings, but the description never names or contrasts those alternatives explicitly.

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

Usage Guidelines3/5

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

Usage is only implied through the input-format constraint ("Takes in raw HTML or a https://schema.org/Recipe object as a JSON string"), which implicitly routes agents here rather than to create_recipe_from_zip, create_recipe_from_image, or parse_recipe_url. No explicit when-to-use or exclusion guidance is given.

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

create_recipe_from_imageC

Create Recipe From Image — Recipe: CRUD. Create image. [POST /api/recipes/create/image] Create a recipe from an image using OpenAI. Optionally specify a language for it to translate the recipe to. Keywords: create_recipe_from_image, create recipe from image, create image, add image, new image, make image, write image, image, recipe crud, recipes, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesFile fields (images) must be absolute paths to local files to upload.
translateLanguageNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations the description carries the full burden. It usefully discloses that OpenAI performs the extraction, implying external processing, but says nothing about auth requirements, failure/error behavior, cost, or what happens to the uploaded image. This is thin 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.

Conciseness3/5

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

The core sentence is efficient, but the 'Create image.' fragment and a long trailing keyword dump (recipe crud, recipes, create, add, new, make, write, post, mealie) are low-value filler that dilute the front-loaded message.

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

Completeness2/5

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

For a two-parameter, no-annotation, no-output-schema write tool that ingests uploaded files, the description omits auth/permission context, supported image types, failure modes, and return behavior. It covers the headline purpose but not enough for an agent to call it confidently.

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

Parameters3/5

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

Schema coverage is 50%; the description adds meaning for translateLanguage ('a language for it to translate the recipe to'), clarifying intent beyond the bare field name. The images upload parameter's semantics (absolute local paths) are only in the schema, so the description does not fully compensate for the coverage gap.

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

Purpose4/5

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

The description states a specific verb+resource ('Create a recipe from an image using OpenAI') that clearly distinguishes it from other ingestion siblings like create_recipe_from_html_or_json or parse_recipe_url. The noise fragment 'Create image.' blurs it slightly, and no sibling is named explicitly, but the core purpose is unmistakable.

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

Usage Guidelines2/5

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

It notes that a translation language can optionally be supplied, which is usage-adjacent, but never says when to choose this tool over create_recipe_from_html_or_json, create_recipe_from_zip, or parse_recipe_url. No prerequisites 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.

create_recipe_from_zipC

Create Recipe From Zip — Recipe: CRUD. Create recipe. [POST /api/recipes/create/zip] Create recipe from archive Keywords: create_recipe_from_zip, create recipe from zip, create recipe, add recipe, new recipe, make recipe, write recipe, recipe, recipes, recipe crud, create, zip, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesFile fields (archive) must be absolute paths to local files to upload.

TDQS

C2.7/5.0
Behavior2/5

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, and it delivers almost nothing beyond 'creates a recipe'. It does not say whether this mutation is idempotent, what happens on a malformed archive, whether the recipe is merged or duplicated, or what auth/permissions are needed. The method/path is disclosed but that is the only behavioral signal.

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

Conciseness2/5

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

The header is front-loaded and readable, but the trailing 'Keywords:' list is pure filler that repeats the tool name in multiple near-synonymous forms. That block consumes roughly half the text and earns nothing for an agent trying to decide whether to call the tool.

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

Completeness2/5

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

For a mutation tool with no annotations and no output schema, the description should at minimum clarify auth needs, expected archive contents, and the resulting behavior. It instead provides retrieval keywords, leaving the agent without enough context to distinguish this from the other recipe-creation siblings.

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

Parameters3/5

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

Schema description coverage is 100% and the single 'archive' parameter is already documented in the schema as a file field requiring an absolute local path. The description adds no syntax, format, or size constraints on top of this, so the baseline 3 for high schema coverage is appropriate.

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

Purpose4/5

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

The description states a specific verb+resource: it creates a recipe from a zip archive, and the endpoint path [POST /api/recipes/create/zip] reinforces that. It implicitly distinguishes itself from sibling creators like create_recipe_from_html_or_json and create_recipe_from_image by naming the zip/archive input, though it never explicitly contrasts them.

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

Usage Guidelines2/5

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

There is no when-to-use guidance. The description never says when to prefer this over create_recipe_from_html_or_json, create_recipe_from_image, or recipe_crud_create_one, nor any prerequisite (e.g., archive must exist locally, auth required). The keyword list ('add recipe, new recipe...') is retrieval bait, not usage guidance.

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

delete_api_tokenC

Delete Api Token — Users: Tokens. Delete api token. [DELETE /api/users/api-tokens/{token_id}] Delete api_token from the Database Keywords: delete_api_token, delete api token, remove api token, destroy api token, write api token, api token, api tokens, users tokens, users, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
token_idYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it only implies permanence via 'Delete ... from the Database'. It omits whether the deletion is reversible, what auth/permissions are required, whether the token's sessions are immediately invalidated, and what the response looks like. The 'write api token' keyword also muddies the destructive nature of the operation.

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

Conciseness2/5

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

The core sentence is front-loaded, but it is buried under a repetitive SEO keyword dump ('delete_api_token, delete api token, remove api token, destroy api token, write api token...') that includes an unrelated term ('mealie') and restates the tool name many times.

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

Completeness2/5

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

For a destructive mutation with no annotations, no output schema, and an undocumented parameter, the definition should disclose auth requirements, irreversibility, and side effects. None of that is present, leaving the agent without the information needed to call this safely.

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

Parameters3/5

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

Schema coverage is 0% and the single parameter 'token_id' is undocumented in both schema and description. The endpoint template at least reveals that token_id is a path parameter identifying the target token, which is marginal added meaning, but format, source, or acquisition of the ID is never explained.

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

Purpose4/5

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

States a specific verb and resource ('Delete api token') and even pins the exact endpoint (DELETE /api/users/api-tokens/{token_id}), so the agent knows precisely what the call does. It does not, however, distinguish itself from siblings like create_api_token or get_token, leaving that differentiation to the reader.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of alternatives (e.g., refresh_token vs delete_api_token), and no prerequisites or warnings about irreversible token revocation. The keyword list adds noise rather than usage context.

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

delete_manyC

Delete Many — Households: Shopping List Items. Delete shopping item. [DELETE /api/households/shopping/items] Keywords: delete_many, delete many, delete shopping item, remove shopping item, destroy shopping item, write shopping item, shopping item, shopping items, households shopping list items, households, shopping, items, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsNo

TDQS

C2.3/5.0
Behavior2/5

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 never states that the operation is destructive and irreversible, whether it requires authentication, or what happens to IDs that do not exist. Only the literal word 'delete' hints at the mutation, which is thin for a no-annotation 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.

Conciseness2/5

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

The core purpose is front-loaded, but the body is padded with an undifferentiated keyword dump ('delete_many, delete many, ... mealie') that adds no decision-relevant information and pushes the useful content to a single bare sentence.

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

Completeness2/5

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

With no annotations, no output schema, and an undocumented parameter at 0% coverage, the definition leaves the agent without the destructive-behavior and input-format information needed to call this mutation correctly. The keyword block substitutes volume for substance.

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

Parameters2/5

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

The single parameter 'ids' has 0% schema description coverage, and the description never mentions it or explains that a list of UUIDs is required. 'Delete Many' hints at plural input, but the field name, format, and required count are unexplained.

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

Purpose3/5

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

The description states a verb (delete) and resource (household shopping list items) and the HTTP path confirms scope, so the agent can identify the target resource. However, 'Delete Many' and 'Delete shopping item' (singular) are inconsistent in number, and the description never distinguishes itself from the sibling delete_one other than by the auto-generated name.

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

Usage Guidelines2/5

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

There is no statement of when to use bulk deletion versus households_shopping_list_items_delete_one, and no prerequisites or exclusions. Usage is only implied by the tool name and the endpoint path.

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

delete_recipe_imageC

Delete Recipe Image — Recipe: CRUD. Delete image. [DELETE /api/recipes/{slug}/image] Keywords: delete_recipe_image, delete recipe image, delete image, remove image, destroy image, write image, image, recipe crud, recipe images and assets, recipes, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

TDQS

C2.7/5.0
Behavior2/5

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 never states that this is destructive/irreversible, whether it requires ownership or permissions, what happens if no image exists, or what is returned. The only behavioral signal is the DELETE verb embedded in the path, which is already implied by 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.

Conciseness2/5

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

The operative content ("Delete Recipe Image … Delete image … [DELETE /api/recipes/{slug}/image]") is front-loaded and clear, but the long keyword dump ("destroy image, write image, delete, remove, destroy, write, mealie…") is filler that adds no semantic value and bloats the definition.

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

Completeness2/5

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

For a destructive, single-parameter mutation with no annotations and no output schema, the description should at minimum disclose irreversibility, required permissions, and the target of deletion. None of that is present, leaving an agent unable to judge consequences of the call.

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

Parameters3/5

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

Schema coverage is 0% (the single `slug` parameter has no description), but the description partially compensates by embedding {slug} in the endpoint path, showing it identifies the recipe. It adds no format, uniqueness, or lookup semantics beyond that placement.

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

Purpose4/5

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

The description states a specific verb+resource ("Delete Recipe Image", "Delete image") and even gives the endpoint DELETE /api/recipes/{slug}/image, so an agent knows exactly what operation this performs. It does not, however, contrast itself with adjacent siblings like update_recipe_image, upload_recipe_asset, or get_recipe_img, so the differentiation is left to inference.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, no mention of alternatives, and no prerequisites. The HTTP verb and path imply it removes an existing image, but nothing tells the agent under what circumstances to reach for this versus replacing the image.

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

delete_recipe_tagC

Delete Recipe Tag — Organizer: Tags. Delete tag. [DELETE /api/organizers/tags/{item_id}] Removes a recipe tag from the database. Deleting a tag does not impact a recipe. The tag will be removed from any recipes that contain it Keywords: delete_recipe_tag, delete recipe tag, delete tag, remove tag, destroy tag, write tag, tag, tags, organizer tags, organizers, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full burden and does disclose real behavioral detail: the tag is removed from the database and detached from any recipes containing it, with no impact to the recipes themselves. It omits whether deletion is irreversible, what permissions are required, and what the response returns, which matters for a destructive operation.

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

Conciseness3/5

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

The core message is front-loaded, but the header repeats the tool name and category, and the trailing 'Keywords:' block is a long keyword-stuffing list that adds no selection value. Roughly half the text is noise.

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

Completeness3/5

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

No output schema exists, and since this is a one-parameter destructive tool, the description is minimally adequate: it explains the cascade effect on recipes. It still leaves irreversibility, auth requirements, and error behavior (not-found tag) unstated.

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

Parameters2/5

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

Schema description coverage is 0% for the single required item_id parameter, and the description adds almost nothing beyond the endpoint path showing {item_id}. It never explains that item_id is the tag's UUID, how to obtain it, or what happens on an unknown ID.

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

Purpose4/5

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

States a specific verb and resource ('Delete a recipe tag', 'Removes a recipe tag from the database') and even includes the endpoint. However, it does not explicitly distinguish itself from sibling tag operations such as organizer_tags_update_one or bulk tag tools, so an agent must infer the boundary.

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

Usage Guidelines2/5

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

There is no when-to-use guidance or reference to alternatives (e.g., bulk operations, organizer_tags_get_all for discovering tag IDs first). The only conditional statement is about side effects ('does not impact a recipe'), not about when this tool is the right choice.

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

duplicate_oneB

Duplicate One — Recipe: CRUD. Duplicate recipe. [POST /api/recipes/{slug}/duplicate] Duplicates a recipe with a new custom name if given Keywords: duplicate_one, duplicate one, duplicate recipe, create recipe, add recipe, new recipe, make recipe, write recipe, recipe, recipes, recipe crud, duplicate, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
slugYes

TDQS

B3/5.0
Behavior2/5

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 does not say what happens when 'name' is omitted (is the original name copied? suffixed?), whether the duplicate is independent of the source, what permissions are required, or what the response contains for a creation-style operation.

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

Conciseness3/5

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

The core statement and endpoint path are front-loaded and useful, but the long trailing keyword list is low-value padding that repeats variants like 'duplicate, create, add, new, make, write' and adds noise rather than information.

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

Completeness2/5

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

For a mutation tool with no annotations, no output schema, and 0% documented parameters, the description should say more about the resulting duplicate and the effect on existing data. As written, an agent can construct the call but cannot predict its outcome.

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

Parameters3/5

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

Schema description coverage is 0%, with two required params. The description explains the optional body.name ('a new custom name if given'), but says nothing about the slug parameter's format or that it identifies the source recipe to copy. Partial compensation for the coverage gap.

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

Purpose4/5

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

The description states a specific verb and resource ('Duplicate recipe') and even gives the concrete endpoint POST /api/recipes/{slug}/duplicate, so the agent knows exactly what the tool does. It is partially undermined by a keyword block that also advertises 'create recipe, add recipe, new recipe, make recipe', which blurs the line with recipe_crud_create_one.

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

Usage Guidelines3/5

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

The use case is implied: copy an existing recipe (given by slug), optionally renaming it. There is no explicit guidance on when to prefer this over recipe_crud_create_one, or any precondition such as the slug needing to already exist. The keyword line actively muddies alternative selection rather than clarifying it.

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

email_invitationD

Email Invitation — Households: Invitations. Create email. [POST /api/households/invitations/email] Keywords: email_invitation, email invitation, create email, add email, new email, make email, write email, email, households invitations, households, invitations, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

D1.5/5.0
Behavior1/5

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 states nothing about side effects (does it send an actual email?), required permissions, idempotency, or rate limits. The POST endpoint implies a mutation, but the description doesn't disclose what it creates or what happens on success/failure.

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

Conciseness2/5

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

The description is bloated with a redundant keyword dump that repeats generic verbs (create, add, new, make, write) and the tool name. The meaningful information ('Create email', POST path) is buried in boilerplate. No useful structure.

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

Completeness1/5

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

For a mutation tool with no annotations, no output schema, and a nested required body at 0% schema coverage, the description is completely inadequate. An agent cannot determine what this tool actually does, what the token represents, or how it relates to invite tokens.

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

Parameters2/5

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

Schema description coverage is 0% and there is 1 required parameter ('body') which itself contains required 'email' and 'token' subfields. The description provides no explanation of the body structure, the meaning of 'token' (is it an invite token? an auth token?), or the email format required.

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

Purpose2/5

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

The description says 'Create email' but the tool is named email_invitation and the path is /api/households/invitations/email. It's ambiguous whether this creates an email invitation for a household or sends an email. The keyword soup ('email, households invitations, create, add, new, make, write') restates the title rather than clarifying the operation.

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

Usage Guidelines1/5

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

No guidance on when to use this tool. With siblings like create_invite_token and send_invitation, the description doesn't explain which to use or in what sequence. The keyword list provides no contextual routing.

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

explore_categories_get_allD

Get All — Explore: Categories. List categories. [GET /api/explore/groups/{group_slug}/organizers/categories] Keywords: explore_categories_get_all, explore categories get all, list category, list categories, get category, get categories, search category, search categories, find category, find categories, browse category, browse categories, fetch category, fetch categories, read category, read categories, category, categories, explore categories, explore, groups, organizers, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
searchNo
orderByNo
perPageNo
group_slugYes
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

D1.8/5.0
Behavior1/5

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, and it discloses nothing: no read-only confirmation beyond keyword spam, no pagination or ordering behavior despite pagination params, and no note that group_slug is required. A 9-parameter read tool with zero behavioral disclosure is inadequate.

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

Conciseness2/5

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

The two substantive sentences are front-loaded and fine, but they are buried under a large keyword-stuffed block that adds length without information. The keyword tail is pure noise that dilutes the usable content.

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

Completeness1/5

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

For a 9-parameter, group-scoped list endpoint with no annotations and no output schema, the description leaves everything an agent needs unstated: required group_slug, pagination defaults, filtering/sorting semantics, and the read-only nature. It is not complete enough to invoke the tool correctly without opening the schema and guessing.

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

Parameters1/5

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

Schema description coverage is 0% across 9 parameters, and the description supplies no meaning for any of them — not page, perPage, search, orderBy, queryFilter, orderDirection, paginationSeed, or orderByNullPosition. The one required parameter is only visible in the schema, and even that lacks explanation.

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

Purpose3/5

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

The description states a specific verb and resource ('List categories') and gives the endpoint path, so the basic purpose is recoverable. However, it does nothing to distinguish itself from near-identical siblings such as organizer_categories_get_all, organizer_categories_get_one, or explore_categories_get_one — the group-scoped nature implied by the path is never spelled out.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus the many sibling category endpoints (organizer_categories_get_all, explore_categories_get_one, etc.), nor any prerequisites such as needing a valid group_slug or read permissions. The trailing keyword list is a bag of synonyms, not guidance.

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

explore_categories_get_oneD

Get One — Explore: Categories. Get category. [GET /api/explore/groups/{group_slug}/organizers/categories/{item_id}] Keywords: explore_categories_get_one, explore categories get one, get category, fetch category, read category, retrieve category, view category, show category, category, categories, explore categories, explore, groups, organizers, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes
group_slugYes

TDQS

D1.9/5.0
Behavior2/5

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, yet it offers only the bare keyword "read-only". It says nothing about permissions, scoping to group/recipe ownership, error behavior for missing items, or response shape.

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

Conciseness1/5

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

The bulk of the text is SEO keyword stuffing that duplicates the tool name and synonyms, burying the single meaningful fact (the endpoint path). Structure is poor and front-loading is wasted on a near-tautology.

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

Completeness2/5

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

For a two-parameter retrieval tool with no annotations and no output schema, an agent needs at least param meaning and any scoping/auth notes, none of which are supplied. The description is insufficient to call the tool correctly beyond guessing from the path.

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

Parameters2/5

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

Schema description coverage is 0% and both required parameters (item_id, group_slug) are undocumented anywhere. The URL template [GET /api/explore/groups/{group_slug}/organizers/categories/{item_id}] loosely implies group_slug scopes to a group and item_id identifies the category, but neither format (uuid4) nor constraints are explained.

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

Purpose2/5

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

"Get One — Explore: Categories. Get category" essentially restates the tool name without adding a distinct verb+resource statement beyond what the name already conveys. It does not differentiate this from the many sibling getters such as explore_categories_get_all, organizer_categories_get_one, or organizer_categories_get_one_by_slug.

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

Usage Guidelines2/5

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

No indication of when to use this tool versus the closely related explore_categories_get_all or the slug-based organizer_categories_get_one_by_slug. The keyword list merely repeats synonyms (fetch, read, retrieve) without any conditional routing guidance.

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

explore_cookbooks_get_allC

Get All — Explore: Cookbooks. List cookbooks. [GET /api/explore/groups/{group_slug}/cookbooks] Keywords: explore_cookbooks_get_all, explore cookbooks get all, list cookbook, list cookbooks, get cookbook, get cookbooks, search cookbook, search cookbooks, find cookbook, find cookbooks, browse cookbook, browse cookbooks, fetch cookbook, fetch cookbooks, read cookbook, read cookbooks, cookbook, cookbooks, explore cookbooks, explore, groups, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
searchNo
orderByNo
perPageNo
group_slugYes
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It states 'read-only' as a keyword and implies a GET request, but does not explain pagination behavior, response shape, rate limits, or authorization requirements for the group_slug. For a 9-parameter list 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.

Conciseness2/5

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

The description is dominated by a keyword dump of 28+ near-duplicate search terms that add no semantic value. The actual operational description is a single terse sentence. The structure is poorly front-loaded, wasting space on keyword noise rather than useful context.

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

Completeness1/5

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

For a tool with 9 parameters, 0% schema coverage, no annotations, and no output schema, the description is completely inadequate. It doesn't explain any parameter, the response format, pagination, or how it relates to sibling tools. An agent could not reliably invoke this tool correctly based on this definition.

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

Parameters1/5

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 parameter meaning whatsoever. Nine parameters exist (page, search, orderBy, perPage, group_slug, queryFilter, orderDirection, paginationSeed, orderByNullPosition) with no explanation of their purpose, format, or constraints beyond their titles.

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

Purpose4/5

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

States a clear verb+resource (list cookbooks) and includes the HTTP endpoint, so the agent knows exactly what the operation is. It doesn't explicitly differentiate itself from the sibling explore_cookbooks_get_one or households_cookbooks_get_all, but the 'list' verb and plural resource make the distinction reasonably inferable.

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

Usage Guidelines2/5

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

No guidance on when to use this versus explore_cookbooks_get_one, households_cookbooks_get_all, or the households cookbook CRUD tools. There is no mention of prerequisites, pagination behavior, or when-not conditions. The keyword dump provides search terms but no actual usage context.

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

explore_cookbooks_get_oneC

Get One — Explore: Cookbooks. Get cookbook. [GET /api/explore/groups/{group_slug}/cookbooks/{item_id}] Keywords: explore_cookbooks_get_one, explore cookbooks get one, get cookbook, fetch cookbook, read cookbook, retrieve cookbook, view cookbook, show cookbook, cookbook, cookbooks, explore cookbooks, explore, groups, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes
group_slugYes

TDQS

C2.5/5.0
Behavior2/5

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 conveys only that this is a read ('get', keyword 'read-only') and the URL pattern; it says nothing about permissions, whether the caller must belong to the group, error behavior on missing IDs, or what the response contains.

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

Conciseness2/5

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

The purpose is front-loaded, which is good, but the remainder is a long keyword-stuffing block that repeats 'get cookbook / fetch / read / retrieve / view / show' with no additional information. Every sentence after the first fails to earn its place.

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

Completeness2/5

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

For a two-parameter read tool with no annotations and no output schema, the description should at least explain the return value or any scoping constraints. It leaves both entirely uncovered, so an agent has only the name and URL template to work with.

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

Parameters2/5

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

Schema description coverage is 0% for two required parameters (item_id, group_slug). The description's embedded URL template does show where each value is substituted, which is a small hint, but it adds no meaning about formats, UUID vs slug expectations, or what group_slug identifies.

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

Purpose4/5

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

States a specific verb and resource ('Get cookbook') plus the concrete REST path, so the agent knows exactly what entity is fetched. It is clear, but it does not differentiate itself from the very similar sibling households_cookbooks_get_one, which fetches the same entity type under a different scope.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives, no prerequisites, and no exclusions. The long keyword list repeats synonyms of 'get' rather than giving any selection guidance, so 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.

explore_foods_get_allC

Get All — Explore: Foods. List foods. [GET /api/explore/groups/{group_slug}/foods] Keywords: explore_foods_get_all, explore foods get all, list food, list foods, get food, get foods, search food, search foods, find food, find foods, browse food, browse foods, fetch food, fetch foods, read food, read foods, food, foods, explore foods, explore, groups, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
searchNo
orderByNo
perPageNo
group_slugYes
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.3/5.0
Behavior2/5

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, and it says almost nothing: the 'read-only' keyword hints at a safe read, but pagination behavior, default ordering (orderDirection defaults to 'desc'), permission requirements, and result shape are never disclosed. For a paginated listing endpoint 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.

Conciseness2/5

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

The front-loaded first clause is fine, but the body is dominated by a ~50-term keyword dump that repeats the tool name and its sub-words. That bulk adds no information an agent can act on and obscures the single useful detail (the endpoint).

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

Completeness2/5

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

A 9-parameter paginated list tool with no annotations and no output schema needs more than a title and a URL. Nothing explains pagination mechanics, ordering defaults, search semantics, or what a food record contains, so an agent cannot invoke or interpret this confidently.

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

Parameters2/5

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

Schema description coverage is 0% across 9 parameters, so the description must compensate and does not. Only group_slug is indirectly conveyed through the URL path template; page, perPage, search, orderBy, queryFilter, paginationSeed, orderDirection, and orderByNullPosition are entirely undocumented anywhere. The 'search/find' keywords refer to the tool name, not the search parameter.

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

Purpose3/5

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

States a verb+resource ('List foods') and shows the backing endpoint GET /api/explore/groups/{group_slug}/foods, so the basic purpose is clear. However, 'Explore: Foods' is largely a restatement of the tool name, and it never distinguishes this from close siblings like recipes_foods_get_all or explore_foods_get_one. The trailing keyword block is name-variant filler, not a statement of scope.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance and no named alternative. The agent is left to infer from the URL path that this is a group-scoped explore listing versus the group-level recipes_foods_get_all. The keyword list ('search food', 'browse foods') is alias padding, not usage direction.

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

explore_foods_get_oneC

Get One — Explore: Foods. Get food. [GET /api/explore/groups/{group_slug}/foods/{item_id}] Keywords: explore_foods_get_one, explore foods get one, get food, fetch food, read food, retrieve food, view food, show food, food, foods, explore foods, explore, groups, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes
group_slugYes

TDQS

C2.1/5.0
Behavior2/5

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 does not state whether the operation is read-only, how authentication works, whether the response is paginated, what errors may occur, or what a food object contains. The keyword 'read-only' appears in the keyword list, but that is a weak disclosure and not backed by annotations. For a get-one operation with zero annotation coverage, more behavioral context is needed.

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

Conciseness2/5

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

The description is bloated with a long list of keywords and synonyms that repeat the same concepts (food, foods, get, fetch, read, retrieve, view, show). The core message is front-loaded but buried under noise. This is not concise; the keyword list adds no value for an agent.

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

Completeness2/5

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

Given no annotations, no output schema, 0% parameter description coverage, and two required parameters, the description is incomplete. It omits authentication requirements, response shape, error handling, and differentiation from sibling tools. An agent would struggle to call this tool correctly without additional context.

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

Parameters1/5

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 explanation of the two required parameters (item_id and group_slug). While the URL path hints at their roles, there is no added meaning about formats, constraints, or expected values. The description fails to compensate for the low schema coverage.

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

Purpose3/5

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

The description states 'Get food' with an HTTP endpoint (GET /api/explore/groups/{group_slug}/foods/{item_id}), making the verb and resource inferable. However, it does not distinguish this tool from sibling recipes_foods_get_one, which appears to retrieve a food item through a different route. The purpose is vague beyond the generic 'get one' phrasing.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives like recipes_foods_get_one, explore_foods_get_all, or other get-one tools. The keyword list is a dump of synonyms and not actionable usage guidance. The agent is left to infer context.

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

explore_households_get_allC

Get All — Explore: Households. List households. [GET /api/explore/groups/{group_slug}/households] Keywords: explore_households_get_all, explore households get all, list household, list households, get household, get households, search household, search households, find household, find households, browse household, browse households, fetch household, fetch households, read household, read households, household, households, explore households, explore, groups, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
orderByNo
perPageNo
group_slugYes
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.5/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It offers only the keyword 'read-only' as a safety signal but says nothing about pagination behavior (despite page/perPage/paginationSeed params), auth requirements, or what the response contains for a list operation.

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

Conciseness2/5

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

The purpose and endpoint are correctly front-loaded in the first two lines, but the bulk of the description is a bloated keyword dump repeating trivial morphological variants ('list household, list households, get household...'). That padding adds noise rather than value.

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

Completeness2/5

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

For an 8-parameter, 0%-documented, annotation-free list tool with no output schema, the description is far too thin. It neither explains the filtering/sorting/pagination parameters nor clarifies its relationship to the many sibling household tools.

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

Parameters2/5

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

Schema description coverage is 0% across 8 parameters, so the description must compensate and largely does not. The endpoint path hints that group_slug is required and path-based, but orderBy, orderDirection, queryFilter, paginationSeed, page, and perPage are left entirely unexplained.

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

Purpose4/5

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

The description states a specific verb and resource ('List households') and even gives the HTTP endpoint, so the operation is unambiguous. However, it does nothing to distinguish itself from the near-identical sibling 'get_all_households' (and 'get_one_household'), 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.

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance, and no mention of alternatives despite several overlapping household-listing siblings. The keyword block restates synonyms but provides no selection logic, and the endpoint only implies that a group_slug is required.

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

explore_recipes_get_allC

Get All — Explore: Recipes. List recipes. [GET /api/explore/groups/{group_slug}/recipes] Keywords: explore_recipes_get_all, explore recipes get all, list recipe, list recipes, get recipe, get recipes, search recipe, search recipes, find recipe, find recipes, browse recipe, browse recipes, fetch recipe, fetch recipes, read recipe, read recipes, recipe, recipes, explore recipes, explore, groups, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
tagsNo
foodsNo
toolsNo
searchNo
orderByNo
perPageNo
cookbookNo
categoriesNo
group_slugYes
householdsNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
requireAllTagsNo
requireAllFoodsNo
requireAllToolsNo
orderByNullPositionNo
requireAllCategoriesNo

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it only implies safety via a bare 'read-only' keyword. It says nothing about pagination behavior, permission requirements, result caps, or what the group scope actually restricts, which is a large gap for a 19-parameter listing tool.

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

Conciseness2/5

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

The core purpose is front-loaded in one short sentence, but that sentence is then buried under a long keyword-stuffing block that adds no informational value and inflates the definition. Roughly half the text is SEO noise rather than content that earns its place.

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

Completeness1/5

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

A 19-parameter, filter-heavy listing tool with no annotations, no output schema, and 0% parameter documentation is left almost entirely undescribed. An agent has no basis to know how to filter, sort, or page results correctly, so the definition is inadequate for the tool's complexity.

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

Parameters1/5

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

Schema description coverage is 0% across 19 parameters, and the description supplies almost no compensating meaning. Only group_slug is inferable from the endpoint path; the many filters (tags, foods, tools, households, requireAll*, orderBy, paginationSeed, etc.) are entirely unexplained in both schema and description.

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

Purpose4/5

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

The description states a specific verb and resource ('List recipes') and the endpoint path reveals the group-scoped explore surface. However, it does nothing to distinguish this from close siblings like recipe_crud_get_all, explore_recipes_suggest_recipes, or shared_recipes_get_all, so the agent gets a clear purpose but no routing signal.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no exclusions, and no mention of alternatives. The trailing keyword list ('list recipe, get recipe, search recipe...') is synonym spam, not usage guidance, so nothing tells the agent when to prefer this over recipe_crud_get_all or the suggest-recipes sibling.

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

explore_recipes_suggest_recipesD

Suggest Recipes — Explore: Recipes. List suggestions. [GET /api/explore/groups/{group_slug}/recipes/suggestions] Keywords: explore_recipes_suggest_recipes, explore recipes suggest recipes, list suggestion, list suggestions, get suggestion, get suggestions, search suggestion, search suggestions, find suggestion, find suggestions, browse suggestion, browse suggestions, fetch suggestion, fetch suggestions, read suggestion, read suggestions, suggestion, suggestions, explore recipes, explore, groups, recipes, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
foodsNo
limitNo
toolsNo
orderByNo
group_slugYes
queryFilterNo
orderDirectionNodesc
paginationSeedNo
maxMissingFoodsNo
maxMissingToolsNo
includeFoodsOnHandNo
includeToolsOnHandNo
orderByNullPositionNo

TDQS

D1.3/5.0
Behavior1/5

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

Annotations are absent, so the description carries the full burden and it fails. It never says this is a read-only operation, never explains that results must be scoped to a group_slug, never mentions whether results are ranked or personalized, and gives no pagination or result-size context despite an explicit limit/paginationSeed pair.

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

Conciseness2/5

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

Severely bloated: the bulk of the text is an alphabetical synonym flood (list/post/g/l/i/k) that would have been better replaced by one real sentence, while a raw URL path is front-loaded as if it were user-facing documentation.

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

Completeness1/5

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

For a 13-parameter, no-annotation, no-output-schema tool, the description omits required group_slug semantics, the food/tool matching model, the missing-count thresholds, ordering, and result shape. It cannot be called correctly from this definition alone.

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

Parameters1/5

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

13 parameters with 0% schema description coverage, and the description mentions none of them. Ten of them (foods, tools, maxMissingFoods, maxMissingTools, includeFoodsOnHand, includeToolsOnHand, orderBy, orderDirection, orderByNullPosition, paginationSeed, queryFilter) are bare titles in the schema with no meaning attached anywhere, so an agent has no basis for setting the suggestion-ranking knobs.

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

Purpose2/5

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

The meaningful content is 'Suggest Recipes — Explore: Recipes. List suggestions' plus a raw REST path. That restates the name rather than stating what a 'suggestion' is or how it differs from the siblings recipe_crud_suggest_recipes and explore_recipes_get_all. The keyword tail then lists generic synonyms (list, get, search, find) that add no discriminating information.

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

Usage Guidelines1/5

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

No when-to-use guidance at all, and no mention of the two obvious alternatives for the same job: recipe_crud_suggest_recipes and explore_recipes_get_all. The synonym dump actually encourages wrong selection by implying the tool is a generic search/find endpoint.

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

explore_tags_get_allC

Get All — Explore: Tags. List tags. [GET /api/explore/groups/{group_slug}/organizers/tags] Keywords: explore_tags_get_all, explore tags get all, list tag, list tags, get tag, get tags, search tag, search tags, find tag, find tags, browse tag, browse tags, fetch tag, fetch tags, read tag, read tags, tag, tags, explore tags, explore, groups, organizers, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
searchNo
orderByNo
perPageNo
group_slugYes
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.5/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, and it delivers almost nothing: the only hint is the keyword 'read-only' and the GET path. It never explains pagination behavior despite page/perPage/paginationSeed parameters, nor authorization needs for the group_slug scoping.

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

Conciseness2/5

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

The first two sentences are appropriately front-loaded and compact, but they are followed by a long comma-separated keyword dump that repeats 'tag/tags', 'explore', and every verb synonym. That block adds no information and roughly triples the definition's length.

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

Completeness2/5

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

For a 9-parameter, group-scoped listing endpoint with no annotations and no output schema, the description omits pagination semantics, result shape, and parameter meanings. The endpoint URL is the only genuinely useful addition, leaving the definition materially incomplete.

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

Parameters2/5

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

Schema description coverage is 0% across 9 parameters, so the description is obligated to compensate and instead says nothing about any of them. Fields like search, queryFilter, orderBy, paginationSeed, and orderByNullPosition remain semantically opaque beyond their bare names.

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

Purpose4/5

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

The opening 'Get All — Explore: Tags. List tags.' states a clear verb (list) and resource (tags), reinforced by the concrete endpoint path GET /api/explore/groups/{group_slug}/organizers/tags. However, it does nothing to distinguish this from the very similar sibling organizer_tags_get_all or explore_tags_get_one, so the agent must guess which list endpoint to pick.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus organizer_tags_get_all, explore_tags_get_one, or get_empty_tags. The keyword block contains verbs like 'search tag', 'find tag', 'browse tag' that are synonym stuffing rather than routing guidance, so the agent gets no real selection criteria.

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

explore_tags_get_oneC

Get One — Explore: Tags. Get tag. [GET /api/explore/groups/{group_slug}/organizers/tags/{item_id}] Keywords: explore_tags_get_one, explore tags get one, get tag, fetch tag, read tag, retrieve tag, view tag, show tag, tag, tags, explore tags, explore, groups, organizers, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes
group_slugYes

TDQS

C2.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, and it discloses almost nothing: the "read-only" keyword hints at a safe read, but there is no mention of auth/permission requirements, error behavior, or what the endpoint returns. For a 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.

Conciseness2/5

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

The definition is dominated by a long comma-separated keyword list ("explore_tags_get_one, explore tags get one, get tag, fetch tag...") that adds no retrievable meaning. The actual purpose statement is one redundant fragment, so the payload is noise-heavy rather than front-loaded.

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

Completeness2/5

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

With two required parameters, no output schema, and no annotations, the description should explain input format and return expectations. It instead repeats the title and lists keywords, leaving an agent unable to confidently construct a correct call.

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

Parameters2/5

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

Schema description coverage is 0% and neither parameter is documented in the description. The endpoint template shows group_slug and item_id in their path positions, which faintly implies a group scope and a UUID identifier, but this does not compensate for the total absence of parameter semantics.

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

Purpose3/5

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

The description states a recognizable verb+resource ("Get tag") and the endpoint path clarifies the resource lives under groups/{group_slug}/organizers/tags. However it does nothing to distinguish this from the many sibling retrievers such as organizer_tags_get_one, organizer_tags_get_one_by_slug, or explore_tags_get_all, and the surrounding text is a keyword dump rather than a definition.

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

Usage Guidelines2/5

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 near-identical organizer_tags_get_one or the by-slug variant. The only contextual token is "read-only", which names a property but not a usage condition. The agent is left to infer the selection entirely.

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

explore_tools_get_allC

Get All — Explore: Tools. List tools. [GET /api/explore/groups/{group_slug}/organizers/tools] Keywords: explore_tools_get_all, explore tools get all, list tool, list tools, get tool, get tools, search tool, search tools, find tool, find tools, browse tool, browse tools, fetch tool, fetch tools, read tool, read tools, tool, tools, explore tools, explore, groups, organizers, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
searchNo
orderByNo
perPageNo
group_slugYes
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2/5.0
Behavior2/5

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 offers only the single keyword 'read-only' buried in the keyword list, and gives no information about pagination behavior, scoping (group_slug required), or return shape for a list endpoint with 9 parameters.

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

Conciseness2/5

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

The opening sentences are compact, but they are immediately followed by a long, redundant keyword list ('list tool, list tools, get tool, get tools, search tool, search tools...') that adds no discriminating information. The bulk of the description is filler rather than front-loaded value.

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

Completeness1/5

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

For a tool with 9 parameters, no annotations, no output schema, and 0% schema coverage, the description is grossly incomplete. An agent has no way to know required vs optional parameters, pagination defaults, or filtering behavior from the text.

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

Parameters1/5

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

Schema description coverage is 0% across 9 parameters, and the description provides essentially no parameter semantics. The endpoint path hints that group_slug is a path variable, but nothing explains page, perPage, search, orderBy, queryFilter, or the ordering enums. The description does not compensate for the coverage gap.

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

Purpose3/5

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

The description states a recognizable verb+resource ('List tools' for Explore) and includes the endpoint path, so the basic operation is inferable. However, it does not distinguish this from the many sibling tools (organizer_tools_get_all, explore_tools_get_one, organizer_tools_get_all), and 'tools' as a resource is ambiguous. Purpose is only minimally clear.

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

Usage Guidelines2/5

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 organizer_tools_get_all or explore_tools_get_one. The only content beyond the operation is an undifferentiated keyword dump (list/get/search/find/browse/fetch/read) that repeats the same concept rather than informing selection.

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

explore_tools_get_oneC

Get One — Explore: Tools. Get tool. [GET /api/explore/groups/{group_slug}/organizers/tools/{item_id}] Keywords: explore_tools_get_one, explore tools get one, get tool, fetch tool, read tool, retrieve tool, view tool, show tool, tool, tools, explore tools, explore, groups, organizers, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes
group_slugYes

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral burden. It only supplies a 'read-only' keyword and the GET endpoint, but does not address authentication, permissions, error conditions, or whether the response includes related resources.

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

Conciseness2/5

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

The first two clauses are efficient, but the trailing 'Keywords:' list is a long, redundant synonym dump that repeats the tool name and generic verbs. This keyword stuffing harms conciseness and pushes useful information behind noise.

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

Completeness2/5

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

For a two-parameter GET tool with no output schema and no annotations, the definition should at least clarify parameter roles or usage context. The endpoint adds some structure, but missing parameter semantics and sibling differentiation leave the definition incomplete for reliable selection.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needs to compensate. It shows a URL template with {group_slug} and {item_id}, which indicates both are path parameters, but it never explains what a group_slug identifies or what kind of UUID item_id must be.

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

Purpose4/5

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

The description states a clear verb and resource ('Get tool') and the endpoint pins it to the Explore namespace, which helps separate it from organizer_tools_get_one. However, it does not explain how Explore differs from Organizer or when each namespace applies, so sibling differentiation is only implicit.

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

Usage Guidelines2/5

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

No when-to-use guidance is provided. The tool is simply described as 'Get tool' with an endpoint, and the keyword list repeats synonyms without saying when to choose it over organizer_tools_get_one or explore_tools_get_all.

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

get_ai_provider_settingsC

Get Ai Provider Settings — Groups: AI Provider Settings. List settings. [GET /api/groups/ai-providers/settings] Keywords: get_ai_provider_settings, get ai provider settings, list setting, list settings, get setting, get settings, search setting, search settings, find setting, find settings, browse setting, browse settings, fetch setting, fetch settings, read setting, read settings, setting, settings, groups ai provider settings, groups, ai providers, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2/5.0
Behavior2/5

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 for a read of group settings. It doesn't state whether this is read-only, what it returns, whether it requires group-admin privileges, or what happens on missing settings. The 'read-only' keyword is buried in synonym spam rather than stated as a behavioral guarantee.

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

Conciseness1/5

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

The description is mostly a keyword dump: ~30 synonyms for 'get setting' and 'list settings' followed by route and group keywords. None of it is front-loadable information; the single useful token (the GET route) is buried after the redundancy. Every synonym sentence is waste.

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

Completeness2/5

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

No output schema exists, so the description should hint at the return shape (a settings object for the group's AI provider configuration), but it says only 'List settings'. Combined with no annotations, no permissions note, and no sibling differentiation, an agent lacks what it needs to call this correctly among the many AI-provider and group tools.

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

Parameters4/5

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

Parameter count is 0, and the schema is empty with additionalProperties:false. Baseline for zero parameters is 4; there is nothing for the description to disambiguate, and it does not mislead about inputs. The keyword soup doesn't help but doesn't hurt parameter semantics.

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

Purpose2/5

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

The description wraps the tool name in a title and then repeats 'List settings' plus a keyword soup. The only substantive content is 'GET /api/groups/ai-providers/settings', which gives a resource path but no meaningful statement of what the tool returns or why an agent would call it over siblings like groups_ai_providers_get_ai_provider. The 30+ 'Keywords:' synonyms are tautological restatements, which is exactly the tautology pattern.

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

Usage Guidelines1/5

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

No when-to-use, when-not-to-use, or alternative tool is named. The sibling list contains groups_ai_providers_get_ai_provider, update_ai_provider_settings, and other AI-provider tools that an agent must distinguish from this one, and the description provides zero routing guidance. The keyword spam ('search', 'find', 'browse') actively implies capabilities that aren't relevant to a settings GET.

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

get_all_emptyB

Get All Empty — Organizer: Categories. List categories. [GET /api/organizers/categories/empty] Returns a list of categories that do not contain any recipes Keywords: get_all_empty, get all empty, list category, list categories, get category, get categories, search category, search categories, find category, find categories, browse category, browse categories, fetch category, fetch categories, read category, read categories, category, categories, organizer categories, organizers, empty, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description must carry behavioral disclosure. It reveals the GET endpoint and the return set (categories without recipes), which implies a read-only operation, but it omits auth requirements, pagination, and response format details.

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

Conciseness2/5

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

The core purpose is front-loaded, but the long keyword list is redundant stuffing that does not earn its place. It bloats the description without adding useful semantics.

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

Completeness3/5

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

For a zero-parameter read-only list tool, the description covers the basic purpose and return type. However, with no annotations and no output schema, it should provide more context about auth, pagination, or how it relates to sibling category-listing tools.

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

Parameters4/5

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

The tool takes zero parameters, so the schema description coverage is 100% by default. Baseline for no parameters is 4, and there is no parameter semantics to clarify further.

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

Purpose4/5

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

States a specific verb and resource: list categories that do not contain any recipes, and gives the endpoint. It differentiates from the broader organizer_categories_get_all by the 'empty' condition, but does not name that sibling or explicitly contrast with it.

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

Usage Guidelines3/5

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

The empty-category condition implies when to use it, but there is no explicit guidance on alternatives such as organizer_categories_get_all or get_empty_tags, nor any when-not-to-use conditions. Usage is left to inference.

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

get_all_householdsC

Get All Households — Groups: Households. List households. [GET /api/groups/households] Keywords: get_all_households, get all households, list household, list households, get household, get households, search household, search households, find household, find households, browse household, browse households, fetch household, fetch households, read household, read households, household, households, groups households, groups, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
orderByNo
perPageNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It implies a read via the GET endpoint, but says nothing about pagination behavior, default ordering, authentication requirements, or what the response contains — notable gaps for a tool with seven pagination/ordering parameters.

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

Conciseness2/5

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

The useful content is front-loaded into two short fragments, but the bulk of the description is a bloated comma-separated keyword list that restates the name many times and adds no invocation value. Large portions do not earn their place.

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

Completeness2/5

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

For a paginated list tool with seven undocumented parameters, no output schema, and no annotations, the description is far too thin. It never explains paging, ordering, or filtering, leaving the agent unable to use the parameters correctly.

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

Parameters1/5

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

Schema description coverage is 0% across seven parameters (page, orderBy, perPage, queryFilter, orderDirection, paginationSeed, orderByNullPosition). The description mentions none of them, so an agent gets no meaning for pagination, filtering, or ordering semantics from either the schema or the description.

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

Purpose4/5

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

States a clear verb+resource ('List households') and gives the underlying endpoint (GET /api/groups/households), so the agent knows exactly what operation this is. However, it offers no differentiation from nearby siblings like get_household, get_one_household, or explore_households_get_all, which leaves ambiguity about which household-list variant to pick.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance and no mention of alternatives, only a keyword dump of synonyms for 'list households'. The agent gets no signal about choosing this over the other household-listing siblings.

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

get_app_themeC

Get App Theme — App: About. Get theme. [GET /api/app/about/theme] Get's the current theme settings Keywords: get_app_theme, get app theme, get theme, fetch theme, read theme, retrieve theme, view theme, show theme, theme, app about, app, about, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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 implies a read via 'Get' and the 'read-only' keyword, and notes it returns 'current theme settings', but says nothing about auth requirements, what the theme object contains, or caching/rate behavior.

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

Conciseness2/5

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

The genuine content is one short sentence, but it is buried under an endpoint tag, a duplicated sentence, and a long keyword dump that adds no selection signal. Poorly front-loaded relative to its useful payload.

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

Completeness3/5

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

For a no-argument read tool this is minimally sufficient to invoke, but with no output schema and no annotations the description never explains what the returned theme settings look like, leaving a real gap for the agent interpreting the result.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to clarify; the baseline is 4. Schema coverage is effectively complete by vacuity.

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

Purpose4/5

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

States a specific verb and resource ('Get theme' / 'Get's the current theme settings') and scopes it to the About app, so an agent can tell it apart from app_about_get_app_info. It is clear but marred by redundant restatement and keyword padding rather than precise framing.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives (e.g., update theme or app info tools). The agent must infer usage purely from the name.

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

get_empty_tagsB

Get Empty Tags — Organizer: Tags. List tags. [GET /api/organizers/tags/empty] Returns a list of tags that do not contain any recipes Keywords: get_empty_tags, get empty tags, list tag, list tags, get tag, get tags, search tag, search tags, find tag, find tags, browse tag, browse tags, fetch tag, fetch tags, read tag, read tags, tag, tags, organizer tags, organizers, empty, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It does disclose the core behavior (returns only tags with zero attached recipes) and the underlying endpoint, and the keyword list signals 'read-only'. However it omits pagination, sort order, authentication requirements, and the shape of returned items, which is a meaningful gap for an unannotated tool.

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

Conciseness2/5

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

The useful content is one sentence, front-loaded before the noise, but roughly two-thirds of the description is SEO keyword stuffing ('get tag, get tags, search tag, search tags, find tag... mealie'). Those tokens add no selection or invocation value and dilute the definition.

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

Completeness3/5

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

For a no-parameter read tool with no output schema, the description conveys what the endpoint returns and the filter applied. It is adequate but does not describe pagination, ordering, or response structure, which an agent would need for a reliably-formed call.

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

Parameters4/5

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

The tool takes zero parameters and the schema is empty with additionalProperties=false, so there are no parameter semantics to explain. Baseline 4 applies; nothing in the description misleads about inputs.

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

Purpose4/5

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

The description states a specific verb and resource, and crucially a scoping constraint: 'Returns a list of tags that do not contain any recipes.' That distinguishes it from sibling list tools such as organizer_tags_get_all and explore_tags_get_all. It never names those siblings explicitly, 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.

Usage Guidelines2/5

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

There is no guidance on when to call this versus organizer_tags_get_all or explore_tags_get_all. The 'empty' qualifier implies the use case but the description never states when an agent should prefer this over the general tag listing tools, nor any prerequisites.

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

get_favoritesC

Get Favorites — Users: Ratings. List favorites. [GET /api/users/{id}/favorites] Get user's favorited recipes Keywords: get_favorites, get favorites, list favorite, list favorites, get favorite, search favorite, search favorites, find favorite, find favorites, browse favorite, browse favorites, fetch favorite, fetch favorites, read favorite, read favorites, favorite, favorites, users ratings, users, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden, and it discloses almost nothing: no pagination, no permission requirements, no return shape, no error behavior. The lone 'read-only' token buried in the keyword soup is the only behavioral hint.

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

Conciseness2/5

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

The first two lines are reasonably front-loaded, but the definition is padded with an enormous redundant keyword list ('get favorite, list favorite, search favorite… read-only, mealie') that repeats the same concept a dozen times without adding information.

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

Completeness2/5

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

For a read tool with no annotations and no output schema, the agent lacks any signal about what comes back, whether results are paginated or scoped to permissions, or how to interpret them. The description should do more than restate the endpoint.

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

Parameters3/5

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

Schema description coverage is 0% and the sole 'id' parameter is undocumented in the schema. The route template [GET /api/users/{id}/favorites] does implicitly tell the agent the id is a user id, which is real added value, but the format (uuid4) and constraints come only from the schema.

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

Purpose4/5

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

The description states a specific verb and resource: 'Get user's favorited recipes,' reinforced by the route [GET /api/users/{id}/favorites]. It is distinguishable from the sibling get_logged_in_user_favorites because it takes an explicit user id, though the description never makes that distinction explicit.

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

Usage Guidelines2/5

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 versus get_logged_in_user_favorites, add_favorite/remove_favorite, or get_ratings. The keyword list mentions 'users ratings' and 'read-only' but that is retrieval bait, not usage direction.

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

get_group_memberC

Get Group Member — Groups: Self Service. Get member. [GET /api/groups/members/{username_or_id}] Returns a single user belonging to the current group Keywords: get_group_member, get group member, get member, fetch member, read member, retrieve member, view member, show member, member, members, groups self service, groups, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
username_or_idYes

TDQS

C2.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It does disclose the HTTP method (GET) and that it returns a single user, implying a read-only operation, but says nothing about auth/permission requirements, error cases when the member does not exist, or response shape.

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

Conciseness2/5

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

The core sentence is fine and front-loaded, but the trailing 'Keywords:' list is pure noise, restating the name and synonyms ('get, fetch, read, retrieve, view, show') that add no selection value.

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

Completeness3/5

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

For a simple single-param read tool with no output schema this is roughly adequate, but it omits parameter format details and the distinction from sibling list tools, leaving meaningful gaps.

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

Parameters2/5

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

Schema description coverage is 0% for the single required parameter. The description adds nothing about username_or_id — it does not explain that it accepts either a plain username string or a uuid4, nor any format/example guidance, so it fails to compensate for the coverage gap.

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

Purpose4/5

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

States a specific verb and resource ('Get member') and clarifies scope with 'Returns a single user belonging to the current group.' However, it does not distinguish itself from the plural sibling get_group_members or get_household_members, so an agent must guess which is appropriate.

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

Usage Guidelines2/5

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 versus get_group_members (all members) or get_household_members. The 'Self Service' tag hints at context but no condition or alternative is stated.

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

get_group_membersC

Get Group Members — Groups: Self Service. List members. [GET /api/groups/members] Returns all users belonging to the current group Keywords: get_group_members, get group members, list member, list members, get member, get members, search member, search members, find member, find members, browse member, browse members, fetch member, fetch members, read member, read members, member, members, groups self service, groups, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
orderByNo
perPageNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.4/5.0
Behavior2/5

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 implies a read of the current group's members but never states pagination behavior, auth/scope requirements, or the return shape, which matters for a 7-parameter listing endpoint.

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

Conciseness2/5

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

The useful content is two short clauses; the rest is a ~40-term keyword dump ('list member, list members, search member...') that adds no meaning. Purpose is front-loaded, but the bulk is noise.

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

Completeness2/5

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

For a paginated list tool with 7 undocumented params, no annotations, and no output schema, the description omits pagination/ordering guidance and any scoping caveats. An agent could call it, but not well.

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

Parameters1/5

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

Schema description coverage is 0% across 7 parameters (page, perPage, orderBy, queryFilter, etc.), and the description says nothing about pagination, ordering, or filtering semantics. This is the case where the description must compensate and it does not.

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

Purpose4/5

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

The description states a specific verb+resource ('List members') and adds the endpoint and scope ('Returns all users belonging to the current group'). It does not, however, distinguish itself from the near-identical sibling get_group_member or get_household_members, leaving the agent to guess which member-list tool applies.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no naming of alternatives. 'Groups: Self Service' reads as a category tag rather than a usage condition, so the agent gets no routing signal versus get_group_member or get_household_members.

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

get_group_preferencesC

Get Group Preferences — Groups: Self Service. List preferences. [GET /api/groups/preferences] Keywords: get_group_preferences, get group preferences, list preference, list preferences, get preference, get preferences, search preference, search preferences, find preference, find preferences, browse preference, browse preferences, fetch preference, fetch preferences, read preference, read preferences, preference, preferences, groups self service, groups, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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-only list operation ('List preferences') but says nothing about authentication/permissions, the scope of the group context, what preferences are returned, or format, so a substantial gap remains for an unannotated tool.

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

Conciseness2/5

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

The useful content is one short line ('List preferences'), which is front-loaded, but the bulk of the description is a long, low-signal keyword dump (preference, preferences, list, get, search, find, browse, fetch, read, mealie). This bloats the definition and dilutes the actionable text.

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

Completeness2/5

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

For a read tool with no output schema, the description should at minimum hint at what 'preferences' are returned, yet it only repeats retrieval synonyms. Combined with the absence of annotations, the definition is too thin for an agent to confidently predict the result or the call's context.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies: no parameter meaning can be added or omitted when the input schema is an empty object.

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

Purpose4/5

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

The description pairs a clear verb (get/list) with a specific resource (group preferences), and the endpoint path [GET /api/groups/preferences] reinforces the intent. However, it gives no differentiation from the very similar sibling get_household_preferences, leaving the agent to infer the distinction between group-level and household-level preferences.

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

Usage Guidelines2/5

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

There is no statement of when to use this versus alternatives such as get_household_preferences or update_group_preferences. The trailing keyword block lists generic synonyms (get, search, find, browse, read) but these are retrieval-synonym spam, not usage guidance.

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

get_householdC

Get Household — Explore: Households. Get household. [GET /api/explore/groups/{group_slug}/households/{household_slug}] Keywords: get_household, get household, fetch household, read household, retrieve household, view household, show household, household, households, explore households, explore, groups, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_slugYes
household_slugYes

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations, the description carries the full disclosure burden. It implies read-only via the GET verb and the keyword 'read-only', but says nothing about permissions, error behavior, or what a household lookup returns. This is far short of what an unannotated read tool needs.

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

Conciseness2/5

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

The core statement is front-loaded, but the body is dominated by an undifferentiated keyword dump ('get household, fetch household, read household... household, households, explore') that repeats the same concept a dozen times and adds no decision-relevant content.

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

Completeness2/5

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

There are no annotations, no output schema, and two fully undocumented required parameters, yet the description supplies no return-shape, permission, or usage context. For a tool in a crowded sibling set, this leaves the agent without enough to select or invoke it confidently.

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

Parameters2/5

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

Schema description coverage is 0% for both required params, so the description must compensate. It only partially does: the path template shows group_slug and household_slug are hierarchical URL path segments, implying a group must be identified before the household. It gives no format, uniqueness, or validation detail for either slug.

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

Purpose3/5

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

The description names a concrete verb+resource ('Get household') and adds the REST path GET /api/explore/groups/{group_slug}/households/{household_slug}, which clarifies scope better than the bare name. However, it offers zero differentiation from close siblings such as get_one_household, get_all_households, get_household_members, or get_household_preferences, all of which could plausibly match the agent's intent.

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

Usage Guidelines2/5

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

There is no when-to-use/when-not-to-use guidance and no named alternative. The only routing signal is the namespace prefix 'Explore: Households' inside the description, which is weak given siblings like get_one_household that read as near-identical reads.

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

get_household_membersC

Get Household Members — Households: Self Service. List members. [GET /api/households/members] Returns all users belonging to the current household Keywords: get_household_members, get household members, list member, list members, get member, get members, search member, search members, find member, find members, browse member, browse members, fetch member, fetch members, read member, read members, member, members, households self service, households, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
orderByNo
perPageNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.4/5.0
Behavior2/5

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 notes the tool returns all users of the current household (a useful scope statement implying read-only), but says nothing about authentication requirements, pagination behavior despite seven paging params, or rate limits. A significant gap for an unannotated tool.

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

Conciseness2/5

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

The core purpose sentence and endpoint are reasonably front-loaded, but the trailing keyword block ('get_household_members, get household members, list member...') is a large volume of redundant filler that does not earn its place.

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

Completeness2/5

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

For a seven-parameter, zero-coverage, no-output-schema tool, the description is too thin: it does not document paging, ordering, or filtering behavior, and no output schema exists to compensate. An agent can identify the tool but not invoke it richly.

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

Parameters1/5

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 any of the seven parameters (page, orderBy, perPage, queryFilter, orderDirection, paginationSeed, orderByNullPosition). 'Returns all users' does not explain any of these paging/filtering controls.

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

Purpose4/5

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

States a clear verb (Get/List) and resource (household members), and the phrase 'current household' plus the endpoint [GET /api/households/members] scopes it enough to separate it from siblings like get_group_members or get_all_households. It is specific but does not explicitly contrast itself with those alternatives.

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

Usage Guidelines2/5

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

There is no articulation of when to use this tool versus alternatives such as get_group_members, get_household, or get_logged_in_user_household. Usage is only implied by the resource name; the keyword list mentions 'search/find/browse' but provides no actual conditions or exclusions.

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

get_household_preferencesC

Get Household Preferences — Households: Self Service. List preferences. [GET /api/households/preferences] Keywords: get_household_preferences, get household preferences, list preference, list preferences, get preference, get preferences, search preference, search preferences, find preference, find preferences, browse preference, browse preferences, fetch preference, fetch preferences, read preference, read preferences, preference, preferences, households self service, households, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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 implies a read (GET /api/households/preferences) but says nothing about auth requirements, what the preferences payload contains, whether pagination applies, or whether results are household-scoped. For a tool with zero annotation coverage this is thin.

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

Conciseness2/5

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

The core statement is front-loaded and short, but roughly two-thirds of the text is a keyword dump (get/list/search/find/browse/fetch/read repetitions) that adds no semantic value and bloats the definition.

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

Completeness3/5

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

For a zero-parameter read tool with no output schema, the description covers the minimum (what it fetches) but leaves the response shape and scoping unaddressed. Adequate but with clear gaps.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4; the schema is self-explanatory and there is nothing the description needs to compensate for.

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

Purpose4/5

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

States a specific verb+resource ('Get Household Preferences', 'List preferences'), which is clear enough for an agent. However it does not distinguish itself from the sibling update_household_preferences or get_group_preferences / get_logged_in_user_household beyond the resource name, 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.

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative-tool guidance. The 'Households: Self Service' tag hints at scope but does not tell the agent anything actionable about selecting this tool over siblings.

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

get_household_recipeC

Get Household Recipe — Households: Self Service. Get recipe. [GET /api/households/self/recipes/{recipe_slug}] Returns recipe data for the current household Keywords: get_household_recipe, get household recipe, get recipe, fetch recipe, read recipe, retrieve recipe, view recipe, show recipe, recipe, recipes, households self service, households, self, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
recipe_slugYes

TDQS

C2.3/5.0
Behavior2/5

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 mentions the GET endpoint and household scoping, but says nothing about authentication, error behavior on an unknown slug, or the shape of the returned data; the word 'read-only' appears only as an SEO keyword, not as a behavioral statement.

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

Conciseness2/5

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

The useful content is one short line followed by a long, redundant keyword list ('get household recipe, get recipe, fetch recipe, read recipe, retrieve recipe, view recipe, show recipe...') that repeats the same verb across synonyms without adding meaning. The keyword block consumes most of the text without earning its place.

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

Completeness2/5

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

With no annotations, no output schema, and 0% parameter description coverage, the description should carry the load, yet it omits return contents, auth requirements, and error conditions. For a fetch tool in a crowded sibling space, this leaves material gaps.

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

Parameters2/5

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

Schema description coverage is 0% for the single required recipe_slug parameter, and the description does not explain what a slug is, how to obtain one, or how it differs from a recipe id. The URL template {recipe_slug} is the only signal that it is a path parameter.

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

Purpose3/5

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

The description gives a verb and resource ('Get recipe ... Returns recipe data for the current household') and the URL template shows household scoping via /households/self/recipes/{recipe_slug}. However, 'Get recipe' is a near-tautological restatement of the name, and the description never distinguishes this tool from the numerous sibling recipe-fetch tools it sits beside.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives such as get_recipe, recipe_crud_get_one, or shared_recipes_get_one, despite many plausible siblings. The only hint is the HTTP path, which the agent must interpret on its own.

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

get_invite_tokensC

Get Invite Tokens — Households: Invitations. List invitations. [GET /api/households/invitations] Keywords: get_invite_tokens, get invite tokens, list invitation, list invitations, get invitation, get invitations, search invitation, search invitations, find invitation, find invitations, browse invitation, browse invitations, fetch invitation, fetch invitations, read invitation, read invitations, invitation, invitations, households invitations, households, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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, yet it discloses almost nothing: no authorization/permission requirements, no pagination behavior, and no indication of what the response contains. The single '[GET ...]' path and 'read-only' keyword are the only behavioral hints.

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

Conciseness2/5

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

The meaningful content ('List invitations' plus endpoint) is front-loaded, but the bulk of the description is a long comma-separated keyword dump that adds little selection value for an agent. It is bloated without informing invocation.

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

Completeness3/5

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

For a zero-parameter list tool with no output schema, the description is minimally adequate: the agent can call it correctly. However, with no annotations and no output schema, it should describe the return shape or scoping (e.g., whole household), which it does not.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool is 4. No additional meaning is needed.

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

Purpose4/5

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

The description states a clear verb+resource ('Get Invite Tokens', 'List invitations') and even includes the backing endpoint [GET /api/households/invitations], so the agent knows this is a read of household invitations. It implicitly distinguishes from siblings like create_invite_token and email_invitation, though it never names them explicitly, keeping it at a 4.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance or mention of alternatives such as create_invite_token (to make a token) or email_invitation (to send one). Usage is only implied by the read-only vocabulary 'list'/'get'.

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

get_logged_in_userC

Get Logged In User — Users: CRUD. Get user self. [GET /api/users/self] Keywords: get_logged_in_user, get logged in user, get user self, fetch user self, read user self, retrieve user self, view user self, show user self, user self, users crud, users, self, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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 only drops the bare keyword 'read-only' and never states the auth requirement (must be logged in), what fields the profile returns, or error behavior for an unauthenticated call.

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

Conciseness2/5

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

The core phrase 'Get user self' is front-loaded, but the bulk of the text is a keyword dump repeating the same concept in eight phrasings ('get/fetch/read/retrieve/view/show user self') plus generic tokens. That padding does not earn its place.

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

Completeness3/5

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

For a zero-parameter read tool with no output schema, the description is minimally adequate: it conveys that the current user's own record is returned. It does not describe the returned profile shape or any auth precondition, leaving gaps an agent would prefer filled.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4. There are no inputs for the description to clarify, and the schema trivially matches.

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

Purpose4/5

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

States a specific verb+resource: 'Get user self', backed by the HTTP route [GET /api/users/self]. It is understandable apart from most siblings, though it never explicitly separates itself from update_user or the more specific get_logged_in_user_* variants.

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

Usage Guidelines2/5

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

There is no when-to-use guidance or mention of any alternative. With siblings like get_logged_in_user_ratings, get_logged_in_user_favorites, and update_user, the agent gets no help deciding this is the base profile fetch.

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

get_logged_in_user_favoritesC

Get Logged In User Favorites — Users: CRUD. List favorites. [GET /api/users/self/favorites] Keywords: get_logged_in_user_favorites, get logged in user favorites, list favorite, list favorites, get favorite, get favorites, search favorite, search favorites, find favorite, find favorites, browse favorite, browse favorites, fetch favorite, fetch favorites, read favorite, read favorites, favorite, favorites, users crud, users, self, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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 discloses only that the operation is read-only and names the REST endpoint; auth requirements, pagination, whether 'favorites' are recipes, and return shape are all unstated.

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

Conciseness2/5

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

The first two clauses are adequate, but roughly forty synonym keywords ('list favorite, list favorites, get favorite, get favorites, search favorite...') are tacked on, inflating the text without adding meaning. Signal-to-noise is poor and the useful content is buried.

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

Completeness3/5

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

For a parameterless read tool with no output schema, the endpoint path and read-only framing cover the minimum. However, the absence of any statement about what a favorite actually is or how it differs from get_favorites leaves the definition adequate but incomplete.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to explain beyond the implicit 'self' scoping, which is in fact conveyed by the endpoint path and title. Baseline 4 for a parameterless tool.

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

Purpose4/5

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

The description gives a specific verb+resource combination: listing the favorites belonging to the authenticated user, plus the concrete endpoint GET /api/users/self/favorites. It is clear but does not differentiate itself from close siblings such as get_favorites, add_favorite, and remove_favorite, which are never mentioned.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance. The 'read-only' keyword hints it is a read operation, but nothing tells the agent why it should choose this over get_favorites or how it relates to add_favorite/remove_favorite.

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

get_logged_in_user_groupC

Get Logged In User Group — Groups: Self Service. Get group self. [GET /api/groups/self] Returns the Group Data for the Current User Keywords: get_logged_in_user_group, get logged in user group, get group self, fetch group self, read group self, retrieve group self, view group self, show group self, group self, groups self service, groups, self, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It does indicate the operation is a read via the GET endpoint and the 'read-only' keyword, but it says nothing about authentication requirements, scope of returned group data, or error behavior for unauthenticated callers.

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

Conciseness2/5

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

The definition is dominated by a redundant keyword block ('get group self, fetch group self, read group self...') that repeats the same phrase a dozen ways. The genuinely informative content is two short lines buried at the top and bottom.

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

Completeness3/5

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

For a zero-parameter read tool with no output schema, the description conveys who the data is for (the current user) and where it comes from, which is minimally sufficient. It omits what fields the group data contains and any auth prerequisite, leaving gaps for a tool with no annotations.

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

Parameters4/5

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

The tool takes zero parameters, so per the rubric the baseline is 4. The description correctly implies no inputs are needed by describing the call as fetching the current user's own group.

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

Purpose4/5

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

The description states a clear verb+resource ('Get group self', 'Returns the Group Data for the Current User') and pins the exact endpoint [GET /api/groups/self], which separates it from siblings like get_group_members or get_group_preferences. The keyword dump dilutes it, but the core purpose is unambiguous.

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

Usage Guidelines2/5

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

No when-to-use guidance is given and no alternative sibling is named. An agent cannot tell from this text whether to prefer this over get_logged_in_user_household or get_group_member for a given need.

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

get_logged_in_user_householdB

Get Logged In User Household — Households: Self Service. Get household self. [GET /api/households/self] Returns the Household Data for the Current User Keywords: get_logged_in_user_household, get logged in user household, get household self, fetch household self, read household self, retrieve household self, view household self, show household self, household self, households self service, households, self, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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 discloses that this is a read operation via the GET route and the 'read-only' keyword, and says it returns household data for the current user. It does not clarify auth requirements, error behavior, or rate limits, which keeps it at a moderate rather than strong disclosure level.

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

Conciseness2/5

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

The core information is front-loaded, but the description is bloated by a long keyword list that repeats synonyms such as 'get household self', 'fetch household self', and the individual verbs 'get, fetch, read, retrieve, view, show'. This keyword stuffing adds noise without decision value and makes the description poorly sized.

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

Completeness4/5

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

For a zero-parameter, read-only endpoint, the description supplies the route and summarizes the return as 'Household Data for the Current User'. No output schema exists, but the return content is described well enough. Auth is implied by 'Logged In User', though permissions are not explicitly confirmed.

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

Parameters4/5

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

The tool has zero parameters and 100% schema description coverage on an empty schema. Per the rubric baseline for a 0-parameter tool, a 4 is appropriate. The description adds no parameter meaning because no parameters exist.

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

Purpose4/5

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

The description states a specific verb and resource: get the household belonging to the logged-in user. The 'self' and 'Current User' framing distinguishes it from siblings such as get_logged_in_user (user profile), get_one_household, and get_all_households (other household scopes). It is clear, though not elegantly phrased.

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

Usage Guidelines3/5

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

Usage is implied through 'Self Service' and 'Current User', suggesting this is the correct tool when the caller wants the current user's own household. However, it does not explicitly state when to choose it over get_logged_in_user, get_logged_in_user_group, or get_household, nor does it give exclusions.

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

get_logged_in_user_rating_for_recipeC

Get Logged In User Rating For Recipe — Users: CRUD. Get rating. [GET /api/users/self/ratings/{recipe_id}] Keywords: get_logged_in_user_rating_for_recipe, get logged in user rating for recipe, get rating, fetch rating, read rating, retrieve rating, view rating, show rating, rating, ratings, users crud, users, self, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
recipe_idYes

TDQS

C2.3/5.0
Behavior2/5

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, and it mostly does not. The embedded 'read-only' keyword and the GET verb imply a safe read, but nothing is said about authentication requirements, 404 behavior when the user has not rated the recipe, or the shape of the returned rating.

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

Conciseness2/5

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

The useful content is a single line at the top; everything after it is a keyword list that repeats the tool name and generic CRUD/HTTP verbs with no informational value. Structure is front-loaded but heavily padded.

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

Completeness2/5

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

With no annotations, no output schema, and 0% schema description coverage, the description should compensate for all three, and it does not. An agent knows roughly what it fetches but not what it receives or under what conditions it fails.

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

Parameters2/5

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

Schema description coverage is 0% and the single recipe_id parameter has no description in the schema. The description only exposes it via the path template {recipe_id}, which implies it identifies the recipe but adds no format, source, or lookup guidance beyond that.

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

Purpose3/5

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

The title restatement plus 'Get rating' and the endpoint [GET /api/users/self/ratings/{recipe_id}] together convey that this fetches the current user's rating for one specific recipe. However, it never distinguishes itself from the very close siblings get_ratings and get_logged_in_user_ratings, so an agent must infer the difference from the name alone.

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

Usage Guidelines2/5

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

There is no when-to-use or when-not-to-use guidance at all; the body is a restated title, an HTTP path, and a keyword dump. The agent gets no signal about choosing this over get_ratings (all ratings) or set_rating (write counterpart).

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

get_logged_in_user_ratingsC

Get Logged In User Ratings — Users: CRUD. List ratings. [GET /api/users/self/ratings] Keywords: get_logged_in_user_ratings, get logged in user ratings, list rating, list ratings, get rating, get ratings, search rating, search ratings, find rating, find ratings, browse rating, browse ratings, fetch rating, fetch ratings, read rating, read ratings, rating, ratings, users crud, users, self, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.7/5.0
Behavior2/5

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 reveals the HTTP method implicitly via the endpoint and that the tool is read-only, but says nothing about authentication requirements (the 'self' scope implies a logged-in session), pagination, filtering, or what the response contains. For a listing tool with zero annotation coverage, this is thin.

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

Conciseness2/5

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

The useful content is one short clause plus an endpoint path; the remainder is aggressive keyword stuffing ('rating, ratings, users crud, users, self, list, get, search, find, browse, fetch, read, read-only, mealie'). This bloats the definition and pushes the actual purpose behind noise, so it fails on both brevity and front-loading.

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

Completeness3/5

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

For a zero-parameter, no-output-schema read endpoint, the endpoint path and 'read-only' hint are roughly the minimum an agent needs. Missing are the authentication expectation and any statement about response shape or pagination, which would matter for a listing endpoint.

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

Parameters4/5

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

The tool takes zero parameters, so per the rubric the baseline is 4. There is no parameter vocabulary to explain, and the description correctly implies a no-argument call scoped to the authenticated user's own ratings.

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

Purpose3/5

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

The description does state the verb and resource ('List ratings' for the logged-in user) and includes the endpoint [GET /api/users/self/ratings], so the operation is identifiable. However, it is buried in a keyword dump that restates the tool name dozens of times, and it never distinguishes itself from the nearby sibling 'get_ratings' or 'get_logged_in_user_rating_for_recipe'. Clear enough to act on, but muddy.

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

Usage Guidelines2/5

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

No explicit when-to-use guidance. The word 'read-only' appears only as a keyword, and the tool parenthetically lists generic verbs (search, find, browse, fetch, read) that imply usage without stating conditions. With siblings like get_ratings (all ratings) and get_logged_in_user_rating_for_recipe (single rating) adjacent, the definition should say why an agent picks this one, and it does not.

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

get_one_householdC

Get One Household — Groups: Households. Get household. [GET /api/groups/households/{household_slug}] Keywords: get_one_household, get one household, get household, fetch household, read household, retrieve household, view household, show household, household, households, groups households, groups, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
household_slugYes

TDQS

C2.3/5.0
Behavior2/5

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 only that this is a GET (hence read-only, echoed by the 'read-only' keyword) and that it is scoped to a slug; it says nothing about authentication, permission requirements, 404 behavior for unknown slugs, or what the response contains.

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

Conciseness2/5

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

The body is dominated by a keyword list ('get one household, get household, fetch household, read household, retrieve household, view household, show household...') that repeats the same intent many times without adding information. The useful content (one verb, one path) is buried under that padding.

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

Completeness2/5

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

For a simple single-resource read tool with no output schema, no annotations, and an undocumented parameter, the description should at least cover the slug's origin and how this differs from get_household/get_all_households. It covers neither, leaving the agent to guess.

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

Parameters2/5

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

Schema coverage is 0% for the single parameter, and the description adds nothing beyond the path template {household_slug} — no format, case-sensitivity, or where the slug comes from. Since there is a real parameter to explain, the zero-coverage gap is not compensated.

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

Purpose3/5

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

The description states a verb+resource ('Get household') and the concrete endpoint GET /api/groups/households/{household_slug}, so the agent knows it fetches a single household by slug. However, it does nothing to distinguish this from close siblings such as get_household, get_logged_in_user_household, get_all_households, or get_household_members, which is exactly where differentiation matters most.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of any alternative. The only hint is the endpoint path, from which an agent must infer that this is the single-resource variant. The rest of the text is keyword enumeration, not guidance.

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

get_ratingsC

Get Ratings — Users: Ratings. List ratings. [GET /api/users/{id}/ratings] Get user's rated recipes Keywords: get_ratings, get ratings, list rating, list ratings, get rating, search rating, search ratings, find rating, find ratings, browse rating, browse ratings, fetch rating, fetch ratings, read rating, read ratings, rating, ratings, users ratings, users, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

TDQS

C2.3/5.0
Behavior2/5

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 nothing beyond the implied read-only nature of the GET path: no mention of auth requirements, pagination, result shape, or whether a non-existent user errors.

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

Conciseness2/5

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

The useful content ('Get user's rated recipes') is front-loaded, but it is buried under a long auto-generated keyword list of nearly every synonym for 'get/list/rating'. Most of the text does not earn its place.

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

Completeness2/5

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

For a trivial one-parameter read tool the bar is low, but with 0% schema coverage and no annotations the description should at least explain the id parameter and any result semantics. It does neither.

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

Parameters2/5

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

Schema coverage is 0% and the sole required parameter 'id' is undocumented. The endpoint path loosely implies id is a user id, but the description never states this or its format (uuid4) beyond what the schema already shows.

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

Purpose3/5

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

The line 'Get user's rated recipes' states a verb and resource, and the '[GET /api/users/{id}/ratings]' path clarifies it returns ratings for a specific user. However, the opening 'Get Ratings — Users: Ratings. List ratings.' is largely a restatement of the name, and it never distinguishes this from close siblings like get_logged_in_user_ratings or get_logged_in_user_rating_for_recipe.

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

Usage Guidelines2/5

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 versus the many sibling rating tools (get_logged_in_user_ratings, get_ratings, get_logged_in_user_rating_for_recipe). The agent must infer the distinction from the endpoint path alone.

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

get_recipeD

Get Recipe — Explore: Recipes. Get recipe. [GET /api/explore/groups/{group_slug}/recipes/{recipe_slug}] Keywords: get_recipe, get recipe, fetch recipe, read recipe, retrieve recipe, view recipe, show recipe, recipe, recipes, explore recipes, explore, groups, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
group_slugYes
recipe_slugYes

TDQS

D1.6/5.0
Behavior2/5

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, yet it says nothing about permissions (group membership), return shape, or error behavior. The only signals are the 'read-only' keyword and the GET endpoint path, which are weak and indirect.

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

Conciseness1/5

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

Roughly half the text is a bloated keyword dump ('get_recipe, get recipe, fetch recipe, read recipe... mealie') that repeats the name and adds no meaning. The single substantive sentence is a tautology, so every sentence after 'Get Recipe' fails to earn its place.

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

Completeness1/5

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

With no annotations, no output schema, 0% parameter coverage, and a crowded sibling set, the description needs to do heavy lifting but supplies none of the required context for correct invocation.

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

Parameters2/5

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

Schema description coverage is 0% for both required params. The endpoint template implies group_slug and recipe_slug are path segments, but the description never states their format, source, or constraints, so the schema gap is not compensated.

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

Purpose2/5

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

The operative sentence is 'Get recipe,' a tautological restatement of the tool name. The endpoint template and 'Explore: Recipes' hint at a group-scoped recipe fetch, but nothing distinguishes it from the very similar sibling recipe_crud_get_one or get_shared_recipe, so an agent cannot tell which fetch to pick.

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

Usage Guidelines1/5

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

No when-to-use, when-not-to-use, or alternative is stated. The keyword tail (get, fetch, read, retrieve, view, show) is search-synonym noise, not guidance, and it actively obscures rather than routes among the many sibling 'get recipe'-like tools.

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

get_recipe_as_formatC

Get Recipe As Format — Recipe: Exports. Export recipes. [GET /api/recipes/{slug}/exports]

Parameters

template_name: The name of the template to use to use in the exports listed. Template type will automatically be set on the backend. Because of this, it's important that your templates have unique names. See available names and formats in the /api/recipes/exports endpoint. Keywords: get_recipe_as_format, get recipe as format, export recipe, list recipe, list recipes, get recipe, get recipes, search recipe, search recipes, find recipe, find recipes, browse recipe, browse recipes, fetch recipe, fetch recipes, read recipe, read recipes, recipe, recipes, recipe exports, exports, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes
template_nameYes

TDQS

C2.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. It mentions that 'Template type will automatically be set on the backend' and that template names must be unique, which adds some value, but it omits critical details like required permissions, whether the operation is read-only (implied but not stated), and the response format.

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

Conciseness2/5

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

The description is poorly structured: a title-like preface, a one-line summary, an endpoint, a long keyword list, and a single parameter note. The keyword list is unnecessary bloat that distracts from useful information.

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

Completeness2/5

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

For a tool with two required parameters, no annotations, and no output schema, the description is incomplete. It doesn't explain what the export returns, the format of the output, or any side effects. The single sentence about template uniqueness is helpful but insufficient.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the full burden. It explains that 'template_name' refers to a template and that names must be unique, but it does not clarify the 'slug' parameter at all, leaving half of the parameters undocumented.

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

Purpose3/5

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

The description states the action ('Export recipes') and includes the endpoint, but the phrasing 'Get Recipe As Format' is unusual and lacks a clear, direct statement of what the tool returns. It is distinguishable from siblings like get_recipe, but the purpose could be clearer.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives such as get_recipe or bulk_export_recipes. The keyword list is not usage guidance; it's keyword stuffing.

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

get_recipe_assetC

Get Recipe Asset — Recipe: Images and Assets. Get asset. [GET /api/media/recipes/{recipe_id}/assets/{file_name}] Returns a recipe asset Keywords: get_recipe_asset, get recipe asset, get asset, fetch asset, read asset, retrieve asset, view asset, show asset, asset, assets, recipe images and assets, media, recipes, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_nameYes
recipe_idYes

TDQS

C2.5/5.0
Behavior2/5

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

No annotations are provided, so the description bears full burden. It mentions 'read-only' in the keyword dump, implying a safe read, but does not state whether authentication is required, what the response contains (binary file, URL, metadata), or error behavior for missing assets. The endpoint format hints at behavior but leaves significant gaps.

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

Conciseness2/5

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

The description is cluttered with redundant keyword lists ('get, fetch, read, retrieve, view, show, read-only') and repeats the title and endpoint. The useful information (endpoint, read-only) is buried among noise, violating front-loading and economy of words.

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

Completeness2/5

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

For a read operation with no output schema and no annotations, the description is incomplete: it does not explain the return type, authentication needs, or how it differs from get_recipe_img. The keyword dump adds SEO-style terms but not the contextual detail an agent needs to invoke it correctly.

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

Parameters2/5

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. It only shows the path template '{recipe_id}/{file_name}', which mirrors the required parameters but adds no meaning about format (e.g., UUID for recipe_id, file name constraints) or whether file_name is case-sensitive or includes an extension. This is insufficient for a 2-param tool with zero schema docs.

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

Purpose4/5

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

States a specific verb+resource ('Get Recipe Asset') with the exact REST endpoint documented, so an agent knows it retrieves an asset for a recipe. However, it does not differentiate itself from the very similar sibling 'get_recipe_img', which also fetches recipe media, leaving ambiguity about which to use for images vs. other assets.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives like get_recipe_img or upload_recipe_asset. The keyword list implies 'read-only' retrieval but provides no conditions, prerequisites, or exclusions to help an agent select it correctly.

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

get_recipe_commentsC

Get Recipe Comments — Recipe: Comments. List comments. [GET /api/recipes/{slug}/comments] Get all comments for a recipe Keywords: get_recipe_comments, get recipe comments, list comment, list comments, get comment, get comments, search comment, search comments, find comment, find comments, browse comment, browse comments, fetch comment, fetch comments, read comment, read comments, comment, comments, recipe comments, recipes, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

TDQS

C2.4/5.0
Behavior2/5

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 implies a read ('Get', plus the stuffed keyword 'read-only') but never states auth/permission requirements, pagination, ordering, or what happens for a recipe with no comments. The single keyword 'read-only' is buried in spam rather than stated as a property.

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

Conciseness2/5

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

The useful content is two short sentences; everything after 'Keywords:' is a long unbroken enumeration of synonyms and generic verbs ('list, get, search, find, browse, fetch, read') that consumes most of the text. The purpose is front-loaded, but the bulk of the description is padding that does not earn its place.

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

Completeness2/5

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

For a single-parameter read tool with no annotations and no output schema, the description should at least sketch the return shape (comment fields, ordering) or note empty-result behavior. It does neither, and the endpoint line is the only structured signal available to the agent.

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

Parameters3/5

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

Schema coverage is 0% and the schema gives no description for 'slug'. The endpoint template '[GET /api/recipes/{slug}/comments]' partially compensates by showing that slug identifies the recipe whose comments are returned, which is more than the bare schema provides, but format expectations or error behavior for an unknown slug remain unstated.

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

Purpose3/5

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

The core sentence 'Get all comments for a recipe' states a clear verb and resource, and the endpoint line confirms scope. However, it offers no differentiation from the near-identical sibling recipe_comments_get_all (or recipe_comments_get_one), leaving the agent unable to tell which one to pick. The repetitive preamble ('Get Recipe Comments — Recipe: Comments. List comments.') adds noise without adding precision.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives such as recipe_comments_get_all, recipe_comments_get_one, or recipe_comments_create_one. The only usage hint is the HTTP verb in the path, which is not guidance an agent can act on.

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

get_recipe_formats_and_templatesD

Get Recipe Formats And Templates — Recipe: Exports. Export recipes. [GET /api/recipes/exports] Keywords: get_recipe_formats_and_templates, get recipe formats and templates, export recipe, list recipe, list recipes, get recipe, get recipes, search recipe, search recipes, find recipe, find recipes, browse recipe, browse recipes, fetch recipe, fetch recipes, read recipe, read recipes, recipe, recipes, recipe exports, exports, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

D1.9/5.0
Behavior1/5

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 states nothing about read-only safety, authentication requirements, side effects, or return format, offering only the HTTP method and path.

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

Conciseness2/5

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

The core statement is front-loaded, but the massive keyword block is pure noise that bloats the definition without adding meaning. Every keyword after the first few fails to earn its place.

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

Completeness2/5

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

For a simple GET with no parameters and no output schema, the description should at least clarify what data is returned (e.g., a list of available export formats/templates) and that it is read-only. It does neither, leaving key context missing.

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

Parameters4/5

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

The tool takes zero parameters, and schema description coverage is 100%. There is no parameter information the description could add, so the baseline of 4 applies.

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

Purpose2/5

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

The description restates the tool name then adds 'Export recipes', which muddies rather than clarifies the purpose. It does not distinguish this tool from siblings like get_recipe_as_format or bulk_export_recipes, leaving an agent unsure whether it lists formats/templates or performs an export action.

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

Usage Guidelines1/5

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 get_recipe_as_format or bulk_export_recipes. The keyword list is search fodder, not usage context.

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

get_recipe_imgC

Get Recipe Img — Recipe: Images and Assets. Get image. [GET /api/media/recipes/{recipe_id}/images/{file_name}] Takes in a recipe id, returns the static image. This route is proxied in the docker image and should not hit the API in production Keywords: get_recipe_img, get recipe img, get image, fetch image, read image, retrieve image, view image, show image, image, images, recipe images and assets, media, recipes, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_nameYes
recipe_idYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations, the description carries the full load. It discloses that the call returns a static image and behaves differently in production (proxied), which is real behavioral context, but it never states auth requirements, error behavior for missing files, or content type.

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

Conciseness2/5

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

The useful content is two short clauses; the rest is a title restatement and a 20-item keyword dump that adds noise without information. Structure is a raw dump rather than front-loaded guidance.

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

Completeness2/5

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

No output schema and no annotations means the description should cover returns, auth, and both parameters. It covers roughly one parameter and the production-proxy caveat, leaving the file_name enum semantics and access requirements unexplained for a 2-parameter asset fetcher.

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

Parameters2/5

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. It explains only recipe_id ('takes in a recipe id') and says nothing about file_name or the three-value ImageType enum (original/min-original/tiny-original), leaving the second required parameter semantically opaque.

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

Purpose4/5

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

States a specific verb and resource ('Get image' for a recipe), and the route notation clarifies it retrieves a static asset by recipe_id and file_name. It is distinguishable from mutation siblings like update_recipe_image and delete_recipe_image, though it never names the closest read sibling get_recipe_asset.

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

Usage Guidelines3/5

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

The note that the route is proxied in the docker image and 'should not hit the API in production' is genuinely useful context, but it is operational trivia rather than a when-to-use statement. No guidance is given on choosing this over get_recipe_asset or get_user_image.

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

get_recipe_timeline_event_imgC

Get Recipe Timeline Event Img — Recipe: Images and Assets. Get timeline. [GET /api/media/recipes/{recipe_id}/images/timeline/{timeline_event_id}/{file_name}] Takes in a recipe id and event timeline id, returns the static image. This route is proxied in the docker image and should not hit the API in production Keywords: get_recipe_timeline_event_img, get recipe timeline event img, get timeline, fetch timeline, read timeline, retrieve timeline, view timeline, show timeline, timeline, recipe images and assets, media, recipes, images, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_nameYes
recipe_idYes
timeline_event_idYes

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral burden and does disclose that it returns a static image and is proxied in Docker / not used in production. It does not state authentication or permission requirements, and read-only behavior is only implied by the HTTP GET route. Useful context is present 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.

Conciseness2/5

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

The core content is front-loaded reasonably, but the description includes a blanket keyword dump and repeated synonyms such as get/fetch/read/retrieve/view/show timeline. Phrases like 'Get timeline' are vague and the tail is largely search-engine filler rather than information. It is bloated relative to the useful payload.

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

Completeness2/5

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

This is a three-parameter, all-required tool with no annotations, no output schema, and zero schema description coverage. The description covers the general purpose and a deployment limitation, but it omits the required file_name parameter, return format details, and any permission or error context. It is not complete enough for reliable invocation.

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

Parameters2/5

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

Schema description coverage is 0%, so the description should explain the parameters. It names recipe_id and timeline_event_id, which is helpful, but it completely omits the required file_name parameter and does not mention its allowed values. That leaves one third of the required inputs unaddressed beyond the raw schema.

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

Purpose4/5

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

The description states a specific verb and resource: get a recipe timeline event image, and says it returns the static image. The route and image scope distinguish it from generic get_recipe_img, though it does not name that sibling explicitly. The keyword tail adds noise rather than clarity.

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

Usage Guidelines3/5

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

It gives a deployment-oriented when-not signal: the route is proxied in the docker image and should not hit the API in production. However, it does not point to alternatives such as get_recipe_img or get_recipe_asset when a different image type is wanted. Usage is therefore implied but not fully guided.

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

get_shared_recipeD

Get Shared Recipe — Recipe: Shared. Get shared. [GET /api/recipes/shared/{token_id}] Keywords: get_shared_recipe, get shared recipe, get shared, fetch shared, read shared, retrieve shared, view shared, show shared, shared, recipe shared, recipes, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
token_idYes

TDQS

D1.3/5.0
Behavior1/5

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, yet it discloses nothing beyond a keyword list. It does not state that this is a read-only unauthenticated/token-based access path, whether the token can be revoked, or what the response contains. The only hint of read-only behavior is buried in an SEO-style keyword list, which is not an intentional disclosure.

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

Conciseness2/5

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

The description is clogged with an SEO keyword dump ('Keywords: get_shared_recipe, get shared recipe, get shared, fetch shared...') that repeats the tool name in every permutation. The actual useful content (endpoint and parameter) is a single line, so the signal-to-noise ratio is poor.

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

Completeness1/5

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

For a tool with a required token parameter, 0% schema documentation, no annotations, and no output schema, the description is grossly incomplete. It leaves the agent without the semantics of token_id or any behavioral context needed to invoke it correctly.

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

Parameters1/5

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 token_id parameter, but it does not. It never explains that token_id is a UUID4 shared-recipe token, nor where a caller would obtain one or what happens with an invalid/expired token.

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

Purpose2/5

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

The description essentially restates the tool name: 'Get Shared Recipe — Recipe: Shared. Get shared.' It does include the endpoint GET /api/recipes/shared/{token_id}, which confirms it fetches a shared recipe by token, but the prose adds no discriminating information versus siblings like get_recipe or shared_recipes_get_one.

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

Usage Guidelines1/5

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. The sibling list includes get_recipe, shared_recipes_get_one, and shared_recipes_get_all, but the description never distinguishes the token-based shared access flow from those. No when-to-use or exclusion criteria are provided.

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

get_startup_infoC

Get Startup Info — App: About. Get startup info. [GET /api/app/about/startup-info] returns helpful startup information Keywords: get_startup_info, get startup info, fetch startup info, read startup info, retrieve startup info, view startup info, show startup info, startup info, app about, app, about, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. Beyond the embedded 'read-only' keyword it says nothing about idempotency, auth requirements, caching, or what the response looks like. For a no-param read endpoint the bar is low, but the description still adds almost 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.

Conciseness2/5

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

The meaningful content is two short phrases, buried under a long, redundant keyword dump ('get startup info, fetch startup info, read startup info...'). The signal is not front-loaded ahead of the noise, and the keyword list adds no selecting value.

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

Completeness2/5

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

For a simple parameterless tool the description could still say what the returned startup data covers, but it only offers the tautology 'returns helpful startup information'. With no output schema, no annotations, and no explanation of contents, an agent lacks enough context to know why or when to call it.

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

Parameters4/5

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

The tool takes zero parameters, so there is no parameter semantics to document. Per the rubric, a zero-parameter tool gets a baseline of 4.

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

Purpose2/5

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

The description essentially restates the tool name ('Get Startup Info ... get startup info') and adds only the HTTP endpoint. It never explains what 'startup information' actually contains, so an agent cannot distinguish it from the sibling app_about_get_app_info. This is a tautological restatement rather than a specific verb+resource distinction.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool, when not to, or how it relates to the near-identical app_about_get_app_info sibling. The trailing keyword list (fetch, read, retrieve, view...) is keyword stuffing, not usage guidance.

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

get_statisticsC

Get Statistics — Households: Self Service. List statistics. [GET /api/households/statistics] Keywords: get_statistics, get statistics, list statistic, list statistics, get statistic, search statistic, search statistics, find statistic, find statistics, browse statistic, browse statistics, fetch statistic, fetch statistics, read statistic, read statistics, statistic, statistics, households self service, households, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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. The 'list'/'GET' phrasing implies a read-only operation, but there is no disclosure of return format, whether results are scoped to the logged-in household, permission requirements, or pagination behavior.

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

Conciseness2/5

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

The core sentence is front-loaded, but it is buried under an extensive keyword list that repeats 'statistic'/'statistics' with a dozen synonyms. That bulk adds no routing information and hurts readability.

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

Completeness2/5

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

With no annotations and no output schema, the description is the only source of behavioral detail, and it says nothing about what 'statistics' are returned or what shape the response takes. For a household-scoped reader in a large tool set, this leaves the agent guessing.

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

Parameters4/5

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

The tool takes zero parameters, so the schema has nothing to communicate and the baseline of 4 applies. The description adds no parameter meaning, but none is needed.

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

Purpose4/5

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

The description gives a specific verb+resource ('List statistics') scoped to Households: Self Service and even cites the underlying endpoint GET /api/households/statistics. It is clear what the tool does, though it never contrasts itself with any of the many sibling get_* tools.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives, no prerequisites, and no exclusions. An agent reading it knows what it does but not when to reach for it over, say, get_household or other household-scoped readers.

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

get_storageC

Get Storage — Groups: Self Service. Get storage. [GET /api/groups/storage] Keywords: get_storage, get storage, fetch storage, read storage, retrieve storage, view storage, show storage, storage, groups self service, groups, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.1/5.0
Behavior2/5

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 implies a read (verb 'get', plus a 'read-only' token buried in the keyword dump), but it says nothing about the return payload shape, required auth scope, or whether the result is group-scoped or user-scoped. The keyword stuffing is the only behavioral signal offered.

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

Conciseness2/5

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

Front-loading is fine (name and endpoint come first), but roughly two-thirds of the text is a redundant keyword blob repeating 'get/fetch/read/retrieve/view/show storage.' That padding dilutes rather than clarifies, which is the opposite of conciseness.

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

Completeness2/5

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

With no annotations, no output schema, and no parameter schema to lean on, the description is the only source of information an agent has, yet it never explains what 'storage' contains or why one would call this. For a no-input discovery tool, that leaves a real gap in deciding whether to invoke it at all.

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

Parameters4/5

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

The tool takes zero parameters, which is the baseline-4 case. There is nothing for the schema or description to disambiguate, so no deficiency here.

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

Purpose2/5

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

The description is essentially a tautology of the name: 'Get storage' restates 'get_storage' without saying what storage data is returned or what it represents (disk usage, group storage stats, etc.). It does add the routing hint '[GET /api/groups/storage]' and the 'Groups: Self Service' category, but nothing that lets an agent distinguish it semantically from other group-scoped getters like get_group_preferences.

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

Usage Guidelines1/5

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

There is no when-to-use guidance, no prerequisites, and no mention of alternatives among the very large sibling set (get_statistics, get_group_preferences, get_logged_in_user_group, etc.). The keyword list ('get storage, fetch storage, read storage...') is synonym padding, not usage guidance.

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

get_todays_mealsC

Get Todays Meals — Households: Mealplans. List meal plans. [GET /api/households/mealplans/today] Keywords: get_todays_meals, get todays meals, list meal plan, list meal plans, get meal plan, get meal plans, search meal plan, search meal plans, find meal plan, find meal plans, browse meal plan, browse meal plans, fetch meal plan, fetch meal plans, read meal plan, read meal plans, meal plan, meal plans, households meal plans, households mealplans, households, today, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.4/5.0
Behavior2/5

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. 'read-only' in the keyword dump hints at safety, but the description says nothing about auth requirements, household scoping, output shape, or what 'today' means in the user's timezone. For a tool with zero annotation coverage this is a real gap.

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

Conciseness1/5

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

Dominated by a mechanical keyword dump ('get meal plan, get meal plans, search meal plan...') that adds no informational value. Signal-to-noise is very low and the useful scoping detail is drowned in noise.

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

Completeness2/5

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

For a simple zero-param read tool the description is nearly sufficient, but it omits which household the meals are pulled from (current user's household?) and how 'today' is resolved, both of which an agent needs. No output schema exists to fill the gap.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing to document and the baseline of 4 applies. The description correctly does not invent parameter semantics.

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

Purpose3/5

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

States a verb+resource ('List meal plans') and identifies the endpoint (GET /api/households/mealplans/today), but the 'today' scoping that would distinguish it from the siblings households_mealplans_get_all and households_mealplans_get_one is buried in the keyword dump rather than stated as the defining constraint. The bloated keyword list obscures rather than sharpens the purpose.

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

Usage Guidelines2/5

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

No explicit when/when-not guidance. A near-identical sibling (households_mealplans_get_all) exists, and the description never says to prefer this one when the intent is 'today' rather than an arbitrary range. There is no routing information at all.

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

get_tokenD

Get Token — Users: Authentication. Create token. [POST /api/auth/token] Keywords: get_token, get token, create token, add token, new token, make token, write token, token, users authentication, auth, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo

TDQS

D1.7/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden, yet it discloses almost nothing: only that it is a POST to /api/auth/token. It omits that it authenticates supplied credentials, what it returns (a token), or any auth/rate-limit behavior. The synonym spam adds no behavioral information.

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

Conciseness2/5

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

The first sentence is front-loaded, but it is immediately buried under a long comma-separated keyword dump with heavy duplication ('get token, create token, add token, new token, make token, write token'). None of those keywords earn their place.

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

Completeness2/5

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

For an authentication endpoint with no annotations, no output schema, and an undocumented nested body, the definition is far too thin — an agent cannot tell what credentials are required or what the call produces.

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

Parameters1/5

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

Schema description coverage is 0%, and the single body object holds password, username, and remember_me with no descriptions anywhere. The description says nothing about these parameters — no credential format, no explanation of remember_me — so it fails to compensate for the coverage gap.

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

Purpose2/5

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

The two informative fragments ('Get Token' and 'Create token') actually conflict about whether this retrieves or creates, and neither distinguishes it from siblings like refresh_token, oauth_login, create_api_token, or logout. Most of the text is keyword-synonym spam ('add token, new token, make token, write token') that restates the name rather than clarifying what the endpoint does.

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

Usage Guidelines1/5

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

There is no when-to-use or when-not-to-use guidance. Nothing tells the agent to pick this login-credential flow over refresh_token, oauth_login, or create_api_token, and no prerequisite (e.g., needing valid username/password) is stated.

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

get_user_imageC

Get User Image — Recipe: Images and Assets. Get user. [GET /api/media/users/{user_id}/{file_name}] Takes in a recipe slug, returns the static image. This route is proxied in the docker image and should not hit the API in production Keywords: get_user_image, get user image, get user, fetch user, read user, retrieve user, view user, show user, user, users, recipe images and assets, media, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
user_idYes
file_nameYes

TDQS

C2.3/5.0
Behavior2/5

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 does disclose one non-obvious trait (the route is proxied in the docker image and bypasses the API in production), but omits authentication requirements, return content (image bytes vs URL), and error behavior for a 2-required-param endpoint.

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

Conciseness2/5

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

The definition is padded with an endpoint line, an irrelevant recipe-slug sentence, and a long comma-separated keyword tail (get, fetch, read, retrieve, view, show, read-only, mealie) that adds no decision-relevant information.

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

Completeness2/5

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

For a tool with no annotations, no output schema, and two undocumented required parameters, the description should carry the load; instead it spends most of its length on keywords and contains a contradictory slug statement, leaving the agent without what it needs to call the tool correctly.

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

Parameters2/5

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

Schema description coverage is 0% and neither user_id nor file_name is explained in the description. Worse, the description references a 'recipe slug' rather than the user_id/file_name pair, so what little it says about inputs is actively misleading.

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

Purpose3/5

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

It does name the resource (user image) and gives the exact route GET /api/media/users/{user_id}/{file_name}, which is specific. But the sentence 'Takes in a recipe slug, returns the static image' directly conflicts with the actual parameters and muddies what the tool is for, leaving the agent less certain than a clean statement would.

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

Usage Guidelines2/5

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

There is no guidance on when to choose this over siblings like get_logged_in_user, update_user_image, or get_recipe_img. The only usage-adjacent note ('should not hit the API in production') is a deployment caveat rather than a selection rule.

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

groups_ai_providers_create_ai_providerC

Create Ai Provider — Groups: AI Providers. Create provider. [POST /api/groups/ai-providers/providers] Keywords: groups_ai_providers_create_ai_provider, groups ai providers create ai provider, create provider, add provider, new provider, make provider, write provider, provider, providers, groups ai providers, groups, ai providers, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.4/5.0
Behavior2/5

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 identifies a POST endpoint and the create action, but omits side effects, permissions, idempotency, and response behavior expected 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.

Conciseness2/5

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

The useful information is front-loaded, but the long keyword list is repetitive and adds no value. Nearly half the description is a spam-like keyword block rather than useful content.

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

Completeness2/5

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

The tool has no annotations, no output schema, and 0% schema description coverage, so the description should compensate by explaining parameters and behavior. It identifies the operation and endpoint but leaves critical invocation details undocumented.

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

Parameters1/5

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 mention any body fields such as name, model, apiKey, baseUrl, timeout, requestParams, or requestHeaders. It adds no meaning beyond the raw schema property names.

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

Purpose4/5

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

The description clearly states the verb 'Create' and the resource 'Ai Provider' in the Groups: AI Providers context, and it also gives the API endpoint. It does not explicitly distinguish itself from sibling tools like get_ai_provider, update_ai_provider, or delete_ai_provider beyond the action name.

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

Usage Guidelines2/5

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 indication of when not to use it. The keyword list repeats synonyms but does not provide usage context.

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

groups_ai_providers_delete_ai_providerC

Delete Ai Provider — Groups: AI Providers. Delete provider. [DELETE /api/groups/ai-providers/providers/{provider_id}] Keywords: groups_ai_providers_delete_ai_provider, groups ai providers delete ai provider, delete provider, remove provider, destroy provider, write provider, provider, providers, groups ai providers, groups, ai providers, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
provider_idYes

TDQS

C2.5/5.0
Behavior2/5

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. 'Delete provider' signals a mutation, but it says nothing about irreversibility, required permissions, whether dependent settings are cascaded, or what is returned. For a destructive operation this is a real gap.

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

Conciseness2/5

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

The first three segments are reasonably front-loaded, but the bulk of the text is keyword spam ('remove provider, destroy provider, write provider, ... mealie'), which adds no selection value and bloats the definition.

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

Completeness2/5

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 no annotations and no output schema, the description should at minimum warn about irreversibility and prerequisites. It supplies none of that, leaving the agent to infer the entire risk profile from the word 'Delete'.

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

Parameters2/5

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 provider_id beyond the 'DELETE /api/groups/ai-providers/providers/{provider_id}' template, which at least shows it is a path parameter. It never explains how to obtain a valid provider_id or what happens if one is wrong.

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

Purpose4/5

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

The description pairs a clear verb ('Delete') with the resource ('Ai Provider') and scopes it to the 'Groups: AI Providers' collection, so an agent can distinguish it from groups_ai_providers_create_ai_provider, _get_, and _update_. It stops short of stating consequences, but the core purpose is unambiguous.

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

Usage Guidelines2/5

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 versus the sibling CRUD operations, nor any precondition (e.g., that the provider must exist, or that this is the destructive counterpart to update). The endpoint template implies a REST delete but doesn't tell the agent when invoking it is appropriate.

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

groups_ai_providers_get_ai_providerC

Get Ai Provider — Groups: AI Providers. Get provider. [GET /api/groups/ai-providers/providers/{provider_id}] Keywords: groups_ai_providers_get_ai_provider, groups ai providers get ai provider, get provider, fetch provider, read provider, retrieve provider, view provider, show provider, provider, providers, groups ai providers, groups, ai providers, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
provider_idYes

TDQS

C2.3/5.0
Behavior2/5

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. A GET endpoint implies a read, and the keyword list weakly signals 'read-only', but the description never states authentication requirements, error behavior for an unknown provider_id, or what is returned. For a no-annotation tool this is thin.

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

Conciseness2/5

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

The meaningful content is one short clause ('Get provider' plus the endpoint path); the rest is a very long keyword-stuffing tail that repeats synonyms and inventory terms. This is bloat, not concision, and pushes the useful signal to the front only barely.

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

Completeness2/5

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

For a simple one-parameter GET with no output schema and no annotations, an agent still needs to know the param's origin and the auth/read semantics. The description supplies the endpoint but omits these, and the keyword list substitutes volume for completeness.

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

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single provider_id parameter. The path template {provider_id} hints that it is a URL path segment, and the schema's uuid4 format is the only real guidance, but the description adds no meaning about where to obtain the ID or what it identifies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a verb (get) and resource (AI Provider) and even exposes the raw endpoint path, which pins down the resource precisely. However, "Get provider" is largely a tautological restatement of the tool name and title, and there is no differentiation from siblings like get_ai_provider_settings or groups_ai_providers_update_ai_provider beyond the namespace prefix.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives such as get_ai_provider_settings, create/update/delete AI provider, or whether it requires an ID obtained elsewhere. Usage context is only implied by the name and path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

groups_ai_providers_update_ai_providerC

Update Ai Provider — Groups: AI Providers. Replace (full update) provider. [PUT /api/groups/ai-providers/providers/{provider_id}] Keywords: groups_ai_providers_update_ai_provider, groups ai providers update ai provider, update provider, replace provider, edit provider, modify provider, save provider, write provider, provider, providers, groups ai providers, groups, ai providers, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
provider_idYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does disclose meaningful behavior in 'Replace (full update)' — signaling that omitted fields may be reset — but says nothing about auth requirements, reversibility, or failure modes for what is clearly a mutating call.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is well front-loaded, but it is followed by an extensive keyword-stuffed tail ('Keywords: ... mealie.') that adds no selection value and bloats the definition. Real information density is low relative to length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and fully undocumented parameters, the description is thin. The PUT/full-replacement semantics is a useful start, but parameters and behavioral prerequisites remain uncovered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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, yet it explains none of them. It never mentions provider_id, the required body fields (name, model), or the optional apiKey/baseUrl/timeout/requestParams/requestHeaders, leaving the agent to infer everything from the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource ('Update Ai Provider') and adds genuine precision with 'Replace (full update)', which distinguishes PUT-style full replacement from partial edits. The sibling set contains create/get/delete variants, but the description doesn't explicitly contrast against them, 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no routing against adjacent tools such as update_ai_provider_settings. The 'Replace (full update)' note hints at the semantics but does not tell an agent when to choose this over a partial-update alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

groups_multi_purpose_labels_create_oneC

Create One — Groups: Multi Purpose Labels. Create label. [POST /api/groups/labels] Keywords: groups_multi_purpose_labels_create_one, groups multi purpose labels create one, create label, add label, new label, make label, write label, label, labels, groups multi purpose labels, groups, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.4/5.0
Behavior2/5

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 discloses only the HTTP method and creation action; it does not mention permissions, duplicate handling, side effects, or validation behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two sentences are front-loaded and clear, but the large keyword block is redundant and does not earn its place. The description is bloated rather than concise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and 0% parameter description coverage, the definition is incomplete. It lacks input semantics, authorization needs, and any behavioral detail beyond the endpoint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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 parameter information at all. It does not mention the required 'name' field, the optional 'color' field, or the nested 'body' structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Create') and resource ('label' / 'Multi Purpose Labels') and includes the endpoint. It distinguishes itself by operation from the get/update/delete siblings, but it does not explicitly name alternatives or scope beyond the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 create_one siblings, nor prerequisites for creating a group multi-purpose label. Usage is only implied by the tool name and endpoint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

groups_multi_purpose_labels_delete_oneC

Delete One — Groups: Multi Purpose Labels. Delete label. [DELETE /api/groups/labels/{item_id}] Keywords: groups_multi_purpose_labels_delete_one, groups multi purpose labels delete one, delete label, remove label, destroy label, write label, label, labels, groups multi purpose labels, groups, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.5/5.0
Behavior2/5

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, yet it only says 'Delete label'. It discloses nothing about required permissions, whether deletion is permanent/reversible, or what happens to labels still referenced by recipes. For a destructive mutation 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two sentences are concise and front-loaded, but the paragraph is then bloated with a long 'Keywords:' list of redundant synonyms ('delete label, remove label, destroy label, write label...') that adds no information and reads as SEO padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a technically simple one-parameter tool, the description is still too thin: no annotations, no output schema, no note on permissions or irreversibility of the delete. The keyword spam occupies space that could have carried real behavioral context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 about 'item_id' beyond the URL template hint that it is the label identifier. It does not clarify that this is the label UUID, what identifies a valid label, or the consequence of an unknown id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Delete') and resource ('Groups: Multi Purpose Labels' / 'label'), which is clearer than the bare name and distinguishes it from the get_all/create_one/get_one/update_one siblings. It doesn't explicitly name those siblings, but the verb+resource pairing is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance and no reference to alternatives (e.g., the sibling delete_many for bulk deletion). The agent must infer all usage context from the tool name and the DELETE path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

groups_multi_purpose_labels_get_allC

Get All — Groups: Multi Purpose Labels. List labels. [GET /api/groups/labels] Keywords: groups_multi_purpose_labels_get_all, groups multi purpose labels get all, list label, list labels, get label, get labels, search label, search labels, find label, find labels, browse label, browse labels, fetch label, fetch labels, read label, read labels, label, labels, groups multi purpose labels, groups, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
searchNo
orderByNo
perPageNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.3/5.0
Behavior2/5

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 only implies a safe read via 'read-only' in the keyword list; it does not disclose pagination behavior, authentication requirements, scope of the label list, or any operational constraints despite having eight parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core statement 'Get All — Groups: Multi Purpose Labels. List labels.' is short and front-loaded, but the large keyword block is repetitive and adds little semantic value. The overall text is bloated rather than efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an eight-parameter list endpoint with no output schema, no annotations, and 0% schema description coverage, the description is far too thin. It omits pagination, filtering, sorting, authentication, and return behavior, leaving an agent without the context needed to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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 parameters such as page, search, orderBy, perPage, queryFilter, orderDirection, paginationSeed, or orderByNullPosition. With eight undocumented parameters, the description does not compensate for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get All — Groups: Multi Purpose Labels. List labels.' The 'Get All' wording distinguishes it from the sibling get_one operation. However, it does not explicitly contrast itself with other label-related siblings such as create_one, update_one, or delete_one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives. The keyword list includes search, find, browse, fetch, and read, but these do not explain when an agent should choose this tool over siblings like groups_multi_purpose_labels_get_one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

groups_multi_purpose_labels_get_oneC

Get One — Groups: Multi Purpose Labels. Get label. [GET /api/groups/labels/{item_id}] Keywords: groups_multi_purpose_labels_get_one, groups multi purpose labels get one, get label, fetch label, read label, retrieve label, view label, show label, label, labels, groups multi purpose labels, groups, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It does signal 'read-only', but says nothing about authentication requirements, permissions, error behavior when item_id does not exist, or whether the label is group-scoped. This is thin for a tool with zero structured 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content is the first two sentences; the remaining bulk is a ~20-term keyword list that restates the same verbs and nouns repeatedly. Only the endpoint line earns its place beyond the opening.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterized lookup with no output schema and no annotations, the description should explain what a 'multi purpose label' is in this API and what the response contains. It leaves both unspecified, so an agent cannot fully predict behavior before calling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description adds nothing about item_id beyond the URL template placeholder. The schema's uuid4 format is the only hint; the description does not say the ID must be an existing group multi-purpose label's UUID or what happens otherwise.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get label') scoped to Groups: Multi Purpose Labels, plus the concrete endpoint GET /api/groups/labels/{item_id}. It does not explicitly contrast with the sibling get_all/create_one/update_one/delete_one label tools, but the singular resource and ID path make the retrieval intent unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Nothing states when to use this versus groups_multi_purpose_labels_get_all or the other label siblings. The keyword list ('get label, fetch label, read label...') is a synonym dump, not usage guidance, and provides no conditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

groups_multi_purpose_labels_update_oneC

Update One — Groups: Multi Purpose Labels. Replace (full update) label. [PUT /api/groups/labels/{item_id}] Keywords: groups_multi_purpose_labels_update_one, groups multi purpose labels update one, update label, replace label, edit label, modify label, save label, write label, label, labels, groups multi purpose labels, groups, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden. 'Replace (full update)' correctly signals replacement semantics (unsupplied fields may reset), but nothing is said about auth/permissions, what happens to omitted fields, or error behavior 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single operative sentence is front-loaded, but it is followed by a long block of keyword spam ('Keywords: groups_multi_purpose_labels_update_one, groups, update, replace, edit...') that adds no informational value and bloats the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and 0% parameter description coverage, the description is too thin—it omits required-field guidance, replacement consequences, and any return behavior. The HTTP method line is the only genuinely useful addition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are two required parameters (item_id, body with id/name/color/groupId). The description explains none of them—no format for item_id, no note that groupId/name are required, no meaning added to color's default. Property titles in the schema carry the only semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource ('Update One — Groups: Multi Purpose Labels... Replace (full update) label') and gives the endpoint PUT /api/groups/labels/{item_id}, so an agent knows exactly what it does. It distinguishes itself from create/get/delete siblings, though it never names a partial-update alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical '(full update)' hints that this replaces rather than patches a label, which is useful, but there is no explicit when-to-use guidance or comparison to siblings like groups_multi_purpose_labels_create_one or delete_one. The agent is left to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

groups_reports_delete_oneC

Delete One — Groups: Reports. Delete report. [DELETE /api/groups/reports/{item_id}] Keywords: groups_reports_delete_one, groups reports delete one, delete report, remove report, destroy report, write report, report, reports, groups reports, groups, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.8/5.0
Behavior2/5

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 states 'Delete report,' which conveys a destructive mutation, but does not disclose whether deletion is permanent or soft, what permissions are required, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful information is front-loaded, but the large keyword list is redundant and wastes space without adding meaning. It is not appropriately concise despite the clear opening sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a delete operation with no annotations and no output schema, the description should explain destructive behavior, permission requirements, and return expectations. It only restates the action and endpoint, leaving major behavioral gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 explain the single required parameter 'item_id' beyond the endpoint notation /api/groups/reports/{item_id}. The schema already provides the uuid4 format, and the description adds no further semantic meaning for the parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Delete report' within the Groups: Reports scope. It clearly distinguishes this operation from sibling read tools like groups_reports_get_one and groups_reports_get_all by naming the delete action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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, no prerequisites, and no conditions or exclusions. An agent must infer usage entirely from the tool name and sibling context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

groups_reports_get_allC

Get All — Groups: Reports. List reports. [GET /api/groups/reports] Keywords: groups_reports_get_all, groups reports get all, list report, list reports, get report, get reports, search report, search reports, find report, find reports, browse report, browse reports, fetch report, fetch reports, read report, read reports, report, reports, groups reports, groups, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
report_typeNo

TDQS

C2.7/5.0
Behavior2/5

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 only weakly signals read-only via a 'read-only' keyword, and says nothing about required permissions, pagination, response shape, or what report_type filtering does. Significant gaps for a list endpoint 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content is two short clauses, swamped by a long redundant keyword list that repeats 'report/reports' and verbs dozens of times. The purpose is front-loaded, but the bulk of the text adds no value and dilutes signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list endpoint with no output schema and no annotations, the description should explain what a report is, what report_type filters, and any scoping. Instead it stops at 'List reports', leaving the agent without enough context to use the filter correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single parameter (report_type) with its ReportCategory enum (backup/restore/migration/bulk_import) is never mentioned in the description. The description fails to compensate for the coverage gap, leaving the optional filter undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb and resource ('List reports', endpoint GET /api/groups/reports), which distinguishes it from the sibling groups_reports_get_one by the 'Get All' framing. The signal is somewhat buried under keyword spam, but the core purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use text; the only guidance is the implicit 'Get All' vs the sibling 'get_one', which an agent can infer. No prerequisites or filtering conditions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

groups_reports_get_oneC

Get One — Groups: Reports. Get report. [GET /api/groups/reports/{item_id}] Keywords: groups_reports_get_one, groups reports get one, get report, fetch report, read report, retrieve report, view report, show report, report, reports, groups reports, groups, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description must carry the full behavioral burden. It only implies read-only via keywords ('read-only') but doesn't disclose authentication requirements, return format, access scope (group-level), or whether it requires specific permissions. Very thin for a get-by-ID tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is bloated with a long list of redundant synonyms and keywords that add no value. The core information ('Get report') is buried in repetitive boilerplate. Not front-loaded efficiently—the keyword spam dominates over substantive content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-ID tool with no output schema and no annotations, the description is insufficient. It doesn't explain what a report represents, what fields are returned, whether the item must belong to the caller's group, or error behavior. The keyword dump is filler, not contextual completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% (only type/format info, no description). The description doesn't explain what item_id refers to (report ID?) or its format beyond the UUID schema. With 1 param and partial schema info, the description should clarify it's the report's unique identifier but fails to.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('report') with the REST endpoint path. The resource is clear enough to distinguish from siblings like groups_reports_get_all or groups_reports_delete_one. However, the description is somewhat redundant with the title/name and doesn't clarify what a 'report' contains in the Mealie context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. The description doesn't mention prerequisites, when to prefer groups_reports_get_all for listing, or any usage context. Keywords list is just synonym padding, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_cookbooks_create_oneC

Create One — Households: Cookbooks. Create cookbook. [POST /api/households/cookbooks] Keywords: households_cookbooks_create_one, households cookbooks create one, create cookbook, add cookbook, new cookbook, make cookbook, write cookbook, cookbook, cookbooks, households cookbooks, households, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.6/5.0
Behavior2/5

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, and it delivers almost nothing: it does not state that this is a mutating write, whether it requires authentication or household membership, what happens on duplicate names/slugs, or what the response contains. The bare '[POST /api/households/cookbooks]' line is the only behavioral hint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The functional core is two short sentences and is front-loaded, which is good, but it is followed by a long comma-separated keyword block ('...mealie.') that adds no decision-relevant information and inflates the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% parameter description coverage, the definition is the only source of behavioral and parameter information, and it is nearly silent on both. For a mutation tool taking a nested body object, this leaves the agent under-informed about required fields and side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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, and it does not: the body object's fields (name, slug, public, position, description, queryFilterString) are never mentioned, nor are which are required or what defaults apply. Only field names exist in the schema, which is not real semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Create cookbook') and the HTTP endpoint reinforces it, so an agent can distinguish this from siblings like households_cookbooks_get_one, update_one, and delete_one. It is clear but does not explicitly contrast itself with those siblings or note the required precondition (a household context).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 households_cookbooks_update_one or create_many, nor any stated prerequisites. The reader must infer that this is the single-item creation path purely from the name and the 'create cookbook' phrase.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_cookbooks_delete_oneC

Delete One — Households: Cookbooks. Delete cookbook. [DELETE /api/households/cookbooks/{item_id}] Keywords: households_cookbooks_delete_one, households cookbooks delete one, delete cookbook, remove cookbook, destroy cookbook, write cookbook, cookbook, cookbooks, households cookbooks, households, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.5/5.0
Behavior2/5

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 nothing beyond 'DELETE' — no irreversibility, permission requirements, or whether related records are affected. The tag 'write cookbook' is noise rather than 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content is one short clause; the rest is a repetitive keyword dump duplicating the tool name and its synonyms. The padding ('keywords: ... households cookbooks delete one, delete cookbook, remove cookbook, destroy cookbook, write cookbook') does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive single-item delete with no annotations and no output schema, the description should at minimum explain what item_id refers to and the consequences of deletion. Neither is present, leaving the agent under-informed before a destructive call.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single parameter 'item_id' is undocumented (no format, UUID vs slug, or origin). The description adds no meaning beyond repeating the endpoint path.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Delete cookbook') and the HTTP endpoint, which distinguishes it from siblings like households_cookbooks_update_one or households_cookbooks_get_one. It is clear but relies on the name/keyword block rather than prose to differentiate from the other delete tools in the family.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No statement of when to use this tool versus the many other delete_one tools in the list, and no prerequisites or warnings. The keyword list ('remove cookbook', 'destroy cookbook') is synonym padding, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_cookbooks_get_allC

Get All — Households: Cookbooks. List cookbooks. [GET /api/households/cookbooks] Keywords: households_cookbooks_get_all, households cookbooks get all, list cookbook, list cookbooks, get cookbook, get cookbooks, search cookbook, search cookbooks, find cookbook, find cookbooks, browse cookbook, browse cookbooks, fetch cookbook, fetch cookbooks, read cookbook, read cookbooks, cookbook, cookbooks, households cookbooks, households, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
orderByNo
perPageNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.5/5.0
Behavior2/5

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 implies a read-only list via the endpoint but says nothing about household scoping, permissions, defaults, result shape, or pagination behavior for a 7-parameter paginated endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is crisp and front-loaded, but it is followed by an enormous keyword list that adds no decision value and bloats the definition. The useful content and the filler are roughly equal in size, which dilutes the message.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a paginated list tool with no output schema and no annotations, the description should at least explain pagination/filtering basics and how results are scoped to the household. None of that is present, so it is incomplete for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 7 parameters (page, perPage, orderBy, orderDirection, queryFilter, paginationSeed, orderByNullPosition). The description adds no meaning for any of them, leaving pagination and filtering semantics entirely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'List cookbooks', with the backing endpoint [GET /api/households/cookbooks]. However, it does not differentiate from close siblings like households_cookbooks_get_one or explore_cookbooks_get_all, so an agent can't tell which 'list' tool applies to household-scoped cookbooks without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 sibling get_one, or versus explore_cookbooks_get_all. The long 'Keywords:' block is a recall-oriented synonym dump, not usage context, so the agent gets no when/when-not signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_cookbooks_get_oneC

Get One — Households: Cookbooks. Get cookbook. [GET /api/households/cookbooks/{item_id}] Keywords: households_cookbooks_get_one, households cookbooks get one, get cookbook, fetch cookbook, read cookbook, retrieve cookbook, view cookbook, show cookbook, cookbook, cookbooks, households cookbooks, households, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.3/5.0
Behavior2/5

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, and it delivers almost nothing: no confirmation that it is a read-only fetch, no note on required auth/permissions, and no failure behavior for an unknown item_id. The word "read-only" appears only inside the keyword spam, which is too incidental to count as deliberate disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two sentences are reasonably front-loaded and short, but roughly three quarters of the text is an undifferentiated keyword dump listing the tool name, verbs, and resources repeatedly. That bulk adds no information and dilutes the payload.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

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 no output schema and no annotations, the description should at minimum say what a cookbook record is and what the call returns. Instead it supplies only the HTTP route, leaving the agent under-informed about the resource and the identifier.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single required parameter, item_id, and schema description coverage is 0% — the schema gives no explanation of it. The description never mentions item_id, so an agent gets no hint that it is the cookbook's UUID versus a slug or name, even though the anyOf allows both.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description does state a verb and resource ("Get cookbook") and gives the endpoint path, so an agent knows it fetches a single cookbook. However, the leading "Get One — Households: Cookbooks" largely restates the tool name, and there is no differentiation from close siblings like households_cookbooks_get_all or explore_cookbooks_get_one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus households_cookbooks_get_all or explore_cookbooks_get_one, nor any precondition for the call. The long keyword list is retrieval fodder, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_cookbooks_update_manyC

Update Many — Households: Cookbooks. Replace (full update) cookbook. [PUT /api/households/cookbooks] Keywords: households_cookbooks_update_many, households cookbooks update many, update cookbook, replace cookbook, edit cookbook, modify cookbook, save cookbook, write cookbook, cookbook, cookbooks, households cookbooks, households, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. "Replace (full update)" usefully signals that this is a full replacement rather than a partial patch, but it says nothing about permissions/auth, what happens to fields omitted from body items, atomicity of the batch, or the response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The lead is front-loaded and readable, but roughly the second half of the description is a long keyword dump ("update, replace, edit, modify, save, write, put, mealie") that adds no meaning and bloats the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and a required nested array body, the description omits the body's expected shape, replacement semantics, and return behavior. It is not sufficient for an agent to invoke the tool correctly beyond guessing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there is a single complex `body` parameter that is an array of UpdateCookBook objects with required fields (name, groupId, householdId, id). The description adds no information about this structure or its required members, leaving the schema to do all the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first two sentences give a specific verb and resource ("Update Many ... Cookbooks", "Replace (full update) cookbook") and the PUT path reinforces scope. However, the singular "cookbook" phrasing is at odds with the batch "Update Many" framing, and the description never explicitly distinguishes this from the sibling households_cookbooks_update_one, so the agent must infer the difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this bulk endpoint versus households_cookbooks_update_one, nor any prerequisite or context. The keyword list mentions "update/replace" repeatedly but conveys no usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_cookbooks_update_oneC

Update One — Households: Cookbooks. Replace (full update) cookbook. [PUT /api/households/cookbooks/{item_id}] Keywords: households_cookbooks_update_one, households cookbooks update one, update cookbook, replace cookbook, edit cookbook, modify cookbook, save cookbook, write cookbook, cookbook, cookbooks, households cookbooks, households, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.9/5.0
Behavior3/5

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 usefully discloses that this is a full replacement (unmentioned fields would be reset/dropped), which is real behavioral value. However it says nothing about required permissions, what the response contains, or error behavior for a mutation endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The operation summary is front-loaded and clear, but roughly two-thirds of the text is a redundant keyword dump (update, replace, edit, modify, save, write, put, mealie, plus restatements of the tool name) that adds no selection value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and 0% parameter documentation, the definition should explain permissions, replacement consequences for each body field, and return behavior. It covers only the replace semantics, leaving substantial gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are two parameters (item_id and a nested CreateCookBook body with name, slug, public, position, description, queryFilterString). The description adds no information about any of these fields, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update One — Households: Cookbooks. Replace (full update) cookbook') plus the HTTP verb/path PUT, so the agent knows exactly what operation this is. It does not explicitly differentiate from siblings like households_cookbooks_update_many or create_one, which keeps it below 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical '(full update)' implies the replace semantics and indirectly signals when to prefer this over a partial update, but there is no explicit when-to-use guidance, no mention of the update_many alternative, and no stated prerequisites or preconditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_event_notifications_create_oneC

Create One — Households: Event Notifications. Create notification. [POST /api/households/events/notifications] Keywords: households_event_notifications_create_one, households event notifications create one, create notification, add notification, new notification, make notification, write notification, notification, notifications, households event notifications, households, events, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2/5.0
Behavior2/5

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, yet it discloses almost nothing beyond the HTTP method and path. It does not state what fields are required (e.g., name), what appriseUrl does, whether the call is idempotent, what permissions are needed, or what happens on failure. The POST endpoint hints at a mutation, but the description adds no substantive 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description front-loads the action, but it is bloated with a keyword-stuffed synonym list ('create notification, add notification, new notification, make notification, write notification...') and a long trailing keyword block. These add no informational value and dilute the useful first sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and 0% parameter description coverage, the description is completely inadequate. It does not explain required inputs, side effects, permissions, or return behavior, leaving an agent unable to invoke it correctly without opening and inferring from the raw schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description mentions no parameters at all. The single required 'body' parameter contains nested fields name and appriseUrl, neither of which is explained in the description. With zero schema coverage, the description fails to compensate for missing parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Create') and resource ('Households: Event Notifications'), so an agent can tell it creates a notification. However, the first two sentences are essentially a restatement of the tool name and title, and no sibling such as test_notification, update_one, or delete_one is named for differentiation. The purpose is clear but not sharpened beyond the name itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 siblings like households_event_notifications_update_one, households_event_notifications_get_one, or test_notification. It also omits prerequisites such as required household membership or authentication context. The only usage signal is the implicit 'create' verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_event_notifications_delete_oneC

Delete One — Households: Event Notifications. Delete notification. [DELETE /api/households/events/notifications/{item_id}] Keywords: households_event_notifications_delete_one, households event notifications delete one, delete notification, remove notification, destroy notification, write notification, notification, notifications, households event notifications, households, events, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden for a destructive operation. It confirms deletion but says nothing about whether the deletion is permanent, what permissions are required, whether events/notifications are re-emitted, or what a success response looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The prose part is a fine single sentence, but it is followed by a long keyword-synonym dump ('remove notification, destroy notification, write notification... mealie') that is pure padding and dilutes the useful signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter delete tool with no output schema, the description tells the agent what it deletes and the endpoint. It stops short of the extra context a destructive, annotation-free tool warrants — reversibility, permissions, or response shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter with 0% description coverage, but the schema supplies type string and format uuid4, and the description's {item_id} path template shows where the value is used. That is adequate-ish, but no additional meaning is added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — delete a household event notification by item_id — and the DELETE endpoint confirms the operation. The sibling set (get_all, create_one, get_one, update_one, delete_one) is disambiguated by the name and endpoint, though the description itself never explicitly contrasts this tool with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus households_event_notifications_update_one or get_one, and no mention of prerequisites or irreversibility. The only routing signal is the embedded HTTP path.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_event_notifications_get_allC

Get All — Households: Event Notifications. List notifications. [GET /api/households/events/notifications] Keywords: households_event_notifications_get_all, households event notifications get all, list notification, list notifications, get notification, get notifications, search notification, search notifications, find notification, find notifications, browse notification, browse notifications, fetch notification, fetch notifications, read notification, read notifications, notification, notifications, households event notifications, households, events, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
orderByNo
perPageNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. The keyword 'read-only' gives a weak hint that this is a safe read, but nothing explains pagination scoping, default page size, ordering defaults, or authorization requirements — notable gaps for a tool exposing seven pagination/ordering parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening two lines are tight and front-loaded, but the appended keyword list is pure noise that pads the definition without adding selection or invocation value. The signal is buried in repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list endpoint with seven undocumented parameters, no output schema, and no annotations, the description is markedly incomplete. It never addresses pagination behavior or ordering, which are the core concerns of calling this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across seven parameters (page, perPage, orderBy, orderDirection, queryFilter, paginationSeed, orderByNullPosition), and the description explains none of them. The keyword 'search notification' hints that queryFilter exists but gives no syntax or semantics, so the description does not compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List notifications' for household event notifications, and the 'Get All' prefix signals the collection-level variant against siblings like households_event_notifications_get_one. However, the bulk of the text is a keyword dump that adds no additional distinguishing information, so it stops short of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use statement, no prerequisites, and no routing to alternatives beyond the implicit list-vs-single distinction in the name. An agent must infer that this is the collection fetch rather than one of the create/get_one/update/delete siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_event_notifications_get_oneC

Get One — Households: Event Notifications. Get notification. [GET /api/households/events/notifications/{item_id}] Keywords: households_event_notifications_get_one, households event notifications get one, get notification, fetch notification, read notification, retrieve notification, view notification, show notification, notification, notifications, households event notifications, households, events, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.5/5.0
Behavior2/5

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 implies a read-only GET via the HTTP path and the 'read-only' keyword, but does not describe authentication needs, error behavior, return format, or any other operational trait beyond the bare fact that it fetches a notification.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core statement is front-loaded, but the long keyword dump is redundant and bloats the definition. The keywords add no structural or semantic value and make the description less concise than it needs to be.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There are no annotations and no output schema, so the description must stand on its own. It gives only the endpoint and a generic 'Get notification' phrase, omitting enough context for an agent to understand the returned object, error cases, or how item_id maps to a notification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description should compensate for the undocumented item_id parameter. It only repeats the placeholder in the path template and never explains that item_id identifies the event notification, leaving the schema to carry nearly all parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it retrieves one household event notification. The 'Get One' wording and the path with an item_id make the singular scope clear, but it does not explicitly distinguish itself from sibling tools like get_all, create_one, or update_one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 such as households_event_notifications_get_all or the update/delete variants. The keywords list repeats the tool name and synonyms but does not provide selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_event_notifications_update_oneC

Update One — Households: Event Notifications. Replace (full update) notification. [PUT /api/households/events/notifications/{item_id}] Keywords: households_event_notifications_update_one, households event notifications update one, update notification, replace notification, edit notification, modify notification, save notification, write notification, notification, notifications, households event notifications, households, events, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. The only behavioral signal is '(full update)', which usefully implies omitted fields may be overwritten/reset, but there is nothing on permissions/auth, idempotency, validation failures, or side effects of changing notification options. This is too thin for an unannotated 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The operational sentence and the PUT path are front-loaded and useful, but the bulk of the text is auto-generated keyword stuffing ('update notification, replace notification, edit notification, modify notification, save notification, write notification ...' and a duplicated noun list) that adds no selection value and bloats the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A mutation endpoint with no annotations, no output schema, 0% parameter description coverage, and a large nested options object. The description neither explains what a full replace does to unspecified option flags nor what happens after the call, so an agent lacks what it needs to invoke this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description says nothing about the two required parameters (item_id, body) — not their format, not that body must be a complete replacement object, not the meaning of the many event-option booleans. The description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first two sentences state a specific verb and resource ('Update One — Households: Event Notifications', 'Replace (full update) notification') and the parenthetical distinguishes it from a partial/PATCH update. An agent can tell which record type and which operation is meant, though siblings like update vs create/delete are not explicitly contrasted.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus households_event_notifications_create_one, _get_one, _delete_one, or a partial-update variant. The 'Replace (full update)' phrasing hints at semantics but gives no conditions, prerequisites, or exclusions. Everything is left to infer from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_mealplan_rules_create_oneC

Create One — Households: Mealplan Rules. Create rule. [POST /api/households/mealplans/rules] Keywords: households_mealplan_rules_create_one, households mealplan rules create one, create rule, add rule, new rule, make rule, write rule, rule, rules, households meal plan rules, households mealplan rules, households, meal plans, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.1/5.0
Behavior1/5

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 rule.' It does not state auth/permission requirements, whether the rule is immediately active, whether it is reversible, or any side effects. This is inadequate for a mutation tool 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence ('Create One — Households: Mealplan Rules. Create rule.') is concise but is followed by a long, redundant keyword list of near-synonyms and the endpoint path. The keyword dump is filler that does not earn its place and buries the small amount of real information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is insufficient. It omits behavior, parameter semantics, and usage context. The endpoint path and keyword list are the only additions, and they do not fill the gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there is one required body parameter containing day, entryType, and queryFilterString. The description says nothing about these fields, their meaning, enum values, defaults, or the query filter syntax. The schema structure partially documents the fields but the description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Create rule' for 'Mealplan Rules'), which is clear enough. However, the rest of the text is a keyword dump of near-synonyms ('add rule, new rule, make rule, write rule') that adds no distinguishing meaning. It does not differentiate from the sibling update_one or the broader households_mealplans_create_one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance is present. The keyword list mentions 'post' and 'create' but never states when creating a mealplan rule is appropriate versus updating one or creating a mealplan directly. No alternatives or prerequisites are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_mealplan_rules_delete_oneC

Delete One — Households: Mealplan Rules. Delete rule. [DELETE /api/households/mealplans/rules/{item_id}] Keywords: households_mealplan_rules_delete_one, households mealplan rules delete one, delete rule, remove rule, destroy rule, write rule, rule, rules, households meal plan rules, households mealplan rules, households, meal plans, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.6/5.0
Behavior2/5

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 only states the DELETE operation and endpoint; it does not disclose irreversibility, required permissions, side effects, or whether deletion is idempotent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The operational sentence and endpoint are front-loaded and clear, but the long keyword list is repetitive and bloated with synonyms already implied by the tool name. The core description is concise, yet nearly half the text is redundant search metadata.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive single-parameter tool with no annotations, no output schema, and 0% schema description coverage, the description is incomplete. It gives the endpoint but omits permissions, confirmation behavior, side effects, and parameter meaning that an agent needs before invoking a delete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 parameter meaning, but it only repeats {item_id} in the endpoint placeholder. It adds no context beyond the schema's uuid4 format, such as what kind of mealplan rule ID is expected.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: "Delete rule" for Households Mealplan Rules, and confirms it with the DELETE endpoint path. It distinguishes this resource from sibling mealplan rule operations like get/create/update by name and endpoint, though it does not explicitly route to the separate mealplans delete tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no when-to-use or when-not-to-use guidance. It lists keyword synonyms like delete, remove, destroy, and write, but does not name alternatives or conditions for selecting this tool over households_mealplans_delete_one or other delete_one tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_mealplan_rules_get_allC

Get All — Households: Mealplan Rules. List rules. [GET /api/households/mealplans/rules] Keywords: households_mealplan_rules_get_all, households mealplan rules get all, list rule, list rules, get rule, get rules, search rule, search rules, find rule, find rules, browse rule, browse rules, fetch rule, fetch rules, read rule, read rules, rule, rules, households meal plan rules, households mealplan rules, households, meal plans, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
orderByNo
perPageNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, but it only hints at read-only via the keyword 'read-only'. It says nothing about pagination behavior, default ordering (orderDirection defaults to desc), result limits, or what the response contains for a 7-parameter paginated list endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and short, but it is followed by an enormous keyword-stuffing block that repeats 'rule/rules' and every synonym. This bulk adds noise without information and undermines the conciseness of the useful portion.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter paginated list tool with no annotations and no output schema, the description should explain filtering, ordering, and pagination expectations. Instead it omits all of that, leaving the agent without enough context to invoke it correctly beyond recognizing it as a list operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 7 parameters (page, perPage, orderBy, orderDirection, queryFilter, paginationSeed, orderByNullPosition), and the description explains none of them. It does not clarify pagination, filtering via queryFilter, or ordering semantics, leaving all parameter meaning undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb (list/get-all) and resource (households mealplan rules), plus the underlying endpoint. This lets an agent distinguish it from siblings like households_mealplan_rules_get_one, create_one, update_one, and delete_one. It loses a point because 'Get All — Households: Mealplan Rules' largely restates the name rather than adding independent framing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this vs alternatives such as get_one or the broader mealplans endpoints. The keyword list implies list/search/fetch synonyms but gives no conditions, prerequisites, or exclusions. An 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.

households_mealplan_rules_get_oneC

Get One — Households: Mealplan Rules. Get rule. [GET /api/households/mealplans/rules/{item_id}] Keywords: households_mealplan_rules_get_one, households mealplan rules get one, get rule, fetch rule, read rule, retrieve rule, view rule, show rule, rule, rules, households meal plan rules, households mealplan rules, households, meal plans, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full behavioral burden. It says 'read-only' in the keyword list, which hints at a safe read, but doesn't state required permissions, error behavior for missing rules, or whether the rule is scoped to the logged-in user's household. For a zero-annotation tool, this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The body is a single terse phrase, but it is followed by a long, redundant keyword dump that repeats the tool name and its tokens many times. The useful content is one line, surrounded by noise that does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% parameter description coverage, the description needed to explain what a mealplan rule is, what the response contains, and any household scoping. Instead it only restates the name and endpoint, leaving the agent under-informed for a tool with moderate domain complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%. The only parameter item_id is documented in the schema as a string with uuid4 format, but the description adds nothing about its meaning or where to obtain it. Baseline is 3 for one parameter, but the description fails to compensate for the zero coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: 'Get One — Households: Mealplan Rules. Get rule.' combined with the endpoint path GET /api/households/mealplans/rules/{item_id}, an agent can tell this retrieves a single mealplan rule. It doesn't explicitly differentiate from siblings like households_mealplan_rules_get_all, but the 'Get One' prefix and singular 'rule' imply single-item retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance. The description never mentions how this differs from households_mealplan_rules_get_all (list rules) or how to obtain the item_id. All of that is left to inference from name and endpoint.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_mealplan_rules_update_oneC

Update One — Households: Mealplan Rules. Replace (full update) rule. [PUT /api/households/mealplans/rules/{item_id}] Keywords: households_mealplan_rules_update_one, households mealplan rules update one, update rule, replace rule, edit rule, modify rule, save rule, write rule, rule, rules, households meal plan rules, households mealplan rules, households, meal plans, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, but it does disclose the key trait that this is a full replacement (existing rule fields are overwritten) and exposes the PUT route. It omits permission requirements, error/not-found behavior, and reversibility, so it is only partially transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The actual instruction is front-loaded and short, but it is followed by a long redundant keyword list that includes multiple restatements of the same verb and the tool name. The keyword blob consumes tokens without adding selection value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and a nested request body that is entirely undocumented, the description is too thin. An agent cannot tell what a 'rule' contains or what a successful replacement returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description says nothing about item_id or the nested body fields (day, entryType, queryFilterString), whose purpose — especially queryFilterString — is opaque from the schema alone. The keyword tail adds noise rather than parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The definition states a specific verb and resource ('Update One — Households: Mealplan Rules. Replace (full update) rule') and is clearly distinguished from the get/create/delete mealplan-rule siblings. It stops short of naming those siblings explicitly, keeping it out of 5 territory.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 versus households_mealplan_rules_create_one or the get/delete variants, and no prerequisites (auth, required household context) are stated. Only the 'replace (full update)' phrasing hints at PUT semantics vs a partial update.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_mealplans_create_oneC

Create One — Households: Mealplans. Create meal plan. [POST /api/households/mealplans] Keywords: households_mealplans_create_one, households mealplans create one, create meal plan, add meal plan, new meal plan, make meal plan, write meal plan, meal plan, meal plans, households meal plans, households mealplans, households, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, yet it only repeats the HTTP route. It does not state that this is a mutating write scoped to the logged-in household, what the minimum body looks like (date is required), whether duplicate entries for the same date are allowed, or what the endpoint returns on success.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded in the first sentence, but the entry is heavily bloated: the title is restated ('Create One — Households: Mealplans'), followed by the same phrase again plus a padded keyword list ('households mealplans create one, add meal plan, new meal plan, make meal plan, write meal plan... post, mealie'). Almost none of this adds information for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and 0% parameter description coverage, the description should at minimum explain the body contract and the household scoping. It provides only the endpoint path, leaving key calling details to be inferred from the nested schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single parameter is a nested CreatePlanEntry object with a required 'date' and an entryType enum. The description adds no explanation of these fields, so it fails to compensate for the schema's lack of descriptions even though the JSON schema structure itself is reasonably parseable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource ('Create meal plan') and the underlying route POST /api/households/mealplans, which lets an agent distinguish it from households_mealplans_get_one/update_one/delete_one. However, the description never clarifies that it creates a single meal plan *entry* (with date, entryType, recipeId), and the purpose is buried under dozens of keywords rather than refined.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance at all. There is no mention of when to prefer this over create_random_meal, households_mealplans_update_one (to edit an existing entry), or households_mealplans_get_all. Nothing about prerequisites such as a household context or whether an authenticated household member is required.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_mealplans_delete_oneC

Delete One — Households: Mealplans. Delete meal plan. [DELETE /api/households/mealplans/{item_id}] Keywords: households_mealplans_delete_one, households mealplans delete one, delete meal plan, remove meal plan, destroy meal plan, write meal plan, meal plan, meal plans, households meal plans, households mealplans, households, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It says 'Delete meal plan' and includes 'remove' and 'destroy' as keywords, implying it's a destructive, irreversible operation, but it doesn't state whether the deletion is permanent, whether it requires specific permissions, or what happens if the item_id doesn't exist. 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core description is a single clear sentence, but it is followed by a repetitive and excessive keyword list that adds little value. The structure is front-loaded with the essential information, but the keyword bloat reduces conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a delete operation, missing annotations, no output schema, and 0% schema description coverage, the description is incomplete. It should explain the consequences of deletion, error conditions, and any required permissions. The keyword list does not fill these gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the schema only defines 'item_id' as an integer with no description. The description implies that item_id is the identifier of the meal plan to delete but doesn't add any meaning beyond what the parameter name suggests. With one parameter and no schema descriptions, the description does not compensate for the lack of detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource: 'Delete meal plan' with the REST endpoint DELETE /api/households/mealplans/{item_id}. This distinguishes it from sibling tools like households_mealplans_get_one and households_mealplans_update_one. However, the verbose keyword list adds noise rather than clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 doesn't mention prerequisites (e.g., whether the meal plan must exist), nor does it distinguish from other delete tools like households_shopping_lists_delete_one. The tool name and endpoint imply usage but no explicit context is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_mealplans_get_allC

Get All — Households: Mealplans. List meal plans. [GET /api/households/mealplans] Keywords: households_mealplans_get_all, households mealplans get all, list meal plan, list meal plans, get meal plan, get meal plans, search meal plan, search meal plans, find meal plan, find meal plans, browse meal plan, browse meal plans, fetch meal plan, fetch meal plans, read meal plan, read meal plans, meal plan, meal plans, households meal plans, households mealplans, households, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
orderByNo
perPageNo
end_dateNo
start_dateNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.4/5.0
Behavior2/5

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, yet it only restates the endpoint. It says nothing about pagination, default ordering (orderDirection=desc), date-range filtering, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The two core sentences are appropriately front-loaded and useful, but they are buried under a large keyword spam list (dozens of near-synonyms and single words like 'read', 'mealie') that adds no selection value and inflates the size substantially.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 9-parameter list endpoint with no annotations and no output schema, the description omits everything an agent needs beyond the resource name: pagination behavior, sort options, date filtering, and return shape. It is not adequate to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Nine parameters exist with 0% schema description coverage, including non-obvious ones like page, perPage, orderBy, orderDirection, orderByNullPosition, start_date/end_date, queryFilter, and paginationSeed. The description explains none of them, so an agent gets no help on how to filter, sort, or paginate meal plans.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource — 'List meal plans' — and the endpoint [GET /api/households/mealplans] confirms it is a read of household meal plans. The 'Get All' prefix distinguishes it from the sibling households_mealplans_get_one, though it does not otherwise differentiate from get_todays_meals or households_mealplan_rules_get_all.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of alternatives, and no exclusions. The only implicit signal is the 'Get All' naming versus get_one, which the agent must infer rather than being told.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_mealplans_get_oneC

Get One — Households: Mealplans. Get meal plan. [GET /api/households/mealplans/{item_id}] Keywords: households_mealplans_get_one, households mealplans get one, get meal plan, fetch meal plan, read meal plan, retrieve meal plan, view meal plan, show meal plan, meal plan, meal plans, households meal plans, households mealplans, households, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, yet it only implies a read via the GET route and the "read-only" keyword. It says nothing about authentication requirements, what happens when the item_id does not exist, or the shape of the returned meal plan.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content is two short fragments at the top; the remainder is a long comma-separated keyword dump ("get, fetch, read, retrieve, view, show, read-only, mealie") that adds no semantic value and dilutes the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter getter with no output schema and no nested objects, the definition conveys the endpoint and the identifier. It is minimally sufficient but leaves the return value, error behavior, and relationship to sibling meal-plan endpoints unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% — item_id has only a title and no description. The description partially compensates by placing {item_id} in the URL path template, revealing that it is a path identifier scoped to the household's meal plans, but it never explains what the ID refers to or where an agent would obtain it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource ("Get meal plan") and reinforces it with the HTTP route [GET /api/households/mealplans/{item_id}], so an agent knows exactly what is fetched. It does not distinguish this from close siblings like households_mealplans_get_all, get_todays_meals, or households_mealplan_rules_get_one, which is the main gap keeping it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 single-item fetch versus households_mealplans_get_all or get_todays_meals, and no prerequisites are stated. The only hint is the embedded "read-only" keyword, which is not framed as usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_mealplans_update_oneC

Update One — Households: Mealplans. Replace (full update) meal plan. [PUT /api/households/mealplans/{item_id}] Keywords: households_mealplans_update_one, households mealplans update one, update meal plan, replace meal plan, edit meal plan, modify meal plan, save meal plan, write meal plan, meal plan, meal plans, households meal plans, households mealplans, households, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full behavioral burden. It says 'Replace (full update)' which hints at the mutation semantics, but it does not clarify required permissions, whether the item_id must already exist, whether omitted fields are cleared, or any side effects. This is insufficient for a write operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short, but the large keyword list adds noise without informational value. The front-loaded operation summary and API path are useful, but the trailing keywords are excessive for the size of the content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a write operation with zero annotations, no output schema, and 0% parameter description coverage, the description is incomplete. It should explain the full-replace behavior, parameter requirements, and likely authentication context, none of which are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description provides zero explanation of parameters. The body fields (date, id, userId, groupId, recipeId, entryType, etc.) and the item_id path parameter are completely undocumented semantically, leaving the agent to infer meaning from property names alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Replace/Update) and resource (meal plan) and includes the HTTP method and path, making it clear this is a full-replace update. It does not differentiate from siblings like households_mealplans_get_one, households_mealplans_create_one, or the more granular households_mealplans_update_many in the description text itself, relying only on the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 households_mealplans_update_many or households_mealplans_create_one. The description merely lists keyword synonyms (edit, modify, save, write) without any conditional or exclusion statements.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_recipe_actions_create_oneC

Create One — Households: Recipe Actions. Create recipe action. [POST /api/households/recipe-actions] Keywords: households_recipe_actions_create_one, households recipe actions create one, create recipe action, add recipe action, new recipe action, make recipe action, write recipe action, recipe action, recipe actions, households recipe actions, households, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.5/5.0
Behavior2/5

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 what the endpoint is; it does not state authentication requirements, whether the action affects household members, side effects, or what a successful creation returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence and endpoint are front-loaded, which is good, but they are followed by a long keyword block that adds no value and bloats the definition. Most of the text is repetitive SEO-style filler rather than useful specification.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and a nested required body object, the description is far from complete. It omits required body field semantics, authentication expectations, side effects, and return behavior, leaving the agent to infer almost everything from the schema and endpoint alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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, but it says nothing about the required body fields (actionType, title, url) or the meaning of the link/post enum. The schema itself defines the nested body shape, but the description adds no parameter semantics beyond repeating 'recipe action'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Create') and resource ('recipe action') and includes the HTTP endpoint POST /api/households/recipe-actions. It distinguishes the tool from sibling read/update/delete recipe-action tools by verb, though the keyword spam adds no further differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 households_recipe_actions_update_one or trigger_action. The keyword list is not usage guidance; it repeats the name and synonyms rather than stating conditions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_recipe_actions_delete_oneC

Delete One — Households: Recipe Actions. Delete recipe action. [DELETE /api/households/recipe-actions/{item_id}] Keywords: households_recipe_actions_delete_one, households recipe actions delete one, delete recipe action, remove recipe action, destroy recipe action, write recipe action, recipe action, recipe actions, households recipe actions, households, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.5/5.0
Behavior2/5

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 discloses the HTTP method and endpoint (DELETE /api/households/recipe-actions/{item_id}), but says nothing about irreversibility, required permissions, whether the recipe action is soft- or hard-deleted, or any cascade effects on households/recipes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content is front-loaded, but it is followed by a long SEO-style keyword dump ('remove recipe action, destroy recipe action, write recipe action...mealie') that repeats the name and adds no semantic value. A large fraction of the description is wasted space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with zero annotation coverage and no output schema, the description should at minimum state the safety profile and prerequisites. Instead it stops at the endpoint, leaving the agent without the context needed to invoke it responsibly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required item_id. The description only indirectly conveys its meaning through the URL template {item_id}, which implies a recipe-action identifier; it never states that this must be an existing recipe action UUID or what happens if it doesn't match.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Delete recipe action') and identifies the resource family (Households: Recipe Actions). It is distinguishable from the sibling get_one/create_one/update_one by the explicit 'Delete One' wording, though it never names those siblings directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 prerequisites, and no mention of the sibling households_recipe_actions_update_one or get_one. The only implied usage comes from the word 'Delete'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_recipe_actions_get_allC

Get All — Households: Recipe Actions. List recipe actions. [GET /api/households/recipe-actions] Keywords: households_recipe_actions_get_all, households recipe actions get all, list recipe action, list recipe actions, get recipe action, get recipe actions, search recipe action, search recipe actions, find recipe action, find recipe actions, browse recipe action, browse recipe actions, fetch recipe action, fetch recipe actions, read recipe action, read recipe actions, recipe action, recipe actions, households recipe actions, households, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
orderByNo
perPageNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.4/5.0
Behavior2/5

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 never states that the operation is read-only (only the buried 'read-only' keyword hints at it), nor does it describe pagination behavior for what is clearly a paginated list endpoint, nor any auth or filtering semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two sentences are efficient and front-loaded, but the enormous keyword block (nearly every synonym of 'list recipe actions' plus 'mealie') is pure filler that bloats the definition without adding meaning. Keyword stuffing should be replaced by real behavioral and parameter detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter paginated list tool with no annotations and no output schema, the agent needs to know filtering/pagination semantics and the shape of the returned list. None of that is present; the only content beyond the name is a keyword dump.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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 explanation of any of the 7 parameters (page, orderBy, perPage, queryFilter, orderDirection, paginationSeed, orderByNullPosition). With undocumented, non-obvious params like paginationSeed and orderByNullPosition, the description fails to compensate at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line 'Get All — Households: Recipe Actions. List recipe actions.' states a clear verb (list/get) and resource (household recipe actions), and the URL path confirms the endpoint. However, it does nothing to distinguish this from the sibling households_recipe_actions_get_one, so an agent cannot tell the collection vs single-resource tools apart from the text alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 versus households_recipe_actions_get_one, create_one, or the other recipe-action siblings. The trailing keyword list is a retrieval hack, not usage guidance, and no prerequisites or context are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_recipe_actions_get_oneC

Get One — Households: Recipe Actions. Get recipe action. [GET /api/households/recipe-actions/{item_id}] Keywords: households_recipe_actions_get_one, households recipe actions get one, get recipe action, fetch recipe action, read recipe action, retrieve recipe action, view recipe action, show recipe action, recipe action, recipe actions, households recipe actions, households, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.3/5.0
Behavior2/5

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. The keyword "read-only" hints at a safe read, but nothing states authentication requirements, error behavior (e.g., missing item_id), or pagination. For a zero-annotation tool this is a thin disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content ("Get recipe action") is two words; the rest is a large keyword-stuffing block that duplicates the name many times. This is padding rather than earned conciseness, though the core intent is at least front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and no parameter documentation, the description should carry more. It leaves an agent without the behavioral, parameter, or return-shape context needed to invoke the tool confidently, so it is incomplete for the tool's needs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single required parameter item_id (uuid4) is not explained in the description. The description adds no meaning about what item_id identifies or where it comes from, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("Get recipe action"), so an agent can tell this fetches a single recipe action. However, it does not differentiate from close siblings like households_recipe_actions_get_all, create_one, update_one, or delete_one beyond the tool name itself. The core statement is essentially a restatement of the title, which is why it lands at minimum-viable rather than clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no mention of alternatives such as get_all or the other recipe-action verbs. The keyword list implies retrieval but gives no decision criteria for choosing this over a sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_recipe_actions_update_oneC

Update One — Households: Recipe Actions. Replace (full update) recipe action. [PUT /api/households/recipe-actions/{item_id}] Keywords: households_recipe_actions_update_one, households recipe actions update one, update recipe action, replace recipe action, edit recipe action, modify recipe action, save recipe action, write recipe action, recipe action, recipe actions, households recipe actions, households, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.5/5.0
Behavior2/5

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 that this is a PUT/replace operation but does not state whether the operation requires specific permissions, what happens if the item_id does not exist, whether omitted fields are cleared, or what the response looks like. 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded but bloated with a large keyword list that repeats the tool name and partial strings. The substantive information ('Replace (full update) recipe action' and the PUT endpoint) is present but surrounded by low-value SEO-style keywords.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given a mutation tool with two required parameters, no annotations, no output schema, and 0% schema description coverage, the description is inadequate. It does not cover preconditions, side effects, field-level requirements, or error behavior, leaving the agent without enough information to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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. It does not explain the item_id path parameter, nor does it clarify the body fields (actionType enum values, title, url, groupId, householdId) or that all five body fields are required. The keyword dump adds no semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Replace (full update) recipe action' with the PUT endpoint. It distinguishes itself from siblings like create_one, delete_one, and get_one implicitly through 'Replace (full update)'. However, it does not explicitly name the read/create/delete siblings or explain the difference between this and a partial update.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use guidance, no prerequisites (e.g., does the recipe action need to exist first?), and no mention of alternatives. The phrase 'full update' hints at replace semantics versus a potential partial update, but no such sibling is named or contrasted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_shopping_list_items_create_oneC

Create One — Households: Shopping List Items. Create shopping item. [POST /api/households/shopping/items] Keywords: households_shopping_list_items_create_one, households shopping list items create one, create shopping item, add shopping item, new shopping item, make shopping item, write shopping item, shopping item, shopping items, households shopping list items, households, shopping, items, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, yet it only restates create semantics and the POST path. It does not disclose auth/permission requirements, that shoppingListId is mandatory, or what the response returns. The keyword list provides no behavioral value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content is a single short sentence, but it is followed by a long redundant keyword block ('create shopping item, add shopping item, new shopping item...shopping item, shopping items...') that adds no information and dilutes the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and a nested required body schema, the description is far too thin. An agent cannot determine required inputs or side effects from it, leaving meaningful gaps for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single 'body' parameter wraps a complex ShoppingListItemCreate object whose required field (shoppingListId) and key fields (food, unit, quantity, position) are undocumented. The description does not compensate for this gap at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Create shopping item' on Households shopping list items. An agent can identify the operation clearly. However, it does not distinguish this singular-create from sibling 'create_many' or 'add_recipe_ingredients_to_list', which perform related but distinct operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 versus 'create_many' (bulk create) or 'add_recipe_ingredients_to_list'/'add_single_recipe_ingredients_to_list' (recipe-sourced items). The agent must infer the singular-vs-bulk distinction from tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_shopping_list_items_delete_oneC

Delete One — Households: Shopping List Items. Delete shopping item. [DELETE /api/households/shopping/items/{item_id}] Keywords: households_shopping_list_items_delete_one, households shopping list items delete one, delete shopping item, remove shopping item, destroy shopping item, write shopping item, shopping item, shopping items, households shopping list items, households, shopping, items, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.9/5.0
Behavior2/5

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 for a destructive operation, yet it only says the item is deleted. It omits irreversibility, required permissions, and any side effects (e.g., whether the item is removed from the parent list or linked recipes).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and endpoint are front-loaded and useful, but the trailing "Keywords:" list re-states the name, resource, and synonyms (delete/remove/destroy/write) many times over, adding a large block of text that earns nothing for an agent already given the tool name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-param delete with no output schema, the core action is covered, but with zero annotations and no behavioral detail, an agent lacks the information needed to invoke a destructive endpoint safely. The keyword padding occupies the space where that context should be.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter exists and schema description coverage is 0%, but the schema itself is self-explanatory (required, string, uuid4). The endpoint template `{item_id}` is the sole added meaning, confirming item_id is a path identifier — marginal value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ("Delete shopping item") and pins it to the endpoint DELETE /api/households/shopping/items/{item_id}, so the single-item scope is unambiguous. It is clear but does not explicitly contrast itself with the sibling delete_many / delete_many tools, which is the main differentiator an agent needs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The "Delete One" phrasing and the {item_id} path parameter imply this handles exactly one item versus bulk siblings like households_shopping_list_items_delete_many, but the description never states when to choose it over that alternative or any prerequisites. Usage is only inferable, not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_shopping_list_items_get_allC

Get All — Households: Shopping List Items. List shopping items. [GET /api/households/shopping/items] Keywords: households_shopping_list_items_get_all, households shopping list items get all, list shopping item, list shopping items, get shopping item, get shopping items, search shopping item, search shopping items, find shopping item, find shopping items, browse shopping item, browse shopping items, fetch shopping item, fetch shopping items, read shopping item, read shopping items, shopping item, shopping items, households shopping list items, households, shopping, items, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
orderByNo
perPageNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden, yet it says nothing about pagination (despite page/perPage params), filtering, default ordering, or result size. It only gestures at safety via the keyword "read-only", which is buried in a synonym list rather than stated as a property.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core intent is front-loaded in two short sentences, but the definition is then bloated with a long comma-separated keyword dump that contributes no new information and dilutes the useful content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter, annotation-free tool with no output schema, the description is inadequate: no parameter documentation, no safety or pagination disclosure, and no usage context. The high parameter count raises the bar that this definition fails to meet.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 7 parameters, several of which (queryFilter, orderBy, paginationSeed, orderByNullPosition) are non-obvious and would materially affect calls. The description adds no explanation of any parameter, leaving the agent to guess at syntax and semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("List shopping items") and pins the underlying route ([GET /api/households/shopping/items]), so the agent knows this is a read operation on household shopping list items. It does not explicitly contrast with the get_one/get_many siblings, but the "Get All" framing and name make the scope reasonably identifiable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 versus the alternatives in the sibling set (e.g. households_shopping_list_items_get_one, households_shopping_lists_get_all). The string of verbs (list, get, search, find, browse, fetch, read) is keyword stuffing, not conditional guidance, so the agent must infer usage entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_shopping_list_items_get_oneC

Get One — Households: Shopping List Items. Get shopping item. [GET /api/households/shopping/items/{item_id}] Keywords: households_shopping_list_items_get_one, households shopping list items get one, get shopping item, fetch shopping item, read shopping item, retrieve shopping item, view shopping item, show shopping item, shopping item, shopping items, households shopping list items, households, shopping, items, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden. It declares read-only and gives the GET endpoint, but does not mention permissions, not-found behavior, or response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence and endpoint are front-loaded and useful, but the long keyword list is bloated and largely redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read by ID, the description gives the endpoint and read-only nature, but leaves the sole parameter unexplained and offers no usage context among many sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the single parameter item_id is only shown as a path placeholder. The description adds no meaning about the UUID format or where the ID comes from.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: get one shopping list item. The 'Get One' phrasing helps distinguish it from the get_all sibling, though it does not explicitly name alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides only an endpoint and keyword list; there is no guidance on when to use this tool versus households_shopping_list_items_get_all or other retrieval siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_shopping_list_items_update_manyC

Update Many — Households: Shopping List Items. Replace (full update) shopping item. [PUT /api/households/shopping/items] Keywords: households_shopping_list_items_update_many, households shopping list items update many, update shopping item, replace shopping item, edit shopping item, modify shopping item, save shopping item, write shopping item, shopping item, shopping items, households shopping list items, households, shopping, items, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose that this is a PUT-style full replacement ('Replace (full update)'), which is important behavioral context, but it omits auth requirements, side effects on omitted fields, error behavior, and whether partial updates are rejected.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content is two short lines followed by a large block of keyword spam and a URL. The keyword dump is redundant noise that bloats the description without adding meaning, hurting conciseness and structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a bulk mutation tool with a complex nested body and no output schema or annotations, the description is far too thin. It gives no return-value context, no bulk-update semantics beyond 'full update', and no indication of how errors or partial failures are handled.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The sole parameter is a body array of ShoppingListItemUpdateBulk objects, and schema description coverage is 0%. The description adds no detail about the array structure, required fields, or item fields, merely hinting at 'shopping item' data without compensating for the missing schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Update Many' on 'Households: Shopping List Items' with 'Replace (full update) shopping item.' An agent can identify this as the bulk-update variant distinct from households_shopping_list_items_update_one, though sibling names are not explicitly referenced and 'shopping item' is oddly singular.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 update_one, create_many, or delete_many. The description only restates the operation and lists keywords, leaving the agent to infer selection criteria 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.

households_shopping_list_items_update_oneC

Update One — Households: Shopping List Items. Replace (full update) shopping item. [PUT /api/households/shopping/items/{item_id}] Keywords: households_shopping_list_items_update_one, households shopping list items update one, update shopping item, replace shopping item, edit shopping item, modify shopping item, save shopping item, write shopping item, shopping item, shopping items, households shopping list items, households, shopping, items, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations, so the description carries the full burden. 'Replace (full update)' hints at destructive replacement semantics, but there is no explicit disclosure that omitted fields are nulled, no permission/auth requirements, and no confirmation that the whole item is overwritten. For a mutation tool with no annotations 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One useful line is buried under dozens of keyword tokens and a repeated verb list ('update, replace, edit, modify, save, write'). The keyword block is noise, not conciseness. Front-loading is weak because the purpose sentence and keywords blur together.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Mutation tool with no annotations, no output schema, and 0% schema description coverage. The description doesn't explain full-replace consequences, auth needs, or the body contract. An agent cannot call it safely from this alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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, yet it only names the body model 'ShoppingListItemUpdate' and the item_id path. Two required parameters (item_id, body) get no meaning beyond the schema's own titles. A mention of the path parameter and that body is a full-replace payload would help; absent that, the description adds little.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Replace (full update)') and resource ('shopping item') with the endpoint. Clearly distinguishes a single-item full replacement from siblings like update_many or update_one on shopping lists. The keyword spam dilutes focus but the core purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this vs. households_shopping_list_items_update_many, create_one, or get_one. The 'Replace (full update)' note implies a PUT full-replacement semantic, which is useful context, but no conditional when-to-use is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_shopping_lists_create_oneC

Create One — Households: Shopping Lists. Create list. [POST /api/households/shopping/lists] Keywords: households_shopping_lists_create_one, households shopping lists create one, create list, add list, new list, make list, write list, list, lists, households shopping lists, households, shopping, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, yet it only reveals the HTTP method (POST, i.e., a creating mutation) via the endpoint string. It says nothing about required permissions, whether the list body is optional/partial, side effects, or what is returned on success.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The actionable content ('Create list.' plus the POST path) is front-loaded and adequate, but the trailing keyword block is a long run of near-duplicate tokens ('create, add, new, make, write, post...') that adds bulk without information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation/mutation tool with no annotations, no output schema, and 0% parameter documentation, the description is too thin. It does not tell the agent what a valid creation looks like, what happens on success/failure, or how it relates to sibling shopping-list tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the schema documents no field meaning, and the description adds nothing about the 'body' object or its nested properties (name, extras, createdAt, update_at). An agent must infer everything about the payload from property names alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource — 'Create list' in the 'Households: Shopping Lists' domain — and the POST endpoint confirms the operation. It does not differentiate itself from siblings like households_shopping_lists_get_all or _update_one beyond the name, but the core purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives (e.g., get_one, update_one, or adding items via add_recipe_ingredients_to_list). The keyword list merely restates the name and HTTP verb, offering no conditional routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_shopping_lists_delete_oneC

Delete One — Households: Shopping Lists. Delete list. [DELETE /api/households/shopping/lists/{item_id}] Keywords: households_shopping_lists_delete_one, households shopping lists delete one, delete list, remove list, destroy list, write list, list, lists, households shopping lists, households, shopping, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.5/5.0
Behavior2/5

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. The DELETE endpoint implies a destructive operation, but the description does not state whether deletion is permanent, what permissions are required, or what side effects occur. This is insufficient behavioral context for a destructive mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content is front-loaded in the first two lines, but the description then adds a long, repetitive keyword block. Those keywords repeat the tool name and resource terms without adding meaning, so much of the text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, one-parameter mutation with no annotations and no output schema, the description is too thin. It identifies the operation and endpoint but omits permissions, irreversibility, and expected behavior on success or failure. An agent would need substantial outside knowledge to invoke it safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 explain the single item_id parameter beyond showing it in the URL template. It does not clarify that item_id identifies the shopping list to delete or describe expected format constraints beyond what the schema already provides. The description does not compensate for the missing parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: deleting a shopping list for a household. The DELETE endpoint path reinforces exactly what the tool does. It is clear, though it does not explicitly distinguish itself from sibling delete tools beyond the resource name already in the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 updating a list or deleting many items. No prerequisites, permissions, or caution about irreversible deletion are provided. The description only implies usage through the word 'delete'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_shopping_lists_get_allC

Get All — Households: Shopping Lists. List lists. [GET /api/households/shopping/lists] Keywords: households_shopping_lists_get_all, households shopping lists get all, list list, list lists, get list, get lists, search list, search lists, find list, find lists, browse list, browse lists, fetch list, fetch lists, read list, read lists, list, lists, households shopping lists, households, shopping, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
orderByNo
perPageNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. The [GET ...] path and the buried keyword 'read-only' hint that this is a safe read, but there is no mention of pagination defaults, ordering behavior, scope (current household vs all), or what a returned list contains. For a 7-parameter collection endpoint this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and endpoint are front-loaded, which is good, but the bulk of the text is a long keyword-stuffing list with redundant near-synonyms (list/list lists/get list/search list/browse list/fetch list/read list). Information density is low relative to length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no annotations, and seven completely undocumented parameters, the description leaves an agent unable to call it correctly beyond the bare endpoint. An agent would not know how to filter, sort, or page the results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Seven parameters (page, perPage, orderBy, orderDirection, queryFilter, paginationSeed, orderByNullPosition) are present with 0% schema description coverage, and the description says nothing about any of them — not even that it paginates or that queryFilter searches. The description fails to compensate for the schema gap entirely.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource (Households: Shopping Lists) and the action (Get All / list), and the endpoint path confirms it retrieves the collection. However, 'List lists' is close to a tautology and the text never distinguishes this from households_shopping_lists_get_one or households_shopping_list_items_get_all, so the purpose is clear but not differentiated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 versus the sibling get_one, items_get_all, or the many other list endpoints. The tool name convention implies bulk retrieval, but the description offers no explicit conditions, prerequisites, or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_shopping_lists_get_oneC

Get One — Households: Shopping Lists. Get list. [GET /api/households/shopping/lists/{item_id}] Keywords: households_shopping_lists_get_one, households shopping lists get one, get list, fetch list, read list, retrieve list, view list, show list, list, lists, households shopping lists, households, shopping, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.4/5.0
Behavior2/5

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 implies a read via 'get'/'read-only' and the GET method, but says nothing about authentication requirements, what happens if item_id does not exist or belongs to another household, or the response shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two fragments are minimal, but the description is dominated by a long comma-separated keyword dump ('get list, fetch list, read list, retrieve list, view list, show list...') that adds no information. Most of the text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter read with no output schema and no annotations, the endpoint reference is the one genuinely useful element. Still, it omits what the returned list contains and how to obtain a valid item_id, leaving the agent to infer everything from the route.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter (item_id) with 0% schema description coverage — the schema only declares type string/uuid4 without explanation. The description adds no meaning about what item_id identifies or where it comes from, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a verb+resource ('Get list') for a households shopping list and pins it with the HTTP endpoint GET /api/households/shopping/lists/{item_id}. However, 'Get One — Households: Shopping Lists. Get list.' largely restates the tool name and does not distinguish it from the sibling households_shopping_lists_get_all (which lists vs. this which fetches one).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 versus the near-identical siblings households_shopping_lists_get_all or households_shopping_list_items_get_one, nor any note about prerequisites (e.g., needing a valid household/session). The keyword list is not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_shopping_lists_update_oneC

Update One — Households: Shopping Lists. Replace (full update) list. [PUT /api/households/shopping/lists/{item_id}] Keywords: households_shopping_lists_update_one, households shopping lists update one, update list, replace list, edit list, modify list, save list, write list, list, lists, households shopping lists, households, shopping, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Replace (full update)' is a meaningful behavioral disclosure — it implies omitted fields such as listItems may be dropped — but the description says nothing about auth/permission requirements, whether existing list items are destroyed, or error behavior on a bad item_id.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The two substantive sentences are efficient and front-loaded, but the long 'Keywords: ...' string is pure padding that adds tokens without adding meaning for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% parameter descriptions, the definition is thin: an agent gets the endpoint and the 'full replace' semantic but nothing about required body content, destructive side effects on existing items, or permissions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description explains neither the item_id path parameter nor the body beyond the endpoint template. The body (a ShoppingListUpdate requiring groupId, userId, and id plus optional name/extras/listItems) is left entirely to the schema, with no guidance on what the full replacement must contain.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Update One — Households: Shopping Lists') and clarifies the update semantic as a full replacement ('Replace (full update) list'), which genuinely distinguishes it from partial-update siblings. It stops short of naming a specific sibling alternative, but the verb+resource pairing is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 full-replace update versus other tooling such as households_shopping_list_items_update_one or the many-variants; the only routing hint is the embedded PUT path. The trailing keyword list is retrieval bait, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_webhooks_create_oneC

Create One — Households: Webhooks. Create webhook. [POST /api/households/webhooks] Keywords: households_webhooks_create_one, households webhooks create one, create webhook, add webhook, new webhook, make webhook, write webhook, webhook, webhooks, households webhooks, households, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.4/5.0
Behavior2/5

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 reveals the HTTP method and endpoint (POST /api/households/webhooks), but gives no information about authentication, permissions, side effects, required fields, or response behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentences are front-loaded and efficient, but the long keyword list is repetitive, low-value boilerplate that bloats the description without adding clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a create mutation with a required nested body object and no output schema, the description is incomplete. It lacks parameter details, validation rules, and behavioral context needed for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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 explain any of the body's nested fields (url, name, enabled, webhookType, scheduledTime). It fails to compensate for the lack of schema documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Create webhook' under 'Households: Webhooks'. This is clear enough to distinguish from get/update/delete webhooks, but it does not explicitly differentiate itself from sibling tools or mention alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides no guidance on when to use this tool versus alternatives such as households_webhooks_get_all or households_webhooks_update_one. The keywords do not constitute usage instructions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_webhooks_delete_oneC

Delete One — Households: Webhooks. Delete webhook. [DELETE /api/households/webhooks/{item_id}] Keywords: households_webhooks_delete_one, households webhooks delete one, delete webhook, remove webhook, destroy webhook, write webhook, webhook, webhooks, households webhooks, households, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.5/5.0
Behavior2/5

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 implies a destructive mutation but says nothing about required permissions, reversibility, what happens to webhook history, or the response. For a mutation tool with zero annotation coverage, this is a notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The operation is front-loaded, but the body is heavily padded with a redundant title echo ('Delete One — Households: Webhooks') plus a long keyword-stuffing list of near-synonyms ('destroy webhook, write webhook'). Most of that text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive delete with no annotations, no output schema, and an undocumented parameter, the description omits the safety, permission, and result details an agent would need. It covers the 'what' but not the surrounding context required to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single parameter (item_id). The endpoint string hints that item_id identifies the target webhook, but the description adds no format, sourcing, or constraints (e.g., that it is a uuid4 or how to obtain it) beyond what the schema itself shows.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Delete webhook') and pins the exact endpoint (DELETE /api/households/webhooks/{item_id}), so an agent knows precisely what it does. It does not explicitly differentiate itself from sibling deletion/update tools like households_webhooks_update_one or get_one, 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no preconditions, and no reference to alternatives (e.g., update vs delete, or rerun_webhooks). Usage is only implied by the verb 'delete'. Sibling tools like rerun_webhooks and test_one are never mentioned as alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_webhooks_get_allC

Get All — Households: Webhooks. List webhooks. [GET /api/households/webhooks] Keywords: households_webhooks_get_all, households webhooks get all, list webhook, list webhooks, get webhook, get webhooks, search webhook, search webhooks, find webhook, find webhooks, browse webhook, browse webhooks, fetch webhook, fetch webhooks, read webhook, read webhooks, webhook, webhooks, households webhooks, households, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
orderByNo
perPageNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.4/5.0
Behavior2/5

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 implies a read-only list via keywords, but says nothing about pagination (despite page/perPage params), permissions, ordering defaults, or the shape of results. A network list endpoint with seven params deserves more disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content ('Get All — Households: Webhooks. List webhooks.' plus the endpoint) is front-loaded, but it is followed by a long, redundant keyword list that repeats the same terms repeatedly without adding information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list endpoint with seven undocumented parameters, no annotations, and no output schema, the description should at least describe pagination and filtering behavior. It gives only the route and a keyword blob, leaving the agent unequipped to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 7 parameters with 0% description coverage, and the description supplies no meaning for any of them (page, orderBy, perPage, queryFilter, orderDirection, paginationSeed, orderByNullPosition). It neither explains the query filter syntax nor the ordering semantics, so the heavy compensation requirement is unmet.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource ('List webhooks' scoped to Households) plus the underlying endpoint GET /api/households/webhooks. It is distinguishable from the get_one sibling since it is explicitly a list operation. It does not, however, explicitly contrast itself with households_webhooks_get_one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives such as households_webhooks_get_one or the other households_* list endpoints. The only routing aid is a keyword dump, which names no conditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_webhooks_get_oneC

Get One — Households: Webhooks. Get webhook. [GET /api/households/webhooks/{item_id}] Keywords: households_webhooks_get_one, households webhooks get one, get webhook, fetch webhook, read webhook, retrieve webhook, view webhook, show webhook, webhook, webhooks, households webhooks, households, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.3/5.0
Behavior2/5

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 claims 'read-only' in the keyword list but says nothing about authentication requirements, error behavior for a missing or non-owned webhook, or what the returned webhook contains. For a tool with zero annotation coverage this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Roughly half the text is a comma-separated keyword dump ('get, fetch, read, retrieve, view, show, read-only, mealie') that adds no information for an agent. The two useful elements, the title line and the endpoint path, are buried in noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with no output schema and no annotations, the description should at least convey what a webhook record is and any access semantics. Instead it offers only the endpoint path and keyword padding, leaving the agent without the context needed to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single required parameter item_id has 0% schema description coverage, and the description adds no meaning beyond the endpoint placeholder. The schema supplies the uuid4 format, but nothing explains that item_id identifies the webhook to fetch or how to obtain it, so the description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a clear verb+resource ('Get webhook') reinforced by the concrete endpoint path GET /api/households/webhooks/{item_id}, so the single-item fetch intent is understandable. However, 'Get One' and 'Get webhook' largely restate the tool name, and it never distinguishes this from siblings such as households_webhooks_get_all, update_one, or delete_one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus households_webhooks_get_all (list) or the other webhook CRUD siblings. The only hints are the endpoint path and the 'read-only' keyword, which imply retrieval but give no conditions, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

households_webhooks_update_oneC

Update One — Households: Webhooks. Replace (full update) webhook. [PUT /api/households/webhooks/{item_id}] Keywords: households_webhooks_update_one, households webhooks update one, update webhook, replace webhook, edit webhook, modify webhook, save webhook, write webhook, webhook, webhooks, households webhooks, households, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses PUT semantics and full replacement, but omits permissions, overwrite implications, required auth, and side effects 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content is front-loaded, but the large keyword block is repetitive and noisy, restating the tool name and many synonyms. It detracts from conciseness and does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and low schema description coverage, the description is incomplete. It gives purpose and endpoint but omits parameter semantics, usage conditions, and behavioral caveats needed to invoke it safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description adds almost no parameter meaning. It only echoes the item_id path placeholder and says nothing about body fields such as scheduledTime, url, name, enabled, or webhookType.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Update One — Households: Webhooks. Replace (full update) webhook.' The HTTP endpoint and 'full update' wording distinguish it from create, get, delete, and other webhook siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use guidance or alternatives are provided. The description implies updating an existing webhook, but does not say when to choose this over create, get, delete, rerun, or test webhook tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

logoutC

Logout — Users: Authentication. Create logout. [POST /api/auth/logout] Keywords: logout, create logout, add logout, new logout, make logout, write logout, users authentication, auth, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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 discloses only the HTTP method and path; it says nothing about whether the token is invalidated, whether other sessions are affected, or whether the call is idempotent — meaningful gaps for a session-destroying operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and endpoint are front-loaded, but roughly three-quarters of the text is redundant keyword padding ('create logout, add logout, new logout...') that adds no information. It is over-verbose rather than efficiently scoped.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-param auth tool the description should at minimum convey the session side effects and any auth requirement, and it does neither. With no annotations and no output schema, the definition leaves the agent guessing about what logout actually does.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics to document; the baseline of 4 applies. The description correctly implies no input is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening 'Logout' plus the endpoint '[POST /api/auth/logout]' states a specific verb and resource, and among the auth siblings (oauth_login, refresh_token, get_token, update_password) it is clearly distinguishable. The odd 'Create logout' phrasing and keyword stuffing add noise but do not obscure the core purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance: nothing explains when an agent should log out versus refreshing a token, or what prerequisites (active session, auth header) must hold. The keyword list restates the name rather than giving usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

oauth_callbackC

Oauth Callback — Users: Authentication. Get oauth. [GET /api/auth/oauth/callback] Keywords: oauth_callback, oauth callback, get oauth, fetch oauth, read oauth, retrieve oauth, view oauth, show oauth, oauth, users authentication, auth, callback, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. The only behavioral hint is the keyword 'read-only'; it does not mention that an OAuth callback normally arrives as a browser redirect carrying code/state parameters, nor what it produces 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Structure is poor: a header line followed by a dozen near-synonym keywords ('get oauth, fetch oauth, read oauth, retrieve oauth, view oauth, show oauth') that pad length without adding meaning. The one useful token, the HTTP path, is buried mid-string.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an auth-flow endpoint with no annotations and no output schema, the agent needs to know this is the provider redirect handler and what it yields. The description supplies neither, leaving the call semantics largely unexplained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters and additionalProperties:false, there is no parameter surface for the description to explain, so baseline 4 applies. The description adds no param detail, but none is needed here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The body is the tautology 'Get oauth' plus a keyword dump; the only real signal is the header 'Oauth Callback — Users: Authentication' and the path [GET /api/auth/oauth/callback]. It never states what the callback actually does (handle the identity provider's redirect) or distinguishes itself from sibling auth tools like oauth_login, get_token, or refresh_token.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance. In a cluster of auth tools (oauth_login, get_token, refresh_token, logout), an agent gets nothing about which one to pick or in what order. The keyword list implies generic 'get oauth' usage, which is not actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

oauth_loginC

Oauth Login — Users: Authentication. Get oauth. [GET /api/auth/oauth] Keywords: oauth_login, oauth login, get oauth, fetch oauth, read oauth, retrieve oauth, view oauth, show oauth, oauth, users authentication, auth, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.1/5.0
Behavior2/5

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 GET endpoint and 'read-only' keyword hint at a read operation, but the description does not explain authentication requirements, return behavior, redirects, or 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core description is short but poorly structured, and the large keyword list adds substantial noise without improving invocation guidance. Every keyword does not earn its place for an agent deciding whether to call this tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an authentication endpoint with no annotations, no output schema, and no parameters, the description is under-specified. It does not clarify the OAuth flow context, what the caller receives, or how this step relates to oauth_callback and token retrieval.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there are no parameter semantics to document. The baseline score for a zero-parameter tool is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description largely restates the name 'Oauth Login' and adds only 'Get oauth' plus the endpoint, which is vague rather than a clear verb+resource explanation. It does not explain what is actually retrieved or how this tool differs from siblings such as oauth_callback, get_token, or refresh_token.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

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 other authentication tools. The description does not mention prerequisites, flow order, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organizer_categories_create_oneC

Create One — Organizer: Categories. Create category. [POST /api/organizers/categories] Creates a Category in the database Keywords: organizer_categories_create_one, organizer categories create one, create category, add category, new category, make category, write category, category, categories, organizer categories, organizers, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.5/5.0
Behavior2/5

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 says only that it 'Creates a Category in the database' — nothing about auth requirements, whether category names must be unique, what happens if the category already exists, or what is returned. 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The substantive content is front-loaded and adequate, but it is followed by a very long keyword dump ('organizer_categories_create_one, organizer categories create one, ... mealie') that adds no information and roughly doubles the length. That noise dilutes an otherwise compact definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with no annotations, no output schema, and no documented parameters, the description omits everything an agent would need beyond the bare operation: authentication, uniqueness/duplicate behavior, response shape, and the meaning of the body field.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description should compensate but adds nothing about parameters. The schema does reveal that a single required 'body' object with a required 'name' string exists, but neither the schema nor the description explains the semantics or constraints of that name field.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Create category', 'Creates a Category in the database'), so the operation is unambiguous and sits clearly in the organizer_categories_* family alongside get/update/delete siblings. It does not, however, explicitly contrast itself with those siblings or note that it is a write against the categories collection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 versus organizer_categories_update_one, delete_one, or the explore_categories read tools. The trailing keyword list ('create category, add category, new category...') is search bait, not usage instruction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organizer_categories_delete_oneC

Delete One — Organizer: Categories. Delete category. [DELETE /api/organizers/categories/{item_id}] Removes a recipe category from the database. Deleting a category does not impact a recipe. The category will be removed from any recipes that contain it Keywords: organizer_categories_delete_one, organizer categories delete one, delete category, remove category, destroy category, write category, category, categories, organizer categories, organizers, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does add real behavioral value by disclosing the cascade: 'Deleting a category does not impact a recipe. The category will be removed from any recipes that contain it.' That said, it omits auth/permission requirements, reversibility, and idempotency for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core prose is efficient and front-loaded with the operation, but the trailing 'Keywords:' block is a long redundant list that restates the name and adds little. Roughly half the text is keyword stuffing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter delete tool with no annotations and no output schema, the description gives the operation and its effect on recipes, which is the most important context. It still lacks permission/confirmation requirements and guidance on sourcing item_id, leaving it adequately but not fully specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single required parameter item_id has no description in either the schema or the description beyond the '{item_id}' placeholder in the endpoint string. The uuid4 format is visible in the schema but the description adds no meaning, such as where to obtain the id (get_all/get_one_by_slug).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: 'Delete category' / 'Removes a recipe category from the database', plus the exact endpoint. An agent can identify it as the category-delete operation among the organizer_* siblings. However it never explicitly contrasts itself with organizer_categories_update_one or the tag/tool variants, so 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, no mention of alternatives for removing a category from a single recipe, and no prerequisites (permissions, confirmation). The only contextual sentence concerns side effects, not selection between tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organizer_categories_get_allC

Get All — Organizer: Categories. List categories. [GET /api/organizers/categories] Returns a list of available categories in the database Keywords: organizer_categories_get_all, organizer categories get all, list category, list categories, get category, get categories, search category, search categories, find category, find categories, browse category, browse categories, fetch category, fetch categories, read category, read categories, category, categories, organizer categories, organizers, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
searchNo
orderByNo
perPageNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, but it discloses the GET endpoint (implying read-only), the return of a list, and includes 'read-only' in keywords. However, it omits pagination behavior, auth requirements, rate limits, and default ordering, leaving significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two sentences are reasonably concise, but the extended keyword list is bloated, repetitive, and adds no actionable information. The structure is front-loaded with purpose but then wastes space on noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter list tool with no annotations or output schema, the description should explain parameter usage and pagination behavior. It only generically states that a list is returned, leaving the agent unable to invoke it correctly with filters or ordering.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are 8 parameters with 0% schema description coverage, and the description provides no meaning, format, or defaults for any of them. Keywords like 'search category' hint at a search parameter but are too vague to compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'List categories' and 'Get All — Organizer: Categories', along with the GET endpoint. It clearly conveys the tool's purpose, though it does not explicitly distinguish from sibling tools like organizer_categories_get_one or explore_categories_get_all.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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; the keywords do not provide conditions or exclusions. Usage is only implied by the name and the word 'List'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organizer_categories_get_oneC

Get One — Organizer: Categories. Get category. [GET /api/organizers/categories/{item_id}] Returns a list of recipes associated with the provided category. Keywords: organizer_categories_get_one, organizer categories get one, get category, fetch category, read category, retrieve category, view category, show category, category, categories, organizer categories, organizers, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries full disclosure burden. The endpoint method (GET) and the keyword 'read-only' imply a safe read operation, and the return content is partially described, but there is no mention of authorization, error behavior, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening lines are front-loaded and reasonably direct, but the large keyword synonym list is repetitive and consumes most of the text without adding guidance. Every keyword after the first two or three does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with no output schema and 0% parameter description coverage, the description should clarify the required identifier and return shape. It partially describes the return as recipes, but the tool is named 'get category,' and the parameter remains undocumented, leaving key call details ambiguous.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single required parameter item_id is only shown as a path placeholder in the endpoint line. The description does not explain that item_id is a category UUID or where to obtain it, so it adds almost no semantic meaning beyond the schema's uuid4 format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Get') and resource ('Organizer: Categories', 'category'), and the endpoint reinforces the operation. However, it does not differentiate this tool from siblings like organizer_categories_get_one_by_slug or organizer_categories_get_all, and the return sentence ('Returns a list of recipes') muddies what exactly is being fetched.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use guidance, prerequisites, or alternatives are provided. The name and endpoint imply retrieval by ID, but the agent receives no instruction about choosing this over get_one_by_slug or get_all.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organizer_categories_get_one_by_slugC

Get One By Slug — Organizer: Categories. Get category. [GET /api/organizers/categories/slug/{category_slug}] Returns a category object with the associated recieps relating to the category Keywords: organizer_categories_get_one_by_slug, organizer categories get one by slug, get category, fetch category, read category, retrieve category, view category, show category, category, categories, organizer categories, organizers, slug, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
category_slugYes

TDQS

C2.8/5.0
Behavior3/5

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 does disclose the return shape ('a category object with the associated recipes relating to the category') and the read-only nature, which is real added value. But it says nothing about auth requirements, error behavior for unknown slugs, or whether the associated-recipes payload is heavy — significant gaps for a fetch tool with no annotation cover.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The functional sentence is appropriately short and front-loaded, but it is followed by two lines of keyword spam ('fit, fetch, read, retrieve, view, show... mealie') and a duplicated 'Get One By Slug — Organizer: Categories. Get category.' header that add no information. Roughly half the text is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and an undocumented path parameter, the description does at least cover the endpoint and the rough response content, which is the minimum an agent needs. It is still thin for a fetch tool: no slug-format expectations, no sibling disambiguation, and no failure-mode context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there is only one parameter, yet the description adds nothing beyond echoing the endpoint path: it never explains what a category_slug is, its expected format, case sensitivity, or how to obtain one. The restricted schema gives no help either, so the description should have compensated and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource ('Get category') and shows the exact endpoint GET /api/organizers/categories/slug/{category_slug}, so an agent knows this fetches a single category identified by slug. It does not, however, distinguish itself from the sibling organizer_categories_get_one, which likely retrieves by ID — the slug-vs-id distinction is only inferable from the tool name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance at all, and crucially nothing steering the agent between organizer_categories_get_one (by ID) and organizer_categories_get_one_by_slug. The only usage signal is the literal endpoint URL, which is not the same as guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organizer_categories_update_oneC

Update One — Organizer: Categories. Replace (full update) category. [PUT /api/organizers/categories/{item_id}] Updates an existing Tag in the database Keywords: organizer_categories_update_one, organizer categories update one, update category, replace category, edit category, modify category, save category, write category, category, categories, organizer categories, organizers, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the entire burden. It does convey that this is a PUT-style full replacement (as opposed to a patch), but says nothing about permissions/auth needs, whether omitted fields are wiped, reversibility, or error behavior. The "updates an existing Tag" line also conflicts with the category resource.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content (operation + endpoint) is front-loaded, but it is followed by a long keyword-stuffing list that repeats the tool name and its synonyms with zero informational value. Roughly half the description is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and 0% schema description coverage, this is insufficient: parameters are undocumented, permissions are unstated, and the effect of a full replace is only hinted at. The Tag/category confusion further reduces confidence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across both parameters, so the description should compensate and does not. It only implies item_id via the path template; the body's CategoryIn shape and required "name" are never described, and no format or constraint hints are added.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Replace (full update) category" names a specific verb and resource and pins the PUT route, which is enough to distinguish it from create/delete siblings. However, the second sentence calls the target "an existing Tag in the database," which mislabels a category as a tag and muddies the meaning; there is also no explicit differentiation from organizer_tags_update_one or organizer_categories_get_one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The parenthetical "(full update)" hints at full-replacement semantics versus a partial edit, but the description never states when to choose this over organizer_categories_create_one, delete_one, or the tags equivalent. No prerequisites, no conditions, no named alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organizer_tags_create_oneC

Create One — Organizer: Tags. Create tag. [POST /api/organizers/tags] Creates a Tag in the database Keywords: organizer_tags_create_one, organizer tags create one, create tag, add tag, new tag, make tag, write tag, tag, tags, organizer tags, organizers, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.5/5.0
Behavior2/5

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 says only that a Tag is created in the database, disclosing nothing about required auth/permissions, duplicate-name behavior, or what the response contains. For a mutation tool with zero annotation coverage this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The heading and endpoint line are useful, but the trailing 'Keywords:' block is a long dump of redundant near-synonyms (create tag, add tag, new tag, make tag, write tag, tag, tags...) that adds no information an agent can act on. Roughly half the text is filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% schema description coverage, the description is the only source of behavioral and parameter detail, and it omits both. An agent knows it creates a tag but not what input it needs or what it gets back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is exactly one parameter (a nested body object with a required 'name' field) but schema description coverage is 0%, so neither the schema nor the description explains that 'name' is the tag name or what constraints it has. The description mentions no parameter at all, leaving the agent to infer everything from the schema shape.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Create tag', 'Creates a Tag in the database') plus the HTTP endpoint, so the action is unambiguous. It does not differentiate itself from the sibling organizer_tags_update_one or organizer_categories_create_one beyond the resource noun, but the core purpose is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to create a tag versus updating or fetching one, no prerequisites, no mention of what happens if the tag already exists. The sibling list contains organizer_tags_get_all, organizer_tags_get_one, and organizer_tags_update_one, yet the description never routes the agent among them.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organizer_tags_get_allC

Get All — Organizer: Tags. List tags. [GET /api/organizers/tags] Returns a list of available tags in the database Keywords: organizer_tags_get_all, organizer tags get all, list tag, list tags, get tag, get tags, search tag, search tags, find tag, find tags, browse tag, browse tags, fetch tag, fetch tags, read tag, read tags, tag, tags, organizer tags, organizers, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
searchNo
orderByNo
perPageNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It says 'Returns a list of available tags in the database', which conveys a read operation, but omits pagination behavior, filtering capabilities, permission requirements, and response structure. For an 8-parameter read endpoint with zero annotation support, 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is bloated with a long, repetitive keyword list ('organizer_tags_get_all, organizer tags get all, list tag, ... mealie') that adds no semantic value. The core purpose is repeated in several forms. It is not front-loaded with useful constraints; the endpoint and return statement are buried after the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 8 parameters, no output schema, and no annotations, the description is incomplete. It doesn't explain what a 'tag' is in this context, how the list is paginated, or what the parameters do. The keyword spam does not fill these gaps. An agent would still lack necessary context to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate, but it doesn't. It doesn't mention any of the 8 parameters (page, search, orderBy, perPage, queryFilter, orderDirection, paginationSeed, orderByNullPosition) or their semantics. The keyword list includes 'search', hinting at filtering, but no detail is given. Baseline for filled parameters with no description info would be lower, but the schema itself defines types and enums, partially mitigating.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource and an HTTP endpoint: it lists tags via GET /api/organizers/tags. The scope is well-defined as 'list of available tags in the database'. However, it doesn't distinguish itself from close siblings like explore_tags_get_all or organizer_tags_get_one beyond naming conventions, so it lacks sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use guidance or alternatives are mentioned. The description only implies usage by being an endpoint listing, but does not say when to prefer this over explore_tags_get_all or get_empty_tags. The repeated keyword list is not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organizer_tags_get_oneC

Get One — Organizer: Tags. Get tag. [GET /api/organizers/tags/{item_id}] Returns a list of recipes associated with the provided tag. Keywords: organizer_tags_get_one, organizer tags get one, get tag, fetch tag, read tag, retrieve tag, view tag, show tag, tag, tags, organizer tags, organizers, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavior. It does not state that the operation is read-only (though implied by 'get'), nor does it mention authentication requirements, error behavior, or rate limits. The keyword 'read-only' is present but buried and not elaborated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is padded with a lengthy keyword list that repeats the tool name, synonyms, and generic terms. The core information is not front-loaded; the endpoint and 'Returns a list...' are buried. This reduces signal-to-noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-id tool with no output schema, the description should at least describe the parameter and the return shape. Instead it offers a misleading 'Returns a list of recipes...' when the tool returns a tag, and omits any parameter guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 explain the 'item_id' parameter (e.g., that it is a UUID4 of a tag). With one required parameter fully undocumented, the description fails to compensate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Get tag' and the HTTP endpoint, so the verb and resource are identifiable. However, it is cluttered with a keyword list that restates the tool name and provides no additional clarity. It doesn't differentiate from siblings like organizer_tags_get_one_by_slug or explore_tags_get_one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to use this tool versus alternatives such as organizer_tags_get_all, organizer_tags_get_one_by_slug, or explore_tags_get_one. The user is left 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.

organizer_tags_get_one_by_slugC

Get One By Slug — Organizer: Tags. Get tag. [GET /api/organizers/tags/slug/{tag_slug}] Keywords: organizer_tags_get_one_by_slug, organizer tags get one by slug, get tag, fetch tag, read tag, retrieve tag, view tag, show tag, tag, tags, organizer tags, organizers, slug, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
tag_slugYes

TDQS

C2.3/5.0
Behavior2/5

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. The GET endpoint implies a safe read, and the keyword 'read-only' hints at this, but there is no statement about authentication requirements, what happens when the slug does not exist, or what the response contains. For a no-annotation tool this is thin.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content is one short line and an endpoint template; the remaining bulk is a keyword dump ('fetch tag, read tag, retrieve tag, view tag, show tag...') that repeats the same concept a dozen times without adding information. Structure is front-loaded, but roughly half the text is noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter getter with no output schema and no annotations, the description should at least differentiate itself from organizer_tags_get_one and describe the returned tag object. It does neither, leaving the agent to infer the slug-vs-ID distinction and the response shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single parameter tag_slug is documented nowhere in the schema. The description only reveals it as a URL path segment; it does not explain slug format, case sensitivity, or how a slug differs from the ID used by organizer_tags_get_one. The description fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the verb and resource ('Get tag') and the endpoint template confirms it fetches a tag by slug, so the basic action is clear. However, it never distinguishes this from the sibling organizer_tags_get_one, which presumably fetches the same resource by ID. The opening 'Get One By Slug — Organizer: Tags' largely restates the tool name rather than adding meaning.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 organizer_tags_get_one or organizer_tags_get_all. The closest thing to routing information is the endpoint path showing the slug is a path parameter, which an agent must infer on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organizer_tags_update_oneC

Update One — Organizer: Tags. Replace (full update) tag. [PUT /api/organizers/tags/{item_id}] Updates an existing Tag in the database Keywords: organizer_tags_update_one, organizer tags update one, update tag, replace tag, edit tag, modify tag, save tag, write tag, tag, tags, organizer tags, organizers, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.8/5.0
Behavior3/5

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 usefully discloses that this is a full replacement (PUT) rather than a partial edit, but says nothing about required auth/permissions, reversibility, or which fields get overwritten, and "in the database" is filler.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentences are front-loaded and short, but the trailing "Keywords:" block is a long keyword dump (including "put", "mealie", and near-duplicates of the tool name) that adds no selection value and bloats the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% parameter coverage, a mutation tool's description should do more work. The full-replace note is helpful, but permissions, body semantics, and return behavior are all absent, leaving the agent under-informed for a write operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%: neither item_id (uuid4) nor body/TagIn (name required) has any documented meaning in the schema, and the description adds none. For a 2-parameter mutation tool with zero coverage, the description should have compensated and does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("Update ... Organizer: Tags" / "Updates an existing Tag in the database") and signals full-replacement semantics. It is clearly distinct from organizer_tags_create_one and organizer_tags_get_one, though it never names those siblings explicitly, 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.

Usage Guidelines2/5

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 versus organizer_tags_create_one, organizer_tags_get_one, or organizer_tags_get_one_by_slug. The "Replace (full update)" phrasing hints at replace-vs-patch semantics but no such alternative tool is identified, so the agent must infer usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organizer_tools_create_oneC

Create One — Organizer: Tools. Create tool. [POST /api/organizers/tools] Keywords: organizer_tools_create_one, organizer tools create one, create tool, add tool, new tool, make tool, write tool, tool, tools, organizer tools, organizers, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.5/5.0
Behavior2/5

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 reveals only that this is a POST create operation; it says nothing about required auth, permission scope, whether the tool name must be unique, side effects on households, or the response. 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dominated by a keyword list ('organizer_tools_create_one, organizer tools create one, create tool, add tool, new tool, make tool, write tool...'), which is redundant filler rather than information. The one useful fact (the POST endpoint) is present, but most of the text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and 0% parameter description coverage, the definition should explain the body shape and behavior. Instead it supplies only a verb and an endpoint, leaving an agent without enough to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 single 'body' parameter. It never mentions the required 'name' field or the optional 'householdsWithTool' array, leaving the agent to infer them entirely from the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Create tool') along with the concrete endpoint (POST /api/organizers/tools), so an agent can tell it creates an organizer tool. It differentiates by name from the get/update/delete siblings in the organizer_tools family. However, the front-matter 'Create One — Organizer: Tools' partly restates the name rather than adding scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, no prerequisites, and no explicit routing to alternatives like organizer_tools_update_one or organizer_tools_get_one. The 'Keywords' block is synonym padding for search, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organizer_tools_delete_oneC

Delete One — Organizer: Tools. Delete tool. [DELETE /api/organizers/tools/{item_id}] Keywords: organizer_tools_delete_one, organizer tools delete one, delete tool, remove tool, destroy tool, write tool, tool, tools, organizer tools, organizers, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.2/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden for a mutation/destructive operation. It says nothing about whether deletion is permanent, what permissions are required, whether it cascades to recipes using the tool, or what the response looks like. A destructive write with zero behavioral disclosure is inadequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content ('Delete One — Organizer: Tools. Delete tool.') is front-loaded but the trailing keyword spam ('organizer_tools_delete_one, ... mealie') is pure filler that dilutes the definition and wastes tokens.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, annotation-free tool with an undocumented required param and no output schema, the description omits everything an agent needs: safety profile, permissions, cascade effects, and return behavior. It is not complete enough to invoke correctly with confidence.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% for the single required item_id, and the description provides no meaning beyond the schema's uuid4 type. It doesn't clarify that item_id refers to the tool to delete or note any format/lookup behavior. With low coverage, the description should compensate but does not.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Delete Tool' with the parent collection 'Organizer: Tools'. This clearly distinguishes it from organizer_tools_get_one, update_one, and create_one. The keyword dump adds noise but the core purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use guidance beyond the implied delete semantics. The description never names an alternative (e.g., when to prefer update vs delete) or states prerequisites (auth, confirmation, cascade behavior). The sibling list is long and an agent gets no routing help.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organizer_tools_get_allC

Get All — Organizer: Tools. List tools. [GET /api/organizers/tools] Keywords: organizer_tools_get_all, organizer tools get all, list tool, list tools, get tool, get tools, search tool, search tools, find tool, find tools, browse tool, browse tools, fetch tool, fetch tools, read tool, read tools, tool, tools, organizer tools, organizers, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
searchNo
orderByNo
perPageNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.4/5.0
Behavior2/5

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 implies a read-only list operation via keywords, but says nothing about pagination behavior (page/perPage defaults), ordering semantics, the queryFilter syntax, or rate limits — significant gaps for an 8-parameter listing tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is mostly a comma-separated keyword dump ('list tool, list tools, get tool, get tools, search tool...') rather than informative prose. The one useful sentence (endpoint path) is buried before the filler, so structure is poor even if length is not extreme.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 8 undocumented parameters, no annotations, and no output schema, the description leaves an agent without the information needed to filter or page results correctly. Only the endpoint path is a genuine addition.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Eight parameters with 0% schema description coverage and no mention of any of them in the description. page, perPage, search, orderBy, queryFilter, orderDirection, paginationSeed, and orderByNullPosition are entirely undocumented, so the agent must guess at semantics and formats.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb and resource ('Get All — Organizer: Tools. List tools') and gives the underlying endpoint. However, it does not distinguish itself from the near-identical sibling explore_tools_get_all, nor from organizer_tools_get_one, so an agent cannot tell scope apart from siblings without inspecting schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus explore_tools_get_all, organizer_tools_get_one, or organizer_tools_get_one_by_slug. The only hint is the keyword 'read-only', which is a label rather than usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organizer_tools_get_oneC

Get One — Organizer: Tools. Get tool. [GET /api/organizers/tools/{item_id}] Keywords: organizer_tools_get_one, organizer tools get one, get tool, fetch tool, read tool, retrieve tool, view tool, show tool, tool, tools, organizer tools, organizers, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so the description carries the full behavioral burden. The keyword 'read-only' suggests a safe read, but there's no statement about permission requirements, error behavior for missing UUIDs, or whether it returns full tool details. The minimal description leaves significant gaps for a retrieval tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short but front-loaded with the core purpose. The keyword list is extensive and repetitive, adding bulk without informational value. The route template is useful, but the keyword enumeration is excessive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with no output schema, the description covers the basic operation and route. However, without annotations or output schema, it should at least state that it returns a single tool object or note authentication needs. The presence of many similar sibling tools means an agent must distinguish based on parameter type (UUID vs slug), which is only implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, but the description doesn't document the 'item_id' parameter beyond its name. However, the route template '/{item_id}' and the keyword list imply UUID-based lookup, which is minimally helpful. With only one simple parameter, this is borderline adequate but lacks explicit format or constraints.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get tool' from organizer tools) and includes the HTTP route with a path parameter. This clearly distinguishes it from siblings like organizer_tools_get_all or explorer_tools_get_one. The title is redundant but the core purpose is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use guidance. It doesn't explain that this is for retrieving a single tool by UUID versus by slug (organizer_tools_get_one_by_slug) or that a separate call to get_all exists. The keyword list implies usage but doesn't provide routing rationale.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organizer_tools_get_one_by_slugC

Get One By Slug — Organizer: Tools. Get tool. [GET /api/organizers/tools/slug/{tool_slug}] Keywords: organizer_tools_get_one_by_slug, organizer tools get one by slug, get tool, fetch tool, read tool, retrieve tool, view tool, show tool, tool, tools, organizer tools, organizers, slug, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
tool_slugYes

TDQS

C2.3/5.0
Behavior2/5

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 only hints at behavior via 'read-only' and the '[GET ...]' endpoint; it says nothing about auth requirements, error handling, or what happens when the slug is unknown.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The front-loaded title and endpoint are fine, but the large keyword block ('organizer_tools_get_one_by_slug, organizer tools get one by slug, get tool, fetch tool...') is pure filler that adds length without information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple slug lookup this is thin: no output schema, no annotations, and the description explains neither the slug format nor anything about the returned tool. An agent gets the endpoint but little else to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With one required parameter and 0% schema description coverage, the description must explain tool_slug. It only surfaces the parameter name in the URL template and the 'slug' keyword, giving no format or identity semantics beyond the schema's field name.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Get tool" states a verb and resource, and the endpoint template implies a slug-keyed lookup. However, it essentially restates the tool name and never explains how this differs from the sibling organizer_tools_get_one, so the purpose is vague rather than distinguishing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no indication of when to use this tool versus organizer_tools_get_one or organizer_tools_get_all. The keyword list ('fetch tool, read tool, view tool...') is retrieval-noise, not usage guidance or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organizer_tools_update_oneC

Update One — Organizer: Tools. Replace (full update) tool. [PUT /api/organizers/tools/{item_id}] Keywords: organizer_tools_update_one, organizer tools update one, update tool, replace tool, edit tool, modify tool, save tool, write tool, tool, tools, organizer tools, organizers, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.7/5.0
Behavior3/5

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 does add one real behavioral trait — "Replace (full update)" plus PUT semantics implies fields omitted from the body are cleared, which is information the schema cannot convey. However, it says nothing about required permissions, side effects on recipes referencing the tool, rate limits, or failure behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two sentences are tight and front-loaded, but roughly half the text is a redundant keyword list ("tool, tools, organizer tools, organizers, update, replace, edit, modify, save, write, put, mealie") that adds no information and bloats the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive full-replace mutation with no annotations, no output schema, and 0% parameter documentation, the definition is under-specified. Missing are permission requirements, replace semantics for omitted fields, and any description of the two parameters the caller must supply.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 both parameters (item_id and the nested RecipeToolCreate body with name/householdsWithTool). The only hint given is the path template, which reveals item_id is a UUID path argument; the body structure and its fields are never explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb and resource ("Update One — Organizer: Tools. Replace (full update) tool") and pins the operation with the HTTP method and path (PUT /api/organizers/tools/{item_id}). It also distinguishes full replacement from partial update, though it never names a sibling tool to route against.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or alternative-tool guidance. The trailing "Keywords:" block is a keyword dump restating the name and synonyms, not usage context, so an agent gets no signal on how this differs from organizer_tools_create_one or get_one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parse_ingredientD

Parse Ingredient — Recipe: Ingredient Parser. Create ingredient. [POST /api/parser/ingredient] Keywords: parse_ingredient, parse ingredient, create ingredient, add ingredient, new ingredient, make ingredient, write ingredient, ingredient, recipe ingredient parser, parser, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

D1.8/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and fails: it never clarifies that this parses an ingredient string into structured components rather than persisting anything, nor mentions return shape or the parser-mode behavior. "Create ingredient" actively misleads about what the POST does.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It front-loads the tool name, but roughly two-thirds of the text is a keyword dump that adds no informational value. The signal-to-noise ratio is poor.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No annotations, no output schema, and 0% parameter coverage leave the description to explain everything, and it explains nothing an agent needs to call this correctly. It is not complete enough for even a single-parameter tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds nothing about the required `ingredient` string format or the `parser` enum (nlp/brute/openai) and its default. The agent gets no help understanding the one meaningful parameter it can set.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a verb and resource ("Parse Ingredient", "Ingredient Parser"), so the core operation is identifiable. However it also says "Create ingredient," which muddies whether this creates a persistent record or just parses a string, and it gives no differentiation from the sibling parse_ingredients.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 single-ingredient parser versus the sibling parse_ingredients or the recipe-parsing tools. The keyword list ("add ingredient, new ingredient, make ingredient...") is search bait, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parse_ingredientsC

Parse Ingredients — Recipe: Ingredient Parser. Create ingredient. [POST /api/parser/ingredients] Keywords: parse_ingredients, parse ingredients, create ingredient, add ingredient, new ingredient, make ingredient, write ingredient, ingredient, ingredients, recipe ingredient parser, parser, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.1/5.0
Behavior2/5

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 states the HTTP endpoint but does not explain authentication needs, whether it persists data, what the parser modes do, or what is returned.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core phrase is front-loaded, but the definition is heavily diluted by a long keyword list of near-synonyms. This keyword stuffing adds no actionable meaning and makes the description unnecessarily noisy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, no annotations, and 0% schema description coverage, the description should explain more about inputs, parser behavior, and return values. It gives only the endpoint and a muddled 'Create ingredient' label, leaving a caller under-informed for a parser tool with three modes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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 parameter meaning. It does not mention the required ingredients array, the parser field, or the nlp/brute/openai enum values, leaving all parameter semantics to an undocumented schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Parse Ingredients' and '[POST /api/parser/ingredients]'. However, it also says 'Create ingredient,' which muddles whether this parses existing ingredient text or creates a stored ingredient. It does not explicitly distinguish itself from the sibling parse_ingredient.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 parse_ingredient or other recipe/ingredient tools. The keyword list implies broad synonym coverage but provides no conditions, prerequisites, or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parse_recipe_urlC

Parse Recipe Url — Recipe: CRUD. Create recipe. [POST /api/recipes/create/url] Takes in a URL and attempts to scrape data and load it into the database Keywords: parse_recipe_url, parse recipe url, create recipe, add recipe, new recipe, make recipe, write recipe, recipe, recipes, recipe crud, create, url, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full burden. It does disclose that it is a write operation that loads data into the database and that scraping 'attempts' to succeed, hinting at a failure mode. But it omits auth requirements, side effects on tags/categories, idempotency on repeat calls, and what happens on a partial scrape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content is a single sentence, but it is padded with 'Recipe: CRUD. Create recipe.', an endpoint tag, and a long keyword-stuffing footer that adds no information. The description is not front-loaded and wastes significant space on SEO terms.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% parameter description coverage, the description should compensate more than it does. It does not explain the returned recipe, the tag/category creation behavior implied by the boolean flags, or error behavior on unscrapable URLs.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the single (nested) parameter carries three fields (url, includeTags, includeCategories). The description only loosely implies a URL input and never explains what includeTags or includeCategories toggle, leaving two of three fields undocumented in both schema and prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The core sentence states a specific verb+resource combination: it takes a URL, scrapes recipe data, and loads it into the database, which is far more informative than the bare name. However, the 'Recipe: CRUD. Create recipe.' framing is generic and it never distinguishes itself from close siblings like test_parse_recipe_url, parse_recipe_url_bulk, or create_recipe_from_html_or_json, so differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus test_parse_recipe_url (dry run), parse_recipe_url_bulk, or create_recipe_from_html_or_json. A user with a single URL gets no routing guidance, and no prerequisites (e.g., authentication) are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parse_recipe_url_bulkC

Parse Recipe Url Bulk — Recipe: CRUD. Create recipe. [POST /api/recipes/create/url/bulk] Takes in a URL and attempts to scrape data and load it into the database Keywords: parse_recipe_url_bulk, parse recipe url bulk, create recipe, add recipe, new recipe, make recipe, write recipe, recipe, recipes, recipe crud, create, url, bulk, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.3/5.0
Behavior2/5

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 does say it 'attempts to scrape data and load it into the database', which hints at a network fetch plus a write, but it does not disclose what happens on partial failure across the bulk imports, whether requests are rate-limited, or what is returned. 'Attempts' is a vague hedge.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The meaningful content is two sentences; the rest is a bloated keyword-stuffed tag list ('parse_recipe_url_bulk, parse recipe url bulk, create recipe, add recipe... mealie') that repeats the name and adds no selection value. Front-loaded endpoint info is good but the keyword dump harms conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write operation with no annotations, no output schema, and 0% schema description coverage, the description is insufficient. It omits the bulk structure, error/partial-failure semantics, prerequisites, and how it differs from the many recipe-create siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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, and it does not. It only says 'Takes in a URL', which covers a single URL and does not explain the actual top-level body (a list of import objects, each with url/tags/categories). The bulk batch shape is completely unaddressed in the description text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Parse Recipe Url Bulk ... attempts to scrape data and load it into the database'), which is clear enough. However, it does not distinguish itself from the very similar sibling 'parse_recipe_url' (single) or 'test_parse_recipe_url', leaving the agent to infer the bulk vs single distinction from the name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance on when to use this tool versus the single-URL sibling parse_recipe_url or test_parse_recipe_url. The keyword list implies a create/import context but never states the condition that selects bulk over single.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

patch_manyC

Patch Many — Recipe: CRUD. Partially update recipe. [PATCH /api/recipes] Keywords: patch_many, patch many, patch recipe, update recipe, edit recipe, modify recipe, change recipe, write recipe, recipe, recipes, recipe crud, patch, update, edit, modify, change, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.1/5.0
Behavior2/5

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 discloses only that this is a partial (PATCH-style) mutation; it says nothing about required permissions, whether the batch is atomic, what happens on partial failure, or the array semantics of the payload. For an unannotated 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is dominated by a boilerplate recipe-CRUD preamble and a long keyword tail of near-duplicate synonyms. The single useful clause ('Partially update recipe') competes with low-value filler, so signal is diluted and the batch nature is not front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a batch mutation with no annotations, no output schema, and undocumented parameters, the description is far too thin. It omits the batch semantics, the shape of the body array, and any failure or permission behavior an agent would need to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one parameter ('body') with an array of Recipe-Input, and schema description coverage is 0%, so the description must compensate but does not. It never explains that body is a list of recipe objects, what identifies each recipe, or which fields are patchable, leaving the payload entirely opaque.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('partially update') and resource ('recipe') plus the endpoint PATCH /api/recipes, so the core purpose is legible. However it describes a singular 'recipe' while the name implies a batch operation and the body is an array, and it never distinguishes itself from the sibling patch_one. The keyword dump (patch, update, edit, modify, change, write) adds noise rather than precision.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, prerequisites, or alternatives are given. The keyword list contains synonyms like 'update recipe' and 'edit recipe' but these are search terms, not routing instructions, and it never tells the agent to prefer patch_one for a single recipe.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

patch_oneC

Patch One — Recipe: CRUD. Partially update recipe. [PATCH /api/recipes/{slug}] Updates a recipe by existing slug and data. Keywords: patch_one, patch one, patch recipe, update recipe, edit recipe, modify recipe, change recipe, write recipe, recipe, recipes, recipe crud, patch, update, edit, modify, change, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
slugYes

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden, and it discloses only that the update is partial and keyed on an existing slug. It omits auth/permission requirements, what happens to unspecified fields, whether changes are reversible, and what a successful response returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The front-loaded purpose and endpoint are good, but the definition is diluted by a redundant keyword block that repeats 'recipe' and synonyms of patch nearly a dozen times, none of which earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and an elaborate required body object at 0% description coverage, the definition is too thin. An agent knows what the endpoint does but not how to safely call it or what the body must contain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage and a deeply nested body object, the description should compensate but offers only 'by existing slug and data'. The slug hint (must already exist) is mildly useful, but 'data' gives no meaning to the large Recipe-Input body the caller must construct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The definition states a specific verb+resource ('Partially update recipe') and even names the HTTP endpoint and path, so its purpose is unmistakable. It does not, however, differentiate itself from the sibling recipe_crud_update_one, leaving the agent to infer patch-vs-full-update semantics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this over recipe_crud_update_one or patch_many. The long keyword list ('patch recipe, update recipe, edit recipe...') is search fodder, not usage direction, so no conditions or alternatives are actually provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

purge_export_dataB

Purge Export Data — Recipe: Bulk Actions. Export recipe. [DELETE /api/recipes/bulk-actions/export/purge] Remove all exports data, including items on disk without database entry Keywords: purge_export_data, purge export data, export recipe, delete recipe, remove recipe, destroy recipe, write recipe, recipe, recipes, recipe bulk actions, bulk actions, export, purge, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description carries the full behavioral burden. It discloses that it deletes exports data from both database and disk, which is useful and implies a destructive, irreversible operation. However, it doesn't state required permissions, whether the action is reversible, or what the response looks like. A 3 is appropriate: it adds some behavioral context but leaves significant gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is cluttered with a redundant recipe header, an HTTP method, and a long keyword list that repeats the tool name and synonyms. The core sentence ('Remove all exports data...') is buried after non-essential metadata, violating front-loading. Much of the text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter destructive tool with no annotations and no output schema, the description provides the essential scope but lacks operational details like prerequisites, side effects, or confirmation of irreversibility. It is minimally complete but leaves the agent guessing about safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the baseline is 4. The description doesn't need to document parameters, and it correctly doesn't attempt to. No penalty for missing parameter info since there are none.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Remove all exports data, including items on disk without database entry.' The verb 'remove' and the scoped resource 'exports data' make the destructive purpose clear, distinguishing it from siblings like bulk_export_recipes or get_recipe. However, the presence of an HTTP method and a keyword dump adds noise that dilutes the clarity slightly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use or when-not-to-use guidance is provided. The keywords list 'bulk actions' and 'export recipe', but there's no statement like 'use this to clear all exported recipe files' or a warning about irreversibility. The agent must infer usage from the name and path alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipe_comments_create_oneC

Create One — Recipe: Comments. Create comment. [POST /api/comments] Keywords: recipe_comments_create_one, recipe comments create one, create comment, add comment, new comment, make comment, write comment, comment, comments, recipe comments, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the entire disclosure burden, and it delivers almost nothing beyond the HTTP verb and path. It does not say whether the comment is attributed to the authenticated user, what permissions are required, what happens on a bad recipeId, or what the response contains — all critical 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two clauses are useful and front-loaded, but the bulk of the description is a comma-separated keyword dump (aliases, 'mealie', 'post') that adds no actionable meaning and dilutes the signal. Roughly 80% of the text is SEO filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and 0% parameter description coverage, the description should explain auth expectations, side effects, and required inputs. Instead it supplies only an endpoint and keyword aliases, leaving the agent under-informed before an irreversible write.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the single 'body' parameter is a nested object requiring recipeId (uuid4) and text. The description adds no information about either field — no format hint for recipeId, no length/content constraints for text — so it fails to compensate for the coverage gap, though the schema names are at least self-descriptive.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Create comment') and names the endpoint (POST /api/comments), so an agent knows exactly what the tool does. It does not explicitly distinguish itself from recipe_comments_update_one, recipe_comments_delete_one, or recipe_comments_get_one, leaving that separation to the tool name alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no statement of prerequisites (e.g. authentication, comment ownership), and no routing to alternatives such as recipe_comments_update_one for editing an existing comment. The remaining text is keyword-alias stuffing rather than guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipe_comments_delete_oneC

Delete One — Recipe: Comments. Delete comment. [DELETE /api/comments/{item_id}] Keywords: recipe_comments_delete_one, recipe comments delete one, delete comment, remove comment, destroy comment, write comment, comment, comments, recipe comments, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and largely fails: it does not say whether deletion is permanent, whether the caller must own the comment, what permissions are required, or what is returned on success. The DELETE verb implies destruction but nothing beyond that is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content ('Delete One — Recipe: Comments. Delete comment.' plus the endpoint) is front-loaded, but it is followed by roughly thirty redundant keywords ('delete comment, remove comment, destroy comment, write comment, comment, comments, ...') that add no selection value and bloat the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no annotations and no output schema, the description should explain irreversibility, auth expectations, and error behavior. It supplies only the purpose and endpoint, leaving the agent without enough information to invoke it confidently in edge cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for item_id, so the description must compensate. The route template '[DELETE /api/comments/{item_id}]' does clarify that item_id is the comment identifier used as a path segment, which is real added meaning, but it never states the expected UUID format or what happens with an invalid id.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Delete One — Recipe: Comments. Delete comment.' combined with the DELETE /api/comments/{item_id} route, an agent immediately knows this removes a recipe comment. It does not explicitly differentiate itself from siblings like recipe_comments_update_one or recipe_comments_get_one, but the verb makes the distinction obvious.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus alternatives (e.g., bulk deletion or updating a comment). The only 'guidance' is a keyword soup including 'delete, remove, destroy, write', which does not tell the agent anything about conditions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipe_comments_get_allC

Get All — Recipe: Comments. List comments. [GET /api/comments] Keywords: recipe_comments_get_all, recipe comments get all, list comment, list comments, get comment, get comments, search comment, search comments, find comment, find comments, browse comment, browse comments, fetch comment, fetch comments, read comment, read comments, comment, comments, recipe comments, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
orderByNo
perPageNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.1/5.0
Behavior2/5

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, yet it only offers the bare keyword "read-only" with no substance. It says nothing about pagination behavior (despite page/perPage params), ordering defaults, authentication needs, or the shape of results, which is a large gap for a 7-parameter 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content is confined to two short front-loaded lines, after which the description degenerates into a long comma-separated keyword spam list. The bulk adds no differentiating information, so the definition is bloated rather than concise despite the brevity of its substantive opening.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 7 parameters, no annotations, and no output schema, the description is far too thin: it omits parameter meaning, pagination behavior, and routing versus siblings. The keyword tail substitutes volume for the substantive detail an agent needs to call this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are 7 parameters (page, orderBy, perPage, queryFilter, orderDirection, paginationSeed, orderByNullPosition) at 0% schema description coverage, and the description explains none of them. It does not clarify pagination, filter syntax, ordering semantics, or the meaning of paginationSeed, leaving the agent to guess entirely.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Get All — Recipe: Comments. List comments." names a clear verb (list) and resource (comments), so the basic purpose is understandable. However, it does not distinguish this tool from close siblings such as get_recipe_comments or recipe_comments_get_one, and the endpoint shown (/api/comments) leaves ambiguous whether it lists all comments globally or a recipe's comments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 get_recipe_comments or recipe_comments_get_one. The trailing keyword list is a synonym dump, not routing guidance, so an agent gets no condition for selecting this tool over its siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipe_comments_get_oneC

Get One — Recipe: Comments. Get comment. [GET /api/comments/{item_id}] Keywords: recipe_comments_get_one, recipe comments get one, get comment, fetch comment, read comment, retrieve comment, view comment, show comment, comment, comments, recipe comments, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.9/5.0
Behavior3/5

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 does disclose the GET method, the read-only nature ('read-only' keyword), and the path template, which reveals that item_id identifies a comment. It says nothing about authentication requirements, 404 behavior, or what the returned comment looks like, leaving meaningful gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and endpoint are front-loaded, which is good, but roughly half the text is SEO keyword stuffing ('fetch comment, read comment, retrieve comment, view comment, show comment...') that adds no information. Those tokens do not earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with no output schema and no annotations, the description gives enough to identify the operation and its route. It still omits return shape, auth needs, and error conditions, so it is only minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for the undocumented item_id. It partially does via the route template /api/comments/{item_id}, implying item_id is a comment UUID, but it never states this explicitly against the schema's uuid4 format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource (get a single recipe comment) and pins it to the concrete endpoint GET /api/comments/{item_id}. Sibling differentiation (vs. recipe_comments_get_all, recipe_comments_create_one, etc.) is largely carried by the tool name and route rather than explicit prose, 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.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to call this versus recipe_comments_get_all or the comment update/delete siblings, and no prerequisites or exclusions. The keyword block restates 'get/fetch/read/retrieve' without adding any conditional guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipe_comments_update_oneC

Update One — Recipe: Comments. Replace (full update) comment. [PUT /api/comments/{item_id}] Keywords: recipe_comments_update_one, recipe comments update one, update comment, replace comment, edit comment, modify comment, save comment, write comment, comment, comments, recipe comments, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.6/5.0
Behavior3/5

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 usefully discloses that the operation is a full replacement (PUT), implying overwrite semantics, but omits permissions, error cases, and what happens to fields not included in the body.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The operation and endpoint are front-loaded, but the keyword list is excessive synonym stuffing that does not earn its place. The definition could be significantly shortened without losing its useful content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, 0% schema description coverage, no output schema, and two required parameters, the description is too sparse. It should explain parameter semantics and basic behavioral context to be adequately complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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 parameter meaning. Neither item_id nor the body fields (id, text) are explained, leaving both required parameters completely undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Update One — Recipe: Comments' and 'Replace (full update) comment.' It also includes the PUT endpoint, but does not explicitly route the agent away from sibling tools such as create, delete, or get for comments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides no when-to-use guidance, preconditions, or alternative selection. The description only lists synonyms and the endpoint, leaving the agent to infer when this tool is appropriate versus the other recipe_comment tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipe_crud_create_oneC

Create One — Recipe: CRUD. Create recipe. [POST /api/recipes] Takes in a JSON string and loads data into the database as a new entry Keywords: recipe_crud_create_one, recipe crud create one, create recipe, add recipe, new recipe, make recipe, write recipe, recipe, recipes, recipe crud, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.5/5.0
Behavior2/5

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 says data is 'loaded into the database as a new entry', which does imply persistence/mutation, but it omits authentication requirements, validation/failure behavior, and any side effects (e.g., whether defaults are populated) that matter for a create operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It front-loads a redundant title restatement ('Create One — Recipe: CRUD') and ends with a long keyword dump that adds no decision-relevant information. The one useful sentence is buried between filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% parameter coverage, the description should carry considerably more weight. It leaves auth, response shape, and payload structure undocumented, which is inadequate for a create endpoint with an opaque body parameter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single 'body' parameter is a $ref to CreateRecipe whose only documented field is 'name'. The description adds only that the body is a JSON string, which is thin and arguably at odds with the object schema; it doesn't explain required fields or payload shape.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource ('Create recipe') and the endpoint POST /api/recipes, and even notes that the payload is persisted as a new entry. It does not, however, distinguish itself from the many sibling creation tools (create_recipe_from_html_or_json, create_recipe_from_zip, create_recipe_from_image), so an agent can't tell which creation path applies here.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 create_recipe_from_html_or_json, create_recipe_from_zip, or create_many. The trailing keyword list ('create recipe, add recipe, new recipe ...') is search boilerplate, not usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipe_crud_delete_oneC

Delete One — Recipe: CRUD. Delete recipe. [DELETE /api/recipes/{slug}] Deletes a recipe by slug Keywords: recipe_crud_delete_one, recipe crud delete one, delete recipe, remove recipe, destroy recipe, write recipe, recipe, recipes, recipe crud, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'Delete' implies destruction but it does not state whether deletion is permanent, what happens to related data, or what authorization is required. The endpoint string is the only added behavioral signal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and clear, but it is repeated three times ('Delete One', 'Delete recipe', 'Deletes a recipe by slug') and followed by a long SEO keyword list that adds no meaning. Roughly half the text is redundant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive mutation with no annotations and no output schema, the description omits critical context: permanence, side effects, permission requirements, and success/failure behavior. The keyword tail pads length without filling these gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 0%, the description must compensate, and it does add that the parameter is a 'slug' and that deletion targets the recipe identified by it. However, there is no format, validation, or lookup-failure context, so it only partially offsets the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('Delete a recipe by slug') and the endpoint confirms it (DELETE /api/recipes/{slug}). It is distinguishable from recipe_crud_get_one/update_one by naming the operation, though the 'one' scoping is implicit rather than explicitly contrasted with bulk_delete_recipes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 such as bulk_delete_recipes or delete_many. It states only that it deletes by slug, leaving the agent to infer that it handles single-record deletion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipe_crud_get_allC

Get All — Recipe: CRUD. List recipes. [GET /api/recipes] Keywords: recipe_crud_get_all, recipe crud get all, list recipe, list recipes, get recipe, get recipes, search recipe, search recipes, find recipe, find recipes, browse recipe, browse recipes, fetch recipe, fetch recipes, read recipe, read recipes, recipe, recipes, recipe crud, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
tagsNo
foodsNo
toolsNo
searchNo
orderByNo
perPageNo
cookbookNo
categoriesNo
householdsNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
requireAllTagsNo
requireAllFoodsNo
requireAllToolsNo
orderByNullPositionNo
requireAllCategoriesNo

TDQS

C2.1/5.0
Behavior1/5

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, and it discloses essentially nothing: no indication that this is a read-only operation, no pagination/filter/sort semantics for the 18 parameters, no note on default page size, and no return-shape information. The keyword soup substitutes for behavioral content rather than providing it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence ('Get All — Recipe: CRUD. List recipes.') is front-loaded and adequate, but the trailing keyword block is pure padding that repeats 'recipe/recipes' across a dozen near-synonymous verbs. It inflates length without adding meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 18-parameter, annotation-free, output-schema-free list tool, the description is grossly incomplete: no filter/sort/pagination explanation, no read-only assurance, and no return-value guidance. An agent cannot reliably call this tool correctly from the definition alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 18 parameters at 0% schema description coverage, the description must compensate, but it explains none of them. Parameters like tags, foods, tools, search, queryFilter, orderBy, paginationSeed, requireAllTags, and cookbook are entirely undocumented in both schema and description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource — 'List recipes' — with the HTTP endpoint [GET /api/recipes], so the operation is identifiable. However, it offers no differentiation from siblings such as explore_recipes_get_all, shared_recipes_get_all, or recipe_crud_suggest_recipes, which also return recipes. The keyword block adds no discriminating signal.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance. The only navigation aid is a repetitive keyword list ('list, get, search, find, browse, fetch, read'), which does not tell an agent when to pick this tool over explore_recipes_get_all or recipe_crud_get_one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipe_crud_get_oneC

Get One — Recipe: CRUD. Get recipe. [GET /api/recipes/{slug}] Takes in a recipe's slug or id and returns all data for a recipe Keywords: recipe_crud_get_one, recipe crud get one, get recipe, fetch recipe, read recipe, retrieve recipe, view recipe, show recipe, recipe, recipes, recipe crud, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesA recipe's slug or id

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the behavioral burden. It usefully indicates a read-only GET operation and that all recipe data is returned. However, it omits auth requirements, error behavior, and whether the response is paginated or bounded, leaving meaningful gaps for a no-annotation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first part is front-loaded and useful, but the large keyword block is repetitive filler that repeats the tool name, purpose, and common synonyms. It inflates length without adding decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool, the description covers the basic purpose, input, and endpoint. Since there is no output schema, the description should ideally say more about what 'all data for a recipe' contains, but the core invocation context is adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the single 'slug' parameter is already documented as 'A recipe's slug or id'. The description repeats the same semantics without adding format examples, lookup behavior, or error cases, so the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: get a recipe by slug or id and return all recipe data. It also exposes the underlying GET endpoint. However, it does not distinguish this tool from several sibling getters such as get_recipe, get_household_recipe, or shared_recipes_get_one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 when this recipe CRUD getter is preferable to get_recipe, explore_recipes_get_all, or other recipe retrieval siblings, nor does it state prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipe_crud_suggest_recipesC

Suggest Recipes — Recipe: CRUD. List suggestions. [GET /api/recipes/suggestions] Keywords: recipe_crud_suggest_recipes, recipe crud suggest recipes, list suggestion, list suggestions, get suggestion, get suggestions, search suggestion, search suggestions, find suggestion, find suggestions, browse suggestion, browse suggestions, fetch suggestion, fetch suggestions, read suggestion, read suggestions, suggestion, suggestions, recipe crud, recipes, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
foodsNo
limitNo
toolsNo
orderByNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
maxMissingFoodsNo
maxMissingToolsNo
includeFoodsOnHandNo
includeToolsOnHandNo
orderByNullPositionNo

TDQS

C2/5.0
Behavior2/5

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 only the HTTP verb/path (GET) and the word 'read-only', which is minimal behavioral context; it says nothing about authentication requirements, pagination behavior, default result limits, or whether results are ranked/scored.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is front-loaded and usable, but roughly 90% of the text is a keyword dump ('list suggestion, list suggestions, get suggestion, ... browse, fetch, read') that adds no information and buries the one useful detail (the route) mid-string.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With 12 undocumented parameters, no annotations, and no output schema, the description would need to compensate substantially. Instead it supplies essentially nothing beyond the operation name and URL, leaving the agent unable to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are 12 parameters, several with non-obvious semantics (maxMissingFoods, paginationSeed, includeFoodsOnHand, orderByNullPosition). The description explains none of them, leaving the agent to guess at filtering, ranking, and pagination behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line states a recognizable verb+resource ('Suggest Recipes ... List suggestions') and the underlying route [GET /api/recipes/suggestions], so an agent knows roughly what it does. However, it never differentiates itself from the near-identical sibling explore_recipes_suggest_recipes, and the rest of the text devolves into keyword padding rather than clarifying scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or alternative-tool guidance. The only implicit signal is the 'read-only' keyword, which restates the obvious for a list endpoint and does not help an agent choose between this tool and the other suggestion-listing sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipe_crud_update_manyC

Update Many — Recipe: CRUD. Replace (full update) recipe. [PUT /api/recipes] Keywords: recipe_crud_update_many, recipe crud update many, update recipe, replace recipe, edit recipe, modify recipe, save recipe, write recipe, recipe, recipes, recipe crud, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It says 'Replace (full update)' which hints at destructive replacement semantics, but never states that unspecified fields are wiped, whether this is a batch endpoint, what happens on partial failure, or required auth. For a bulk 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and efficient, but the trailing keyword list ('Keywords: recipe_crud_update_many, recipe crud update many, ... mealie.') is pure noise padding for search, not for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A bulk PUT replacement tool with no annotations, no output schema, and no explanation of replacement semantics or array handling. The agent cannot know whether this overwrites whole recipe records or how failures are handled.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there is one top-level 'body' array param, but the schema defines the rich Recipe-Input structure. The description adds nothing about the body shape or the array-of-recipes semantics, though with only one param the baseline compensates somewhat.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource: 'Replace (full update) recipe' with HTTP method PUT. Distinguishes full replace from partial update, but the sibling tools include recipe_crud_update_one and patch_many which it does not address to differentiate bulk vs single.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this bulk replace endpoint vs recipe_crud_update_one, patch_many, or patch_one. The keyword soup implies synonyms but never states conditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipe_crud_update_oneC

Update One — Recipe: CRUD. Replace (full update) recipe. [PUT /api/recipes/{slug}] Updates a recipe by existing slug and data. Keywords: recipe_crud_update_one, recipe crud update one, update recipe, replace recipe, edit recipe, modify recipe, save recipe, write recipe, recipe, recipes, recipe crud, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
slugYes

TDQS

C2.5/5.0
Behavior2/5

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 says "Replace (full update)" which implies the body overwrites the recipe, but it does not disclose that unset fields may be cleared, whether this requires auth, or that it targets a record by existing slug. For a destructive full-replace mutation 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is a reasonable one-liner, but the trailing "Keywords:" block is a long comma-separated list of near-synonyms and the tool name repeated, padding the definition without adding meaning. It is not front-loaded around a single clear statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a full-replace mutation with no annotations, no output schema, a large untagged nested body schema, and 0% parameter coverage, the description is inadequate. An agent cannot tell what gets overwritten, what the slug must be, or when to prefer the patch variant.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 two required parameters. It only says "updates a recipe by existing slug and data," which vaguely gestures at the slug/path parameter and the body but adds no semantics about the nested Recipe-Input body fields. Far too thin given the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("Replace (full update) recipe") and even identifies the HTTP method and path. The "Replace (full update)" phrasing distinguishes it from the sibling patch_one, but the description never names that alternative explicitly, so the sibling differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance is given. There is no mention of when to use this full-replace tool versus the sibling patch_one (partial update) or recipe_crud_update_many. The keyword dump at the end does not substitute for actual usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipes_foods_create_oneC

Create One — Recipes: Foods. Create food. [POST /api/foods] Keywords: recipes_foods_create_one, recipes foods create one, create food, add food, new food, make food, write food, food, foods, recipes foods, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.7/5.0
Behavior2/5

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 is a mutation tool (POST), but no details are given about permissions, side effects, or what happens on success. The description is essentially just the operation name plus keywords, leaving behavioral traits undisclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is bloated with a long keyword list that does not add meaning. The core message 'Create food' is clear and front-loaded but followed by redundant keywords. It is not appropriately sized for the information conveyed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of the nested body object, no annotations, and no output schema, the description is inadequate. It fails to explain required fields, expected behavior, or any nuances of creating a food item. The description does not compensate for the lack of structured documentation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage, and the description adds no parameter semantics. The only parameter is 'body', a nested object with many fields, and the description does not explain any of them. Baseline for low coverage is 3, but with a complex nested body object that is completely undocumented, this may be a 2; however, given the single parameter and the schema itself defining required fields, 3 is acceptable.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: 'Create food', with the HTTP endpoint POST /api/foods. It does distinguish itself from sibling read/update/delete food tools by the 'create' verb. However, it's somewhat buried under keyword spam and doesn't differentiate from create_many or seed_foods explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is provided. The description simply says to create a food, with no mention of alternatives like recipes_foods_update_one or create_many. The keyword list does not constitute usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipes_foods_delete_oneC

Delete One — Recipes: Foods. Delete food. [DELETE /api/foods/{item_id}] Keywords: recipes_foods_delete_one, recipes foods delete one, delete food, remove food, destroy food, write food, food, foods, recipes foods, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden and delivers almost nothing: it does not state that deletion is permanent, whether the food is removed from existing recipes, whether it is referential-integrity blocked, or what the response is. Only the destructive implication of 'Delete' is conveyed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content ('Delete food' plus the endpoint) is front-loaded, but roughly two-thirds of the text is a keyword dump (delete, remove, destroy, write, mealie, etc.) that adds no semantic value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive endpoint with no annotations, no output schema, and 0% parameter documentation, the definition leaves critical gaps: reversibility, side effects on recipes, auth requirements, and response shape are all unspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 single item_id parameter, and it does not — it never says the id is a food UUID or where to obtain one. The only signal is the format uuid4 in the schema itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Delete food', DELETE /api/foods/{item_id}), which clearly separates it from read/create/merge/update siblings like recipes_foods_get_one or recipes_foods_merge_one. It does not explicitly name a sibling to route against, 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.

Usage Guidelines2/5

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 versus recipes_foods_merge_one (for deduplication) or recipes_foods_update_one, and no mention of prerequisites such as ownership/permissions. An agent gets no context beyond the HTTP verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipes_foods_get_allC

Get All — Recipes: Foods. List foods. [GET /api/foods] Keywords: recipes_foods_get_all, recipes foods get all, list food, list foods, get food, get foods, search food, search foods, find food, find foods, browse food, browse foods, fetch food, fetch foods, read food, read foods, food, foods, recipes foods, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
searchNo
orderByNo
perPageNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but only states 'list' and 'read-only' (in keywords). It doesn't disclose pagination behavior, default page size, sort order default (desc), or what happens with search/query filters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The actual description is one short sentence, but the massive keyword list adds noise and length without adding meaning. It's not concise overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 8 parameters, 0% schema descriptions, and no annotations or output schema, the description is severely incomplete. An agent cannot determine how to paginate, sort, or filter without external knowledge.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the description provides absolutely no information about the 8 parameters (page, search, orderBy, perPage, queryFilter, orderDirection, paginationSeed, orderByNullPosition). It neither names nor explains any parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (list) and resource (foods), and even names the REST endpoint. However, it doesn't differentiate from closely named siblings like recipes_foods_get_one or explore_foods_get_all, 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.

Usage Guidelines2/5

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 doesn't mention pagination defaults, when to prefer explore_foods_get_all, or any context about the recipes vs explore distinction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipes_foods_get_oneC

Get One — Recipes: Foods. Get food. [GET /api/foods/{item_id}] Keywords: recipes_foods_get_one, recipes foods get one, get food, fetch food, read food, retrieve food, view food, show food, food, foods, recipes foods, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.7/5.0
Behavior3/5

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 HTTP verb and path (GET /api/foods/{item_id}), which implicitly communicates read-only behavior, but says nothing about 404/error handling, authentication needs, or what a returned food contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The substantive content is one short phrase ('Get food'); the rest is a long redundant keyword dump ('recipes foods get one, get food, fetch food, read food...') that adds no selection value and bloats the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a lookup tool with one identifier parameter, no annotations, and no output schema, the description should clarify what is returned and how to handle missing ids. It provides none of this, leaving the agent with only the bare endpoint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single required item_id has no description in the schema. The description only surfaces the parameter implicitly via the endpoint template {item_id}; it does not state that it must be a UUID or how to obtain it, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource ('Get food') and the underlying endpoint GET /api/foods/{item_id}, so an agent knows this retrieves a single food record by id. However, it does nothing to distinguish itself from the closely-named sibling explore_foods_get_one, which appears to fetch the same resource type.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance: no mention of when to prefer this over explore_foods_get_one, recipes_foods_get_all, or any other lookup, and no preconditions. The remaining text is a keyword list, which restates synonyms rather than giving selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipes_foods_merge_oneC

Merge One — Recipes: Foods. Merge food. [PUT /api/foods/merge] Keywords: recipes_foods_merge_one, recipes foods merge one, merge food, update food, replace food, edit food, modify food, save food, write food, food, foods, recipes foods, merge, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, yet it discloses only the HTTP method and route (PUT /api/foods/merge). It says nothing about the irreversible/destructive nature of merging two foods, what happens to recipes or ingredients referencing the removed food, or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The essential content is front-loaded in two short clauses, but it is immediately followed by a long, redundant keyword list that repeats 'merge/update/replace/edit/modify/save/write' and adds no information. Significant bloat for a tool whose actual behavior is never explained.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, unannotated mutation with no output schema and an undocumented nested parameter, the description is inadequate. Nothing tells the agent what the operation does to data or how to choose fromFood versus toFood.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single body parameter is a nested MergeFood object with fromFood and toFood at 0% schema description coverage, and the description adds nothing about them. Crucially, an agent cannot tell which UUID is kept and which is consumed from the description alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a verb ('Merge') and resource ('food'), but 'Merge One — Recipes: Foods. Merge food.' is essentially a restatement of the tool name and never says what merging means operationally (which food survives, whether the source is deleted). It also fails to distinguish itself from the near-identical sibling recipes_units_merge_one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives such as recipes_foods_update_one or recipes_foods_delete_one. The keyword block ('update food, replace food, edit food, modify food, save food, write food') is search bait rather than guidance and actively conflates a destructive merge with ordinary updates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipes_foods_update_oneC

Update One — Recipes: Foods. Replace (full update) food. [PUT /api/foods/{item_id}] Keywords: recipes_foods_update_one, recipes foods update one, update food, replace food, edit food, modify food, save food, write food, food, foods, recipes foods, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full behavioral burden. It usefully discloses that this is a full replace ('Replace (full update)'), implying omitted fields may be overwritten, but omits auth requirements, side effects, reversibility, and response behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core statement is front-loaded, but it is followed by a long keyword list that adds no operational value for an agent. The keyword spam makes the definition unnecessarily bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a full-replace mutation with no annotations, no output schema, and 0% schema description coverage, the description lacks critical details: required body fields, permissions, side effects, and response semantics. It identifies the operation and endpoint but remains incomplete for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there are two required parameters. The endpoint template implies item_id is a path parameter, but the complex body object with required 'name' and many fields is not described at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Update') and resource ('food'), and clarifies scope with 'Replace (full update)'. It distinguishes from siblings by name but does not explicitly route to alternatives such as recipes_foods_merge_one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to choose this over alternatives, nor any prerequisites or exclusions. 'Replace (full update)' hints at complete replacement but does not explain when full replacement is appropriate versus merging or partial edits.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipes_units_create_oneC

Create One — Recipes: Units. Create unit. [POST /api/units] Keywords: recipes_units_create_one, recipes units create one, create unit, add unit, new unit, make unit, write unit, unit, units, recipes units, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations are absent, so the description carries the full behavioral burden. It confirms a write via POST but says nothing about auth/permission requirements, whether creation fails on duplicate names, or what happens to defaulted fields. Only the endpoint class is disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The operative text ('Create unit' + POST endpoint) is front-loaded, but it is then padded with a long keyword dump that repeats the name and title many times. The keyword block adds bulk without meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a create mutation with no annotations, no output schema, and a nested body at 0% description coverage, the definition is incomplete. It omits auth needs, duplicate/error behavior, and any body field guidance that the schema does not provide.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and there is one body parameter (a nested CreateIngredientUnit object with ~11 properties). At 0% coverage the description must compensate, but it adds no information about the body fields or their semantics, leaving the agent to infer everything from bare property titles.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb+resource: 'Create unit' for 'Recipes: Units', and the POST /api/units endpoint disambiguates it from sibling unit tools like recipes_units_update_one. It does not explicitly differentiate itself from other create_* siblings (foods, tags, etc.), but the resource name is specific enough.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or alternative guidance is given. The keyword payload lists synonyms ('add unit', 'write unit') but never says when an agent should call this instead of recipes_units_merge_one or seed_units.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipes_units_delete_oneC

Delete One — Recipes: Units. Delete unit. [DELETE /api/units/{item_id}] Keywords: recipes_units_delete_one, recipes units delete one, delete unit, remove unit, destroy unit, write unit, unit, units, recipes units, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It confirms a destructive mutation via the DELETE verb but says nothing about required permissions, irreversibility, or what happens to recipes/foods referencing a deleted unit. 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two sentences are appropriately terse and front-loaded, but the trailing 'Keywords:' block is pure SEO stuffing that repeats the tool name and resource many times without adding information, diluting the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive delete with zero annotation coverage and no output schema, the definition is too thin. It should at least flag the irreversible nature and any referential side effects, none of which are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It only reveals via the endpoint template that item_id is a path parameter for the units resource; it adds no format, validity, or meaning beyond the schema's uuid4 type.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Delete unit') scoped to Recipes: Units, and the endpoint line [DELETE /api/units/{item_id}] confirms the operation. It is clear what the tool does, but it offers no differentiation from the many sibling delete tools beyond the resource noun.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus recipes_units_update_one, recipes_units_merge_one, or any other delete tool. The only 'guidance' is a keyword dump that repeats the name rather than stating context or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipes_units_get_allC

Get All — Recipes: Units. List units. [GET /api/units] Keywords: recipes_units_get_all, recipes units get all, list unit, list units, get unit, get units, search unit, search units, find unit, find units, browse unit, browse units, fetch unit, fetch units, read unit, read units, unit, units, recipes units, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
searchNo
orderByNo
perPageNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.3/5.0
Behavior2/5

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 via 'List units' and the 'read-only' keyword, but says nothing about pagination behavior, default page size, ordering defaults, or result shape for what is clearly a paginated list endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening sentence is fine and front-loaded, but it is followed by a long string of redundant synonym keywords (list/get/search/find/browse/fetch/read toggled across unit/units) that adds noise rather than information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter list endpoint with no annotations, no output schema, and no required-parameter guidance, the description leaves the agent without the information needed to invoke it correctly. It fails to cover the parameters that are the tool's main interface.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has 8 parameters (page, search, orderBy, perPage, queryFilter, orderDirection, paginationSeed, orderByNullPosition) with 0% schema description coverage, and the description explains none of them. The pagination and ordering controls are completely undocumented anywhere.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get/List) and resource (units) plus the backing endpoint [GET /api/units], so the operation is unambiguous. It does not, however, distinguish itself from the sibling recipes_units_get_one, so an agent must infer that 'get_all' means the collection rather than one record.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus the sibling get_one or the create/update/delete variants. The only rudimentary guidance is the block of synonym keywords, which offers no conditions or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipes_units_get_oneC

Get One — Recipes: Units. Get unit. [GET /api/units/{item_id}] Keywords: recipes_units_get_one, recipes units get one, get unit, fetch unit, read unit, retrieve unit, view unit, show unit, unit, units, recipes units, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, yet it discloses only an implicit read-only nature via 'Get'/'GET'. It says nothing about authentication requirements, error behavior for an unknown item_id, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two lines are adequately front-loaded, but the description is dominated by a long comma-separated keyword dump ('Keywords: ... view, show, read-only, mealie') that restates the name and adds no decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter getter this is thin: no output schema exists, so the description should at least sketch the returned unit shape, and the keyword spam substitutes for real content. An agent can call it, but it lacks everything beyond the endpoint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the sole parameter item_id is undocumented beyond its UUID format in the schema. The endpoint template hints that item_id identifies the unit, but the description adds no meaning about what a valid unit ID is or where to obtain one.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource ('Get unit') and the underlying endpoint (GET /api/units/{item_id}), so an agent can tell it fetches a single recipe unit by ID. It is distinguishable from recipes_units_get_all and recipes_units_update_one mainly through the name rather than explicit differentiation in the text.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus recipes_units_get_all, recipes_foods_get_one, or other getters, and no prerequisites or exclusions. The trailing keyword list signals nothing about selection conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipes_units_merge_oneC

Merge One — Recipes: Units. Merge unit. [PUT /api/units/merge] Keywords: recipes_units_merge_one, recipes units merge one, merge unit, update unit, replace unit, edit unit, modify unit, save unit, write unit, unit, units, recipes units, merge, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2/5.0
Behavior2/5

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 only the HTTP method and path (PUT /api/units/merge), which signals a mutating call. It does not say whether the source unit is deleted, whether recipe references are rewritten, whether the operation is reversible, or what permissions are required — all critical for a merge/destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two fragments are front-loaded and short, but the remainder is a large SEO keyword dump ('merge, update, replace, edit, modify, save, write, put, mealie') that adds no agent-facing value and buries the one useful datum (the PUT endpoint). The description is bloated relative to its informational content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating, likely irreversible merge operation with no annotations, no output schema, and 0% parameter coverage, the description provides almost nothing an agent needs to invoke it safely or correctly. Merge direction, side effects, and permissions are all unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single body parameter contains fromUnit/toUnit with no descriptions. The description adds nothing about these fields; in particular it does not clarify merge direction (which UUID is the source being replaced and which is the surviving target), which is the key ambiguity for this operation. It fails to compensate for the total coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the verb and resource with 'Merge unit' and adds the endpoint '[PUT /api/units/merge]', so the core action is identifiable. However, it never explains what merging a unit actually does (e.g. reassigning references from a source unit to a target unit) and does not distinguish this operation from siblings like recipes_units_update_one or recipes_foods_merge_one. The leading 'Merge One — Recipes: Units' is essentially a restated title.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 recipes_units_update_one, recipes_units_delete_one, or recipes_foods_merge_one. The keyword list ('update unit, replace unit, edit unit') actively blurs the line with sibling update tools rather than clarifying when a merge is appropriate. No prerequisites or conditions are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipes_units_update_oneC

Update One — Recipes: Units. Replace (full update) unit. [PUT /api/units/{item_id}] Keywords: recipes_units_update_one, recipes units update one, update unit, replace unit, edit unit, modify unit, save unit, write unit, unit, units, recipes units, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.8/5.0
Behavior2/5

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 discloses that this is a PUT endpoint and a full replacement, but omits permissions, authentication requirements, side effects on omitted fields, reversibility, and error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core description is front-loaded, but it is followed by a long keyword-stuffed list of near-synonyms that bloats the text without adding meaning. The useful information could be stated far more concisely.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is incomplete: it lacks parameter details, usage guidelines, permission requirements, and behavioral context needed to safely invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

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 explain the two parameters beyond indicating that item_id appears in the URL path. The body object and its many fields are entirely undocumented in both the schema and the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource: 'Update One — Recipes: Units' and clarifies it is a full replacement via 'Replace (full update) unit' and PUT /api/units/{item_id}. This clearly distinguishes the operation from create, get, delete, and merge siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It implies usage for replacing an existing unit, but does not explicitly state when to use this tool versus alternatives like create_one, merge_one, get_one, or delete_one. There are no exclusions or contextual conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipe_timeline_create_oneC

Create One — Recipe: Timeline. Create event. [POST /api/recipes/timeline/events] Keywords: recipe_timeline_create_one, recipe timeline create one, create event, add event, new event, make event, write event, event, events, recipe timeline, recipes, timeline, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full behavioral burden, yet it only reveals the endpoint and method. It does not mention authentication requirements, permission scope, whether the event is attached to the caller's user, or idempotency/duplicate handling for a mutation that creates persistent state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first three statements are tight and front-loaded, but the long comma-separated keyword dump roughly doubles the length without adding meaning, which is the opposite of earning each sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and an entirely undocumented nested body, the description should explain required inputs and the effect of creation. It supplies only the endpoint path, so an agent cannot confidently populate the body or predict the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the single 'body' parameter is a nested object requiring recipeId, subject, and eventType plus optional timestamp, image, userId, and eventMessage. The description explains none of these fields, their formats, or the enum constraints on eventType/image, leaving the agent with zero semantic help.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Create event' on the 'Recipe: Timeline' resource) and the HTTP endpoint confirms the write intent, so it is distinguishable from siblings like recipe_timeline_get_one/update_one/delete_one. However, it never explicitly names those siblings or states the scope is per-recipe, so differentiation is only implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance: nothing says an existing recipe is required first, that eventType must be one of the allowed values, or how this differs from update_event_image or recipe_timeline_update_one. The trailing keyword list ('add event, new event, make event') is search noise, not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipe_timeline_delete_oneC

Delete One — Recipe: Timeline. Delete event. [DELETE /api/recipes/timeline/events/{item_id}] Keywords: recipe_timeline_delete_one, recipe timeline delete one, delete event, remove event, destroy event, write event, event, events, recipe timeline, recipes, timeline, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full behavioral burden. It says 'Delete' but doesn't disclose whether deletion is permanent, what gets cascaded (event image?), what permissions are required, or what a successful response looks like. Only the HTTP verb and path are informative.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The tool already has a clear name and endpoint path. The long keyword tail ('recipe_timeline_delete_one, recipe timeline delete one, delete event, remove event, destroy event, ... mealie') is search-stuffing that crowds out actual behavioral content and adds no structural value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and one undocumented parameter, the description is incomplete. An agent has enough to form a request but not enough to decide when it should be used or what side effects to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and there is 1 parameter. The description contains no information about item_id semantics beyond it being in the URL path literal. The UUID format constraint is only inferable from the schema type, not explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the verb and resource clearly ('Delete event') and confirms the endpoint path. However, it doesn't distinguish itself meaningfully from sibling delete tools like shared_recipes_delete_one or recipe_crud_delete_one beyond the resource noun. The keyword dump adds no clarity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance. It doesn't explain prerequisites (does the event need to exist? does it require ownership?), nor does it point to alternatives like recipe_timeline_get_one or recipe_timeline_update_one for related operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipe_timeline_get_allC

Get All — Recipe: Timeline. List events. [GET /api/recipes/timeline/events] Keywords: recipe_timeline_get_all, recipe timeline get all, list event, list events, get event, get events, search event, search events, find event, find events, browse event, browse events, fetch event, fetch events, read event, read events, event, events, recipe timeline, recipes, timeline, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo
orderByNo
perPageNo
queryFilterNo
orderDirectionNodesc
paginationSeedNo
orderByNullPositionNo

TDQS

C2.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, yet it only names the HTTP verb/path. The 'read-only' token appears in the keyword dump rather than as an actual behavioral statement, and it says nothing about pagination behavior, default ordering (desc), or the meaning of the ordering controls that clearly affect results.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content is a single terse line, and the bulk of the description is a large block of redundant keyword synonyms (list/get/search/find/browse/fetch/read event...). This stuffing wastes context and does not front-load anything beyond the endpoint path.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-parameter list tool with no output schema and no annotations, the description should at least explain the paging/ordering/filter parameters and the shape of returned events. It provides none of that, leaving the agent unable to use the tool correctly beyond the defaults.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Seven parameters (page, perPage, orderBy, orderDirection, queryFilter, paginationSeed, orderByNullPosition) have 0% schema description coverage, and the description adds no explanation of any of them. Syntax and accepted formats for orderBy/queryFilter are left entirely undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The header 'Get All — Recipe: Timeline. List events.' gives a recognizable verb+resource (list recipe timeline events) and the endpoint path confirms it is a collection GET. However, it does nothing to separate this from look-alike siblings such as recipe_timeline_get_one or households_event_notifications_get_all, and the generic 'Get All —' template carries little semantic weight.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus recipe_timeline_get_one or the other event-list endpoints. 'List events' implies a read/list purpose, but no conditions, prerequisites, or alternatives are given, so the agent must infer everything from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipe_timeline_get_oneC

Get One — Recipe: Timeline. Get event. [GET /api/recipes/timeline/events/{item_id}] Keywords: recipe_timeline_get_one, recipe timeline get one, get event, fetch event, read event, retrieve event, view event, show event, event, events, recipe timeline, recipes, timeline, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. The embedded 'GET' path implies a read, and 'read-only' appears only inside the keyword blob rather than as a disclosure. Nothing is said about auth requirements, error behavior, or what the returned event contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The meaningful content is one short line, then a long comma-separated keyword dump that repeats the same concepts ('event, events, recipe timeline, get, fetch, read, retrieve, view, show'). The bloat crowds out the useful front-loaded statement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-one endpoint with no annotations, no output schema, and an undocumented parameter, the definition should say more about what the event is and what is returned. As written it is under-specified beyond the endpoint path.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required item_id parameter. The interior URL path '{item_id}' at least signals that item_id is a path-addressable resource identifier, which adds slight value over the bare schema, but no format or meaning is explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening 'Get One — Recipe: Timeline. Get event.' states a specific verb (get) and resource (a single recipe timeline event), and the REST path [GET /api/recipes/timeline/events/{item_id}] confirms it. It is reasonably distinguishable from recipe_timeline_get_all/create_one/update_one/delete_one, though differentiation comes mainly from the name rather than the prose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus siblings like recipe_timeline_get_all or the update/delete variants. The trailing keyword list is not guidance; it merely echoes synonyms without any condition or exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

recipe_timeline_update_oneC

Update One — Recipe: Timeline. Replace (full update) event. [PUT /api/recipes/timeline/events/{item_id}] Keywords: recipe_timeline_update_one, recipe timeline update one, update event, replace event, edit event, modify event, save event, write event, event, events, recipe timeline, recipes, timeline, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden. It does add one genuinely useful behavioral fact — this is a full replacement, so unspecified fields are effectively reset — but says nothing about permissions, behavior on a nonexistent item_id, or idempotency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is well-structured and front-loaded, but roughly half the text is a redundant keyword block ('recipe_timeline_update_one, recipe timeline update one, ... update, replace, edit, modify, save, write, put, mealie') that adds tokens without adding meaning for an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a write tool with no annotations, no output schema, and 0% parameter coverage, the description should at minimum explain the required body fields and mutation semantics. It gives only the HTTP verb and route, leaving the agent to infer the payload shape from the raw JSON schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and neither the schema nor the description explains the parameters. The path placeholder {item_id} only implies that identifier exists; the required body field 'subject', 'image' enum, and 'eventMessage' are never explained in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update One — Recipe: Timeline. Replace (full update) event') plus the underlying route PUT /api/recipes/timeline/events/{item_id}. 'Replace (full update)' usefully distinguishes it from a partial-update/patch sibling, though no sibling is named explicitly and the noisy keyword tail dilutes the message.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 versus recipe_timeline_create_one, recipe_timeline_delete_one, or update_event_image, and no mention of prerequisites or when a full replace is preferable to a targeted edit. The only extra content is a keyword list, which is not usage guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

refresh_tokenC

Refresh Token — Users: Authentication. Refresh auth. [GET /api/auth/refresh] Use a valid token to get another token Keywords: refresh_token, refresh token, refresh auth, get auth, fetch auth, read auth, retrieve auth, view auth, show auth, auth, users authentication, refresh, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.4/5.0
Behavior2/5

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 'use a valid token' but does not explain whether an Authorization header is required, what invalidates the old token, whether the response returns a new access token or expires the prior one, or any rate limits or auth prerequisites. For a security-sensitive auth endpoint 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is bloated with a redundant keyword list ('refresh_token, refresh token, refresh auth, get auth, fetch auth, read auth...') that repeats the name and title many times over. The valuable content ('Use a valid token to get another token') is a single sentence buried after the endpoint note and before the keyword noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, no annotations, and a bare endpoint URL leave key details missing: how the token is supplied, what the response contains, and what happens to the old token. For an auth refresh endpoint the definition is under-specified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has zero parameters, so the baseline is 4. The description correctly implies no body parameters are needed ('use a valid token'), though the mechanism of passing that token is unstated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States the resource (token) and the action (refresh), but the phrasing 'Refresh auth' and 'Use a valid token to get another token' restates the name rather than explaining the operation. It is not clearly distinguished from siblings like get_token or oauth_login that also mint tokens.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus get_token, oauth_login, or create_api_token. The keyword dump does not substitute for actual when/when-not instructions, leaving the agent to guess among several token-related siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_favoriteC

Remove Favorite — Users: Ratings. Delete favorite. [DELETE /api/users/{id}/favorites/{slug}] Removes a recipe from the user's favorites Keywords: remove_favorite, remove favorite, delete favorite, destroy favorite, write favorite, favorite, favorites, users ratings, users, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
slugYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full behavioral burden. It implies mutation of user favorites but says nothing about authentication requirements (the endpoint shows a users/{id} path but not that it must be the logged-in user), idempotency, or behavior when the favorite does not exist. The keyword dump adds no behavioral content.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description opens with a redundant restatement of the title, repeats itself ('Delete favorite' / 'Removes a recipe from the user's favorites'), embeds a raw HTTP route, and closes with a long keyword-stuffing list. Front-loading is present but roughly half the text is noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and two undocumented parameters, the description should at minimum state permission requirements and failure behavior. Instead it adds only keyword spam, leaving real gaps for an agent deciding how to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. The bracketed endpoint [DELETE /api/users/{id}/favorites/{slug}] does clarify that 'id' is the user identifier and 'slug' identifies the recipe, which the bare uuid4/string schema does not convey. However, it adds no format or validation detail beyond that mapping.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The sentence 'Removes a recipe from the user's favorites' gives a specific verb (removes) and resource (recipe from favorites), clearly distinguishing it from sibling add_favorite and the read-only get_favorites. The signal is buried under boilerplate ('Users: Ratings. Delete favorite.') and the raw endpoint, but the core purpose is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no mention of the inverse add_favorite, no prerequisites or conditions. The agent must infer usage entirely from the name and the siblings list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

remove_recipe_ingredients_from_listC

Remove Recipe Ingredients From List — Households: Shopping Lists. Delete recipe. [POST /api/households/shopping/lists/{item_id}/recipe/{recipe_id}/delete] Keywords: remove_recipe_ingredients_from_list, remove recipe ingredients from list, delete recipe, create recipe, add recipe, new recipe, make recipe, write recipe, recipe, households shopping lists, households, shopping, lists, delete, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
item_idYes
recipe_idYes

TDQS

C2.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries the full burden, and it delivers almost nothing behavioral. The phrase 'Delete recipe' is genuinely ambiguous — it could be read as deleting the recipe entity rather than detaching its ingredients from a shopping list — and nothing is said about reversibility, permissions, or what recipeDecrementQuantity does to quantities.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is front-loaded and useful, but it is followed by a long keyword-stuffing tail that repeats the tool name five ways, lists unrelated verbs, and ends with 'post, mealie.' That bulk adds no selection value and crowds out the missing behavioral detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutating, three-parameter tool with no annotations, no output schema, and 0% schema description coverage, the description supplies no required-parameter emphasis, no quantity semantics, and no side-effect disclosure. It is inadequate for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across three parameters. The endpoint template exposes the positional meaning of item_id and recipe_id, which is the only param information available, but the non-obvious recipeDecrementQuantity (default 1) is never explained anywhere in the description or schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening line states a concrete verb and resource (remove recipe ingredients from a shopping list) and scopes it to Households: Shopping Lists. However, the trailing keyword block immediately contradicts that purpose by also advertising 'create recipe, add recipe, new recipe, make recipe, write recipe', which muddies what the tool actually does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is given. The sibling add_recipe_ingredients_to_list / add_single_recipe_ingredients_to_list are the obvious alternatives, yet the description never names them or states the condition that selects removal instead of addition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

rerun_webhooksB

Rerun Webhooks — Households: Webhooks. Re-run webhook. [POST /api/households/webhooks/rerun] Manually re-fires all previously scheduled webhooks for today Keywords: rerun_webhooks, rerun webhooks, re-run webhook, create webhook, add webhook, new webhook, make webhook, write webhook, webhook, webhooks, households webhooks, households, rerun, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It usefully discloses a behavioral trait beyond the name: the action is bulk and non-selective ('all previously scheduled webhooks for today'), and the POST path signals a state-changing operation. However, it says nothing about required permissions, whether the re-fire is idempotent, or what the response contains.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two lines are well front-loaded, but roughly half the text is an SEO keyword dump. Worse, that dump includes 'create webhook, add webhook, new webhook, make webhook, write webhook', which misdescribes a re-fire action as a creation action and can actively mislead an agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless, output-schema-less action tool, the description covers the action, its scope, and the HTTP method, which is sufficient to call it correctly. Missing only permission/return-value context, which is minor at this complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline for a 0-param tool is 4. The description correctly implies the scope is implicit (today's scheduled webhooks) rather than parameterized.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Re-run webhook', 'Manually re-fires all previously scheduled webhooks for today') and the endpoint path clarifies the scope. It is distinguishable from households_webhooks_get_all / households_webhooks_create_one, though it never explicitly contrasts itself with the sibling test_one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Manually re-fires all previously scheduled webhooks for today' implies the use case (recovering from a failed or missed delivery), but there is no explicit when-to-use guidance, no mention of the alternative test_one, and no note about when NOT to call it (e.g., if nothing is scheduled).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

scrape_image_urlC

Scrape Image Url — Recipe: CRUD. Create image. [POST /api/recipes/{slug}/image] Keywords: scrape_image_url, scrape image url, create image, add image, new image, make image, write image, image, recipe crud, recipe images and assets, recipes, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
slugYes

TDQS

C2.1/5.0
Behavior2/5

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 doesn't disclose that this is a mutating operation requiring authentication, what happens to an existing image, whether it overwrites, or any rate limitations. The only behavioral hint is the POST endpoint, which 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is bloated with a long keyword dump that provides no semantic value. The useful content (endpoint and recipe) is buried but at least front-loaded; the keyword list dominates and crowds out substantive description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and 0% schema description coverage, the description is largely inadequate. It doesn't cover auth requirements, side effects, result format, or how the URL/body relates to image scraping.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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 parameters. The nested ScrapeRecipe object (url, includeTags, includeCategories) and the required 'slug' path parameter are not explained at all in the description, leaving the agent to infer parameter roles purely from the JSON schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a verb+resource ('Create image', 'Scrape Image Url') and gives the endpoint, so the purpose is identifiable. However, the phrasing is muddled — 'scrape' implies extraction from a URL, while 'create image' implies image creation, and the schema's ScrapeRecipe shows it actually scrapes recipe data from a URL and attaches/creates an image for a recipe. It doesn't clearly distinguish itself from siblings like update_recipe_image or create_recipe_from_html_or_json.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance. The keyword list contains generic terms but no conditions for selecting this tool over siblings. An agent is left to infer the recipe-image-scraping use case from the endpoint path alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seed_foodsC

Seed Foods — Groups: Seeders. Create food. [POST /api/groups/seeders/foods] Keywords: seed_foods, seed foods, create food, add food, new food, make food, write food, food, foods, groups seeders, groups, seeders, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2/5.0
Behavior2/5

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 reveals only the HTTP verb and path (POST /api/groups/seeders/foods); it says nothing about permissions, whether it requires group-owner/admin rights, whether repeated calls are idempotent or duplicate entries, or what the response returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core action is front-loaded, but roughly two-thirds of the text is keyword stuffing ('seed foods, create food, add food, new food, make food, write food...') that adds no signal and dilutes the useful facts.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A mutating seed tool with no annotations, no output schema, and an undocumented required body object. The description omits everything needed to call it correctly, so it is not complete enough for an agent to act on.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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 information about the single 'body' parameter. The nested SeederConfig requires a 'locale', but neither schema nor description explains valid values or what locale controls for seeded foods.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Create food') and scopes it to the Groups/Seeders namespace with the POST path. However, it does not distinguish itself from the sibling 'recipes_foods_create_one' (also a food-creation tool), so an agent cannot tell which creation path to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance. The keyword list is not guidance; it never explains when seeding food data is appropriate versus calling recipes_foods_create_one or seed_labels/seed_units.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seed_labelsC

Seed Labels — Groups: Seeders. Create label. [POST /api/groups/seeders/labels] Keywords: seed_labels, seed labels, create label, add label, new label, make label, write label, label, labels, groups seeders, groups, seeders, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full behavioral disclosure. It indicates a POST/create mutation, but says nothing about permissions, idempotency, side effects, or what happens when labels 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core content is front-loaded, but the description is bloated by a long keyword list that repeats the tool name and generic verbs. Those keywords do not earn their place and dilute the signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and an undocumented nested required parameter, the description is incomplete. It identifies the operation but omits enough behavioral and parameter context that an agent may struggle to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one required body parameter, but schema description coverage is 0%. The description does not mention the required locale field or the SeederConfig body structure, so it adds no parameter meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb and resource: "Create label." The endpoint [POST /api/groups/seeders/labels] confirms the resource path. However, it does not distinguish this seeding operation from sibling tools like groups_multi_purpose_labels_create_one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no when-to-use or when-not-to-use guidance. It does not mention alternatives such as groups_multi_purpose_labels_create_one or seed_foods, leaving selection ambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

seed_unitsC

Seed Units — Groups: Seeders. Create unit. [POST /api/groups/seeders/units] Keywords: seed_units, seed units, create unit, add unit, new unit, make unit, write unit, unit, units, groups seeders, groups, seeders, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, yet it only states the HTTP method and path. It does not say what defaults are seeded, whether the operation is idempotent, what auth/permissions are required, or what happens to existing units.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The actionable sentence is buried under a redundant title echo and a long SEO keyword list ("seed_units, seed units, create unit, add unit... post, mealie"). The keyword padding crowds out real guidance rather than adding it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, an undocumented nested body, and an ambiguous seed-vs-create identity, the description supplies none of the missing behavioral or parameter context 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.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required `body` parameter, whose only documented field is `locale`. The description says nothing about the body, locale, or any accepted values, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description does contain a verb+resource ("Create unit") and an endpoint (POST /api/groups/seeders/units), so the basic action is identifiable. However, the name/title "Seed Units" reads as a bulk-seeding operation while the body says "Create unit," and it never distinguishes itself from the sibling recipes_units_create_one. The ambiguity leaves an agent guessing what is actually created.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no routing to alternatives such as recipes_units_create_one or seed_foods/seed_labels. The agent gets no basis for choosing this tool over a sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_member_permissionsC

Set Member Permissions — Households: Self Service. Replace (full update) permission. [PUT /api/households/permissions] Keywords: set_member_permissions, set member permissions, update permission, replace permission, edit permission, modify permission, save permission, write permission, permission, permissions, households self service, households, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does disclose one real behavioral trait beyond the schema: 'Replace (full update)' signals that this overwrites the permission set rather than patching it. However, it omits auth/role requirements, reversibility, and the practical consequence that omitted boolean fields (default false) are reset.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The two opening sentences and the endpoint are well front-loaded and earn their place, but they are followed by a long, heavily redundant keyword blob ('set member permissions, update permission, replace permission, edit permission...') that inflates the definition without adding selection value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a mutation tool with no annotations, no output schema, and 0% parameter description coverage on a five-field nested object. The description should compensate with auth requirements, replace semantics detail, and field guidance, but it leaves significant gaps for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description adds essentially nothing about the single nested body parameter (userId, canInvite, canManage, canOrganize, canManageHousehold). 'Replace (full update)' weakly implies all fields should be supplied, but no field meaning, format, or default behavior is explained beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Set Member Permissions') and adds a meaningful qualifier ('Replace (full update) permission') plus the endpoint '[PUT /api/households/permissions]'. It is clear what the tool does, but it does not differentiate itself from any sibling (e.g. there is no explicit comparison to a partial-update or get-permissions tool).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives, no prerequisites, and no exclusions. The only usage context is the generic 'Households: Self Service' tag and the endpoint path, which imply scope but do not guide selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_ratingC

Set Rating — Users: Ratings. Create rating. [POST /api/users/{id}/ratings/{slug}] Sets the user's rating for a recipe Keywords: set_rating, set rating, create rating, add rating, new rating, make rating, write rating, rating, ratings, users ratings, users, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
bodyYes
slugYes

TDQS

C2.5/5.0
Behavior2/5

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 signals a write via the POST endpoint, but does not say whether an existing rating is overwritten, whether the call is idempotent, what the valid rating range is, or what auth/permissions are needed. For a mutation with a surprising 'isFavorite' payload, this is a real gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content is one clause ('Sets the user's rating for a recipe'); the rest is title echo, endpoint repetition, and a rambling keyword list that consumes most of the text without adding meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A mutation tool with no annotations, no output schema, and 0% schema description coverage needs more than this. Missing: rating value semantics/range, overwrite behavior, and authentication expectations for a user-scoped endpoint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% with 3 required parameters, so the description must compensate. It only implies that 'slug' refers to the recipe and mentions 'rating' in passing; it explains nothing about the rating scale/type, the uuid `id`, or why `isFavorite` is part of a rating update.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'Sets the user's rating for a recipe', backed by the POST endpoint and the input shape (id, slug, body). This distinguishes it from read-only siblings like get_logged_in_user_rating_for_recipe and get_logged_in_user_ratings, though it never names those alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 get_logged_in_user_rating_for_recipe (read) or add_favorite (favorite mutation). The long keyword block ('set rating, create rating, add rating...') is search-synonym stuffing, not usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shared_recipes_create_oneD

Create One — Shared: Recipes. Create recipe. [POST /api/shared/recipes] Keywords: shared_recipes_create_one, shared recipes create one, create recipe, add recipe, new recipe, make recipe, write recipe, recipe, recipes, shared recipes, shared, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

D1.9/5.0
Behavior2/5

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 says nothing about what the created object is (a share token), required auth/permissions, whether the share is public, link expiry semantics, or reversibility. "Create recipe" actively obscures the share-token behavior visible in the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content is one short line; the rest is a keyword spam block of near-synonyms ("add recipe, new recipe, make recipe, write recipe, ... post, mealie") that adds tokens without adding meaning. Structure is front-loaded but bloated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A mutation tool with no annotations, no output schema, 0% parameter documentation, and a nested request body needs much more than "Create recipe." Nothing tells the agent what will be created, what is required, or what happens on expiry, making correct invocation a guess.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single nested "body" parameter, and the description adds nothing about recipeId (uuid) or expiresAt (date-time). The agent learns parameter meaning only by reading the $defs, and even then neither field is documented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

"Create recipe" restates the name without stating the specific resource being created — the schema shows a RecipeShareTokenCreate body (recipeId + expiresAt), i.e. a share-token, not a recipe. The "Shared: Recipes" prefix hints at scope but does not distinguish this from sibling creators like recipe_crud_create_one, create_recipe_from_html_or_json, or create_recipe_from_image.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or alternative routing is given. The only routing-style content is a keyword blob ("create, add, new, make, write, post") that names no sibling and gives the agent no basis to choose this tool over the many other recipe-creation tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shared_recipes_delete_oneC

Delete One — Shared: Recipes. Delete recipe. [DELETE /api/shared/recipes/{item_id}] Keywords: shared_recipes_delete_one, shared recipes delete one, delete recipe, remove recipe, destroy recipe, write recipe, recipe, recipes, shared recipes, shared, delete, remove, destroy, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.6/5.0
Behavior2/5

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 it is a destructive DELETE operation via the endpoint, but says nothing about irreversibility, required permissions, ownership scoping, or side effects — a significant gap for a destructive tool 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core statement and endpoint are front-loaded and clear, but the long 'Keywords:' synonym list is padding that dilutes the definition without adding decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, no-annotation, no-output-schema tool, the description is too thin: it omits authorization needs, reversibility, and error/return behavior, leaving the agent without enough to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

One parameter with 0% schema description coverage. The endpoint template '{item_id}' indicates item_id is a path parameter, but the description adds no meaning (e.g., what a shared recipe item_id is or where to obtain it) beyond the schema's uuid4 format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Delete recipe') and scopes it to shared recipes ('Shared: Recipes'), plus the DELETE endpoint confirms the resource path. However, it never distinguishes itself from the many other delete tools (recipe_crud_delete_one, bulk_delete_recipes, delete_many), so the 'shared' qualifier carries the differentiation implicitly rather than explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus recipe_crud_delete_one or bulk_delete_recipes. The only additions are a keyword synonym dump ('remove recipe, destroy recipe, write recipe'), which aids search but gives no usage context or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shared_recipes_get_allC

Get All — Shared: Recipes. List recipes. [GET /api/shared/recipes] Keywords: shared_recipes_get_all, shared recipes get all, list recipe, list recipes, get recipe, get recipes, search recipe, search recipes, find recipe, find recipes, browse recipe, browse recipes, fetch recipe, fetch recipes, read recipe, read recipes, recipe, recipes, shared recipes, shared, list, get, search, find, browse, fetch, read, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
recipe_idNo

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It only hints at read-only via a keyword token and the GET route; it says nothing about pagination, result size, auth requirements, or scope of 'shared' versus personal recipes. For a listing endpoint that 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The meaningful content is two short lines, but they are buried under an SEO-style keyword block that adds no signal and inflates the definition. The front-loaded phrase 'Get All — Shared: Recipes' restates the title rather than explaining behavior.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No annotations, no output schema, an undocumented parameter, and a very crowded sibling namespace all demand more from the description. It supplies neither output expectations (pagination, fields) nor the routing logic needed to pick this tool over the numerous alternatives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single parameter (recipe_id, uuid4) is undocumented in both schema and description. It is also counterintuitive for a 'get all' tool, and the description does nothing to explain whether it filters or is ignored. It fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

It does state a verb and resource ('List recipes' in the 'Shared: Recipes' scope) plus the raw endpoint, so the basic purpose is inferable. But it offers no differentiation from the many near-identical siblings (recipe_crud_get_all, explore_recipes_get_all, shared_recipes_get_one, get_recipe), and the keyword list is noise rather than clarification.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus the other list-style recipe tools, nor any prerequisites or exclusions. The keyword dump ('list, get, search, find, browse, fetch, read') actively blurs the boundary with search/find siblings rather than guiding selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

shared_recipes_get_oneC

Get One — Shared: Recipes. Get recipe. [GET /api/shared/recipes/{item_id}] Keywords: shared_recipes_get_one, shared recipes get one, get recipe, fetch recipe, read recipe, retrieve recipe, view recipe, show recipe, recipe, recipes, shared recipes, shared, get, fetch, read, retrieve, view, show, read-only, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden, and it delivers little. The GET endpoint and the 'read-only' keyword imply a safe read, but there is no mention of authentication or permission requirements for shared recipes, no error behavior (e.g., what happens for a non-shared or missing id), and no return-format context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core sentence is front-loaded and short, but roughly half the text is a redundant keyword dump that restates the tool name and generic synonyms. Those tokens add no semantics and dilute the useful content, so the structure is wasteful rather than tight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter getter with no output schema, the description still leaves critical gaps: it does not disambiguate from the many sibling recipe getters, does not describe the id, and does not cover access behavior. An agent could easily invoke the wrong recipe endpoint.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single parameter item_id is never described in prose beyond appearing as '{item_id}' in the endpoint template. The description does not say it is a UUID, where the id comes from, or whether it identifies a shared-recipe record specifically, so it fails to compensate for the schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a verb and resource ('Get recipe') and supplies the HTTP endpoint, so the basic operation is clear. However, it does not distinguish this tool from close siblings such as get_recipe, recipe_crud_get_one, and get_shared_recipe, and it never explains what 'shared' means here (a recipe shared to the user vs. a publicly shared recipe). That ambiguity is exactly what an agent needs resolved.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use statement, no prerequisites, and no mention of any alternative tool. The keyword list ('get, fetch, read, retrieve...') is search noise, not routing guidance, so an agent gets no help deciding between this and the many other recipe-getter siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_data_migrationC

Start Data Migration — Groups: Migrations. Create migration. [POST /api/groups/migrations] Keywords: start_data_migration, start data migration, create migration, add migration, new migration, make migration, write migration, migration, migrations, groups migrations, groups, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesFile fields (archive) must be absolute paths to local files to upload.

TDQS

C2.2/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden, and it discloses nothing behavioral: no permission/auth requirements, no async job semantics, no indication that an archive file must be uploaded, no statement of what state changes after the call. The only content is a path and a keyword dump.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: a title-like phrase and a "Create migration" restatement, followed by a long keyword list that adds no informational value. It is padding rather than concise, and the meaningful part (POST endpoint) is not front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with zero annotations and no output schema, the description should explain what the migration does, that it consumes an uploaded archive, and what the caller can expect. None of that is present, so an agent cannot call it correctly from the description alone.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema itself documents the required archive file field and the migration_type enum, so the schema does the heavy lifting. The description adds no parameter meaning of its own, but the high coverage baseline keeps this at 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description does identify a verb and resource ("Create migration" via POST /api/groups/migrations), so an agent can tell it belongs to the Migrations group. But it never says what a data migration actually does here (importing recipes from another app such as paprika or nextcloud), and the real signal is buried under keyword spam. It only mildly distinguishes itself from the hundreds of sibling create/group tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no alternative named. The keyword list mentions the tool's own name and generic verbs, which is noise, not routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_notificationC

Test Notification — Households: Event Notifications. Test notification. [POST /api/households/events/notifications/{item_id}/test] Keywords: test_notification, test notification, create notification, add notification, new notification, make notification, write notification, notification, notifications, households event notifications, households, events, test, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

C2/5.0
Behavior2/5

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 reveals only the HTTP method via the endpoint (POST), and says nothing about whether a real notification is dispatched, whether it requires auth/permissions, whether it is idempotent/side-effecting, or what it returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The one useful lead sentence is buried under an extensive "Keywords:" block that pads the definition with near-duplicate terms. It is front-loaded but heavily bloated with unearned content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter mutation with no annotations and no output schema, the description leaves critical facts unstated: what the test does, its side effects, and what item_id must be. It is not sufficient for an agent to call it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required item_id (uuid4), and the description never explains what item_id refers to (presumably the event-notification to test). The description fails to compensate for the zero coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description essentially restates the name and title: "Test Notification — Households: Event Notifications. Test notification." The endpoint path [POST /api/households/events/notifications/{item_id}/test] hints that it fires a test for one notification, but there is no distinguishing detail versus sibling households_event_notifications_create_one or test_one. This is tautological rather than a specific verb+resource statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is given; the text is a keyword dump ("create notification, add notification...") that could actively mislead an agent into treating this as a creation tool. There is no routing toward the real create/update/delete siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_oneD

Test One — Households: Webhooks. Test webhook. [POST /api/households/webhooks/{item_id}/test] Keywords: test_one, test one, test webhook, create webhook, add webhook, new webhook, make webhook, write webhook, webhook, webhooks, households webhooks, households, test, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
item_idYes

TDQS

D1.8/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden, and it discloses nothing behavioral. It does not say that this triggers an outbound webhook delivery, what happens if the webhook is misconfigured, whether it is a side-effecting operation, or what a failure looks like. Only the HTTP verb hints at behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short useful lines are front-loaded, but they are followed by a long comma-separated keyword blob that is pure padding and includes misleading terms. The signal-to-noise ratio is poor even though the total length is not extreme.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and an undocumented required parameter on a side-effecting POST, the description leaves an agent unable to judge prerequisites, effects, or outcomes. The keyword list does not compensate; it substitutes search bait for missing context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain item_id, but it never mentions the parameter or clarifies that it is the webhook UUID rather than a household or recipe id. The uuid4 format in the schema is the only signal, and the description adds no meaning on top of it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The phrase 'Test webhook' plus the POST endpoint [/api/households/webhooks/{item_id}/test] does convey a specific verb and resource, so the purpose is discernible. However, it is buried under a keyword dump and gives no differentiation from adjacent siblings such as rerun_webhooks or test_notification. The opening 'Test One — Households: Webhooks' is closer to a label than a purpose statement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance at all. Worse, the keyword list advertises 'create webhook, add webhook, new webhook, make webhook, write webhook', which actively misdirects an agent toward this tool when it wants households_webhooks_create_one. Nothing says when to use this versus rerun_webhooks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_parse_recipe_urlD

Test Parse Recipe Url — Recipe: CRUD. Test recipe. [POST /api/recipes/test-scrape-url] Keywords: test_parse_recipe_url, test parse recipe url, test recipe, create recipe, add recipe, new recipe, make recipe, write recipe, recipe, recipes, recipe crud, test scrape url, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

D1.5/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden and delivers nothing: no statement of whether the scrape persists a recipe, whether auth is required, what the response contains, or whether useOpenAI triggers an external call. The 'create/add recipe' keywords actively suggest a write side effect that the endpoint name ('test-scrape-url') does not clearly support.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two fragments are compact and front-loaded, but the trailing keyword list is pure SEO filler that repeats 'recipe', 'create', 'post' and near-duplicate phrases, adding noise rather than information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness1/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, 0% schema description coverage, and a misleading keyword block, the description leaves an agent without enough information to call this tool correctly or safely — especially given a near-identical sibling it must be chosen over.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single nested body parameter, and the description only loosely hints at a URL via 'test scrape url'. It never mentions the useOpenAI boolean, nor the nested body shape or the required 'url' field, so it fails to compensate for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description restates the tool name ('Test Parse Recipe Url') and adds only 'Recipe: CRUD. Test recipe.', which is vague and largely tautological; the useful signal comes from the embedded endpoint path '[POST /api/recipes/test-scrape-url]'. Worse, the keyword block claims 'create recipe, add recipe, new recipe, write recipe', which mischaracterizes a test-scrape endpoint as a recipe-creation tool. An agent would struggle to distinguish this from parse_recipe_url.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines1/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance whatsoever on when to use this versus the obvious siblings parse_recipe_url and parse_recipe_url_bulk, both of which appear in the sibling list. The word 'test' hints at a non-production/diagnostic role but the description never states that, nor any precondition or exclusion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

trigger_actionC

Trigger Action — Households: Recipe Actions. Trigger recipe action. [POST /api/households/recipe-actions/{item_id}/trigger/{recipe_slug}] Keywords: trigger_action, trigger action, trigger recipe action, create recipe action, add recipe action, new recipe action, make recipe action, write recipe action, recipe action, recipe actions, households recipe actions, households, trigger, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNo
item_idYes
recipe_slugYes

TDQS

C2.3/5.0
Behavior2/5

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, and it discloses almost nothing: it does not say what the trigger does (side effects, state changes, created artifacts), whether authorization/permissions are required, or whether the action is idempotent or repeatable. The HTTP verb POST and path are the only behavioral clues, leaving a mutation tool largely opaque.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The opening line is reasonably front-loaded, but the description is dominated by a long, redundant keyword dump ('create recipe action, add recipe action, new recipe action...') that repeats near-identical phrases and the tool name. Most of the text does not earn its place or add instructional value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, 3 parameters, and 0% schema coverage, the description should explain the operation's effect and return behavior, but it does neither. An agent cannot tell what triggering returns or what permissions are needed, so the definition is insufficient for reliable invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description should compensate, but it only implicitly exposes item_id and recipe_slug through the URL template. The body field recipe_scale (with default 1) is never mentioned, so the meaning and effect of scaling are entirely undocumented. This is a substantial gap for a 3-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a verb+resource ('Trigger recipe action') and includes the concrete HTTP endpoint POST /api/households/recipe-actions/{item_id}/trigger/{recipe_slug}, which pins down the resource. However, 'trigger a recipe action' largely restates the tool name trigger_action, and it never explains what triggering actually accomplishes (e.g., what effect it has on the household/recipe). It is adequate but vague on the actual semantics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance. The description does not distinguish this from siblings like households_recipe_actions_create_one or households_recipe_actions_update_one, nor does it say when a trigger is the right call versus creating/updating an action. Only the endpoint path hints at the scenario.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_ai_provider_settingsC

Update Ai Provider Settings — Groups: AI Provider Settings. Replace (full update) setting. [PUT /api/groups/ai-providers/settings] Keywords: update_ai_provider_settings, update ai provider settings, update setting, replace setting, edit setting, modify setting, save setting, write setting, setting, settings, groups ai provider settings, groups, ai providers, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose one meaningful trait: PUT semantics mean a full replacement, so unspecified fields may be cleared. However, it says nothing about authentication/permission requirements, the consequence of overwriting existing settings, or that all three provider IDs are mandatory, leaving significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The useful content is one sentence (plus an HTTP method note), buried under a long list of keyword synonyms ('update, replace, edit, modify, save, write, put, mealie') that repeats the same idea many times. Front-loading is fine, but the bulk of the text does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a mutation endpoint with no annotations, no output schema, and no parameter documentation. The full-replace disclosure is a helpful start, but an agent still lacks the field-level, permission, and side-effect information needed to call it safely and correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one required body parameter with three nested properties and 0% schema description coverage. The description names no fields and gives no UUID/format or nullability guidance, so it fails to compensate for the schema gap. Only the PUT/full-replace hint gives incidental meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Update/Replace) and resource (AI Provider Settings), and the 'Replace (full update) setting' phrasing distinguishes this from an incremental patch. It is inferable that it complements the sibling get_ai_provider_settings, though the sibling is never named. The keyword dump adds noise but does not obscure the core purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this vs. groups_ai_providers_update_ai_provider or get_ai_provider_settings, and no prerequisites such as needing existing provider IDs. Usage must be entirely inferred from the name and HTTP verb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_event_imageC

Update Event Image — Recipe: Timeline. Replace (full update) image. [PUT /api/recipes/timeline/events/{item_id}/image] Keywords: update_event_image, update event image, update image, replace image, edit image, modify image, save image, write image, image, recipe timeline, recipes, timeline, events, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesFile fields (image) must be absolute paths to local files to upload.
item_idYes

TDQS

C2.5/5.0
Behavior2/5

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 and largely drops it. 'Replace (full update)' usefully signals that the existing image is overwritten rather than patched, but nothing is said about permissions/auth, what happens to the previous image, size or format limits, or the response. For a write tool with zero annotation coverage this is a substantial gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The functional content is two short front-loaded sentences, but a long comma-delimited keyword dump ('update_event_image, update event image, ... mealie.') is appended that adds no selection or invocation value. Roughly half the text is search-bait noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation endpoint with no annotations, no output schema, and partial parameter documentation, the description should explain auth requirements, replacement consequences, and the upload mechanics. It supplies the endpoint path and full-replace semantics and nothing more.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50%: the body field documents that file fields must be absolute local paths, but item_id (a uuid4) and the required 'extension' field get no explanation anywhere. The description adds no parameter detail at all, so it fails to compensate for the uncovered half.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Update Event Image', 'Replace (full update) image') and scopes it to 'Recipe: Timeline' with the concrete endpoint PUT /api/recipes/timeline/events/{item_id}/image, which separates it from generic image updaters. The sibling set contains update_recipe_image and update_user_image, but the description never explicitly names them or states the distinction beyond the resource scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is given, and the obvious alternative siblings (update_recipe_image, update_user_image, recipe_timeline_update_one) are never mentioned. Only the endpoint path and 'Recipe: Timeline' implicitly convey the context, and '(full update)' hints at replacement versus partial, but the agent must infer everything else.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_group_preferencesC

Update Group Preferences — Groups: Self Service. Replace (full update) preference. [PUT /api/groups/preferences] Keywords: update_group_preferences, update group preferences, update preference, replace preference, edit preference, modify preference, save preference, write preference, preference, preferences, groups self service, groups, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.4/5.0
Behavior2/5

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 usefully states that this is a full replacement (PUT) rather than a partial update, but it omits permissions, reversibility, side effects, and what happens to unspecified fields despite schema defaults.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded, which is good, but the large keyword list is redundant and bloats the definition without adding real selection value. The description is not appropriately sized for the information it conveys.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter mutation with no annotations and no output schema, the description should explain the body fields, authentication requirements, and full-replacement consequences. It gives the endpoint and replacement semantics, but leaves critical schema details and behavioral context missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single required body parameter. The description never mentions the privateGroup or showAnnouncements fields, their boolean types, their defaults, or the structure of body, so it adds no parameter meaning beyond the generic word 'preference'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

It states a specific verb and resource ('Update Group Preferences') and further scopes the operation as a full replacement via PUT. However, it does not distinguish this tool from siblings such as update_household_preferences or get_group_preferences, and 'preference' singular is vague.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use, when-not-to-use, or alternative-tool guidance. The keyword list provides synonyms only, and the 'Replace (full update)' phrase hints at behavior but does not route the agent between this and related preference tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_household_preferencesC

Update Household Preferences — Households: Self Service. Replace (full update) preference. [PUT /api/households/preferences] Keywords: update_household_preferences, update household preferences, update preference, replace preference, edit preference, modify preference, save preference, write preference, preference, preferences, households self service, households, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden. It discloses that this is a PUT-style full replacement, but does not state permission requirements, whether omitted fields are reset to defaults, whether existing preferences are destroyed, or what the response looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first sentence is useful and front-loaded, but the long keyword list is repetitive SEO filler that does not help an agent select or invoke the tool. The description is unnecessarily bloated for the information it conveys.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and 0% parameter description coverage, the definition is incomplete. It says what endpoint and that it replaces preferences, but leaves the agent without the field-level guidance needed to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

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 name or explain any of the nested body fields such as recipePublic, firstDayOfWeek, or privateHousehold. It adds no parameter meaning beyond the schema itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb and resource: update household preferences, plus 'Replace (full update)' and the PUT endpoint. It distinguishes itself from a retrieval tool like get_household_preferences, but does not explicitly name siblings or contrast with update_group_preferences.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'Replace (full update)' implies when to use it: for a full preference replacement rather than a partial edit. However, it gives no explicit when-not conditions, prerequisites, or alternatives such as update_group_preferences or get_household_preferences.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_label_settingsC

Update Label Settings — Households: Shopping Lists. Replace (full update) label setting. [PUT /api/households/shopping/lists/{item_id}/label-settings] Keywords: update_label_settings, update label settings, update label setting, replace label setting, edit label setting, modify label setting, save label setting, write label setting, label setting, label settings, households shopping lists, households, shopping, lists, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.5/5.0
Behavior2/5

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 does add one useful behavioral fact — PUT semantics means full replacement, so omitted fields will be overwritten — which is genuine value. However, it says nothing about required permissions, whether the body replaces the entire label-setting set, or side effects on the parent shopping list.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first two sentences are appropriately front-loaded, but the trailing 'Keywords:' list is a long, repetitive tail of synonyms and path fragments ('update_label_settings, update label settings, ... label setting, label settings, ... mealie') that adds no selection value and bloats the definition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 0% schema description coverage on a two-parameter (one of them a nested array) mutation tool, the description is underspecified. An agent learns the resource and replacement semantics but not what a valid body looks like or what a successful call returns/changes.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for two parameters. The description never explains 'item_id' or the 'body' array of ShoppingListMultiPurposeLabelUpdate objects; notably it doesn't reveal that the body is an array (a bulk replace of label settings), which is the most important non-obvious aspect. The bracketed PUT URL duplicates the schema's item_id without adding syntax or meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource: 'Update Label Settings' scoped to 'Households: Shopping Lists', plus 'Replace (full update)' clarifying that this is a full replacement rather than a partial edit. That distinguishes it from a hypothetical patch-style tool. It doesn't name a sibling tool directly, but the scope and HTTP verb make the target unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 versus alternatives (e.g. the multi-purpose-label tools, or any list-level settings update). The only 'context' is a keyword dump, which restates the name rather than telling an agent when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_last_madeC

Update Last Made — Recipe: CRUD. Partially update last made. [PATCH /api/recipes/{slug}/last-made] Update a recipe's last made timestamp Keywords: update_last_made, update last made, patch last made, edit last made, modify last made, change last made, write last made, last made, recipe crud, recipes, patch, update, edit, modify, change, write, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
slugYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full behavioral burden. It discloses the PATCH method and that the update is partial, but says nothing about required permissions, idempotency, expected timestamp format, or the response, which is thin for a mutation endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded, but the description is bloated with a redundant keyword list ('update_last_made, update last made, patch last made, edit last made...') that repeats synonyms the name already conveys and adds no routing value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter mutation with no output schema, the description covers purpose, method, and endpoint adequately, but omits auth/format expectations and any sibling distinction, leaving meaningful gaps for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It clarifies that the operation targets a recipe's last made timestamp (mapping loosely to body.timestamp) and that slug identifies the recipe, but adds no format (date-time) or required-field detail beyond the schema's own naming.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb+resource ('Update a recipe's last made timestamp') and even exposes the exact endpoint (PATCH /api/recipes/{slug}/last-made), so the agent can tell what it does. It lacks explicit differentiation from the many sibling update/patch tools (recipe_crud_update_one, patch_one), which keeps it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not guidance and no named alternative, despite many sibling update tools that could overlap. 'Partially update last made' only faintly implies scope; the agent must infer when this is preferable to recipe_crud_update_one.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_passwordC

Update Password — Users: CRUD. Replace (full update) password. [PUT /api/users/password] Resets the User Password Keywords: update_password, update password, replace password, edit password, modify password, save password, write password, password, users crud, users, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations supplied, the description carries the full burden and largely drops it: it does not say whether the change requires the existing password, whether it invalidates existing sessions/tokens, whether it is reversible, or what authorization is required. The PUT verb is the only behavioral signal, and it merely restates the endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose sentence is front-loaded and compact, but it is followed by roughly twenty comma-separated keywords ('update_password, update password, replace password, ... mealie') that add no semantic value and comprise the majority of the text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a credential-mutating endpoint with no annotations, no output schema, and an undocumented nested request body, an agent needs to know whose password is affected and what preconditions apply. The description leaves both unanswered, so it is not sufficient to call the tool safely.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description mentions no parameter at all — it never names newPassword, currentPassword, the minLength 8 constraint, or the fact that currentPassword defaults to empty. 'Replace (full update)' offers only the faintest hint about the body shape, far short of compensating for the coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (update/replace the User password, PUT /api/users/password) and clarifies it is a full replacement, not a partial patch. It does not, however, distinguish itself from siblings like update_user or update_user_image, and the trailing 20-token keyword dump dilutes the signal rather than sharpening it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus update_user, nor any precondition guidance (only logged-in users can change their own password, whether a current password must be supplied first). The only implied usage is the endpoint path itself.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_recipe_imageC

Update Recipe Image — Recipe: CRUD. Replace (full update) image. [PUT /api/recipes/{slug}/image] Keywords: update_recipe_image, update recipe image, update image, replace image, edit image, modify image, save image, write image, image, recipe crud, recipe images and assets, recipes, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesFile fields (image) must be absolute paths to local files to upload.
slugYes

TDQS

C2.5/5.0
Behavior2/5

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 only hints at overwrite behavior via 'Replace (full update)'; it says nothing about required permissions, whether the prior image is destroyed, or what the response looks like — thin coverage 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first clause is well front-loaded, but roughly half the text is a keyword-stuffing block ('update_recipe_image, update recipe image, update image, replace image...') that is pure SEO padding. The useful content is a single short sentence buried in noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 50% param coverage, the description should compensate but does not. Auth requirements, the destructive nature of the replacement, and the returned payload are all absent for a PUT mutation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 50% and the description text adds no parameter meaning at all. The schema itself notes that file fields must be absolute local paths, but the description never reinforces or extends this, leaving the 'slug' and 'extension' parameters unexplained in the prose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Update Recipe Image') and clarifies the semantics ('Replace (full update) image'), which distinguishes a full overwrite from a partial edit. However, it never names or differentiates itself from close siblings like upload_recipe_asset, scrape_image_url, or delete_recipe_image, so the agent gets no explicit routing help.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance and no alternatives named. The parenthetical '(full update)' hints that this replaces rather than patches, but which sibling to pick for adding an asset or scraping a URL is left entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_userC

Update User — Users: CRUD. Replace (full update) user. [PUT /api/users/{item_id}] Keywords: update_user, update user, replace user, edit user, modify user, save user, write user, user, users, users crud, update, replace, edit, modify, save, write, put, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYes
item_idYes

TDQS

C2.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. 'Replace (full update)' usefully signals PUT-style replacement semantics, but the description omits permission requirements, side effects on omitted fields, and reversibility for a destructive mutation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The operation statement is front-loaded and clear, but the bulk of the text is a bloated, redundant keyword list ('update, replace, edit, modify, save, write, put') that adds no selection value and buries the one meaningful phrase.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations, no output schema, and 0% parameter coverage, the definition is thin. It never addresses auth/permissions, response behavior, or partial-vs-full field handling, leaving the agent under-informed for a write operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so neither the schema nor the description explains the two parameters. The description says nothing about item_id being the user UUID or about which UserBase body fields matter, leaving a complex nested body entirely undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource pair ('Update User') and clarifies the semantics with 'Replace (full update) user,' which distinguishes it from a partial update. It does not, however, differentiate itself from nearby siblings like update_password or update_user_image.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no prerequisites, and no reference to alternatives. The keyword list restates the operation many ways but never says under what conditions an agent should choose this tool over set_member_permissions or update_password.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_user_imageC

Update User Image — Users: Images. Create image. [POST /api/users/{id}/image] Updates a User Image Keywords: update_user_image, update user image, create image, add image, new image, make image, write image, image, users images, users, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
bodyYesFile fields (profile) must be absolute paths to local files to upload.

TDQS

C2.3/5.0
Behavior2/5

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, yet it discloses only the HTTP method and path. It omits that this is a mutation requiring auth, that it replaces/overwrites the current profile image, that the body is multipart file upload, and any response behavior. The endpoint string is the only extra signal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The first portion ('Update User Image — Users: Images. ...') is reasonably front-loaded, but the back half is a ~40-term keyword dump ('update_user_image, update user image, create image, add image... mealie') that duplicates the name and adds nothing. This is significant bloat that hurts signal-to-noise.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations, no output schema, and 2 required parameters of which one is undocumented, the description should do more. It gives the endpoint but leaves out target-user semantics, auth requirements, image replacement behavior, and file-format expectations, so an agent lacks enough to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 50%: the body/profile file is documented in the schema, but the 'id' parameter (uui4) has no description anywhere. The description's keyword list mentions 'users' but never clarifies that id is the target user's UUID or that profile must be an absolute local file path. It adds essentially no meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a verb+resource ('Updates a User Image') and names the POST endpoint, so the core action is inferable. However, it simultaneously says 'Create image', which muddles whether this creates or replaces an image, and it never distinguishes itself from the sibling get_user_image (its read counterpart). The keyword tail adds noise rather than precision.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus get_user_image or update_user, no prerequisites (authentication, owning the user), and no note about what happens to an existing image. The word 'update' implies replacement, but nothing explicitly guides tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

upload_recipe_assetC

Upload Recipe Asset — Recipe: CRUD. Create asset. [POST /api/recipes/{slug}/assets] Upload a file to store as a recipe asset Keywords: upload_recipe_asset, upload recipe asset, create asset, add asset, new asset, make asset, write asset, asset, assets, recipe crud, recipe images and assets, recipes, create, add, new, make, write, post, mealie.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesFile fields (file) must be absolute paths to local files to upload.
slugYes

TDQS

C2.5/5.0
Behavior2/5

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, and it discloses very little: it does not state permission/auth requirements, that this creates a new stored file, or what happens on slug mismatch. The useful note about file paths ('File fields (file) must be absolute paths to local files to upload') lives in the schema, not 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.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single explanatory sentence is appropriately front-loaded, but the large trailing keyword dump ('upload_recipe_asset, upload recipe asset, ... mealie') is pure padding that adds no decision-relevant content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation endpoint with no annotations, no output schema, and half the parameters undocumented, the description is too thin. It should at least describe auth expectations and the meaning of the required asset metadata fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% and the description adds nothing about the required body fields name, icon, and extension, which are undocumented in both places. It only implies a file is uploaded, leaving the semantics of the other parameters unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The core sentence 'Upload a file to store as a recipe asset' gives a specific verb (upload) and resource (recipe asset), and the POST path plus 'Recipe: CRUD' orient it within the API. It does not explicitly contrast itself with siblings like get_recipe_asset or update_recipe_image, but the action is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus alternatives such as create_recipe_from_image or update_recipe_image. The trailing keyword list ('create asset, add asset, new asset') only restates synonyms and provides no conditional guidance.

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.

  1. 211 tool updatesv0.2.11
    • First observedadd_favorite
    • First observedadd_recipe_ingredients_to_list
    • First observedadd_single_recipe_ingredients_to_list
    • First observedapp_about_get_app_info
    • First observedbulk_categorize_recipes
    • First observedbulk_delete_recipes
    • First observedbulk_export_recipes
    • First observedbulk_settings_recipes
    • First observedbulk_tag_recipes
    • First observedcreate_api_token
    • First observedcreate_invite_token
    • First observedcreate_many
    • First observedcreate_random_meal
    • First observedcreate_recipe_from_html_or_json
    • First observedcreate_recipe_from_image
    • First observedcreate_recipe_from_zip
    • First observeddelete_api_token
    • First observeddelete_many
    • First observeddelete_recipe_image
    • First observeddelete_recipe_tag
    • First observedduplicate_one
    • First observedemail_invitation
    • First observedexplore_categories_get_all
    • First observedexplore_categories_get_one
    • First observedexplore_cookbooks_get_all
    • First observedexplore_cookbooks_get_one
    • First observedexplore_foods_get_all
    • First observedexplore_foods_get_one
    • First observedexplore_households_get_all
    • First observedexplore_recipes_get_all
    • First observedexplore_recipes_suggest_recipes
    • First observedexplore_tags_get_all
    • First observedexplore_tags_get_one
    • First observedexplore_tools_get_all
    • First observedexplore_tools_get_one
    • First observedget_ai_provider_settings
    • First observedget_all_empty
    • First observedget_all_households
    • First observedget_app_theme
    • First observedget_empty_tags
    • First observedget_favorites
    • First observedget_group_member
    • First observedget_group_members
    • First observedget_group_preferences
    • First observedget_household
    • First observedget_household_members
    • First observedget_household_preferences
    • First observedget_household_recipe
    • First observedget_invite_tokens
    • First observedget_logged_in_user
    • First observedget_logged_in_user_favorites
    • First observedget_logged_in_user_group
    • First observedget_logged_in_user_household
    • First observedget_logged_in_user_rating_for_recipe
    • First observedget_logged_in_user_ratings
    • First observedget_one_household
    • First observedget_ratings
    • First observedget_recipe
    • First observedget_recipe_as_format
    • First observedget_recipe_asset
    • First observedget_recipe_comments
    • First observedget_recipe_formats_and_templates
    • First observedget_recipe_img
    • First observedget_recipe_timeline_event_img
    • First observedget_shared_recipe
    • First observedget_startup_info
    • First observedget_statistics
    • First observedget_storage
    • First observedget_todays_meals
    • First observedget_token
    • First observedget_user_image
    • First observedgroups_ai_providers_create_ai_provider
    • First observedgroups_ai_providers_delete_ai_provider
    • First observedgroups_ai_providers_get_ai_provider
    • First observedgroups_ai_providers_update_ai_provider
    • First observedgroups_multi_purpose_labels_create_one
    • First observedgroups_multi_purpose_labels_delete_one
    • First observedgroups_multi_purpose_labels_get_all
    • First observedgroups_multi_purpose_labels_get_one
    • First observedgroups_multi_purpose_labels_update_one
    • First observedgroups_reports_delete_one
    • First observedgroups_reports_get_all
    • First observedgroups_reports_get_one
    • First observedhouseholds_cookbooks_create_one
    • First observedhouseholds_cookbooks_delete_one
    • First observedhouseholds_cookbooks_get_all
    • First observedhouseholds_cookbooks_get_one
    • First observedhouseholds_cookbooks_update_many
    • First observedhouseholds_cookbooks_update_one
    • First observedhouseholds_event_notifications_create_one
    • First observedhouseholds_event_notifications_delete_one
    • First observedhouseholds_event_notifications_get_all
    • First observedhouseholds_event_notifications_get_one
    • First observedhouseholds_event_notifications_update_one
    • First observedhouseholds_mealplan_rules_create_one
    • First observedhouseholds_mealplan_rules_delete_one
    • First observedhouseholds_mealplan_rules_get_all
    • First observedhouseholds_mealplan_rules_get_one
    • First observedhouseholds_mealplan_rules_update_one
    • First observedhouseholds_mealplans_create_one
    • First observedhouseholds_mealplans_delete_one
    • First observedhouseholds_mealplans_get_all
    • First observedhouseholds_mealplans_get_one
    • First observedhouseholds_mealplans_update_one
    • First observedhouseholds_recipe_actions_create_one
    • First observedhouseholds_recipe_actions_delete_one
    • First observedhouseholds_recipe_actions_get_all
    • First observedhouseholds_recipe_actions_get_one
    • First observedhouseholds_recipe_actions_update_one
    • First observedhouseholds_shopping_list_items_create_one
    • First observedhouseholds_shopping_list_items_delete_one
    • First observedhouseholds_shopping_list_items_get_all
    • First observedhouseholds_shopping_list_items_get_one
    • First observedhouseholds_shopping_list_items_update_many
    • First observedhouseholds_shopping_list_items_update_one
    • First observedhouseholds_shopping_lists_create_one
    • First observedhouseholds_shopping_lists_delete_one
    • First observedhouseholds_shopping_lists_get_all
    • First observedhouseholds_shopping_lists_get_one
    • First observedhouseholds_shopping_lists_update_one
    • First observedhouseholds_webhooks_create_one
    • First observedhouseholds_webhooks_delete_one
    • First observedhouseholds_webhooks_get_all
    • First observedhouseholds_webhooks_get_one
    • First observedhouseholds_webhooks_update_one
    • First observedlogout
    • First observedoauth_callback
    • First observedoauth_login
    • First observedorganizer_categories_create_one
    • First observedorganizer_categories_delete_one
    • First observedorganizer_categories_get_all
    • First observedorganizer_categories_get_one
    • First observedorganizer_categories_get_one_by_slug
    • First observedorganizer_categories_update_one
    • First observedorganizer_tags_create_one
    • First observedorganizer_tags_get_all
    • First observedorganizer_tags_get_one
    • First observedorganizer_tags_get_one_by_slug
    • First observedorganizer_tags_update_one
    • First observedorganizer_tools_create_one
    • First observedorganizer_tools_delete_one
    • First observedorganizer_tools_get_all
    • First observedorganizer_tools_get_one
    • First observedorganizer_tools_get_one_by_slug
    • First observedorganizer_tools_update_one
    • First observedparse_ingredient
    • First observedparse_ingredients
    • First observedparse_recipe_url
    • First observedparse_recipe_url_bulk
    • First observedpatch_many
    • First observedpatch_one
    • First observedpurge_export_data
    • First observedrecipe_comments_create_one
    • First observedrecipe_comments_delete_one
    • First observedrecipe_comments_get_all
    • First observedrecipe_comments_get_one
    • First observedrecipe_comments_update_one
    • First observedrecipe_crud_create_one
    • First observedrecipe_crud_delete_one
    • First observedrecipe_crud_get_all
    • First observedrecipe_crud_get_one
    • First observedrecipe_crud_suggest_recipes
    • First observedrecipe_crud_update_many
    • First observedrecipe_crud_update_one
    • First observedrecipe_timeline_create_one
    • First observedrecipe_timeline_delete_one
    • First observedrecipe_timeline_get_all
    • First observedrecipe_timeline_get_one
    • First observedrecipe_timeline_update_one
    • First observedrecipes_foods_create_one
    • First observedrecipes_foods_delete_one
    • First observedrecipes_foods_get_all
    • First observedrecipes_foods_get_one
    • First observedrecipes_foods_merge_one
    • First observedrecipes_foods_update_one
    • First observedrecipes_units_create_one
    • First observedrecipes_units_delete_one
    • First observedrecipes_units_get_all
    • First observedrecipes_units_get_one
    • First observedrecipes_units_merge_one
    • First observedrecipes_units_update_one
    • First observedrefresh_token
    • First observedremove_favorite
    • First observedremove_recipe_ingredients_from_list
    • First observedrerun_webhooks
    • First observedscrape_image_url
    • First observedseed_foods
    • First observedseed_labels
    • First observedseed_units
    • First observedset_member_permissions
    • First observedset_rating
    • First observedshared_recipes_create_one
    • First observedshared_recipes_delete_one
    • First observedshared_recipes_get_all
    • First observedshared_recipes_get_one
    • First observedstart_data_migration
    • First observedtest_notification
    • First observedtest_one
    • First observedtest_parse_recipe_url
    • First observedtrigger_action
    • First observedupdate_ai_provider_settings
    • First observedupdate_event_image
    • First observedupdate_group_preferences
    • First observedupdate_household_preferences
    • First observedupdate_label_settings
    • First observedupdate_last_made
    • First observedupdate_password
    • First observedupdate_recipe_image
    • First observedupdate_user
    • First observedupdate_user_image
    • First observedupload_recipe_asset

TDQS

C2.1/5.0

Scored across 211 tools

Disambiguation2/5

Many tools have highly overlapping purposes. For example, multiple tools retrieve recipes (get_recipe, get_household_recipe, shared_recipes_get_one, recipe_crud_get_one, explore_recipes_get_all, etc.), and several tools create recipes (recipe_crud_create_one, parse_recipe_url, create_recipe_from_html_or_json, create_recipe_from_image, create_recipe_from_zip, etc.). The distinction often relies on subtle URL differences that are not clearly conveyed in names or descriptions, making it hard for an agent to select the right tool.

Naming Consistency2/5

Naming is inconsistent: some tools use descriptive verb_noun names (e.g., get_recipe, create_recipe_from_html_or_json), while many others use generic CRUD names like households_cookbooks_get_all, recipe_crud_create_one. There is no single predictable pattern; prefixes, suffixes, and conventions vary widely across tool groups.

Tool Count1/5

The server exposes 211 tools, which is far too many for practical use. This volume overwhelms an agent's context and makes it difficult to discover or select the appropriate tool. Many tools are near-duplicates or cover administrative endpoints that are unlikely to be needed.

Completeness4/5

The tool set is extremely comprehensive, covering CRUD for recipes, users, households, groups, organizers, meal plans, shopping lists, comments, timeline events, and more. Almost all expected operations are present, though some rare edge cases might be missing, but overall it is near-complete for the Mealie domain.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers