Skip to main content
Glama

Atlarium Habitat Database MCP

Server Details

Structured habitat data and advisory tools for aquariums, marine tanks, terrariums and paludariums.

Ownership verified
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Repository
techgardeners/atlarium-mcp
GitHub Stars
0
Server Listing
Atlarium Habitat Database MCP

TDQS

A3.7/5.0

Scored across 39 tools

Disambiguation5/5

Each tool has a unique name and clearly documented purpose. The 'get_' and 'search_' pairs are explicitly linked via slugs, and the 'calculate_', 'check_', 'convert_', 'generate_', 'list_', 'match_', and 'suggest_' tools all address distinct operations. There is no ambiguity or overlap.

Naming Consistency5/5

All 39 tools follow a consistent verb_noun pattern in snake_case (e.g., calculate_tank_volume, search_plants, get_fish_profile). No mixing of conventions or non-standard naming is present.

Tool Count2/5

With 39 tools, the set is far above the typical well-scoped range of 3-15. While the domain is broad, the sheer number makes the tool surface heavy and potentially overwhelming for an agent to navigate effectively.

Completeness5/5

The tool set covers the entire domain of an aquarium habitat database: calculations, unit conversion, species compatibility, profile retrieval for all entity types, diagnostic matching, and habitat suggestion. No obvious gaps exist for a read-only advisory API.

Available Tools

39 tools
calculate_equipment_requirementsCalculate equipment requirementsB
Read-onlyIdempotent
Inspect

Calculate advisory heater, lighting and electricity requirements.

ParametersJSON Schema
NameRequiredDescriptionDefault
heaterNoHeater sizing input.
lightingNoLighting estimate input.
electricityNoElectricity cost and usage calculation input.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds only the word 'advisory,' which hints at recommend output, but provides no further behavioral context such as assumptions, formulas, or edge-case handling. This is minimal additional transparency beyond what annotations already cover.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It efficiently communicates the tool's scope without unnecessary detail.

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

Completeness3/5

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

The tool has three nested input objects and an output schema, so some complexity is present. The description is minimal but adequate, covering the main categories. However, it could be improved by stating the advisory nature and explaining what the outputs represent, though the schema compensates for most gaps.

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

Parameters3/5

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

The input schema has complete (100%) description coverage for all nested objects and properties, so the baseline is 3. The description simply names the three categories (heater, lighting, electricity) and does not add parameter-level meaning beyond the schema.

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

Purpose4/5

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

The description clearly states the tool calculates heater, lighting, and electricity requirements, using the verb 'calculate' and naming specific resources. It distinguishes from sibling calculators by naming these three equipment types, though it could be more explicit about the advisory/recommendation nature.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives. The description implies usage for equipment calculations but does not mention exclusions, prerequisites, or alternative tools, leaving the decision to the agent.

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

calculate_fertilizer_doseCalculate fertilizer doseA
Read-onlyIdempotent
Inspect

Calculate an advisory fertilizer dose for a public catalog product and tank volume.

ParametersJSON Schema
NameRequiredDescriptionDefault
brand_nameNoOptional public fertilizer brand name.
product_nameYesPublic fertilizer product name.
volume_litersYesTank or habitat volume in liters.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and side effects. The description adds useful behavioral context by noting the dose is 'advisory' (a recommendation, not a guaranteed prescription) and limited to 'public catalog products,' which constrains applicability. This goes beyond the annotation-provided information without contradicting it.

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

Conciseness5/5

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

The description is a single sentence with no redundant words. It front-loads the primary action and resource, and every word earns its place by conveying purpose, scope, and output type.

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

Completeness4/5

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

Given the tool's low complexity, full schema parameter descriptions, rich annotations, and presence of an output schema, the description is complete enough for an agent to understand inputs and safety. It could have elaborated on the returned structure, but the output schema covers that, so no significant gap exists.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3. The description names 'public catalog product' and 'tank volume,' which map to product_name and volume_liters, but does not add additional detail beyond what the schema already provides for each parameter. The optional brand_name is not mentioned in the description, but the schema documents it adequately.

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

Purpose4/5

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

The description clearly states the verb 'calculate' and the resource 'advisory fertilizer dose' for a specific product and tank volume. It distinguishes from sibling tools like calculate_equipment_requirements and calculate_tank_volume, though it does not explicitly name alternatives. The scope is specific enough to be unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives such as calculate_weekly_dose_totals or generate_fertilization_plan. It lacks explicit when/when-not or alternative recommendations, leaving the agent to infer usage from the tool name and description alone.

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

calculate_nutrient_gapsCalculate nutrient gapsA
Read-onlyIdempotent
Inspect

Compare nutrient targets with supplied measurements without saving user data.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsNoOptional supplied fertilization plan items to analyze.
regimeNoOptional fertilization regime name or strategy.
targetsNoOptional target nutrient concentrations.
languageNoOptional preferred response language: it, en or es.
measurementsNoOptional current measurements for nutrient-gap calculations.
volume_litersYesTank or habitat volume in liters.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, but the description adds a specific behavioral guarantee: 'without saving user data'. This is a meaningful addition because it clarifies that no persistent state is created, which goes beyond the generic read-only annotation. 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.

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the core purpose and includes a meaningful qualifier about data persistence. It contains no filler or redundant information, making it highly concise.

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

Completeness3/5

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

Given the tool's complexity (six parameters, nested objects, optional targets/measurements) and the presence of an output schema, the one-line description is somewhat sparse. It omits any guidance on when to use the tool in the broader context of sibling nutrient/fertilizer tools. However, the schema and annotations provide substantial context, so the description remains minimally adequate.

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

Parameters3/5

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

The schema description coverage is 100%, so all six parameters have detailed descriptions in the schema. The description does not add any information about parameter semantics beyond what the schema already provides. It does not clarify how targets and measurements interrelate, which is a minor gap, but the schema covers individual parameters.

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

Purpose4/5

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

The description clearly states the tool's function with the verb 'Compare' and identifies the resources ('nutrient targets' and 'supplied measurements'). It also adds a key attribute ('without saving user data') that clarifies its side-effect-free nature. However, it does not explicitly differentiate from sibling calculation tools like calculate_water_chemistry or calculate_fertilizer_dose.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to choose this tool over alternatives. It implies use when comparing targets to measurements, but there are no usage scenarios, prerequisites, or exclusions. Sibling tools such as calculate_water_chemistry and generate_fertilization_plan are not referenced.

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

calculate_tank_volumeCalculate tank volumeA
Read-onlyIdempotent
Inspect

Calculate gross and net aquarium volume estimates from dimensions.

ParametersJSON Schema
NameRequiredDescriptionDefault
shapeYesTank shape: rectangular, cylindrical or bow-front.
width_cmNoTank width in centimeters.
height_cmNoTank height in centimeters.
length_cmNoTank length in centimeters.
diameter_cmNoCylinder diameter in centimeters.
bow_depth_cmNoCurved front depth in centimeters for bow-front tanks.
water_height_cmNoActual filled water height in centimeters.
glass_thickness_mmNoGlass thickness in millimeters for net volume estimates.
substrate_depth_cmNoSubstrate depth in centimeters.
water_density_kg_per_literNoWater density in kilograms per liter.
hardscape_displacement_litersNoEstimated hardscape displacement in liters.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the behavioral distinction between 'gross' and 'net' estimates and the word 'estimates' signaling approximate results. 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.

Conciseness5/5

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

The description is a single, concise sentence that is front-loaded with the action and resource. Every word earns its place, with no unnecessary detail or repetition.

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

Completeness3/5

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

The tool has 11 parameters and shape-specific logic (rect, cyl, bow), but the description lacks guidance on how to select dimensions per shape. However, the schema's parameter descriptions and the existing output schema compensate partially, making the description minimally adequate.

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

Parameters3/5

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

All 11 parameters have descriptions in the input schema (100% coverage), so the baseline is 3. The description only mentions 'dimensions' generically and does not add any parameter-specific meaning beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the tool's purpose with a specific verb ('Calculate'), resource ('aquarium volume'), and scope ('gross and net... from dimensions'). It distinguishes itself from sibling calculators like calculate_tank_weight and calculate_water_change by focusing on volume estimates.

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

Usage Guidelines3/5

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

The phrase 'from dimensions' implies the tool is used when dimensions are available, but it provides no explicit guidance on when to use this tool over alternatives such as calculate_tank_weight. No exclusions or alternative tool references are given, so usage context is only implied.

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

calculate_tank_weightCalculate tank weightA
Read-onlyIdempotent
Inspect

Calculate advisory aquarium weight estimates from dimensions and material inputs.

ParametersJSON Schema
NameRequiredDescriptionDefault
shapeYesTank shape: rectangular, cylindrical or bow-front.
width_cmNoTank width in centimeters.
height_cmNoTank height in centimeters.
length_cmNoTank length in centimeters.
diameter_cmNoCylinder diameter in centimeters.
bow_depth_cmNoCurved front depth in centimeters for bow-front tanks.
water_height_cmNoActual filled water height in centimeters.
glass_thickness_mmNoGlass thickness in millimeters for net volume estimates.
substrate_depth_cmNoSubstrate depth in centimeters.
equipment_weight_kgNoAdditional equipment weight in kilograms.
hardscape_weight_kgNoHardscape weight in kilograms.
glass_weight_override_kgNoKnown glass weight override in kilograms.
water_density_kg_per_literNoWater density in kilograms per liter.
substrate_weight_override_kgNoKnown substrate weight override in kilograms.
hardscape_displacement_litersNoEstimated hardscape displacement in liters.
substrate_density_kg_per_literNoSubstrate density in kilograms per liter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the agent knows this is a safe, read-only operation. The description adds the term 'advisory', indicating the output is an estimate rather than exact, which is useful. However, it does not disclose calculation assumptions, limitations, or how the shape parameter affects required inputs beyond what the schema already provides.

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

Conciseness5/5

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

The description is a single sentence of ten words, front-loaded with the verb 'Calculate'. Every word is informative and there is no redundancy or filler. It is optimally concise.

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

Completeness3/5

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

The tool has 16 parameters and a shape enum that determines which measurements are relevant, but the description does not explain this conditional complexity. However, the output schema exists and each parameter has a description, so the agent can infer usage from the schema. The description is minimally complete but could benefit from explaining that certain parameters apply only to specific shapes, which is a notable gap.

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

Parameters3/5

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

Schema coverage is 100%, with each of the 16 parameters having a descriptive comment. The tool description only summarizes inputs as 'dimensions and material inputs', which adds no new meaning beyond the schema. Baseline 3 is appropriate because the schema carries the full burden of parameter semantics.

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

Purpose5/5

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

The description uses the specific verb 'calculate' with the resource 'tank weight' and qualifies it as 'advisory estimates' from 'dimensions and material inputs', clearly distinguishing it from sibling tools like calculate_tank_volume. The purpose is immediately apparent and unambiguous.

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

Usage Guidelines2/5

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

The description does not specify when to use this tool versus alternatives such as calculate_tank_volume or calculate_water_chemistry. It only implies usage for weight estimation, but there is no explicit guidance on selection criteria, prerequisites, or cases where another tool is more appropriate.

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

calculate_water_changeCalculate water changeA
Read-onlyIdempotent
Inspect

Calculate water change volume, weekly totals and dilution estimates.

ParametersJSON Schema
NameRequiredDescriptionDefault
volume_litersNoTank volume or change volume in liters.
change_percentNoPercent of tank volume changed per water change.
changes_per_weekNoNumber of water changes per week.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, and non-destructive hints. The description adds minimal behavioral context beyond stating the calculation outputs; it does not describe edge cases, assumptions, or limitations, but the annotation coverage lowers the burden.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that directly conveys the tool's purpose with no redundant words. Every phrase adds value.

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

Completeness4/5

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

The tool has an output schema and the description combined with full parameter descriptions provides enough context for a straightforward calculation tool. However, it lacks explicit guidance on how inputs relate to the three output types, which is a minor gap.

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

Parameters3/5

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

All parameters have descriptive schema entries with ranges and units (e.g., volume_liters, change_percent, changes_per_week). The tool description does not add further parameter-specific meaning, so with 100% schema coverage, the baseline of 3 is appropriate.

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

Purpose5/5

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

The description states a specific verb ('Calculate') and resource ('water change volume, weekly totals and dilution estimates'), clearly distinguishing it from sibling tools like calculate_tank_volume or calculate_weekly_dose_totals.

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

Usage Guidelines3/5

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

The description implies usage for water change calculations but does not explicitly state when to use this tool over siblings or provide exclusions. The name and description make the use case clear, but no alternatives or when-not scenarios are mentioned.

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

calculate_water_chemistryCalculate water chemistryA
Read-onlyIdempotent
Inspect

Calculate public water chemistry conversions, CO2, salinity and water-mix estimates.

ParametersJSON Schema
NameRequiredDescriptionDefault
co2NoCO2 estimation input from KH and pH.
salinityNoSalinity calculation input.
water_mixNoWater-mixing calculation input.
general_hardnessNoGeneral hardness conversion input.
carbonate_hardnessNoCarbonate hardness conversion input.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds only that outputs are 'estimates,' which is mild behavioral context; it does not describe result shape or edge cases.

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

Conciseness5/5

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

A single, grammatically simple sentence with all key terms front-loaded; no redundant or filler content.

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

Completeness4/5

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

