Skip to main content
Glama
moonlight-garden-handytools

moonlight-garden-handytools

by shikihuang04

Moonlight Garden Recipe Check

recipe_check

Validate ledger recipes against live inventory and cooking quota to identify cookable and missing-one dishes, ranked by value added.

Instructions

Validate ledger recipes against live inventory and today's cooking quota; rank cookableNow and missingOne by valueAdded, max five each. Cooking wine brew_cooking_* and vinegar brew_sour_* count as ingredients; ordinary drinking wine does not. Upstream ingredient IDs match literally; Chinese names require unique authoritative name/ID mappings, never guessed meat IDs. Value added subtracts one unit's inventory sell_value per ingredient, not stock quantities or seed price. Missing prices return null and missingIngredientSellValueUnavailable status. Only if the ledger has no material-complete recipe, inspect the latest 50 with usedLatest50Fallback and per-candidate sources. Unresolved recipes return counts/name summaries, not long lists. canCookAnyNow also requires quota>0. Missing/invalid ledger, inventory or quota returns source errors, not fake empty candidates. It never cooks or sells, but the upstream inventory list may auto-claim pending gifts; claimed gifts are returned with a UTC receipt time.

Input Schema

NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.6/5.0
Behavior5/5

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

With only thin annotation coverage, the description carries the burden well and resolves the non-obvious annotation set: it explains why readOnlyHint=false by disclosing that the upstream inventory list may auto-claim pending gifts (returned with a UTC receipt time), and it confirms destructiveHint=false by stating it never cooks or sells. It also documents null returns, missingIngredientSellValueUnavailable status, the quota>0 requirement for canCookAnyNow, and the compact-summary return shape for unresolved recipes.

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

Conciseness4/5

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

The first sentence front-loads the core action and output ranking, and the gift-claim caveat is placed at the end. However, the middle is a dense wall of edge-case rules (value-added formula, missing-price nulls, fallback threshold, unresolved-recipe summary) packed into run-on clauses, so it is harder to scan than it needs to be.

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

Completeness5/5

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

There is no output schema and no input schema, so the description must define the response shape itself, and it does: ranked cookableNow/missingOne lists capped at five, null prices with status, error returns instead of empty candidates, and count/name summaries for unresolved recipes. Nothing an agent needs to invoke and interpret this call is 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, so the baseline is 4; there is no parameter surface for the description to clarify. The description's detail about which wine/vinegar IDs count as ingredients is domain logic rather than parameter semantics, but it is not harmful here.

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 opening clause states a specific verb and resource ('Validate ledger recipes against live inventory and today's cooking quota') and immediately names the concrete outputs (cookableNow, missingOne ranked by valueAdded). The three siblings (daily_routine, farm_brief, fishing_trip) are unrelated domains, so no sibling differentiation is required.

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

Usage Guidelines4/5

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

It gives a real conditional trigger for the expensive path: 'Only if the ledger has no material-complete recipe, inspect the latest 50 with usedLatest50Fallback.' It also states the negative-case behavior (missing/invalid ledger, inventory or quota returns source errors). It stops short of naming an explicit alternative tool or a when-not-to-call-this-tool rule.

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

Deploy Server

Other Tools