ShotPulled
Server Details
Connect your espresso routine to your AI assistant. This MCP server allows LLMs to act as a personal coffee coach by accessing your shot logs, grinder settings, and active bean inventory. Use it to automatically calculate extraction adjustments, track remaining coffee supply, and lock in winning recipes directly from your chat session.
- Status
- Unhealthy
- Last Tested
- Transport
- Streamable HTTP
- URL
Glama MCP Gateway
Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.
Full call logging
Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.
Tool access control
Enable or disable individual tools per connector, so you decide what your agents can and cannot do.
Managed credentials
Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.
Usage analytics
See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.
Tool Definition Quality
Average 3.5/5 across 30 of 30 tools scored. Lowest: 2.4/5.
Each tool has a clearly distinct purpose. For example, diagnose_preview and diagnose_shot are distinguished by sandbox vs. real execution. Overlap between log_recommendation and suggest_next_step is minimal, as one records a choice and the other fetches a suggestion.
All tools follow a consistent verb_noun pattern in snake_case, such as log_shot, delete_shot, update_bean, register_machine, etc. There are no deviations or mixed conventions.
30 tools is on the higher end but justified by the comprehensive coverage of coffee brewing management: equipment registration, shot logging, diagnosis, recommendations, and knowledge base. Each tool serves a necessary function, though the set could be slightly streamlined.
The tool surface covers essential CRUD operations for beans, grinders, machines, waters, programs, and shots, plus diagnostics and recommendations. Missing explicit delete operations for equipment (only archive) and a get_shot tool for single shot details, but these gaps are minor.
Available Tools
32 toolscompute_ageBRead-onlyInspect
Compute coffee age in days off roast and resting/staling verdict.
| Name | Required | Description | Default |
|---|---|---|---|
| bean_id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds value by mentioning the 'resting/staling verdict', giving insight into the output. However, it doesn't detail any other behavioral traits beyond what annotations imply.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single 12-word sentence with no redundancy. Every word adds meaning, and it is front-loaded with the key action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is adequate but lacks explanation of the verdict or what 'days off roast' means. Given the context of coffee tracking, it may be sufficient for an agent familiar with the domain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, and the description does not explain the single parameter 'bean_id'. It mentions 'coffee age', implying bean_id refers to a coffee bean, but does not specify its meaning or format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool computes coffee age in days off roast and provides a resting/staling verdict. The verb 'compute' and resource 'coffee age' are specific, and it distinguishes from siblings like list_beans or log_shot which do other operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. For example, it doesn't mention that this tool is for analyzing bean age rather than logging or listing beans.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_shotADestructiveIdempotentInspect
Delete a logged shot from history. Restores the bean's remaining weight (which is derived from logged doses). Hard delete — there is no undo. To fix a mistake on an otherwise-valid shot, prefer update_shot over delete-and-relog.
| Name | Required | Description | Default |
|---|---|---|---|
| shot_id | Yes | ID of the shot to delete |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses hard delete (no undo) and restorative effect on bean weight, adding beyond annotations like destructiveHint=true and idempotentHint=true.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences: purpose/effect, consequence, alternative. No fluff, perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a single-parameter destructive tool with no output schema; covers behavior, side effects, and alternative usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter shot_id with schema description 'ID of the shot to delete'; description adds no extra meaning beyond schema, and baseline is 3 due to 100% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool deletes a logged shot from history and restores bean weight, distinguishing it from update_shot which is mentioned for fixing mistakes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly advises preferring update_shot over delete-and-relog for fixing valid shots, giving clear guidance on when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnose_previewARead-onlyInspect
Sandbox-only diagnosis, writes nothing (no verdict, no recommendation-trail entry). Two modes: pass shot_id to dry-run a LOGGED shot (optionally overriding its sensory_tags — the "what would this read as?" preview; the shot's own bean and its age at pulled_at are used), or pass the full metric set (bean_id, grinder_id, machine_id, grind_label, dose_g, yield_g, time_s, source) for a hypothetical shot. Identical output shape to diagnose_shot, including bean_context.
| Name | Required | Description | Default |
|---|---|---|---|
| dose_g | No | Dose in grams | |
| source | No | Grinder position source — affects G1 warning (raw mode only) | |
| time_s | No | Extraction time in seconds | |
| bean_id | No | Coffee bean ID (must belong to this account) | |
| shot_id | No | Preview a logged shot by ID (dry-run; ignores the metric params below) | |
| yield_g | No | Yield in grams | |
| grinder_id | No | Grinder ID (must belong to this account) | |
| machine_id | No | Machine ID (must belong to this account) | |
| grind_label | No | Grinder setting label, e.g. "1.1.3" | |
| sensory_tags | No | Sensory observations, e.g. ["sour","bitter"]. With shot_id: replaces the stored tags for this preview (omit to use stored; [] = none). |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnlyHint=true. The description adds valuable behavioral context: writes nothing (no verdict or recommendation-trail entry), sandbox-only, and details on how modes affect data usage (e.g., overriding sensory_tags). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: it starts with the key safety property, then enumerates the two modes, and ends with output similarity. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (10 parameters, two modes, no output schema), the description covers safety, usage modes, and output equivalence to diagnose_shot. It could be improved by noting error conditions or authentication, but it is largely complete for its intended preview function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds semantics by explaining the two modes, the role of sensory_tags, and that shot_id ignores metric params. This goes beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the tool's purpose: performing a sandbox diagnosis without side effects, with two distinct modes (dry-run logged shot or hypothetical shot). It explicitly distinguishes itself from diagnose_shot by noting identical output shape but no writes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: for safe testing or previewing diagnoses. It explains two usage modes and notes that the output matches diagnose_shot. However, it does not explicitly state when not to use it or directly contrast with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnose_shotARead-onlyInspect
Evaluate shot metrics to provide ranked hypotheses (C6) and warn on flip-flops (G2) or fatigue (G6). Resolves the SHOT's own bean — age computed at the shot's pulled_at — never the active profile, and echoes it as bean_context, so diagnosing an older or differently-filed shot is always safe. The engine reads metrics and sensory tags — NOT free-text notes — so make sure taste feedback is recorded as sensory_tags on the shot (via log_shot or update_shot) before diagnosing; otherwise an in-range shot that tastes bad will come back "balanced".
| Name | Required | Description | Default |
|---|---|---|---|
| shot_id | No | Optional shot ID; defaults to last pulled shot. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only. Description adds context: resolves the shot's own bean (not active profile), computes age at pulled_at, uses only metrics/sensory tags. No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise four-sentence paragraph that front-loads purpose, then explains bean resolution and usage guidance. Clear and efficient, though could benefit from slight structuring.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers core function, input handling, prerequisites (sensory tags), and outputs. Despite no output schema, description sufficiently informs the agent about expected results and constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers 100% of the single parameter (shot_id) with description and default behavior. The tool description does not add further semantic detail beyond what schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states the tool evaluates shot metrics to provide ranked hypotheses and warnings, specifying the exact outputs (C6, G2, G6). It distinguishes from siblings by mentioning bean resolution behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use: after logging sensory tags via log_shot or update_shot, noting that it ignores free-text notes. Warns about a common pitfall (in-range shot tasting bad returning 'balanced'). Lacks explicit comparison to alternative tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_dial_stateARead-onlyInspect
Retrieve current dialing state, active context, recent shots, recommendations, and locked recipes.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description doesn't need to reiterate safety. However, it adds no additional behavioral context like permission requirements, staleness, or snapshot semantics beyond listing the returned data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, front-loaded with the verb 'Retrieve', and contains no filler words. Every element earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description adequately covers all returned components (dialing state, context, shots, recommendations, recipes). It is complete for a simple read operation, though output structure is not detailed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters and schema coverage is 100%, so the description need not add parameter info. It compensates by listing the data returned, adding value beyond the empty schema. Baseline for no parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Retrieve' and clearly lists the resources: current dialing state, active context, recent shots, recommendations, and locked recipes. This distinguishes it from sibling tools like 'get_stats' or 'list_shots'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description states what the tool does but provides no explicit guidance on when to use it versus alternatives such as 'get_stats' or 'list_shots'. The implied usage is for fetching aggregate dial state data, but no exclusions or when-not-to-use are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_kb_versionARead-onlyInspect
Retrieve the current version of the knowledge base.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already state readOnlyHint=true, so the agent knows it's a safe read. The description adds 'current version' but doesn't elaborate on behavior (e.g., version format, consistency). Minimal added value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded verb and object, no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Simple tool with no parameters and no output schema. Description is adequate but could specify the return value format or example output for completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so schema coverage is 100%. The description adds no parameter information, but there is nothing to explain. Baseline 4 for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Retrieve' and resource 'current version of the knowledge base', clearly stating the tool's function and distinguishing it from sibling tools like get_rule or get_stats.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. However, due to its simplicity (no parameters), the usage context is implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ruleARead-onlyInspect
Retrieve the detailed text of a specific rule from the knowledge base by its rule ID.
| Name | Required | Description | Default |
|---|---|---|---|
| rule_id | Yes | The ID of the rule to fetch, e.g. CAT.DARK |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description's 'retrieve' is consistent. The description does not add extra behavioral context like rate limits or auth requirements, but none are needed for this operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence with no redundancy. It is front-loaded and efficient, earning its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema, no annotations besides readOnlyHint), the description fully covers what the tool does and what it returns. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage for the single parameter. The description does not add information beyond what the schema provides (e.g., example value 'CAT.DARK' is already in the schema). Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the action 'Retrieve', the resource 'detailed text of a specific rule', and the method 'by its rule ID'. It is specific and distinguishes this tool from siblings like get_dial_state or get_kb_version.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: this tool is for fetching a single rule by ID. There is no mention of when not to use it or alternatives, but for a simple retrieval tool, the usage is self-evident.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statsARead-onlyInspect
Get compact flat usage stats for a grinder, machine, or bean.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The entity ID | |
| scope | Yes | The stats scope |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating a safe read operation. The description adds value by specifying that stats are 'compact flat usage stats,' implying aggregated data rather than raw records, which provides additional behavioral context beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the tool's purpose. It is front-loaded and contains no unnecessary words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a simple purpose with well-documented parameters and no output schema. While the description hints at the nature of the output ('compact flat'), it does not specify what fields or format to expect, which is a minor gap given the lack of output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with clear descriptions for both parameters (id as entity ID, scope with enum values). The description does not add meaning beyond what the schema already provides, so baseline score applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get', the resource 'compact flat usage stats', and the scope ('for a grinder, machine, or bean'). This is specific and distinguishes it from sibling tools like 'get_dial_state' or 'get_rule' which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. There is no mention of prerequisites, exclusions, or when not to use it, leaving the agent without context for appropriate invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
grinder_mathBRead-onlyInspect
Determine steps/clicks difference and directions between setting labels (C3).
| Name | Required | Description | Default |
|---|---|---|---|
| to_label | Yes | ||
| from_label | Yes | ||
| grinder_id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description is consistent with the readOnlyHint annotation, stating it determines differences. However, it adds no additional behavioral detail such as required permissions, error handling for invalid labels, or whether the calculation is purely mathematical or involves state machine logic. The annotation already covers the read-only nature, so a 3 is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single concise sentence that directly states the purpose. No unnecessary words. Perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite low complexity (3 params, no output schema), the description fails to explain what the tool returns. It mentions 'difference and directions' but not the structure or type. An agent needs to know the output format to use the tool correctly. The cryptic 'C3' further reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% with no parameter descriptions. The description loosely indicates that 'from_label' and 'to_label' are setting labels and the output is a difference/direction. This adds some meaning beyond the raw schema but doesn't clarify format or allowed values. Without enums, more detail would be beneficial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool determines steps/clicks difference and directions between setting labels. This provides a specific verb and resource, distinguishing it from siblings like 'get_dial_state' or 'set_grinder_position'. However, the term 'C3' is cryptic and may not be universally understood.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives. It doesn't mention prerequisites, when not to use, or any context like needing current dial state first. This leaves the agent 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.
kb_changelogARead-onlyInspect
Retrieve the changelog showing updates and version differences for the knowledge base.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only behavior. The description adds that it retrieves changelog with version differences, but does not detail output structure, ordering, or whether it returns the full history.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence that efficiently conveys the tool's purpose without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no parameters and no output schema, the description is adequate. It could optionally clarify scope (e.g., all entries), but is complete enough for an agent to understand the tool's basic function.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters, and the schema coverage is 100%. The description does not need to add parameter details, so it meets the baseline for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the changelog showing updates and version differences for the knowledge base. It uses a specific verb and resource, distinguishing it from sibling tools like get_kb_version which likely retrieves the current version.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for viewing change history, but lacks explicit guidance on when to use this tool versus alternatives such as get_kb_version or list operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_beansARead-onlyInspect
List coffee beans registered for the account, with status filter.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status: current, archived, or all. Defaults to current. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the agent knows it's safe. The description adds that it lists beans 'registered for the account', providing scope context, and mentions the status filter. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that gets straight to the point with no unnecessary words. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter, the description is adequate. It doesn't explain return format, but no output schema exists. Annotations confirm read-only, and sibling tools are distinct enough. Minor room for improvement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already fully documents the 'status' parameter with enum values and default. The description only echoes that there is a filter, adding no new information beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'list', the resource 'coffee beans', the scope 'for the account', and the filter 'status'. It distinguishes from sibling tools like list_recipes or list_shots, which list different entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates the availability of a status filter but does not provide explicit when-to-use or alternative guidance. It lacks statements like 'Use this to view beans; use register_coffee to add new ones.'
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_grindersARead-onlyInspect
List grinders registered for the account, with status filter.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status: current, archived, or all. Defaults to current. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=false. The description adds minimal behavioral context beyond 'list' and 'filter', which is already clear from annotations and schema. It does not disclose any additional traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that conveys purpose and a key filter option. No unnecessary words; front-loaded with the core verb and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one optional parameter and no output schema, the description is largely complete. It could hint at return format (e.g., list of grinder objects) but is sufficient given low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%. The description repeats 'with status filter' but adds no new meaning beyond the schema's parameter documentation. Baseline score of 3 is appropriate given full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('list'), the resource ('grinders'), and the scope ('registered for the account') with a filtering option. It effectively distinguishes from siblings like 'register_grinder' and 'set_equipment_archived'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a status filter but does not provide explicit guidance on when to use this tool versus alternatives (e.g., 'list_machines', 'list_recipes'). Usage context is implied but not fully specified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_machinesARead-onlyInspect
List machines registered for the account, with status filter.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status: current, archived, or all. Defaults to current. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the description adds minimal behavioral context. It only restates the status filter already in the schema, without additional disclosures like return format or pagination.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It conveys the core action and filter clearly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple list tool with one parameter and no output schema, the description is adequate but lacks details on return format or any additional behavior. It is minimally complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description mentions 'status filter' but does not add meaning beyond what the schema already provides for the single parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it lists machines registered for the account, with a status filter. This distinguishes it from sibling tools like register_machine or set_equipment_archived.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a clear purpose but does not explicitly guide when to use this tool versus alternatives like list_shots or list_grinders. No when-not or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recipesBRead-onlyInspect
List recipes (all or filtered by equipment and status).
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status: current, archived, or all. Defaults to current. | |
| bean_id | No | ||
| grinder_id | No | ||
| machine_id | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true, consistent with 'List' action. Description adds filtering options as further behavioral context, but does not disclose other behaviors like pagination, ordering, or limits. Adds value beyond annotations by specifying available filters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence is concise, front-loaded with primary action and resource. No extraneous words; every part of the sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no output schema, and low schema coverage, the description is too minimal. It omits parameter details, return structure, and any usage context like pagination. Leaves agent with insufficient information for proper invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 4 parameters with only status described (25% coverage). Description groups bean_id, grinder_id, machine_id as 'equipment', adding semantic grouping. However, it does not explain individual parameter meanings (e.g., what bean_id represents) beyond the schema's type info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specifies verb 'List' and resource 'recipes', clearly indicating action and object. Mentions filtering, providing basic purpose. Does not explicitly differentiate from sibling list tools beyond the resource type, but resource name suffices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description states 'all or filtered by equipment and status', implying usage for listing with optional filters. No explicit when-to-use or when-not-to-use compared to other tools, but context is implied as no alternative for listing recipes exists among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_scalesARead-onlyInspect
List registered scales for the account.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status: current (unarchived), archived, or all. Defaults to current. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the safety profile is disclosed. The description adds account scope but does not mention the default status filtering, whether archived scales are excluded by default, or any return format details. This is acceptable but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence states the purpose directly with no filler or redundant information. It is appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple one-parameter list operation and full schema coverage, the description is sufficient for basic use. No output schema exists, but list return semantics are conventional and the description provides enough context for this straightforward tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single optional status parameter with an enum and description, giving 100% coverage. The description adds no extra parameter semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and resource ('registered scales for the account'), clearly stating what the tool does. It distinguishes from sibling list_* tools by naming the exact resource type, even without explicit comparison text.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when an agent needs to enumerate account scales but provides no explicit when-to-use guidance or alternatives. Sibling tools are obvious based on naming, yet no guidance is given about choosing this over them or about the status filter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_shotsARead-onlyInspect
List shot history with support for pagination and filtering. Every shot carries a derived taste_pending flag (1 = logged with no sensory tags, no rating, and no tasted flip — the tasting is still owed and can be backfilled with update_shot).
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of records to return (1-500) | |
| offset | No | Offset for pagination | |
| filters | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, indicating safe read behavior. The description adds valuable context about the derived taste_pending flag, explaining when it is set and how to resolve it via update_shot. This goes beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose, and includes important behavioral detail without unnecessary elaboration. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that it is a list operation with pagination and filtering, the description adequately covers the key behavioral aspect (taste_pending). However, it could mention default ordering or that results are returned as an array, though this is typical for list tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 67%, with descriptions in the schema. The description adds minimal parameter detail, only explaining the taste_pending filter meaning. It does not elaborate on other filters or pagination semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states 'List shot history with support for pagination and filtering,' clearly identifying the verb (list) and resource (shot history). It distinguishes from sibling tools like log_shot or update_shot by its read nature, and is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving a filtered/paginated list of shots, but does not explicitly state when to use this tool versus alternatives like get_dial_state or list_beans, nor does it provide guidance on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_watersARead-onlyInspect
List registered waters for the account.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | Filter by status: current (unarchived), archived, or all. Defaults to current. |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description does not add behavioral traits beyond what annotations already provide (readOnlyHint: true). Since annotations cover safety, the brief description is adequate but lacks detail on auth or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally concise: a single sentence that is front-loaded with the action word. Every word earns its place with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (1 parameter with schema, no output schema, read-only annotation), the description is reasonably complete. It could optionally mention pagination or return format, but the essential purpose and filtering are covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a detailed description for the 'status' parameter, so the description need not repeat it. The description adds no additional parameter meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'List registered waters for the account' clearly states the verb (List) and resource (waters), distinguishing it from sibling list tools for other resources. However, it does not elaborate on what 'waters' specifically means in context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. The description implies usage for listing waters, but does not mention alternatives or context for choosing this tool over other list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lock_recipeCIdempotentInspect
Lock a successful shot as the reference dialing recipe for this equipment profile.
| Name | Required | Description | Default |
|---|---|---|---|
| drink_intent | Yes | ||
| from_shot_id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description aligns with annotations: idempotentHint true and destructiveHint false. However, it does not disclose that this action overwrites an existing reference recipe or requires a successful shot. Annotations already provide basic safety info, but description adds no extra behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no wasted words. However, it could be expanded without losing conciseness to include key details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (two parameters), the description is incomplete. It lacks parameter explanations, usage context, and outcome details. The annotations help but do not compensate for missing usage guidance.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0% description coverage, and the tool description does not explain either parameter. The agent must rely on parameter names and enum values. This is insufficient for proper usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('lock') and the target ('successful shot as reference dialing recipe for equipment profile'). It distinguishes from sibling tools like 'log_shot' or 'set_active' by specifying the outcome. However, the term 'lock' could be ambiguous without further context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use or when not to use. Does not mention alternatives or prerequisites. The purpose is implied but not explicitly stated as a recommendation step.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_recommendationCInspect
Log a recommended dialing change to allow contradiction/oscillation checking (G2).
| Name | Required | Description | Default |
|---|---|---|---|
| lever | Yes | ||
| direction | Yes | ||
| rationale | Yes | ||
| confidence | Yes | ||
| cited_rules | No | ||
| based_on_shot | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate the tool is not read-only and not destructive, but description adds no behavioral details beyond 'log'. No mention of side effects, permissions, or what happens post-logging. Does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no waste, and front-loaded with purpose. However, it borders on under-specification, missing critical details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (6 params, no output schema, no param descriptions), the description is too minimal. It does not explain usage flow, return values, or parameter semantics, leaving significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 0% description coverage, and the description provides no information about parameters. With 6 parameters including enums and required fields, the lack of context forces the agent to infer meaning from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool logs a recommended dialing change, specifying the purpose of checking contradiction/oscillation. Verb 'log' and resource 'recommended dialing change' are specific, and the mention of G2 distinguishes it from related tools like log_shot.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as log_shot or suggest_next_step. The description lacks explicit context for when to log a recommendation versus other actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
log_shotAInspect
Log an espresso or alternative shot/brew attempt. Uses the active context (bean/grinder/machine/program) unless overridden via bean_id/grinder_id/machine_id/program_id — ALWAYS pass bean_id explicitly when the user names a specific coffee, so the shot cannot land on the wrong bag. Backdate with pulled_at when the shot happened earlier. When the user reports taste (bitter, sour, harsh, hollow…), include matching sensory_tags — the diagnosis engine reads tags and metrics, not free-text flavor_notes. When the user tasted the shot and reports it as GOOD/clean (no defects), pass tasted=1 with no sensory_tags — otherwise a tag-less, rating-less shot is filed taste-pending as if never tasted.
| Name | Required | Description | Default |
|---|---|---|---|
| tds | No | Total Dissolved Solids percentage (e.g. 9.1 or 1.35) | |
| dose_g | Yes | ||
| rating | No | ||
| tasted | No | 1 = the shot was tasted at log time. The explicit way to record a CLEAN tasting: sensory tags all describe defects, so a good shot has none — without this flag (or a rating) it would be filed taste-pending. Tags or a rating also mark a shot as tasted; 0 (default) = taste later. | |
| time_s | Yes | ||
| bean_id | No | Override: log against this bean instead of the active one (null = active) | |
| verdict | No | ||
| yield_g | Yes | ||
| water_id | No | Optional references to waters formulation | |
| best_brew | No | 1 if marked as best brew, 0 otherwise | |
| favourite | No | 1 if favourite, 0 otherwise | |
| pulled_at | No | When the shot was actually pulled (ISO 8601 or "YYYY-MM-DD HH:MM:SS"), for backdated entries. Defaults to now (null = now). When backdating, pass the returned shot_id to diagnose_shot explicitly — the default diagnosis target is the chronologically latest shot. | |
| beverage_g | No | Yield mass excluding cup/vessel weight in grams | |
| grinder_id | No | Override: grinder used, if not the active one (null = active) | |
| machine_id | No | Override: machine used, if not the active one (null = active) | |
| program_id | No | Override: machine program used, if not the active one (null = active) | |
| temp_taste | No | ||
| vessel_name | No | Cup/vessel name | |
| bloom_time_s | No | Pre-wetting or bloom duration in seconds | |
| drink_intent | No | ||
| flavor_notes | No | ||
| flow_profile | No | Opaque flow profile data (JSON/TEXT) | |
| method_tools | No | JSON representation of method tools used (e.g., paper filters, screen) | |
| observations | No | ||
| sensory_tags | No | ||
| finish_action | Yes | ||
| temperature_c | No | Brew temperature in Celsius | |
| data_confidence | No | measured = weighed/timed live; recalled = from memory; estimated = a best guess (e.g. missed the timer — "~25s") | |
| vessel_weight_g | No | Cup/vessel weight in grams | |
| pressure_profile | No | Pressure profile description or values | |
| first_drip_time_s | No | Time to first drip in seconds |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a write operation (readOnlyHint=false) but not destructive (destructiveHint=false). The description adds context about taste-pending behavior and active context resolution, enhancing transparency beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense paragraph. While front-loaded with the main purpose, it could be better structured with bullet points or short paragraphs for readability. No wasted sentences, but lengthier than ideal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 31 parameters and no output schema, the description covers key behaviors like active context, taste recording, and backdating. Lacks return value information, which could help agents understand what the tool outputs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 65% schema coverage, the description adds significant meaning: explains bean_id override rule, tasted flag semantics, sensory_tags vs flavor_notes, and backdating behavior. This goes well beyond the raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool logs an espresso or alternative shot/brew attempt. It distinguishes itself from sibling tools (e.g., delete_shot, diagnose_shot) by focusing on creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on using active context, overriding parameters, handling taste reporting, and backdating. However, it does not directly compare to sibling tools like update_shot.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_coffeeCInspect
Register a new bag of coffee beans.
| Name | Required | Description | Default |
|---|---|---|---|
| ean | No | ||
| url | No | ||
| cost | No | ||
| name | Yes | ||
| state | No | ||
| origin | No | ||
| rating | No | ||
| co2e_kg | No | ||
| origins | No | List of bean origin details | |
| qr_code | No | ||
| roaster | No | ||
| storage | No | ||
| variety | No | ||
| archived | No | 1 if archived, 0 otherwise | |
| bean_mix | No | E.g. blend details | |
| buy_date | No | Date in YYYY-MM-DD format | |
| currency | No | ||
| finished | No | 1 if finished, 0 otherwise | |
| aromatics | No | ||
| bag_notes | No | ||
| favourite | No | 1 if favourite, 0 otherwise | |
| frozen_at | No | Datetime in YYYY-MM-DD HH:MM:SS format | |
| roast_date | Yes | Date in YYYY-MM-DD format | |
| attachments | No | JSON or comma-separated list of attachments | |
| frozen_note | No | ||
| opened_date | No | ||
| roast_level | Yes | ||
| roast_range | No | ||
| unfrozen_at | No | Datetime in YYYY-MM-DD HH:MM:SS format | |
| bag_weight_g | No | Bag weight in grams | |
| best_by_date | No | Date in YYYY-MM-DD format | |
| process_type | Yes | ||
| roast_custom | No | ||
| decaffeinated | No | 1 if decaf, 0 if regular | |
| dial_category | No | Dialing behavior class: classic = medium/traditional espresso roasts (chocolate/nut, balanced); dark = genuinely dark/roasty; the light categories cover Nordic and ultra-light styles. | |
| roasting_type | No | ||
| cupping_points | No | ||
| frozen_storage | No | ||
| rest_window_days_max | No | ||
| rest_window_days_min | No |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description and annotations together indicate a creation action (register) but add no detail about side effects, idempotency, or error behavior. The annotations provide no hints beyond default false values, so the description fails to fill gaps like idempotency or what happens on duplicate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, which is concise but overly minimal for a tool with 40 parameters. It front-loads the action but sacrifices essential detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (40 parameters, low schema coverage, no output schema), the description is woefully incomplete. It does not explain the required fields (name, roast_date, roast_level, process_type) or any behavioral context, leaving the agent with almost no actionable understanding beyond the tool's existence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at only 35%, the description should compensate for undocumented parameters. It adds no parameter information at all, leaving 26+ parameters unexplained. The brief description offers no semantic help beyond the schema's few descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'register' and the resource 'a new bag of coffee beans'. It matches the tool name. However, it does not differentiate from siblings like 'update_bean' or other registration tools, but the name itself is fairly specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives (e.g., update_bean, list_beans). There is no mention of prerequisites or typical use cases, leaving the agent to infer 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.
register_grinderBInspect
Register a manual or electric grinder with its dial settings scheme.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The name/model of the grinder, e.g. Kinu M47 | |
| notes | No | Additional notes | |
| photo | No | Photo path or URL | |
| archived | No | 1 if archived, 0 if active | |
| burr_type | Yes | ||
| max_value | No | Optional travel max bounds | |
| min_value | No | Optional travel min bounds | |
| motor_type | Yes | ||
| nominal_step | Yes | Smallest adjustment increment (e.g. 1 click or 0.1collar units) | |
| setting_scheme | Yes | Collar mark style: single clicks or compound (rotation.number.clicks) | |
| components_spec | No | JSON mapping string representing compound adjustment math | |
| microns_per_step | No | Optional mechanical burr travel microns per nominal step | |
| direction_convention | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate this is a write operation (readOnlyHint=false) but not destructive. The description does not disclose side effects, such as whether registration overwrites existing records, or any required permissions. The behavioral transparency is low.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is concise and to the point. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 13 parameters, 6 required, and no output schema, the description is too brief. It does not explain what the tool returns upon successful registration, any constraints on the input values, or how the registration process works. This leaves significant gaps for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (77%), so the schema already documents most parameters. The description adds minimal extra meaning beyond mentioning 'dial settings scheme', which is already captured in the 'setting_scheme' parameter description. No new insight is provided for less common parameters like 'components_spec' or 'direction_convention'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Register'), the resource ('grinder'), and the key aspect ('dial settings scheme'). It distinguishes this tool from siblings like 'list_grinders' and other registration tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., whether to check if a grinder already exists), no prerequisites, and no mention of when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_machineBInspect
Register an espresso or alternative preparation machine.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Machine name/model, e.g. Dedica EC685 | |
| notes | No | ||
| photo | No | Photo path or URL | |
| tools | No | JSON or comma-separated tools, e.g., paper filters, flow control, metal mesh | |
| archived | No | 1 if archived, 0 if active | |
| prep_type | No | Preparation equipment type, e.g., espresso_machine, v60_dripper, French_press | |
| prep_style | No | Preparation style category, e.g., espresso, filter, immersion | |
| boiler_type | No | ||
| control_type | Yes | ||
| connected_device | No | Metadata mapping to smart hardware APIs | |
| basket_size_grams | No | ||
| built_in_grinder_id | No | id of a grinder built into this machine (bean-to-cup / integrated grinder) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states the action 'Register' but does not disclose behavioral traits beyond what annotations indicate. Annotations show readOnlyHint=false and destructiveHint=false, so creation is implied, but there is no mention of side effects, permissions, or what happens if a machine with the same name exists. No contradiction, but minimal transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded and contains no wasted words. Every word is necessary to convey the core purpose. It is concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 12 parameters, 2 required, and no output schema, the description is too minimal. It does not explain the return value (e.g., created machine ID), nor does it mention related actions like checking for duplicates. Sibling tools like register_coffee may follow similar patterns, but this description lacks completeness for effective use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 67% of parameters with descriptions, so the schema already provides meaning for most fields. The description adds no parameter-specific information beyond the generic verb. With high schema coverage, a baseline of 3 is appropriate; no added value but no deficit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Register' and resource 'machine', clearly identifying the action and object. It distinguishes from sibling tools like list_machines or update_bean by focusing on creation of a machine record, and mentions types ('espresso or alternative preparation machine') which adds specificity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, exclude cases, or compare with siblings like register_coffee or update_equipment_archived. A single sentence stating the action is insufficient for usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_programAInspect
Register a programmed shot button on a machine. A program cuts the shot off either by weight (program_type "volumetric", set target_volume_g) or by time (program_type "timed", set target_time_s). One machine can have a mix of both.
| Name | Required | Description | Default |
|---|---|---|---|
| machine_id | Yes | ||
| description | No | ||
| program_type | No | Cutoff method: "volumetric" (weight) or "timed" (duration). Defaults to volumetric. | |
| target_time_s | No | Target shot duration cutoff in seconds (required for timed programs) | |
| volume_source | No | Confidence in the stored cutoff value, for either type | |
| program_number | Yes | Program number / button index (e.g. 1 or 2) | |
| target_volume_g | No | Target yield cutoff in grams (required for volumetric programs) |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are all false, providing no positive behavioral flags. The description labels the action as 'register' (a create operation) but does not disclose side effects, such as whether it overwrites an existing program, requires permissions, or has any constraints on program_number. This is insufficient for a 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two focused sentences with no superfluous words. The purpose and key options are front-loaded, making it easy for an agent to quickly understand the tool's core function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 7 parameters, two modes, and no output schema. The description lacks details on return values, error conditions, or what 'register' implies (e.g., does it create or update?). Given the complexity, more context is needed for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 71%, and the description adds value by clarifying the relationship between program_type and the target parameters (e.g., target_volume_g for volumetric, target_time_s for timed). This goes beyond the schema's individual descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'register' and the resource 'programmed shot button on a machine'. It distinguishes program types (volumetric vs timed) and notes that a machine can have a mix, which helps differentiate it from sibling register tools for other entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to set target_volume_g or target_time_s based on program_type, but does not provide explicit guidance on when to use this tool versus alternatives (e.g., other register tools or update tools). No when-not-to-use guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_scaleBInspect
Register a brewing scale — the instrument that weighs the dose and the yield.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Scale name/model, e.g. Acaia Lunar, Timemore Black Mirror Basic 2 | |
| notes | No | Additional notes | |
| power | No | How it is powered or recharged | |
| depth_mm | No | Platform depth in mm | |
| width_mm | No | Platform width in mm — measure your drip tray | |
| auto_tare | No | 1 if it zeroes itself when a vessel is set down, 0 if not, null if unstated | |
| height_mm | No | Overall height in mm — the dimension that decides whether it fits under a group head | |
| auto_timer | No | 1 if the timer starts on first flow, 0 if not, null if unstated | |
| capacity_g | No | Maximum weight in grams. The cup or portafilter counts against it | |
| scale_type | Yes | What the scale is built for: espresso (drip-tray footprint), brew (pour-over platform), dual (both modes), connected (app/controller integration), dosing (gravimetric dispensing), training, bench (high capacity, coarse) | |
| connectivity | No | How the scale talks to an app or a machine controller | |
| resolution_g | No | Finest published readability in grams. Leave null unless the maker states it | |
| water_resistance | No | IEC 60529 ingress code as published, e.g. IPX4, IPX6, IP67, or none | |
| flow_rate_display | No | 1 if the scale shows live flow rate in g/s, 0 if it does not, null if the maker never said | |
| resolution_banded | No | 1 when resolution_g only holds in the lowest weight band and coarsens with load — put the ladder in notes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description only states that the tool registers a scale, providing no behavioral details beyond the annotations. With all annotations set to false, the description adds no context about duplicate handling, validation, or persistence semantics. The phrase about weighing dose and yield is domain context, not tool behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the action and provides a clarifying definition. It is concise and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of a 15-parameter registration tool with no output schema and minimal annotations, this one-line description is insufficient. It does not explain return values, error conditions, or registration rules, leaving an agent without enough context to fully understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already covers all 15 parameters with detailed descriptions, enums, units, and examples. The tool description adds no parameter-specific information, but the high schema coverage (100%) makes a baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Register a brewing scale') and the specific resource, distinguishing it from sibling registration tools like register_coffee or register_grinder. The added context about weighing 'dose and yield' clarifies the domain and purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives such as list_scales or update_shot. It does not mention prerequisites, whether it is for new scales only, or how it relates to other equipment registration tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_waterBInspect
Register a custom or commercial water formulation.
| Name | Required | Description | Default |
|---|---|---|---|
| gh | No | General hardness (GH) in ppm | |
| kh | No | Karbonate hardness (KH) in ppm | |
| tds | No | TDS in ppm | |
| name | Yes | Water formulation name, e.g. Lotus Light & Bright, Third Wave Water | |
| type | No | Type, e.g., mineralized, tap, distilled, RO | |
| notes | No | Additional notes | |
| sodium | No | Sodium concentration in ppm | |
| calcium | No | Calcium concentration in ppm | |
| magnesium | No | Magnesium concentration in ppm |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate it is not read-only, not idempotent, not destructive, but the description adds no behavioral details beyond 'register', such as what happens on duplicate names 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short and front-loaded, but could include a bit more detail without becoming verbose. It is efficient but slightly under-specified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 9 parameters and no output schema, the description lacks information about return values, side effects, and error conditions, limiting completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline 3. The description does not add meaning beyond the schema for individual parameters; it only summarizes the tool's purpose.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Register') and the resource ('water formulation'), specifying both custom and commercial types, effectively distinguishing it from siblings like register_coffee or list_waters.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool vs alternatives (e.g., list_waters) or prerequisites. The description implies it is for new entries, but lacks exclusions or context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_activeCIdempotentInspect
Set active dial profile context.
| Name | Required | Description | Default |
|---|---|---|---|
| bean_id | No | null = leave unchanged | |
| grinder_id | No | null = leave unchanged | |
| machine_id | No | null = leave unchanged | |
| program_id | No | null = leave unchanged |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds no behavioral details beyond annotations. It does not mention idempotency or the effect of null parameters, which are documented in the schema but not explicitly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Extremely concise (one sentence), but this brevity sacrifices clarity. The description is not front-loaded with essential details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 4 parameters and no output schema, the description is insufficient. It does not explain what 'dial profile context' means or provide usage examples, leaving the agent underinformed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and descriptions are clear ('null = leave unchanged'). The tool description adds no additional parameter meaning, but the schema already informs the agent adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Set active dial profile context' is vague. It does not specify what a dial profile context is or that it involves setting bean, grinder, machine, and program IDs. It barely clarifies the tool's purpose beyond the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like set_grinder_position or other tools. No context about prerequisites or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_equipment_archivedAIdempotentInspect
Archive or restore a grinder, machine, water, or scale.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The ID of the equipment | |
| kind | Yes | The kind of equipment to archive/restore | |
| archived | Yes | 1 to archive, 0 to restore |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=false, destructiveHint=false, and idempotentHint=true, covering the safety profile. The description adds a bit of context by specifying the state transition (archive/restore) but does not elaborate on side effects, authorization needs, or the meaning of 'archived' in the system. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler. Every word earns its place, listing the action and the four equipment kinds concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple state-change tool with fully documented parameters and annotations, the description is sufficient. The schema handles all parameter details, annotations cover safety and idempotency, and the description clarifies the semantic purpose. No output schema means return values don't need to be explained. The only missing element is a note on whether archived equipment disappears from lists, but this is not critical for basic invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: each parameter (id, kind, archived) is already described with types, enums, and meanings. The description adds no new parameter information beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: 'Archive or restore a grinder, machine, water, or scale.' It uses specific verbs ('archive', 'restore') and specifies the exact resource types, distinguishing it from sibling tools like `delete_shot` or `set_active` which perform different actions on similar entities.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The description merely states what the tool does without contextualizing it against sibling operations like `set_active` or `list_*` tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_grinder_positionAIdempotentInspect
Set the current grinder collar position. source="measured" resets verification freshness.
| Name | Required | Description | Default |
|---|---|---|---|
| source | Yes | Whether setting is verified ("measured") or guess ("recalled"/"assumed") | |
| grinder_id | Yes | ||
| setting_label | Yes | Verbatim display label, e.g. "1.1.2" |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotentHint=true and destructiveHint=false. The description adds that source='measured' resets verification freshness, providing extra context beyond annotations. However, it does not explain behavior with other source values or any side effects, leaving some gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences front-load the purpose and add a specific behavioral note. No wasted words; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description covers basic purpose and one behavioral aspect, but does not address return values (no output schema) or behavior with non-measured sources. Adequate for a simple setter but leaves questions for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (two of three parameters described). The description adds meaning to 'source' by explaining its effect on verification freshness, but does not clarify 'grinder_id' (missing from schema) or add to 'setting_label'. Partial compensation for moderate coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'Set' and resource 'grinder collar position', distinguishing it from sibling tools like list_grinders (listing) and get_dial_state (reading). The additional detail about source='measured' further clarifies a specific behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use this tool versus alternatives. The description implies usage for setting position, but lacks when-not-to-use or prerequisite conditions. Context from siblings suggests no direct alternative for writing position, but exclusions are not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_next_stepCRead-onlyInspect
Retrieve the single next experiment step from the reasoning engine.
| Name | Required | Description | Default |
|---|---|---|---|
| bean_id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=true, which the description aligns with but adds no additional behavioral context (e.g., what happens if bean_id is invalid or if no next step exists). The description carries the burden but does not disclose these traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, which is good for brevity, but it lacks details needed for completeness. It is front-loaded but too sparse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (1 integer param, no output schema), the description should at least explain the parameter and return value. It fails to do so, leaving the tool underspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the 'bean_id' parameter's meaning or format. The parameter remains undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Retrieve', the resource 'next experiment step', and the source 'reasoning engine'. It is specific and helps distinguish from sibling tools, though it does not explicitly contrast them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. The description does not mention context, prerequisites, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_beanCIdempotentInspect
Update coffee bag fields with structured reasoning (G5, C10).
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | ||
| reason | Yes | A clear justification why this category/roast level is updated. | |
| bean_id | Yes |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds minimal behavioral context beyond annotations. It states 'with structured reasoning' which hints at a requirement, but that is already captured by the 'reason' parameter. Annotations already indicate idempotent and non-destructive, but the description does not elaborate on side effects, permissions, or the extent of updates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is very short but under-specified for a tool with a complex nested input. It does not earn its place as every word should add value; the parenthetical is cryptic.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the high complexity (many parameters, nested objects, no output schema), the description is grossly incomplete. It lacks information about return behavior, update semantics, and handling of nested fields.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description does not explain any parameters. With schema description coverage at 33%, the description should compensate but fails to do so. The 'reason' and 'fields' parameters are not described, even though the schema provides some descriptions for nested fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Update coffee bag fields,' which identifies the action and resource. However, the parenthetical '(G5, C10)' is obscure and may confuse agents, slightly detracting from clarity. It distinguishes from sibling tools like register_coffee and list_beans.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention that creating a new bean should use register_coffee, nor does it specify any preconditions or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_shotAIdempotentInspect
Correct fields on an already-logged shot in place — no need to delete and re-log. Use for fixing a wrong dose/yield/time or grind label, re-filing a shot onto the right bean (bean_id), backfilling rating/tasting notes, or fixing the timestamp (pulled_at). Changing grind_label re-derives the numeric grind position from the shot's grinder; changing yield/time/dose/tds keeps flow rate and extraction yield consistent automatically.
| Name | Required | Description | Default |
|---|---|---|---|
| fields | Yes | Only the fields to change | |
| shot_id | Yes | ID of the shot to correct |
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare idempotentHint=true and destructiveHint=false. The description adds non-obvious behaviors: 'Changing grind_label re-derives the numeric grind position' and 'changing yield/time/dose/tds keeps flow rate and extraction yield consistent automatically.' It does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient paragraph that front-loads purpose, then lists examples, then explains derived behavior. It is concise yet comprehensive, with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (25+ editable fields, no output schema), the description covers expected use cases and behavioral hints. However, it does not explain the return value, error scenarios (e.g., invalid shot_id), or prerequisites (e.g., shot must exist). This is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed descriptions for each field. The tool description adds overarching context (e.g., re-derivation on grind_label change) that enriches understanding beyond the schema. No param descriptions are missing.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly defines the tool's purpose: 'Correct fields on an already-logged shot in place — no need to delete and re-log.' It provides specific examples (fixing dose, yield, time, grind label, bean_id, rating, etc.) and distinguishes from siblings like 'log_shot' (create) and 'delete_shot' (remove).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lists specific use cases: fixing wrong values, re-filing a shot, backfilling ratings, fixing timestamps. It implies when not to use (instead of delete and re-log) but does not explicitly name alternatives or exclusions. Enough context for correct selection among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseAqualityAmaintenanceGTM signal intelligence suite for AI agents. Six tools: hiring signals, tech stack detection, company-to-LinkedIn resolution, ICP scoring, job board scanning, and a combined signals aggregator. Built for outbound sales workflows.117371MIT

industrylens-mcpofficial
Flicense-qualityCmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
Sociality MCPofficial
Alicense-qualityDmaintenanceSocial media analytics, post insights, and competitor benchmarking for AI agents.6MIT- AlicenseAqualityAmaintenanceDetects hiring intent signals by scanning job boards for specific companies. Returns structured role data for outbound sales targeting.1761MIT