With an output schema, rich annotations, and full parameter descriptions, the one-sentence description suffices to convey the tool's scope. It could be slightly more explicit that the caller should provide one of the sub-objects, but the schema already reveals that structure.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema fully documents all parameters and nested objects. The description adds no parameter-level details beyond naming the calculation areas, so baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly identifies the tool as calculating water chemistry conversions, CO2, salinity, and water-mix estimates, using a specific verb and resource list. This distinguishes it from sibling calculators like calculate_tank_volume or convert_units.

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

Usage Guidelines3/5

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

The listed capabilities imply when the tool is relevant, but the description provides no explicit guidance on when to use this calculator versus sibling calculate_* tools, nor does it caution about selecting one of the multiple input modes. It is minimally viable but not proactive.

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

calculate_weekly_dose_totalsCalculate weekly dose totalsA
Read-onlyIdempotent
Inspect

Calculate weekly fertilizer totals for a supplied non-persistent dosing plan.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsNoOptional supplied fertilization plan items to analyze.
regimeNoOptional fertilization regime name or strategy.
targetsNoOptional target nutrient concentrations.
languageNoOptional preferred response language: it, en or es.
measurementsNoOptional current measurements for nutrient-gap calculations.
volume_litersYesTank or habitat volume in liters.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide readOnlyHint=true and destructiveHint=false, and the description's 'Calculate' is consistent. It adds the behavioral constraint that the plan must be non-persistent, which is useful for selection. 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.

Conciseness5/5

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

The description is a single, front-loaded sentence with no fluff or redundancy. Every word contributes to the purpose.

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

Completeness4/5

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

Given the rich input schema with full descriptions, the presence of an output schema, and annotations declaring safety, the description is mostly sufficient. It could optionally mention how volume_liters factors into totals, but the schema already explains that parameter. The description covers the core intent well.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters (volume_liters, items, targets, measurements, etc.) are already well-documented in the schema. The description itself adds no parameter-specific meaning, hence the baseline score of 3.

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

Purpose5/5

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

The description uses a specific verb ('Calculate') with a clear resource ('weekly fertilizer totals') and a qualifier ('non-persistent dosing plan') that distinguishes it from sibling tools like calculate_fertilizer_dose or generate_fertilization_plan. It clearly conveys what the tool does.

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

Usage Guidelines4/5

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

The description provides clear context: it is for a supplied non-persistent dosing plan, which tells the agent when to use it. However, it does not explicitly name alternatives or state when not to use it, so it falls short of a 5.

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

check_species_compatibilityCheck species compatibilityA
Read-onlyIdempotent
Inspect

Check basic compatibility information between habitat species using Atlarium data.

ParametersJSON Schema
NameRequiredDescriptionDefault
ghNoWater hardness, conductivity or TDS-style value for advisory matching.
khNoWater hardness, conductivity or TDS-style value for advisory matching.
phNoWater pH value on the 0 to 14 scale.
speciesYesList of species names or slugs to compare, from 1 to 20 entries.
languageNoOptional preferred response language: it, en or es.
tank_litersNoTank or habitat volume in liters.
temperatureNoWater or ambient temperature in degrees Celsius.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description only needs to add context beyond these. It adds 'basic' and 'using Atlarium data', which qualifies scope and data source, but does not elaborate on what 'basic' means or any response behavior.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler. It concisely states the action, object, and data source without wasting words.

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

Completeness3/5

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

The tool has seven parameters and an output schema, and annotations cover safety. The description is adequate but minimal; it doesn't explain how to choose this over sibling tools and the term 'basic compatibility' is vague. However, the output schema likely covers return value details, so this is not a critical gap.

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

Parameters3/5

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

Schema description coverage is 100%, with all seven parameters individually described in the input schema. The tool description itself adds no additional parameter semantics, but per the rubric baseline 3 is appropriate when the schema already does the heavy lifting.

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

Purpose4/5

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

The description uses the verb 'Check' and specifies the resource 'compatibility information between habitat species', along with the data source 'Atlarium data'. This clearly distinguishes it from sibling tools like get_fish_profile or suggest_species_for_tank, 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.

Usage Guidelines3/5

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

The description implies a use case—checking compatibility between species—but provides no explicit when-to-use guidance, alternatives, or exclusions. Given the large sibling set that includes related tools like suggest_species_for_tank, the lack of usage context leaves some ambiguity.

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

convert_unitsConvert unitsA
Read-onlyIdempotent
Inspect

Convert aquarium-relevant temperature, length, weight and volume units.

ParametersJSON Schema
NameRequiredDescriptionDefault
lengthNoLength conversion input.
volumeNoVolume conversion input.
weightNoWeight conversion input.
temperatureNoTemperature conversion input.
temperature_deltaNoTemperature difference input.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate read-only, idempotent, non-destructive behavior. The description adds the aquarium-relevant scope but omits mention of temperature_delta support and the ability to handle multiple conversion types in a single call. 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.

Conciseness5/5

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

The description is a single 9-word sentence that immediately states the verb and scope. No redundant information or filler.

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

Completeness3/5

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

The description omits the temperature_delta input category, which is a fifth parameter in the schema. While the schema and output schema are rich, the description fails to fully enumerate the tool's capabilities, creating a mismatch between the stated categories and actual parameters. This prevents a higher score.

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

Parameters3/5

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

The input schema has 100% description coverage with detailed enums and constraints for each unit category. The tool description merely lists categories (temperature, length, weight, volume) without adding parameter-specific semantics beyond what the schema provides. Baseline 3 is appropriate as schema carries the weight.

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

Purpose5/5

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

The description clearly states the tool converts aquarium-relevant units across four categories (temperature, length, weight, volume), using a specific verb and resource. It distinguishes itself from sibling calculation tools, which focus on specific aquarium computations rather than generic unit conversion.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. The description does not mention exclusions, use cases, or relationships to sibling calculation tools. The agent must infer that conversion is a prerequisite or separate operation.

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

generate_fertilization_planGenerate fertilization planA
Read-onlyIdempotent
Inspect

Generate an advisory non-persistent fertilization plan from public Atlarium catalog data.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsNoOptional supplied fertilization plan items to analyze.
regimeNoOptional fertilization regime name or strategy.
targetsNoOptional target nutrient concentrations.
languageNoOptional preferred response language: it, en or es.
measurementsNoOptional current measurements for nutrient-gap calculations.
volume_litersYesTank or habitat volume in liters.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint, and the description adds 'non-persistent' and 'advisory', which clarifies that no stored changes occur and the output is consultative. This supplements the annotation without contradiction, though more detail on data validation or error behavior would be welcome.

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

Conciseness5/5

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

The description is a single, dense sentence that packs the core purpose ('generate'), scope ('advisory non-persistent'), and data source ('public Atlarium catalog') without any wasted words. Every term contributes to understanding the tool's behavior.

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

Completeness4/5

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

Given the high complexity (nested objects, 6 params, output schema present), the description successfully conveys the essential function and safety profile. The output schema presumably documents return values, so the description need not repeat those, but a brief note on when to provide items vs targets vs measurements would improve completeness.

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

Parameters3/5

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

Input schema covers all 6 parameters with 100% description coverage, so the baseline of 3 applies. The description adds minimal parameter-specific meaning beyond stating the data source (public Atlarium catalog), which hints that product_name and brand_name should reference catalog entries but does not explain parameter interactions like how targets and measurements are used.

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

Purpose5/5

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

The description clearly states the tool generates an advisory, non-persistent fertilization plan using public Atlarium catalog data. This distinguishes it from sibling tools like calculate_fertilizer_dose (single dose) and get_fertilization_regime (retrieve existing), making the purpose specific and unambiguous.

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

Usage Guidelines2/5

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

The description provides no explicit guidance on when to use this tool versus alternatives. Sibling tools such as calculate_nutrient_gaps or calculate_weekly_dose_totals serve related purposes, but no differentiation or exclusion criteria are mentioned, leaving the selection decision to inference.

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

get_algae_profileGet algae profileA
Read-onlyIdempotent
Inspect

Get a structured public algae diagnostic profile using the exact slug returned by search_algae.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesExact single-segment slug returned by the related Atlarium search tool.
languageNoOptional preferred response language: it, en or es.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the agent knows this is a safe, non-destructive read operation. The description adds that the profile is 'public' and 'structured', and that the slug must be exact, which provides minor additional context. No contradiction with annotations, but no deep behavioral details beyond what annotations provide.

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

Conciseness5/5

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

The description is a single sentence of 15 words, front-loaded with the verb 'Get'. It contains no unnecessary words or repetition, and every part of the sentence contributes to understanding the tool's purpose and usage.

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

Completeness4/5

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

With an output schema present (context signal), the description does not need to explain return values. The tool is simple (2 params, 1 required). The description covers the purpose, the prerequisite (slug from search_algae), and the nature of the profile ('public', 'structured'). It is largely complete, though it could briefly mention what the profile contains (e.g., algae identification details) but that is handled by the output schema.

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

Parameters3/5

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

Schema coverage is 100% with both parameters having descriptions. The description reinforces that the slug must be 'exact' and from 'search_algae', adding slight extra context. Since the schema already describes the parameters well, the description does not add significant new meaning, earning a baseline score of 3.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'structured public algae diagnostic profile', and distinguishes it from sibling tools by specifying the slug must come from 'search_algae'. This immediately informs the agent of the tool's exact function and how it relates to other tools.

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

Usage Guidelines4/5

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

The description explicitly says to use the slug returned by 'search_algae', providing a clear prerequisite and usage context. While it does not list alternative tools or when not to use it, the guidance is sufficient for an agent to determine the correct invocation sequence among many sibling get_* tools.

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

get_disease_profileGet disease profileA
Read-onlyIdempotent
Inspect

Get a structured public aquatic disease profile using the exact slug returned by search_diseases.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesExact single-segment slug returned by the related Atlarium search tool.
languageNoOptional preferred response language: it, en or es.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is clear. The description adds that the profile is 'public' and 'structured', which adds minor context. 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.

Conciseness5/5

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

The description is a single, front-loaded sentence with no unnecessary words. It conveys purpose and prerequisite efficiently. Every word earns its place.

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

Completeness4/5

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

Given that an output schema exists (indicated by context signals), the description does not need to detail return values. It covers the resource type (disease profile), domain (aquatic), and the required input source (search_diseases). A minor addition about what the structured profile includes (e.g., symptoms, treatments) could be helpful but is not essential.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters (slug and language). The description mentions 'exact slug' but does not add new semantic detail beyond what's in the schema. Baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool retrieves a structured aquatic disease profile using a slug from search_diseases. This specifies the resource (disease profile), action (get), and domain (aquatic disease), effectively distinguishing it from sibling get_* tools for other entity types.

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

Usage Guidelines4/5

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

The description explicitly states the prerequisite: use the exact slug returned by search_diseases. This provides clear context on when to use this tool (after searching for diseases). It does not explicitly list when not to use it or mention alternatives, but the prerequisite is well-defined.

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

get_equipment_profileGet equipment profileA
Read-onlyIdempotent
Inspect

Get a structured public equipment product profile using the exact slug returned by search_equipment.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesExact safe slug path returned by the related Atlarium search tool.
languageNoOptional preferred response language: it, en or es.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, which accurately characterize this as a safe, read-only operation. The description adds useful context that the profile is 'public' (no auth barrier beyond the api key), and specifies the input constraint. 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.

Conciseness5/5

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

The description is a single, concise sentence that front-loads the core action and resource, then adds the essential prerequisite constraint. Every word is necessary; no fluff or repeated information.

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

Completeness5/5

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

Given the low complexity (2 parameters, simple schema, no nested objects), clear annotations, and an output schema that handles return value documentation, this description is adequate. It provides the key context about data source (slug from search) and scope (public profile). Users have enough to invoke the tool correctly.

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

Parameters4/5

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

Schema description coverage is 100%, so both parameters are well-documented in the schema. The description adds value by explaining the relationship with search_equipment ('returned by') and clarifies the 'language' parameter is optional and its use case ('preferred response language'). This provides meaning beyond the schema's enum listing.

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

Purpose5/5

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

The description clearly specifies the verb ('Get'), the resource ('structured public equipment product profile'), and a unique constraint ('using the exact slug returned by search_equipment'). This differentiates it from sibling tools like search_equipment (which searches) and get_product_profile (which gets a different product type).

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

Usage Guidelines4/5

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

The description explicitly states the required input format ('exact slug returned by search_equipment'), implying that the user must first call search_equipment. It does not explicitly list when not to use it or alternative tools, but the sibling context and distinct resource name provide clarity.

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

get_fertilization_regimeGet fertilization regimeA
Read-onlyIdempotent
Inspect

Get a structured public fertilization regime using the exact slug returned by search_fertilization_regimes.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesExact single-segment slug returned by the related Atlarium search tool.
languageNoOptional preferred response language: it, en or es.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare `readOnlyHint`, `idempotentHint`, and `destructiveHint`, so the description adds value by mentioning the result is 'public' and 'structured', implying no authentication and consistent format. 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.

Conciseness4/5

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

Single sentence that front-loads the action and resource. No superfluous words. Could be slightly more structured by separating input and output, but it earns its place.

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

Completeness4/5

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

With an output schema present and a simple read operation, the description adequately explains what the tool does and how to use the slug. The sibling list clarifies the workflow. No missing critical information.

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

Parameters3/5

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

Schema coverage is 100% and the slug parameter already has a clear description. The description adds context about the slug originating from a sibling search tool, but does not fundamentally extend parameter understanding beyond the schema.

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

Purpose5/5

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

Description states a specific verb ('Get') and resource ('structured public fertilization regime'), and clearly links to the sibling tool 'search_fertilization_regimes' via slug. This differentiates it from siblings like `search_fertilization_regimes` and other `get_*` tools.

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

Usage Guidelines4/5

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

Explicitly instructs to use the slug from `search_fertilization_regimes`, providing clear context for when to invoke this tool. Does not explicitly state when not to use it, but the instruction is sufficient given the sibling relationship.

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

get_fertilizer_profileGet fertilizer profileA
Read-onlyIdempotent
Inspect

Get a structured public fertilizer product profile using the exact slug returned by search_fertilizers.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesExact safe slug path returned by the related Atlarium search tool.
languageNoOptional preferred response language: it, en or es.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A4/5.0
Behavior3/5

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

The annotations already declare the tool as read-only, idempotent, non-destructive, and not open-ended, so the behavioral baseline is well-covered. The description adds minimal behavioral context beyond this, merely stating it retrieves a 'public' profile. Since the annotations carry the burden, a score of 3 is appropriate as the description does not contradict and adds a bit of context (public nature) but no further details.

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

Conciseness5/5

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

The description is a single sentence that perfectly captures the essential purpose and key usage instruction (slug from search_fertilizers) without any wasted words. Every part of the sentence earns its place, making it highly concise and efficiently structured.

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

Completeness4/5

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

Given the low parameter count (2), high schema coverage (100%), comprehensive annotations (covers safety, idempotency, etc.), and the presence of an output schema, the description adequately covers the tool's role. It provides the critical context about slug origin, which compensates for what the schema doesn't capture. It could be more complete by noting any error handling or default behaviors for the language parameter, but it's sufficiently comprehensive for most use cases.

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

Parameters3/5

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

Schema description coverage is 100%, meaning the schema already fully documents both parameters (slug and language) with their constraints, patterns, and descriptions. The description does not add new parameter meaning beyond referencing the slug's origin from 'search_fertilizers', which provides useful context for selecting the correct value but doesn't enhance semantic understanding of the parameters themselves. Thus, the baseline score of 3 is fitting.

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

Purpose5/5

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

The description clearly states the tool retrieves a 'structured public fertilizer product profile' using a specific identifier ('slug'), which is a specific verb+resource combination. It also distinguishes this tool from the sibling 'search_fertilizers' by linking the slug input to that search tool, making its unique purpose and relationship clear.

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

Usage Guidelines4/5

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

The description explicitly specifies that the slug must be the exact one returned by 'search_fertilizers', which provides clear guidance on when and how to use this tool. However, it does not mention when not to use it or provide alternative tools for different scenarios (e.g., searching vs. retrieving a profile), leaving some implicit guidance.

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

get_fish_profileGet fish profileA
Read-onlyIdempotent
Inspect

Get a structured fish or aquatic animal profile using the exact slug returned by search_fish.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesExact single-segment slug returned by the related Atlarium search tool.
languageNoOptional preferred response language: it, en or es.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, covering the safety profile. The description adds that the returned data is a 'structured profile' and that the slug must be exact from search_fish, which is useful but not substantial beyond the annotations. No contradiction present.

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

Conciseness5/5

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

A single, front-loaded sentence that immediately states the action and resource, then adds the critical usage context. Every word earns its place—no fluff or repetition.

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

Completeness4/5

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

Given the presence of an output schema (context signal: true), the description does not need to detail return values. It adequately covers input source, scope, and the fact that the result is a structured profile. It could optionally mention the language parameter, but that is optional and described in the schema. Complete for its purpose.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters well. The description merely reinforces that the slug must come from search_fish, which is already stated in the schema for the slug parameter. It adds no new meaning to the language parameter. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the action ('Get a structured... profile') and the specific resource ('fish or aquatic animal'). It explicitly references the required input source ('exact slug returned by search_fish'), which strongly distinguishes it from sibling profile-retrieval tools like get_algae_profile or get_plant_profile.

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

Usage Guidelines4/5

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

The description provides clear context by stating the prerequisite (use search_fish first to obtain the slug) and implies the tool is for fetching full details after search. It does not explicitly state when not to use it or name alternatives, but the sibling set makes the intended workflow obvious. Slightly below perfect for lacking explicit exclusions.

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

get_guideGet guideA
Read-onlyIdempotent
Inspect

Get a structured public Atlarium guide using the exact slug returned by search_guides.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesExact safe slug path returned by the related Atlarium search tool.
languageNoOptional preferred response language: it, en or es.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already provide readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false. The description adds that the guide is 'structured public', which is useful context about data access and format. That additional context justifies a 3, but the heavy lifting is done by annotations.

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

Conciseness5/5

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

The description is a single sentence that immediately states the core action, resource, and key dependency. Every word is necessary; there is no redundancy or filler.

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

Completeness4/5

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

For a simple get tool with two well-documented parameters, an output schema, and strong annotation coverage, the description is complete. It covers what the tool does, how to invoke it (using the slug), and the public nature of the data. Minor gaps like error behavior are acceptable given the simplicity.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already fully documents both parameters. The description verbally reinforces the slug's origin and the language's optional nature, but adds no new semantic meaning beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Get') and resource ('structured public Atlarium guide'), and explicitly ties the slug to the output of the sibling tool 'search_guides'. This clearly differentiates it from other get_* and search_* tools in the sibling list.

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

Usage Guidelines4/5

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

The description gives a clear condition for use: you must have the exact slug returned by search_guides. This implies the prerequisite step. However, it does not explicitly state when not to use this tool or mention alternative tools for similar tasks.

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

get_medicine_profileGet medicine profileA
Read-onlyIdempotent
Inspect

Get a structured public aquarium medicine profile using the exact slug returned by search_medicines.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesExact single-segment slug returned by the related Atlarium search tool.
languageNoOptional preferred response language: it, en or es.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, making the safety profile clear. The description adds only that it returns a 'structured public aquarium medicine profile', which is mildly helpful but does not elaborate on errors, rate limits, or response format. With annotations present, this is adequate.

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

Conciseness5/5

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

A single, front-loaded sentence that conveys the core purpose and prerequisite without any waste. Every word earns its place.

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

Completeness4/5

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

For a simple 2-parameter tool with full annotations and an output schema (not shown but present), the description is sufficient. It explains the key dependency and purpose. Missing a brief note on the return structure, but the output schema covers that.

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

Parameters3/5

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

Schema description coverage is 100% with both parameters already described in detail (slug: from related search tool; language: optional enum). The main description reaffirms the slug source but adds no new meaning beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool gets a structured public aquarium medicine profile using the exact slug from search_medicines. This is a specific verb-resource pair with a clear dependency, distinguishing it from sibling get_* tools.

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

Usage Guidelines4/5

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

The description explicitly states the prerequisite to use the slug returned by search_medicines, guiding the agent to first search then retrieve. It does not explicitly exclude other usage scenarios, but the context of siblings makes it clear this is for medicine profiles only.

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

get_plant_problem_profileGet plant problem profileA
Read-onlyIdempotent
Inspect

Get a structured public aquatic plant problem or deficiency profile using the exact slug returned by search_plant_problems.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesExact single-segment slug returned by the related Atlarium search tool.
languageNoOptional preferred response language: it, en or es.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is fully covered. The description adds the fact that the profile is 'public', implying no authentication is needed, but this is a minor addition. 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.

Conciseness5/5

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

The description is a single sentence that immediately states the core action and resource, then adds the key usage condition. No redundant words, highly efficient.

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

Completeness5/5

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

Given the presence of an output schema, annotations, and 100% parameter coverage, the description provides all necessary context: what it does (get profile), what input is required (slug from search), and an optional customization (language). No gaps remain for the agent to infer.

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

Parameters4/5

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

Schema coverage is 100% and both parameters are well-documented in the schema. The description reinforces the coupling between the slug and search_plant_problems, adding practical semantics beyond the schema's 'related Atlarium search tool' phrasing. This extra context justifies a score above baseline 3.

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

Purpose5/5

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

The description clearly states the verb 'Get' and the resource 'structured public aquatic plant problem or deficiency profile', and it explicitly links the input slug to the sibling tool 'search_plant_problems', distinguishing it from other get tools like get_algae_profile or get_disease_profile.

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

Usage Guidelines4/5

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

The description provides explicit guidance on when to use the tool: only after obtaining the exact slug from search_plant_problems. It does not mention when not to use it or list alternatives, but the prerequisite is clearly stated, making it easy for the agent to decide.

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

get_plant_profileGet plant profileA
Read-onlyIdempotent
Inspect

Get a structured aquatic plant profile using the exact slug returned by search_plants.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesExact single-segment slug returned by the related Atlarium search tool.
languageNoOptional preferred response language: it, en or es.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A4.2/5.0
Behavior4/5

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

The annotations already indicate read-only, idempotent, and non-destructive behavior. The description confirms a safe lookup operation without contradictions, adding clarity about the slug dependency.

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

Conciseness5/5

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

The description is a single sentence that efficiently conveys the core purpose and prerequisite. No extraneous information, perfectly front-loaded.

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

Completeness4/5

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

Given the existence of an output schema and complete parameter descriptions, the description adequately covers the missing context (slug source). Slightly more could be said about language behavior, but not necessary.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value by referencing the provenance of the slug (from search_plants), and the schema already provides detailed constraints and descriptions for both parameters.

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

Purpose5/5

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

The description clearly states it retrieves a structured aquatic plant profile using a specific identifier. It distinguishes itself from sibling tools like search_plants by explicitly requiring the slug from that tool.

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

Usage Guidelines3/5

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

The description provides clear guidance to use the slug from search_plants, but does not mention when to use alternatives or when not to use this tool. It implies usage after a search but lacks exclusion criteria.

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

get_product_profileGet product profileA
Read-onlyIdempotent
Inspect

Get a structured public habitat product profile using the exact slug returned by search_products.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesExact safe slug path returned by the related Atlarium search tool.
languageNoOptional preferred response language: it, en or es.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds context about the result being 'structured' and 'public', but does not disclose additional behavioral traits (e.g., rate limits, authentication needs) beyond what annotations provide. With strong annotations, this is acceptable.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no unnecessary words. Every piece of information earns its place: verb, resource, modifier ('structured public'), and the precondition linking to search_products.

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

Completeness5/5

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

The tool has only two parameters (one required), an output schema (not shown), and comprehensive annotations. The description covers the key behavioral context (precondition, public nature) and parameter semantics for the critical slug field. For a simple lookup tool, this is fully sufficient.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3. The description adds value for the slug parameter by specifying it must come from 'search_products', which is more explicit than the schema's 'related Atlarium search tool'. The language parameter is not mentioned in the description, but the schema already documents its enum values and optionality. Overall, the description enhances understanding of the most critical parameter.

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

Purpose5/5

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

The description uses a specific verb ('Get') and resource ('structured public habitat product profile'), and distinguishes this tool from siblings like get_fish_profile or get_plant_profile by specifying the resource type and the precondition ('using the exact slug returned by search_products').

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

Usage Guidelines4/5

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

The description explicitly states when to use this tool: after retrieving a slug from search_products. This provides clear context and a prerequisite but does not explicitly state when not to use it or list alternative tools. However, the resource name and precondition make the intended usage unambiguous.

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

get_water_parametersGet water parametersA
Read-onlyIdempotent
Inspect

Get recommended water parameters using the exact slug returned by search_fish or search_plants.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesExact single-segment slug returned by the related Atlarium search tool.
typeYesProfile type to read water parameters for.
languageNoOptional preferred response language: it, en or es.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description does not add additional behavioral context beyond the slug dependency, such as whether it reads live data or cached results, or any rate limit considerations. It appropriately avoids contradicting annotations.

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

Conciseness5/5

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

The description is a single, clear sentence that conveys the tool's exact purpose and dependency. It contains no filler words and is front-loaded with the main action and resource.

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

Completeness4/5

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

The tool has a well-described input schema, annotations, and sibling context. The description is complete for its role as a simple lookup tool, explicitly linking to search functions. It could optionally mention the output is a human-readable parameter set, but the presence of an output schema reduces the need for such detail.

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

Parameters3/5

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

Schema coverage is 100%, so the input schema already describes all three parameters with types, enums, and constraints. The description adds no further parameter semantics beyond reiterating the slug's source, but the schema baseline is sufficient, resulting in a score of 3.

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

Purpose5/5

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

The description clearly states the tool retrieves recommended water parameters using an exact slug from search_fish or search_plants. It specifies the verb ('get'), the resource ('water parameters'), and the direct dependency on sibling search tools, distinguishing it from other get_* and calculate_* tools.

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

Usage Guidelines4/5

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

The description explicitly instructs to use the slug returned by search_fish or search_plants, which implies the correct usage order (search first, then this tool). It does not explicitly state when not to use it or list alternatives, but the context of sibling tools makes its purpose clear.

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

list_product_brandsList product brandsA
Read-onlyIdempotent
Inspect

List public Atlarium product brands.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoSearch text used to match public Atlarium records.
languageNoOptional preferred response language: it, en or es.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A3.8/5.0
Behavior4/5

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

The description adds the qualifier 'public', clarifying that only public brands are returned, which goes beyond the annotations' readOnlyHint and idempotentHint. However, it does not disclose other behavioral traits like pagination or sorting, but the output schema likely covers return structure. The description is consistent 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.

Conciseness5/5

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

The description is a single, concise sentence that directly states the purpose without wasted words. It is front-loaded with the verb and resource, and every word earns its place.

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

Completeness4/5

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

For a simple listing tool with two optional parameters and an output schema, the description is adequate. It tells the agent the tool's purpose and scope ('public'). However, it lacks any guidance on filtering behavior or relationship to sibling listing tools, so it is not fully complete.

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

Parameters3/5

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

The input schema descriptions cover 100% of the parameters (query and language), so the baseline is 3. The description itself adds no additional parameter-related details beyond what the schema already provides.

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

Purpose5/5

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

The description clearly states the tool's function: 'List public Atlarium product brands.' The verb 'List' and resource 'public Atlarium product brands' are specific and distinguish it from sibling tools like list_product_categories and search_products.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. There is no mention of use cases, exclusions, or relationships to sibling tools such as list_product_categories or search_products.

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

list_product_categoriesList product categoriesA
Read-onlyIdempotent
Inspect

List public Atlarium product categories for equipment and fertilizers.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoLimit categories to equipment or fertilizer catalog entries.
languageNoOptional preferred response language: it, en or es.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior, while the description adds the 'public' scope, suggesting no user-specific data. It does not mention pagination or default behavior when no type is provided, but the simple nature of the tool and annotation coverage keep this adequate.

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

Conciseness5/5

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

A single, direct sentence that immediately states the action and scope with no redundant words or filler.

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

Completeness5/5

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

Given the tool's low complexity, existing output schema, and comprehensive annotations, the description covers all essential aspects—purpose, scope, and domain. No additional context is needed.

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

Parameters3/5

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

Both parameters are fully described in the schema with enums and descriptions, providing 100% coverage. The description's mention of 'equipment and fertilizers' only echoes the type enum without adding new meaning, so it meets the baseline but doesn't elevate it.

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

Purpose5/5

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

The description uses the specific verb 'List' with the resource 'product categories' and scopes it to 'public Atlarium' equipment and fertilizers, distinguishing it from sibling tools like list_product_brands and get_product_profile.

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

Usage Guidelines4/5

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

The description clearly sets the context for listing product categories, implying a browsing or catalog use case. However, it does not explicitly reference alternatives or state when not to use this tool, so it lacks explicit exclusion guidance.

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

match_diagnostic_profilesMatch diagnostic profilesA
Read-onlyIdempotent
Inspect

Find likely public algae, disease, plant problem and medicine profiles from a symptom query.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoDiagnostic profile type filter.
limitNoMaximum number of public records to return, up to 50.
queryNoSearch text used to match public Atlarium records.
offsetNoZero-based pagination offset for public search results.
languageNoOptional preferred response language: it, en or es.
difficultyNoDiagnostic difficulty filter from 1 to 5.
water_typeNoWater or habitat type filter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare the tool read-only, idempotent, and non-destructive, so the safety bar is covered. The description adds that it returns 'public' records (not private) and 'likely' matches (ranked, not guaranteed), which provides some extra behavioral context beyond the annotations. This is modest added value, 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.

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundant or filler words. It clearly states the action and the object. Every word earns its place, making it a model of conciseness.

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

Completeness3/5

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

While the schema and annotations cover parameters and safety, the description provides minimal guidance on how to effectively use the tool, such as combining symptom query with filters (type, difficulty, water_type) or what 'likely' results mean. For a tool with 7 parameters and an output schema, a bit more context about the matching behavior and result interpretation would be expected, but the existing information is not inadequate.

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

Parameters3/5

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

Schema description coverage is 100%, so all seven parameters are already explained in the input schema. The description's mention of 'symptom query' aligns with the 'query' parameter but does not add meaning beyond what the schema provides. Baseline 3 is correct because the schema carries the full semantic load.

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

Purpose5/5

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

The description uses the verb 'Find' and specifies the exact resource ('likely public algae, disease, plant problem and medicine profiles') and the input type ('symptom query'). This clearly distinguishes it from sibling tools like search_algae or search_diseases, which target a single profile type with direct name searches.

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

Usage Guidelines3/5

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

The description implies use when the user has a symptom query and wants matches across multiple diagnostic profile types. However, it does not explicitly state when to prefer this over the many specific search_* tools or provide exclusions/alternatives. The usage context is implied but not directly contrasted with sibling tools.

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

search_algaeSearch algaeA
Read-onlyIdempotent
Inspect

Search public algae diagnostic profiles with symptoms, causes and treatment guidance.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoDiagnostic profile type filter.
limitNoMaximum number of public records to return, up to 50.
queryNoSearch text used to match public Atlarium records.
offsetNoZero-based pagination offset for public search results.
languageNoOptional preferred response language: it, en or es.
difficultyNoDiagnostic difficulty filter from 1 to 5.
water_typeNoWater or habitat type filter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, so safety is covered. The description adds useful scope ('public') and content semantics (profiles include symptoms, causes, treatment guidance), enhancing behavioral understanding without contradicting annotations.

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

Conciseness5/5

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

A single, front-loaded sentence with no filler. Every phrase adds value: scope ('public'), domain ('algae diagnostic profiles'), and content ('symptoms, causes and treatment guidance').

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

Completeness5/5

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

Given the rich input schema (7 documented optional filters), output schema, and strong annotations, the description provides sufficient context. It captures the tool's purpose and scope; no additional behavioral or return-value explanation is necessary.

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

Parameters4/5

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

All 7 parameters are fully described in the schema (100% coverage), so the burden on the description is low. The description additionally clarifies what query text matches ('symptoms, causes and treatment guidance'), adding meaning beyond the generic 'match public Atlarium records' schema text.

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

Purpose5/5

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

Description uses specific verb 'Search' and identifies the resource as 'public algae diagnostic profiles', mentioning content (symptoms, causes, treatment guidance). This clearly distinguishes it from sibling search tools like search_diseases and get_algae_profile.

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

Usage Guidelines4/5

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

The description establishes clear context: use this to search public algae diagnostic profiles, implying it is the tool for finding algae diagnostics rather than retrieving a specific item (get_algae_profile). It doesn't explicitly name alternatives or exclusions, but the public-scope and algae-specific wording provide enough context.

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

search_diseasesSearch diseasesA
Read-onlyIdempotent
Inspect

Search public aquatic disease diagnostic profiles and advisory treatment information.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoDiagnostic profile type filter.
limitNoMaximum number of public records to return, up to 50.
queryNoSearch text used to match public Atlarium records.
offsetNoZero-based pagination offset for public search results.
languageNoOptional preferred response language: it, en or es.
difficultyNoDiagnostic difficulty filter from 1 to 5.
water_typeNoWater or habitat type filter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. The description adds value by noting the 'public' scope and 'advisory' nature of the information, which are useful contextual additions. However, it does not elaborate on authentication needs, rate limits, or other behavioral aspects 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.

Conciseness5/5

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

The description is a single, front-loaded sentence: 'Search public aquatic disease diagnostic profiles and advisory treatment information.' It contains no redundant words and every phrase contributes to understanding the tool's purpose, making it highly concise and well-structured.

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

Completeness4/5

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

With a complete input schema, an output schema, and strong annotations, the description covers the essential purpose and adds the 'public' and 'advisory' context. It is brief but sufficient for a search tool; the only notable gap is the lack of comparison with alternative search tools, which is more a usage-guideline issue than a completeness one.

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

Parameters3/5

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

Schema description coverage is 100% for all 7 parameters, so each parameter is already documented in the input schema. The description does not add any parameter-specific semantics beyond the general mention of disease profiles and advisory treatment information, which is consistent with the baseline for full schema coverage.

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

Purpose5/5

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

The description uses the specific verb 'Search' and clearly identifies the resource as 'public aquatic disease diagnostic profiles and advisory treatment information.' This distinguishes it from sibling tools like get_disease_profile (single profile retrieval) and match_diagnostic_profiles (matching profiles), making the purpose unmistakable.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention exclusions or suggest related tools such as get_disease_profile or match_diagnostic_profiles, leaving the agent to infer the appropriate context without explicit direction.

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

search_equipmentSearch equipmentA
Read-onlyIdempotent
Inspect

Search public aquarium and habitat equipment products.

ParametersJSON Schema
NameRequiredDescriptionDefault
brandNoProduct brand filter.
limitNoMaximum number of public records to return, up to 50.
queryNoSearch text used to match public Atlarium records.
offsetNoZero-based pagination offset for public search results.
categoryNoProduct category filter.
languageNoOptional preferred response language: it, en or es.
use_caseNoUse-case filter such as filtration, lighting or fertilization.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already provide readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is known. The description adds the 'public' scope and 'aquarium and habitat' domain, but does not describe behavior like pagination or return characteristics beyond what annotations and schema provide.

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

Conciseness5/5

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

The description is a single concise sentence (8 words) that is front-loaded with the action and resource. It contains no fluff or repetition.

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

Completeness5/5

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

For a simple read-only search tool with seven well-documented parameters, strong annotations, and an output schema, the description is complete enough. It clearly scopes the search to public equipment products without needing additional context.

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

Parameters3/5

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

Schema description coverage is 100%, with every parameter having a clear description. The tool description does not add extra meaning beyond the schema, so the baseline of 3 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('Search') and clearly identifies the resource ('public aquarium and habitat equipment products'). This distinguishes it from sibling search tools like search_products and search_fertilizers by narrowing the scope to equipment.

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

Usage Guidelines3/5

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

The description implies usage for equipment searches but does not explicitly state when to use this tool over alternatives such as search_products. It names no exclusions or alternative tools, leaving the comparison to the agent.

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

search_fertilization_regimesSearch fertilization regimesA
Read-onlyIdempotent
Inspect

Search public fertilization regimes and dosing philosophies.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of public records to return, up to 50.
queryNoSearch text used to match public Atlarium records.
topicNoFertilization regime topic filter.
offsetNoZero-based pagination offset for public search results.
languageNoOptional preferred response language: it, en or es.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so safety is covered. The description adds the 'public' scoping constraint, which provides useful behavioral context, but does not disclose pagination behavior or response structure beyond the schema.

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

Conciseness5/5

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

A single sentence conveys the core purpose without waste. It is front-loaded and immediately understandable.

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

Completeness5/5

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

The tool is a simple search with comprehensive schema, annotations, and an output schema. The description covers the essential purpose and public scoping; no additional behavioral or return details are necessary.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are already documented. The description adds no extra semantics about query syntax, topic filtering, or language options beyond what the schema provides.

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

Purpose5/5

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

The description uses a specific verb 'Search' and resource 'public fertilization regimes and dosing philosophies', clearly distinguishing it from sibling tools like get_fertilization_regime and search_fertilizers. It states both the action and scope precisely.

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

Usage Guidelines3/5

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

The description implies usage for searching public regimes but provides no explicit alternatives or exclusions. Sibling tools such as get_fertilization_regime are not mentioned, so guidance on when to choose this over retrieving a specific regime is missing.

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

search_fertilizersSearch fertilizersA
Read-onlyIdempotent
Inspect

Search public aquarium fertilizer products and nutrient profiles.

ParametersJSON Schema
NameRequiredDescriptionDefault
brandNoProduct brand filter.
limitNoMaximum number of public records to return, up to 50.
queryNoSearch text used to match public Atlarium records.
offsetNoZero-based pagination offset for public search results.
categoryNoProduct category filter.
languageNoOptional preferred response language: it, en or es.
use_caseNoUse-case filter such as filtration, lighting or fertilization.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe, read-only operation. The description adds the 'public' scope constraint, which is useful context. However, it does not disclose other behavioral details like pagination defaults or language fallback, so it provides some but not rich context 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.

Conciseness5/5

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

The description is a single sentence with no filler, front-loaded with the action verb 'Search'. It efficiently conveys the tool's purpose without redundancy, earning a top score for conciseness and structure.

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

Completeness4/5

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

For a search tool with 7 optional parameters, an output schema, and strong annotations, the description is fairly complete. It clearly defines the search scope ('public aquarium fertilizer products and nutrient profiles') and the schema handles parameter details. It could optionally mention pagination or language options, but those are already documented in the schema, so the description is adequate without them.

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

Parameters3/5

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

Schema description coverage is 100%, with each of the 7 parameters having a clear description, so the baseline is 3. The description does not add parameter-level details, but the phrase 'nutrient profiles' suggests the query field matches product and nutrient information, which aligns with the schema. No additional semantics needed beyond the thorough schema.

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

Purpose5/5

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

The description uses a specific verb ('Search') and resource ('public aquarium fertilizer products and nutrient profiles'), clearly distinguishing it from sibling tools like search_products and search_fertilization_regimes. The inclusion of 'public' and 'nutrient profiles' further narrows the scope, making the tool's purpose immediately clear.

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

Usage Guidelines3/5

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

The description does not explicitly state when to use this tool vs alternatives, nor does it mention exclusions. However, the focus on 'public aquarium fertilizer products and nutrient profiles' implies a specific use case, and the 'public' qualifier hints at a distinction from private/paid products. Still, with many sibling search tools, explicit guidance would be more helpful.

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

search_fishSearch fishB
Read-onlyIdempotent
Inspect

Search fish and aquatic animal profiles in the Atlarium habitat database.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of public records to return, up to 50.
queryNoSearch text used to match public Atlarium records.
gh_maxNoMaximum general hardness filter.
gh_minNoMinimum general hardness filter.
kh_maxNoMaximum carbonate hardness filter.
kh_minNoMinimum carbonate hardness filter.
offsetNoZero-based pagination offset for public search results.
ph_maxNoMaximum acceptable pH filter.
ph_minNoMinimum acceptable pH filter.
languageNoOptional preferred response language: it, en or es.
care_levelNoCare-level filter, for example easy, moderate or expert.
temperamentNoTemperament filter, for example peaceful or aggressive.
max_tank_litersNoMaximum tank volume filter in liters.
min_tank_litersNoMinimum tank volume filter in liters.
temperature_maxNoMaximum temperature filter in Celsius.
temperature_minNoMinimum temperature filter in Celsius.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is clear. However, the description adds no additional behavioral context such as return format, pagination defaults, or filtering scope beyond what the schema states. Nothing contradicts the annotations, but no extra value is provided.

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

Conciseness5/5

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

The description is a single, focused sentence with no redundant wording. It front-loads the action and resource, earning every word it uses.

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

Completeness3/5

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

For a search tool with 16 parameters but a rich schema and output schema, the one-line description is minimally viable. It states the core purpose but lacks usage context or behavioral details, which would help an agent select it among many sibling search tools. Structured data covers a lot, but the description alone leaves gaps in when/how to use it.

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

Parameters3/5

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

The input schema has 100% description coverage for all 16 parameters, each with clear descriptions. The tool description itself adds no parameter-level information, so the baseline of 3 is appropriate given that the schema fully documents the parameters.

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

Purpose5/5

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

The description uses a specific verb ('Search') and clearly identifies the resource ('fish and aquatic animal profiles') within a defined context ('Atlarium habitat database'). This distinguishes it from sibling search tools like search_plants or search_diseases.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, nor does it mention any exclusions or prerequisites. Siblings like get_fish_profile or search_plants exist, but no comparison or selection criteria are given.

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

search_guidesSearch guidesB
Read-onlyIdempotent
Inspect

Search Atlarium habitat guides and educational content.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of public records to return, up to 50.
queryNoSearch text used to match public Atlarium records.
topicNoGuide topic filter.
offsetNoZero-based pagination offset for public search results.
languageNoOptional preferred response language: it, en or es.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the agent knows this is a safe read operation. The description adds no behavioral context beyond the act of searching, but it does not contradict the annotations. Given the comprehensive annotation coverage, a neutral score 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.

Conciseness5/5

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

The description is a single, front-loaded sentence with no redundant words. It communicates the core purpose efficiently and wastes no space.

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

Completeness4/5

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

The schema fully documents all parameters, an output schema exists, and annotations cover the safety profile. The description identifies the resource type clearly. The only gap is usage differentiation, which is already scored separately, so overall the context is sufficient for a simple search tool.

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

Parameters3/5

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

All five parameters have full descriptions in the schema, including constraints like maxLength, maximum, and enum values. The description adds no additional meaning or context beyond what the schema already provides, so the baseline of 3 is warranted.

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

Purpose4/5

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

The description uses the verb 'Search' with a specific resource ('Atlarium habitat guides and educational content'), which clearly distinguishes it from sibling tools that search species, products, or other data. However, 'educational content' is somewhat broad and could overlap with guides, so it is not perfectly scoped.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus other search tools or get_guide. There are no exclusions, alternatives, or contextual hints about whether this is for broad discovery or specific guide lookup.

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

search_medicinesSearch medicinesA
Read-onlyIdempotent
Inspect

Search public aquarium medicine and treatment product profiles.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoDiagnostic profile type filter.
limitNoMaximum number of public records to return, up to 50.
queryNoSearch text used to match public Atlarium records.
offsetNoZero-based pagination offset for public search results.
languageNoOptional preferred response language: it, en or es.
difficultyNoDiagnostic difficulty filter from 1 to 5.
water_typeNoWater or habitat type filter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the 'public' qualifier, indicating the search only covers public profiles, but does not disclose pagination or language behavior (though these are in the schema).

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

Conciseness5/5

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

The description is a single, direct sentence with no filler. It immediately states the action and target, earning a high score for conciseness.

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

Completeness4/5

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

Given the full schema, output schema, and strong annotations, the description provides adequate context for a simple search tool. However, it lacks any guidance on how this search relates to sibling search tools, which is a minor gap in completeness.

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

Parameters3/5

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

The schema has 100% parameter description coverage, so each of the 7 parameters is already documented. The description adds no additional parameter context, but the baseline of 3 applies because the schema does the heavy lifting.

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

Purpose5/5

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

The description clearly states a specific verb ('Search') and resource ('public aquarium medicine and treatment product profiles'). This distinguishes it from sibling search tools like search_products or search_diseases, which target different record types.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus sibling search tools. It does not mention alternatives or exclusions, leaving the agent to infer from the resource name alone.

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

search_plant_problemsSearch plant problemsA
Read-onlyIdempotent
Inspect

Search public aquatic plant deficiency, pest and environmental problem profiles.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoDiagnostic profile type filter.
limitNoMaximum number of public records to return, up to 50.
queryNoSearch text used to match public Atlarium records.
offsetNoZero-based pagination offset for public search results.
languageNoOptional preferred response language: it, en or es.
difficultyNoDiagnostic difficulty filter from 1 to 5.
water_typeNoWater or habitat type filter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the safety profile is covered. The description adds the 'public' scope, which is useful behavioral context, but it does not disclose details like matching behavior or pagination. This matches the rubric's baseline for annotation-supported descriptions.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It effectively communicates the tool's purpose in just nine words, earning top marks for conciseness.

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

Completeness4/5

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

Given the presence of an output schema and fully documented parameters, the description is sufficient for an agent to understand the tool's role. It could be slightly more complete by mentioning the query-based nature, but the schema compensates. Overall it is adequate and well-scoped.

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

Parameters3/5

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

The input schema provides 100% coverage of all 7 parameters with descriptions, so the description adds no additional parameter semantics. The baseline of 3 applies because the schema carries the full explanatory burden.

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

Purpose5/5

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

The description clearly states the tool searches 'public aquatic plant deficiency, pest and environmental problem profiles', using a specific verb and resource that distinguishes it from sibling tools like search_algae and search_diseases. It precisely conveys what the tool does.

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

Usage Guidelines4/5

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

The description gives clear context by specifying 'public' profiles and the problem categories, implying when this search tool is appropriate. However, it does not explicitly mention alternatives or when not to use it, such as when retrieving a specific profile with get_plant_problem_profile.

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

search_plantsSearch plantsB
Read-onlyIdempotent
Inspect

Search aquatic plants in the Atlarium database.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of public records to return, up to 50.
queryNoSearch text used to match public Atlarium records.
offsetNoZero-based pagination offset for public search results.
languageNoOptional preferred response language: it, en or es.
placementNoAquascape placement filter such as foreground or background.
difficultyNoPlant difficulty filter.
growth_rateNoGrowth-rate filter.
co2_requirementNoCO2 requirement filter.
light_requirementNoLighting requirement filter.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. However, the description adds no behavioral context beyond the verb 'search'—it does not disclose pagination, filtering semantics, or any limitations. It is consistent with annotations but contributes no extra transparency.

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

Conciseness5/5

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

The description is a single, tightly worded sentence with no padding or redundancy. It front-loads the essential action and object, making it instantly scannable.

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

Completeness3/5

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

Given the tool's complexity (9 optional parameters, output schema exists), the description is minimally adequate. The schema and output schema fill in the gaps for parameter semantics and return structure. However, the description does not convey the overall search scope (e.g., what fields are matched), which could help an agent decide if this tool fits the task. It is not incomplete enough to be unusable.

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

Parameters3/5

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

The input schema has 100% coverage—every parameter has a descriptive comment. The tool description itself does not add meaning to the parameters; it only names the resource. This matches the baseline of 3 when schema coverage is high.

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

Purpose5/5

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

The description clearly states the tool's function: 'Search aquatic plants in the Atlarium database.' It specifies an action (search), a resource (aquatic plants), and a context (Atlarium database). This distinguishes it from sibling search tools like search_fish or search_algae, which target different domains.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or preferred scenarios. The sibling list implies a family of search tools, but the description does not explicitly differentiate when search_plants is the right choice.

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

search_productsSearch productsB
Read-onlyIdempotent
Inspect

Search public habitat products in the Atlarium database.

ParametersJSON Schema
NameRequiredDescriptionDefault
brandNoProduct brand filter.
limitNoMaximum number of public records to return, up to 50.
queryNoSearch text used to match public Atlarium records.
offsetNoZero-based pagination offset for public search results.
categoryNoProduct category filter.
languageNoOptional preferred response language: it, en or es.
use_caseNoUse-case filter such as filtration, lighting or fertilization.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description adds only the scope of 'public habitat products' and 'Atlarium database.' This is useful but minimal beyond the annotations; no extra behavioral traits such as pagination behavior or access constraints are disclosed.

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

Conciseness5/5

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

The description is a single concise sentence ('Search public habitat products in the Atlarium database.') that is front-loaded with the action and resource. Every word serves a purpose, and there is no redundancy or filler.

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

Completeness3/5

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

With 7 optional parameters, a full output schema, and annotations, the description is acceptable but minimal. It does not mention filtering capabilities, pagination, or language options, though these are present in the schema. The lack of usage guidance and alternative tool references leaves some context gaps.

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

Parameters3/5

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

The input schema has 100% description coverage for all seven parameters, so the schema carries the burden of parameter meaning. The description adds no additional parameter semantics, only mentioning 'public habitat products' which could imply filters but does not explicitly link to any schema properties.

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

Purpose4/5

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

The description clearly states the tool searches for products ('Search public habitat products in the Atlarium database'), using a specific verb and resource. It distinguishes from sibling search tools by focusing on 'products' rather than algae, diseases, or equipment, but it does not explicitly contrast with sibling tools like get_product_profile.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives (e.g., get_product_profile, list_product_brands, or other search_* tools). There is no mention of preferred scenarios or exclusions, leaving the agent to infer usage from the name and schema alone.

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

suggest_habitat_for_tankSuggest habitat for tankA
Read-onlyIdempotent
Inspect

Suggest a complete public habitat plan with species, plants, products, warnings, motivations and related guides.

ParametersJSON Schema
NameRequiredDescriptionDefault
ghNoWater hardness, conductivity or TDS-style value for advisory matching.
khNoWater hardness, conductivity or TDS-style value for advisory matching.
phNoWater pH value on the 0 to 14 scale.
co2NoCO2 setup level for the suggested habitat.
tdsNoTotal dissolved solids value for habitat matching.
limitNoMaximum number of suggestions to return, up to 30.
languageNoOptional preferred response language: it, en or es.
water_typeNoTarget habitat water or environment type.
light_levelNoLighting intensity preference for the suggested habitat.
tank_litersYesTank or habitat volume in liters.
temperatureNoWater or ambient temperature in degrees Celsius.
planted_tankNoWhen true, prefer plans designed for planted aquariums.
setup_intentNoPrimary setup intent for the habitat plan.
beginner_friendlyNoWhen true, prefer beginner-friendly habitat plans.
target_difficultyNoDesired care difficulty for the habitat plan.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, so the safety profile is covered. The description adds that the plan includes species, plants, products, warnings, motivations, and guides, which gives useful behavioral context about the scope of the result. This is helpful, though not rich enough to exceed a baseline given the strong annotations.

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

Conciseness5/5

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

The description is a single sentence, 17 words, with the verb and object front-loaded. Every phrase adds value ('complete', 'public', listing of plan components). No redundant information.

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

Completeness4/5

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

Despite having 15 parameters and an output schema, the description sufficiently conveys the tool's core purpose and result composition. The output schema likely covers the return structure. The description is brief but complete for the agent to decide invocation, though it could mention how parameters influence the plan.

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

Parameters3/5

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

Schema description coverage is 100% and all parameters are documented in the schema. The description does not add any extra meaning to any specific parameter, but the schema already handles this. Per the baseline rule for high coverage, a 3 is appropriate.

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

Purpose5/5

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

The description states it 'Suggest a complete public habitat plan with species, plants, products, warnings, motivations and related guides.' This uses a specific verb ('suggest') and resource ('habitat plan') while enumerating the plan's components, clearly differentiating it from the sibling 'suggest_species_for_tank' which focuses only on species.

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

Usage Guidelines4/5

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

The description clearly implies when to use this tool: when a complete habitat plan is needed rather than a single-species suggestion. However, it does not explicitly state exclusions or name alternatives, so it misses the 'when-not / alternatives' bar for a 5.

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

suggest_species_for_tankSuggest species for tankA
Read-onlyIdempotent
Inspect

Suggest compatible aquatic species based on tank size and water parameters.

ParametersJSON Schema
NameRequiredDescriptionDefault
ghNoWater hardness, conductivity or TDS-style value for advisory matching.
khNoWater hardness, conductivity or TDS-style value for advisory matching.
phNoWater pH value on the 0 to 14 scale.
limitNoMaximum number of suggestions to return, up to 30.
languageNoOptional preferred response language: it, en or es.
tank_litersYesTank or habitat volume in liters.
temperatureNoWater or ambient temperature in degrees Celsius.
planted_tankNoWhen true, prefer suggestions compatible with planted aquariums.
beginner_friendlyNoWhen true, prefer species that are suitable for beginners.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYes
toolYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is known. The description adds context by specifying that suggestions are 'based on tank size and water parameters,' which communicates scope. However, it does not reveal additional behavior such as ranking, default behavior when parameters are missing, or output size.

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

Conciseness5/5

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

The description is one 12-word sentence, extremely efficient, and front-loaded with the verb and object. Every word contributes to stating the core purpose with zero waste. This meets the standard of appropriately concise.

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

Completeness3/5

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

With good annotations, a fully described schema, and an output schema present, the description only needs to add context for when to use the tool. It explains the core inputs but does not distinguish from closely related siblings like 'suggest_habitat_for_tank' or 'check_species_compatibility', leaving the context only partially complete.

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

Parameters3/5

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

Schema description coverage is 100%, so every parameter is already documented with descriptions. The description's mention of 'tank size and water parameters' aligns with the schema but adds no new details beyond it. Baseline of 3 is appropriate because the schema carries the burden.

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

Purpose5/5

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

The description clearly states the tool's function: 'Suggest compatible aquatic species based on tank size and water parameters.' It uses a specific verb ('suggest') and resource ('species') and differentiates from sibling tools like 'suggest_habitat_for_tank' (habitats) and 'check_species_compatibility' (checking existing species).

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. Unlike the high-calibration example that names a sibling tool for alternative scenarios, this description does not mention 'check_species_compatibility' or 'suggest_habitat_for_tank' as alternatives, nor any conditions for use.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 12 tool updates
    • Changedget_algae_profile1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"Single safe public Atlarium slug without path separators."New value: +"Exact single-segment slug returned by the related Atlarium search tool."
    • Changedget_disease_profile1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"Single safe public Atlarium slug without path separators."New value: +"Exact single-segment slug returned by the related Atlarium search tool."
    • Changedget_equipment_profile1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"Safe public Atlarium slug path made of one or more path segments."New value: +"Exact safe slug path returned by the related Atlarium search tool."
    • Changedget_fertilization_regime1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"Single safe public Atlarium slug without path separators."New value: +"Exact single-segment slug returned by the related Atlarium search tool."
    • Changedget_fertilizer_profile1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"Safe public Atlarium slug path made of one or more path segments."New value: +"Exact safe slug path returned by the related Atlarium search tool."
    • Changedget_fish_profile1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"Single safe public Atlarium slug without path separators."New value: +"Exact single-segment slug returned by the related Atlarium search tool."
    • Changedget_guide1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"Safe public Atlarium slug path made of one or more path segments."New value: +"Exact safe slug path returned by the related Atlarium search tool."
    • Changedget_medicine_profile1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"Single safe public Atlarium slug without path separators."New value: +"Exact single-segment slug returned by the related Atlarium search tool."
    • Changedget_plant_problem_profile1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"Single safe public Atlarium slug without path separators."New value: +"Exact single-segment slug returned by the related Atlarium search tool."
    • Changedget_plant_profile1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"Single safe public Atlarium slug without path separators."New value: +"Exact single-segment slug returned by the related Atlarium search tool."
    • Changedget_product_profile1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"Safe public Atlarium slug path made of one or more path segments."New value: +"Exact safe slug path returned by the related Atlarium search tool."
    • Changedget_water_parameters1 field changed
      • changedInput schema / properties / slug / description
        Previous value: -"Single safe public Atlarium slug without path separators."New value: +"Exact single-segment slug returned by the related Atlarium search tool."
  2. 39 tool updates
    • Changedcalculate_equipment_requirements2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedcalculate_fertilizer_dose2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedcalculate_nutrient_gaps2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedcalculate_tank_volume2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedcalculate_tank_weight2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedcalculate_water_change2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedcalculate_water_chemistry2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedcalculate_weekly_dose_totals2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedcheck_species_compatibility2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedconvert_units2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedgenerate_fertilization_plan2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedget_algae_profile2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedget_disease_profile2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedget_equipment_profile2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedget_fertilization_regime2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedget_fertilizer_profile2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedget_fish_profile2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedget_guide2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedget_medicine_profile2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedget_plant_problem_profile2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedget_plant_profile2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedget_product_profile2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedget_water_parameters2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedlist_product_brands2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedlist_product_categories2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedmatch_diagnostic_profiles2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedsearch_algae2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedsearch_diseases2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedsearch_equipment2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedsearch_fertilization_regimes2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedsearch_fertilizers2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedsearch_fish2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedsearch_guides2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedsearch_medicines2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedsearch_plant_problems2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedsearch_plants2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedsearch_products2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedsuggest_habitat_for_tank2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
    • Changedsuggest_species_for_tank2 fields changed
      • removedOutput schema / properties / generated_at
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "data",
        -  "generated_at",
        -  "tool"
        -]New value: +[
        +  "data",
        +  "tool"
        +]
  3. 39 tool updates
    • Changedcalculate_equipment_requirements14 fields changed
      • addedInput schema / properties / electricity / description
        Added value: +"Electricity cost and usage calculation input."
      • addedInput schema / properties / electricity / properties / cost_per_kwh / description
        Added value: +"Electricity cost per kWh."
      • addedInput schema / properties / electricity / properties / duty_cycle_percent / description
        Added value: +"Estimated duty cycle percentage."
      • addedInput schema / properties / electricity / properties / hours_per_day / description
        Added value: +"Daily runtime in hours."
      • addedInput schema / properties / electricity / properties / wattage / description
        Added value: +"Equipment wattage."
      • addedInput schema / properties / heater / description
        Added value: +"Heater sizing input."
      • addedInput schema / properties / heater / properties / ambient_c / description
        Added value: +"Ambient room temperature in Celsius."
      • addedInput schema / properties / heater / properties / insulation / description
        Added value: +"Tank insulation quality."
      • addedInput schema / properties / heater / properties / target_c / description
        Added value: +"Target water temperature in Celsius."
      • addedInput schema / properties / heater / properties / volume_liters / description
        Added value: +"Tank volume in liters for heater sizing."
      • addedInput schema / properties / lighting / description
        Added value: +"Lighting estimate input."
      • addedInput schema / properties / lighting / properties / lumens / description
        Added value: +"Lighting output in lumens."
      • addedInput schema / properties / lighting / properties / volume_liters / description
        Added value: +"Tank volume in liters for lighting estimates."
      • addedInput schema / properties / lighting / properties / watts / description
        Added value: +"Lighting wattage."
    • Changedcalculate_fertilizer_dose3 fields changed
      • addedInput schema / properties / brand_name / description
        Added value: +"Optional public fertilizer brand name."
      • addedInput schema / properties / product_name / description
        Added value: +"Public fertilizer product name."
      • addedInput schema / properties / volume_liters / description
        Added value: +"Tank or habitat volume in liters."
    • Changedcalculate_nutrient_gaps41 fields changed
      • addedInput schema / properties / items / description
        Added value: +"Optional supplied fertilization plan items to analyze."
      • addedInput schema / properties / items / items / properties / brand_name / description
        Added value: +"Optional fertilizer brand name for this dosing item."
      • addedInput schema / properties / items / items / properties / days_of_week / description
        Added value: +"Scheduled dosing days as numbers from 1 to 7."
      • addedInput schema / properties / items / items / properties / days_of_week / items / description
        Added value: +"Day of week number from 1 to 7."
      • addedInput schema / properties / items / items / properties / dose_unit / description
        Added value: +"Dose unit, defaulting to ml."
      • addedInput schema / properties / items / items / properties / dose_value / description
        Added value: +"Dose amount per scheduled application."
      • addedInput schema / properties / items / items / properties / method / description
        Added value: +"Dosing method for the fertilizer item."
      • addedInput schema / properties / items / items / properties / notes / description
        Added value: +"Optional non-persistent notes for this dosing item."
      • addedInput schema / properties / items / items / properties / product_name / description
        Added value: +"Fertilizer product name for this dosing item."
      • addedInput schema / properties / items / items / properties / sort_order / description
        Added value: +"Optional sort order for displaying plan items."
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / measurements / description
        Added value: +"Optional current measurements for nutrient-gap calculations."
      • addedInput schema / properties / measurements / items / properties / kind / description
        Added value: +"Measured nutrient or water parameter name."
      • addedInput schema / properties / measurements / items / properties / measured_at / description
        Added value: +"Optional ISO datetime for when the measurement was taken."
      • changedInput schema / properties / measurements / items / properties / value / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / measurements / items / properties / value / description
        Added value: +"Measured numeric value; omit or use null when unknown."
      • addedInput schema / properties / regime / description
        Added value: +"Optional fertilization regime name or strategy."
      • addedInput schema / properties / targets / description
        Added value: +"Optional target nutrient concentrations."
      • changedInput schema / properties / targets / properties / boron_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / boron_mg_l / description
        Added value: +"Target boron concentration in mg/L."
      • changedInput schema / properties / targets / properties / calcium_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / calcium_mg_l / description
        Added value: +"Target calcium concentration in mg/L."
      • changedInput schema / properties / targets / properties / copper_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / copper_mg_l / description
        Added value: +"Target copper concentration in mg/L."
      • changedInput schema / properties / targets / properties / iron_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / iron_mg_l / description
        Added value: +"Target iron concentration in mg/L."
      • changedInput schema / properties / targets / properties / magnesium_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / magnesium_mg_l / description
        Added value: +"Target magnesium concentration in mg/L."
      • changedInput schema / properties / targets / properties / manganese_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / manganese_mg_l / description
        Added value: +"Target manganese concentration in mg/L."
      • changedInput schema / properties / targets / properties / molybdenum_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / molybdenum_mg_l / description
        Added value: +"Target molybdenum concentration in mg/L."
      • changedInput schema / properties / targets / properties / nitrogen_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / nitrogen_mg_l / description
        Added value: +"Target nitrogen concentration in mg/L."
      • changedInput schema / properties / targets / properties / phosphorus_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / phosphorus_mg_l / description
        Added value: +"Target phosphorus concentration in mg/L."
      • changedInput schema / properties / targets / properties / potassium_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / potassium_mg_l / description
        Added value: +"Target potassium concentration in mg/L."
      • changedInput schema / properties / targets / properties / zinc_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / zinc_mg_l / description
        Added value: +"Target zinc concentration in mg/L."
      • addedInput schema / properties / volume_liters / description
        Added value: +"Tank or habitat volume in liters."
    • Changedcalculate_tank_volume11 fields changed
      • addedInput schema / properties / bow_depth_cm / description
        Added value: +"Curved front depth in centimeters for bow-front tanks."
      • addedInput schema / properties / diameter_cm / description
        Added value: +"Cylinder diameter in centimeters."
      • addedInput schema / properties / glass_thickness_mm / description
        Added value: +"Glass thickness in millimeters for net volume estimates."
      • addedInput schema / properties / hardscape_displacement_liters / description
        Added value: +"Estimated hardscape displacement in liters."
      • addedInput schema / properties / height_cm / description
        Added value: +"Tank height in centimeters."
      • addedInput schema / properties / length_cm / description
        Added value: +"Tank length in centimeters."
      • addedInput schema / properties / shape / description
        Added value: +"Tank shape: rectangular, cylindrical or bow-front."
      • addedInput schema / properties / substrate_depth_cm / description
        Added value: +"Substrate depth in centimeters."
      • addedInput schema / properties / water_density_kg_per_liter / description
        Added value: +"Water density in kilograms per liter."
      • addedInput schema / properties / water_height_cm / description
        Added value: +"Actual filled water height in centimeters."
      • addedInput schema / properties / width_cm / description
        Added value: +"Tank width in centimeters."
    • Changedcalculate_tank_weight16 fields changed
      • addedInput schema / properties / bow_depth_cm / description
        Added value: +"Curved front depth in centimeters for bow-front tanks."
      • addedInput schema / properties / diameter_cm / description
        Added value: +"Cylinder diameter in centimeters."
      • addedInput schema / properties / equipment_weight_kg / description
        Added value: +"Additional equipment weight in kilograms."
      • addedInput schema / properties / glass_thickness_mm / description
        Added value: +"Glass thickness in millimeters for net volume estimates."
      • addedInput schema / properties / glass_weight_override_kg / description
        Added value: +"Known glass weight override in kilograms."
      • addedInput schema / properties / hardscape_displacement_liters / description
        Added value: +"Estimated hardscape displacement in liters."
      • addedInput schema / properties / hardscape_weight_kg / description
        Added value: +"Hardscape weight in kilograms."
      • addedInput schema / properties / height_cm / description
        Added value: +"Tank height in centimeters."
      • addedInput schema / properties / length_cm / description
        Added value: +"Tank length in centimeters."
      • addedInput schema / properties / shape / description
        Added value: +"Tank shape: rectangular, cylindrical or bow-front."
      • addedInput schema / properties / substrate_density_kg_per_liter / description
        Added value: +"Substrate density in kilograms per liter."
      • addedInput schema / properties / substrate_depth_cm / description
        Added value: +"Substrate depth in centimeters."
      • addedInput schema / properties / substrate_weight_override_kg / description
        Added value: +"Known substrate weight override in kilograms."
      • addedInput schema / properties / water_density_kg_per_liter / description
        Added value: +"Water density in kilograms per liter."
      • addedInput schema / properties / water_height_cm / description
        Added value: +"Actual filled water height in centimeters."
      • addedInput schema / properties / width_cm / description
        Added value: +"Tank width in centimeters."
    • Changedcalculate_water_change3 fields changed
      • addedInput schema / properties / change_percent / description
        Added value: +"Percent of tank volume changed per water change."
      • addedInput schema / properties / changes_per_week / description
        Added value: +"Number of water changes per week."
      • addedInput schema / properties / volume_liters / description
        Added value: +"Tank volume or change volume in liters."
    • Changedcalculate_water_chemistry20 fields changed
      • addedInput schema / properties / carbonate_hardness / description
        Added value: +"Carbonate hardness conversion input."
      • addedInput schema / properties / carbonate_hardness / properties / unit / description
        Added value: +"Carbonate hardness input unit."
      • addedInput schema / properties / carbonate_hardness / properties / value / description
        Added value: +"Carbonate hardness value."
      • addedInput schema / properties / co2 / description
        Added value: +"CO2 estimation input from KH and pH."
      • addedInput schema / properties / co2 / properties / kh_dkh / description
        Added value: +"Carbonate hardness in dKH."
      • addedInput schema / properties / co2 / properties / ph / description
        Added value: +"Water pH value on the 0 to 14 scale."
      • addedInput schema / properties / general_hardness / description
        Added value: +"General hardness conversion input."
      • addedInput schema / properties / general_hardness / properties / unit / description
        Added value: +"General hardness input unit."
      • addedInput schema / properties / general_hardness / properties / value / description
        Added value: +"General hardness value."
      • addedInput schema / properties / salinity / description
        Added value: +"Salinity calculation input."
      • addedInput schema / properties / salinity / properties / current_ppt / description
        Added value: +"Current salinity in parts per thousand."
      • addedInput schema / properties / salinity / properties / salinity_ppt / description
        Added value: +"Measured or source salinity in parts per thousand."
      • addedInput schema / properties / salinity / properties / target_ppt / description
        Added value: +"Target salinity in parts per thousand."
      • addedInput schema / properties / salinity / properties / temperature_c / description
        Added value: +"Water temperature in Celsius for salinity adjustment."
      • addedInput schema / properties / salinity / properties / volume_liters / description
        Added value: +"Water volume in liters for salinity calculations."
      • addedInput schema / properties / water_mix / description
        Added value: +"Water-mixing calculation input."
      • addedInput schema / properties / water_mix / properties / source1_gh / description
        Added value: +"General hardness of source water 1."
      • addedInput schema / properties / water_mix / properties / source2_gh / description
        Added value: +"General hardness of source water 2."
      • addedInput schema / properties / water_mix / properties / target_gh / description
        Added value: +"Target general hardness for the mix."
      • addedInput schema / properties / water_mix / properties / total_liters / description
        Added value: +"Total mixed water volume in liters."
    • Changedcalculate_weekly_dose_totals41 fields changed
      • addedInput schema / properties / items / description
        Added value: +"Optional supplied fertilization plan items to analyze."
      • addedInput schema / properties / items / items / properties / brand_name / description
        Added value: +"Optional fertilizer brand name for this dosing item."
      • addedInput schema / properties / items / items / properties / days_of_week / description
        Added value: +"Scheduled dosing days as numbers from 1 to 7."
      • addedInput schema / properties / items / items / properties / days_of_week / items / description
        Added value: +"Day of week number from 1 to 7."
      • addedInput schema / properties / items / items / properties / dose_unit / description
        Added value: +"Dose unit, defaulting to ml."
      • addedInput schema / properties / items / items / properties / dose_value / description
        Added value: +"Dose amount per scheduled application."
      • addedInput schema / properties / items / items / properties / method / description
        Added value: +"Dosing method for the fertilizer item."
      • addedInput schema / properties / items / items / properties / notes / description
        Added value: +"Optional non-persistent notes for this dosing item."
      • addedInput schema / properties / items / items / properties / product_name / description
        Added value: +"Fertilizer product name for this dosing item."
      • addedInput schema / properties / items / items / properties / sort_order / description
        Added value: +"Optional sort order for displaying plan items."
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / measurements / description
        Added value: +"Optional current measurements for nutrient-gap calculations."
      • addedInput schema / properties / measurements / items / properties / kind / description
        Added value: +"Measured nutrient or water parameter name."
      • addedInput schema / properties / measurements / items / properties / measured_at / description
        Added value: +"Optional ISO datetime for when the measurement was taken."
      • changedInput schema / properties / measurements / items / properties / value / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / measurements / items / properties / value / description
        Added value: +"Measured numeric value; omit or use null when unknown."
      • addedInput schema / properties / regime / description
        Added value: +"Optional fertilization regime name or strategy."
      • addedInput schema / properties / targets / description
        Added value: +"Optional target nutrient concentrations."
      • changedInput schema / properties / targets / properties / boron_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / boron_mg_l / description
        Added value: +"Target boron concentration in mg/L."
      • changedInput schema / properties / targets / properties / calcium_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / calcium_mg_l / description
        Added value: +"Target calcium concentration in mg/L."
      • changedInput schema / properties / targets / properties / copper_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / copper_mg_l / description
        Added value: +"Target copper concentration in mg/L."
      • changedInput schema / properties / targets / properties / iron_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / iron_mg_l / description
        Added value: +"Target iron concentration in mg/L."
      • changedInput schema / properties / targets / properties / magnesium_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / magnesium_mg_l / description
        Added value: +"Target magnesium concentration in mg/L."
      • changedInput schema / properties / targets / properties / manganese_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / manganese_mg_l / description
        Added value: +"Target manganese concentration in mg/L."
      • changedInput schema / properties / targets / properties / molybdenum_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / molybdenum_mg_l / description
        Added value: +"Target molybdenum concentration in mg/L."
      • changedInput schema / properties / targets / properties / nitrogen_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / nitrogen_mg_l / description
        Added value: +"Target nitrogen concentration in mg/L."
      • changedInput schema / properties / targets / properties / phosphorus_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / phosphorus_mg_l / description
        Added value: +"Target phosphorus concentration in mg/L."
      • changedInput schema / properties / targets / properties / potassium_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / potassium_mg_l / description
        Added value: +"Target potassium concentration in mg/L."
      • changedInput schema / properties / targets / properties / zinc_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / zinc_mg_l / description
        Added value: +"Target zinc concentration in mg/L."
      • addedInput schema / properties / volume_liters / description
        Added value: +"Tank or habitat volume in liters."
    • Changedcheck_species_compatibility8 fields changed
      • addedInput schema / properties / gh / description
        Added value: +"Water hardness, conductivity or TDS-style value for advisory matching."
      • addedInput schema / properties / kh / description
        Added value: +"Water hardness, conductivity or TDS-style value for advisory matching."
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / ph / description
        Added value: +"Water pH value on the 0 to 14 scale."
      • addedInput schema / properties / species / description
        Added value: +"List of species names or slugs to compare, from 1 to 20 entries."
      • addedInput schema / properties / species / items / description
        Added value: +"Species common name, scientific name or slug to evaluate."
      • addedInput schema / properties / tank_liters / description
        Added value: +"Tank or habitat volume in liters."
      • addedInput schema / properties / temperature / description
        Added value: +"Water or ambient temperature in degrees Celsius."
    • Changedconvert_units15 fields changed
      • addedInput schema / properties / length / description
        Added value: +"Length conversion input."
      • addedInput schema / properties / length / properties / unit / description
        Added value: +"Length input unit."
      • addedInput schema / properties / length / properties / value / description
        Added value: +"Length value to convert."
      • addedInput schema / properties / temperature / description
        Added value: +"Temperature conversion input."
      • addedInput schema / properties / temperature / properties / unit / description
        Added value: +"Temperature input unit."
      • addedInput schema / properties / temperature / properties / value / description
        Added value: +"Temperature value to convert."
      • addedInput schema / properties / temperature_delta / description
        Added value: +"Temperature difference input."
      • addedInput schema / properties / temperature_delta / properties / from_c / description
        Added value: +"Starting temperature in Celsius."
      • addedInput schema / properties / temperature_delta / properties / to_c / description
        Added value: +"Target temperature in Celsius."
      • addedInput schema / properties / volume / description
        Added value: +"Volume conversion input."
      • addedInput schema / properties / volume / properties / unit / description
        Added value: +"Volume input unit."
      • addedInput schema / properties / volume / properties / value / description
        Added value: +"Volume value to convert."
      • addedInput schema / properties / weight / description
        Added value: +"Weight conversion input."
      • addedInput schema / properties / weight / properties / unit / description
        Added value: +"Weight input unit."
      • addedInput schema / properties / weight / properties / value / description
        Added value: +"Weight value to convert."
    • Changedgenerate_fertilization_plan41 fields changed
      • addedInput schema / properties / items / description
        Added value: +"Optional supplied fertilization plan items to analyze."
      • addedInput schema / properties / items / items / properties / brand_name / description
        Added value: +"Optional fertilizer brand name for this dosing item."
      • addedInput schema / properties / items / items / properties / days_of_week / description
        Added value: +"Scheduled dosing days as numbers from 1 to 7."
      • addedInput schema / properties / items / items / properties / days_of_week / items / description
        Added value: +"Day of week number from 1 to 7."
      • addedInput schema / properties / items / items / properties / dose_unit / description
        Added value: +"Dose unit, defaulting to ml."
      • addedInput schema / properties / items / items / properties / dose_value / description
        Added value: +"Dose amount per scheduled application."
      • addedInput schema / properties / items / items / properties / method / description
        Added value: +"Dosing method for the fertilizer item."
      • addedInput schema / properties / items / items / properties / notes / description
        Added value: +"Optional non-persistent notes for this dosing item."
      • addedInput schema / properties / items / items / properties / product_name / description
        Added value: +"Fertilizer product name for this dosing item."
      • addedInput schema / properties / items / items / properties / sort_order / description
        Added value: +"Optional sort order for displaying plan items."
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / measurements / description
        Added value: +"Optional current measurements for nutrient-gap calculations."
      • addedInput schema / properties / measurements / items / properties / kind / description
        Added value: +"Measured nutrient or water parameter name."
      • addedInput schema / properties / measurements / items / properties / measured_at / description
        Added value: +"Optional ISO datetime for when the measurement was taken."
      • changedInput schema / properties / measurements / items / properties / value / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / measurements / items / properties / value / description
        Added value: +"Measured numeric value; omit or use null when unknown."
      • addedInput schema / properties / regime / description
        Added value: +"Optional fertilization regime name or strategy."
      • addedInput schema / properties / targets / description
        Added value: +"Optional target nutrient concentrations."
      • changedInput schema / properties / targets / properties / boron_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / boron_mg_l / description
        Added value: +"Target boron concentration in mg/L."
      • changedInput schema / properties / targets / properties / calcium_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / calcium_mg_l / description
        Added value: +"Target calcium concentration in mg/L."
      • changedInput schema / properties / targets / properties / copper_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / copper_mg_l / description
        Added value: +"Target copper concentration in mg/L."
      • changedInput schema / properties / targets / properties / iron_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / iron_mg_l / description
        Added value: +"Target iron concentration in mg/L."
      • changedInput schema / properties / targets / properties / magnesium_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / magnesium_mg_l / description
        Added value: +"Target magnesium concentration in mg/L."
      • changedInput schema / properties / targets / properties / manganese_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / manganese_mg_l / description
        Added value: +"Target manganese concentration in mg/L."
      • changedInput schema / properties / targets / properties / molybdenum_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / molybdenum_mg_l / description
        Added value: +"Target molybdenum concentration in mg/L."
      • changedInput schema / properties / targets / properties / nitrogen_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / nitrogen_mg_l / description
        Added value: +"Target nitrogen concentration in mg/L."
      • changedInput schema / properties / targets / properties / phosphorus_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / phosphorus_mg_l / description
        Added value: +"Target phosphorus concentration in mg/L."
      • changedInput schema / properties / targets / properties / potassium_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / potassium_mg_l / description
        Added value: +"Target potassium concentration in mg/L."
      • changedInput schema / properties / targets / properties / zinc_mg_l / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "description": "Finite numeric value for advisory calculations.",
        +    "type": "number"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedInput schema / properties / targets / properties / zinc_mg_l / description
        Added value: +"Target zinc concentration in mg/L."
      • addedInput schema / properties / volume_liters / description
        Added value: +"Tank or habitat volume in liters."
    • Changedget_algae_profile2 fields changed
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / slug / description
        Added value: +"Single safe public Atlarium slug without path separators."
    • Changedget_disease_profile2 fields changed
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / slug / description
        Added value: +"Single safe public Atlarium slug without path separators."
    • Changedget_equipment_profile2 fields changed
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / slug / description
        Added value: +"Safe public Atlarium slug path made of one or more path segments."
    • Changedget_fertilization_regime2 fields changed
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / slug / description
        Added value: +"Single safe public Atlarium slug without path separators."
    • Changedget_fertilizer_profile2 fields changed
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / slug / description
        Added value: +"Safe public Atlarium slug path made of one or more path segments."
    • Changedget_fish_profile2 fields changed
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / slug / description
        Added value: +"Single safe public Atlarium slug without path separators."
    • Changedget_guide2 fields changed
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / slug / description
        Added value: +"Safe public Atlarium slug path made of one or more path segments."
    • Changedget_medicine_profile2 fields changed
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / slug / description
        Added value: +"Single safe public Atlarium slug without path separators."
    • Changedget_plant_problem_profile2 fields changed
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / slug / description
        Added value: +"Single safe public Atlarium slug without path separators."
    • Changedget_plant_profile2 fields changed
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / slug / description
        Added value: +"Single safe public Atlarium slug without path separators."
    • Changedget_product_profile2 fields changed
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / slug / description
        Added value: +"Safe public Atlarium slug path made of one or more path segments."
    • Changedget_water_parameters3 fields changed
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / slug / description
        Added value: +"Single safe public Atlarium slug without path separators."
      • addedInput schema / properties / type / description
        Added value: +"Profile type to read water parameters for."
    • Changedlist_product_brands2 fields changed
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / query / description
        Added value: +"Search text used to match public Atlarium records."
    • Changedlist_product_categories2 fields changed
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / type / description
        Added value: +"Limit categories to equipment or fertilizer catalog entries."
    • Changedmatch_diagnostic_profiles7 fields changed
      • addedInput schema / properties / difficulty / description
        Added value: +"Diagnostic difficulty filter from 1 to 5."
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of public records to return, up to 50."
      • addedInput schema / properties / offset / description
        Added value: +"Zero-based pagination offset for public search results."
      • addedInput schema / properties / query / description
        Added value: +"Search text used to match public Atlarium records."
      • addedInput schema / properties / type / description
        Added value: +"Diagnostic profile type filter."
      • addedInput schema / properties / water_type / description
        Added value: +"Water or habitat type filter."
    • Changedsearch_algae7 fields changed
      • addedInput schema / properties / difficulty / description
        Added value: +"Diagnostic difficulty filter from 1 to 5."
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of public records to return, up to 50."
      • addedInput schema / properties / offset / description
        Added value: +"Zero-based pagination offset for public search results."
      • addedInput schema / properties / query / description
        Added value: +"Search text used to match public Atlarium records."
      • addedInput schema / properties / type / description
        Added value: +"Diagnostic profile type filter."
      • addedInput schema / properties / water_type / description
        Added value: +"Water or habitat type filter."
    • Changedsearch_diseases7 fields changed
      • addedInput schema / properties / difficulty / description
        Added value: +"Diagnostic difficulty filter from 1 to 5."
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of public records to return, up to 50."
      • addedInput schema / properties / offset / description
        Added value: +"Zero-based pagination offset for public search results."
      • addedInput schema / properties / query / description
        Added value: +"Search text used to match public Atlarium records."
      • addedInput schema / properties / type / description
        Added value: +"Diagnostic profile type filter."
      • addedInput schema / properties / water_type / description
        Added value: +"Water or habitat type filter."
    • Changedsearch_equipment7 fields changed
      • addedInput schema / properties / brand / description
        Added value: +"Product brand filter."
      • addedInput schema / properties / category / description
        Added value: +"Product category filter."
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of public records to return, up to 50."
      • addedInput schema / properties / offset / description
        Added value: +"Zero-based pagination offset for public search results."
      • addedInput schema / properties / query / description
        Added value: +"Search text used to match public Atlarium records."
      • addedInput schema / properties / use_case / description
        Added value: +"Use-case filter such as filtration, lighting or fertilization."
    • Changedsearch_fertilization_regimes5 fields changed
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of public records to return, up to 50."
      • addedInput schema / properties / offset / description
        Added value: +"Zero-based pagination offset for public search results."
      • addedInput schema / properties / query / description
        Added value: +"Search text used to match public Atlarium records."
      • addedInput schema / properties / topic / description
        Added value: +"Fertilization regime topic filter."
    • Changedsearch_fertilizers7 fields changed
      • addedInput schema / properties / brand / description
        Added value: +"Product brand filter."
      • addedInput schema / properties / category / description
        Added value: +"Product category filter."
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of public records to return, up to 50."
      • addedInput schema / properties / offset / description
        Added value: +"Zero-based pagination offset for public search results."
      • addedInput schema / properties / query / description
        Added value: +"Search text used to match public Atlarium records."
      • addedInput schema / properties / use_case / description
        Added value: +"Use-case filter such as filtration, lighting or fertilization."
    • Changedsearch_fish16 fields changed
      • addedInput schema / properties / care_level / description
        Added value: +"Care-level filter, for example easy, moderate or expert."
      • addedInput schema / properties / gh_max / description
        Added value: +"Maximum general hardness filter."
      • addedInput schema / properties / gh_min / description
        Added value: +"Minimum general hardness filter."
      • addedInput schema / properties / kh_max / description
        Added value: +"Maximum carbonate hardness filter."
      • addedInput schema / properties / kh_min / description
        Added value: +"Minimum carbonate hardness filter."
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of public records to return, up to 50."
      • addedInput schema / properties / max_tank_liters / description
        Added value: +"Maximum tank volume filter in liters."
      • addedInput schema / properties / min_tank_liters / description
        Added value: +"Minimum tank volume filter in liters."
      • addedInput schema / properties / offset / description
        Added value: +"Zero-based pagination offset for public search results."
      • addedInput schema / properties / ph_max / description
        Added value: +"Maximum acceptable pH filter."
      • addedInput schema / properties / ph_min / description
        Added value: +"Minimum acceptable pH filter."
      • addedInput schema / properties / query / description
        Added value: +"Search text used to match public Atlarium records."
      • addedInput schema / properties / temperament / description
        Added value: +"Temperament filter, for example peaceful or aggressive."
      • addedInput schema / properties / temperature_max / description
        Added value: +"Maximum temperature filter in Celsius."
      • addedInput schema / properties / temperature_min / description
        Added value: +"Minimum temperature filter in Celsius."
    • Changedsearch_guides5 fields changed
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of public records to return, up to 50."
      • addedInput schema / properties / offset / description
        Added value: +"Zero-based pagination offset for public search results."
      • addedInput schema / properties / query / description
        Added value: +"Search text used to match public Atlarium records."
      • addedInput schema / properties / topic / description
        Added value: +"Guide topic filter."
    • Changedsearch_medicines7 fields changed
      • addedInput schema / properties / difficulty / description
        Added value: +"Diagnostic difficulty filter from 1 to 5."
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of public records to return, up to 50."
      • addedInput schema / properties / offset / description
        Added value: +"Zero-based pagination offset for public search results."
      • addedInput schema / properties / query / description
        Added value: +"Search text used to match public Atlarium records."
      • addedInput schema / properties / type / description
        Added value: +"Diagnostic profile type filter."
      • addedInput schema / properties / water_type / description
        Added value: +"Water or habitat type filter."
    • Changedsearch_plant_problems7 fields changed
      • addedInput schema / properties / difficulty / description
        Added value: +"Diagnostic difficulty filter from 1 to 5."
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of public records to return, up to 50."
      • addedInput schema / properties / offset / description
        Added value: +"Zero-based pagination offset for public search results."
      • addedInput schema / properties / query / description
        Added value: +"Search text used to match public Atlarium records."
      • addedInput schema / properties / type / description
        Added value: +"Diagnostic profile type filter."
      • addedInput schema / properties / water_type / description
        Added value: +"Water or habitat type filter."
    • Changedsearch_plants9 fields changed
      • addedInput schema / properties / co2_requirement / description
        Added value: +"CO2 requirement filter."
      • addedInput schema / properties / difficulty / description
        Added value: +"Plant difficulty filter."
      • addedInput schema / properties / growth_rate / description
        Added value: +"Growth-rate filter."
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / light_requirement / description
        Added value: +"Lighting requirement filter."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of public records to return, up to 50."
      • addedInput schema / properties / offset / description
        Added value: +"Zero-based pagination offset for public search results."
      • addedInput schema / properties / placement / description
        Added value: +"Aquascape placement filter such as foreground or background."
      • addedInput schema / properties / query / description
        Added value: +"Search text used to match public Atlarium records."
    • Changedsearch_products7 fields changed
      • addedInput schema / properties / brand / description
        Added value: +"Product brand filter."
      • addedInput schema / properties / category / description
        Added value: +"Product category filter."
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of public records to return, up to 50."
      • addedInput schema / properties / offset / description
        Added value: +"Zero-based pagination offset for public search results."
      • addedInput schema / properties / query / description
        Added value: +"Search text used to match public Atlarium records."
      • addedInput schema / properties / use_case / description
        Added value: +"Use-case filter such as filtration, lighting or fertilization."
    • Changedsuggest_habitat_for_tank15 fields changed
      • addedInput schema / properties / beginner_friendly / description
        Added value: +"When true, prefer beginner-friendly habitat plans."
      • addedInput schema / properties / co2 / description
        Added value: +"CO2 setup level for the suggested habitat."
      • addedInput schema / properties / gh / description
        Added value: +"Water hardness, conductivity or TDS-style value for advisory matching."
      • addedInput schema / properties / kh / description
        Added value: +"Water hardness, conductivity or TDS-style value for advisory matching."
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / light_level / description
        Added value: +"Lighting intensity preference for the suggested habitat."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of suggestions to return, up to 30."
      • addedInput schema / properties / ph / description
        Added value: +"Water pH value on the 0 to 14 scale."
      • addedInput schema / properties / planted_tank / description
        Added value: +"When true, prefer plans designed for planted aquariums."
      • addedInput schema / properties / setup_intent / description
        Added value: +"Primary setup intent for the habitat plan."
      • addedInput schema / properties / tank_liters / description
        Added value: +"Tank or habitat volume in liters."
      • addedInput schema / properties / target_difficulty / description
        Added value: +"Desired care difficulty for the habitat plan."
      • addedInput schema / properties / tds / description
        Added value: +"Total dissolved solids value for habitat matching."
      • addedInput schema / properties / temperature / description
        Added value: +"Water or ambient temperature in degrees Celsius."
      • addedInput schema / properties / water_type / description
        Added value: +"Target habitat water or environment type."
    • Changedsuggest_species_for_tank9 fields changed
      • addedInput schema / properties / beginner_friendly / description
        Added value: +"When true, prefer species that are suitable for beginners."
      • addedInput schema / properties / gh / description
        Added value: +"Water hardness, conductivity or TDS-style value for advisory matching."
      • addedInput schema / properties / kh / description
        Added value: +"Water hardness, conductivity or TDS-style value for advisory matching."
      • addedInput schema / properties / language / description
        Added value: +"Optional preferred response language: it, en or es."
      • addedInput schema / properties / limit / description
        Added value: +"Maximum number of suggestions to return, up to 30."
      • addedInput schema / properties / ph / description
        Added value: +"Water pH value on the 0 to 14 scale."
      • addedInput schema / properties / planted_tank / description
        Added value: +"When true, prefer suggestions compatible with planted aquariums."
      • addedInput schema / properties / tank_liters / description
        Added value: +"Tank or habitat volume in liters."
      • addedInput schema / properties / temperature / description
        Added value: +"Water or ambient temperature in degrees Celsius."
  4. 28 tool updates
    • Addedcalculate_equipment_requirements
    • Addedcalculate_fertilizer_dose
    • Addedcalculate_nutrient_gaps
    • Addedcalculate_tank_volume
    • Addedcalculate_tank_weight
    • Addedcalculate_water_change
    • Addedcalculate_water_chemistry
    • Addedcalculate_weekly_dose_totals
    • Addedconvert_units
    • Addedgenerate_fertilization_plan
    • Addedget_algae_profile
    • Addedget_disease_profile
    • Addedget_equipment_profile
    • Addedget_fertilization_regime
    • Addedget_fertilizer_profile
    • Addedget_medicine_profile
    • Addedget_plant_problem_profile
    • Addedlist_product_brands
    • Addedlist_product_categories
    • Addedmatch_diagnostic_profiles
    • Addedsearch_algae
    • Addedsearch_diseases
    • Addedsearch_equipment
    • Addedsearch_fertilization_regimes
    • Addedsearch_fertilizers
    • Addedsearch_medicines
    • Addedsearch_plant_problems
    • Addedsuggest_habitat_for_tank
  5. 11 tool updates
    • Changedcheck_species_compatibility1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "data": {},
        +    "generated_at": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "data",
        +    "generated_at",
        +    "tool"
        +  ],
        +  "type": "object"
        +}
    • Changedget_fish_profile1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "data": {},
        +    "generated_at": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "data",
        +    "generated_at",
        +    "tool"
        +  ],
        +  "type": "object"
        +}
    • Changedget_guide1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "data": {},
        +    "generated_at": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "data",
        +    "generated_at",
        +    "tool"
        +  ],
        +  "type": "object"
        +}
    • Changedget_plant_profile1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "data": {},
        +    "generated_at": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "data",
        +    "generated_at",
        +    "tool"
        +  ],
        +  "type": "object"
        +}
    • Changedget_product_profile1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "data": {},
        +    "generated_at": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "data",
        +    "generated_at",
        +    "tool"
        +  ],
        +  "type": "object"
        +}
    • Changedget_water_parameters1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "data": {},
        +    "generated_at": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "data",
        +    "generated_at",
        +    "tool"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_fish1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "data": {},
        +    "generated_at": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "data",
        +    "generated_at",
        +    "tool"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_guides1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "data": {},
        +    "generated_at": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "data",
        +    "generated_at",
        +    "tool"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_plants1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "data": {},
        +    "generated_at": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "data",
        +    "generated_at",
        +    "tool"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_products1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "data": {},
        +    "generated_at": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "data",
        +    "generated_at",
        +    "tool"
        +  ],
        +  "type": "object"
        +}
    • Changedsuggest_species_for_tank1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "data": {},
        +    "generated_at": {
        +      "type": "string"
        +    },
        +    "tool": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "data",
        +    "generated_at",
        +    "tool"
        +  ],
        +  "type": "object"
        +}
  6. 11 tool updates
    • First observedcheck_species_compatibility
    • First observedget_fish_profile
    • First observedget_guide
    • First observedget_plant_profile
    • First observedget_product_profile
    • First observedget_water_parameters
    • First observedsearch_fish
    • First observedsearch_guides
    • First observedsearch_plants
    • First observedsearch_products
    • First observedsuggest_species_for_tank

Frequently Asked Questions

Discussions

No comments yet. Be the first to start the discussion!

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Global reptile & exotic pet knowledge base. 633 species, AI identification, genetics calculator, 12-dimension care, health diagnosis, pricing, provenance. Free 9 tools, 10 req/min.
    9
    1
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Provides access to FishBase marine biology data including species information, ecological data, distribution records, and morphological details. Enables species name validation and conversion between common and scientific names through natural language queries.
    8
    -
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that gives coding agents structured plant data for garden planning: species care profiles, companion checks that explain themselves, and frost-date planting windows derived from ten years of observed weather.
    4
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.