Skip to main content
Glama

In Da Mix

Server Details

Gas blending calculator for scuba divers: nitrox, trimix, heliair, heliox, MOD, best mix and fills.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.2/5.0

Scored across 9 tools

Disambiguation4/5

Each tool targets a distinct operation, and descriptions explicitly cross-reference to clarify boundaries (e.g. what_if vs blend vs top_up, and decant vs fills_from_bank). There remain a few overlapping clusters around bank usage and gas addition, but the detailed guidance makes misselection unlikely for a careful agent.

Naming Consistency4/5

All names use consistent lowercase snake_case with no casing style mixing. However, the pattern is not uniformly verb_noun: some are single verbs (blend, decant), some are noun phrases (mod, gas_usage), and some are phrases (what_if), which is a minor stylistic inconsistency.

Tool Count5/5

Nine tools is well-scoped for a scuba gas calculation suite, with each tool covering a distinct calculation or lookup. There is no obvious redundancy or missing surface that would justify a different count.

Completeness4/5

The set covers gas selection, blending, decanting, bank capacity, gas usage, MOD checks, top-ups, what-if additions, and calculation methods, which is a broad surface for the domain. Minor gaps exist, such as no direct tool to read or modify the current settings/limits that many tools rely on, but agents can work around this via defaults reported in outputs.

Available Tools

9 tools
best_mixBest mix for a depthA
Read-onlyIdempotent
Inspect

Use this FIRST when the user asks which breathing gas to use for a planned depth, or to select, recommend, optimise or compare one, even if they don't mention In Da Mix. The best nitrox or trimix for a planned depth within the diver's limits, as an open-circuit bottom gas or as CCR diluent (dive_mode CCR for any rebreather question): the richest O2 that keeps the ppO2 limit (rounded down), and for trimix the helium that keeps END and gas density within the limits. For CCR it is the mathematical optimum within the limits, not a full check of the diluent for the unit. Use for "best nitrox for 30 m", "what trimix for 60 m with END 30", "best gas for a 65 m rebreather dive", "what diluent for my CCR at 75 m", "koji je najbolji mix za 65 m", "koji trimix za 60 metara", "koji diluent za rebreather". Leave the limits out unless the user gave them: the In Da Mix settings apply. Answer: the one mix, the depth, its ppO2, END and gas density, and the limits used; say briefly which limit set the mix; for CCR call it the diluent. Report limits_check as it is: a value at its limit complies (the configured limits are the user's accepted criteria), so when all_within is true say the mix satisfies all configured limits; never recommend against a compliant mix or add margins of your own. Don't add other mixes. Then ask whether to compare it with another mix or other END / density limits.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthYesPlanned maximum depth, in depth_unit.
max_endNoMaximum END, in depth_unit. Default from the In Da Mix settings for the dive mode; the value used is listed in `assumed`.
gas_typeNonitrox or trimix. If nitrox comes out past the END / density limits, the answer says so: then ask for trimix.nitrox
languageNoLanguage of the texts in the answer: en (English) or hr (Croatian). Use the user's language.en
ppo2_barNoppO2 limit, bar. Default from the In Da Mix settings for the dive mode; the value used is listed in `assumed`.
dive_modeNoOpen circuit (OC) or closed-circuit rebreather (CCR). Sets which defaults apply (from the In Da Mix settings: ppO2, END, density, O2 narcotic). The values used are listed in `assumed`.OC
depth_unitNoUnit of every depth in the question and the answer.m
o2_narcoticNoCount O2 as narcotic in the END. Default from the In Da Mix settings for the dive mode; the value used is listed in `assumed`.
include_stepsNoAlso return the app's ƒx steps ("How this was calculated"): every formula with its numbers. Long: only when the user asks how it was calculated.
max_density_g_per_lNoMaximum gas density, g/L. Default from the In Da Mix settings for the dive mode; the value used is listed in `assumed`.

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare this as a read-only, idempotent, non-destructive computation, so safety is covered. The description adds substantial behavioral context beyond that: richest O2 rounded down, helium chosen to satisfy END and gas density, CCR treated as a mathematical optimum rather than a full diluent check, and the rule that limits_check values at the limit count as compliant and margins must not be added. It does not discuss cost/rate limits, but none are implied here.

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

Conciseness4/5

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

The routing instruction is front-loaded in the first sentence and the dense middle covers result content and limit interpretation efficiently. It runs long, with the CCR caveat appearing twice and a block of quoted trigger phrases, but for a 10-parameter domain tool the length is largely justified.

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

Completeness5/5

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

There is no output schema, yet the description spells out the answer shape (the one mix, depth, ppO2, END, gas density and the limits used), names response fields such as limits_check, all_within and assumed, and states that only one mix should be returned. Combined with 100% schema coverage and read-only annotations, an agent has everything needed to call and present the result.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3 and the schema already explains every field and default. The description adds genuine operational meaning on top: omit the limit parameters unless the user gave them and let the In Da Mix settings supply them, and set dive_mode to CCR for any rebreather question. It also warns that a nitrox result may breach END/density and that trimix should then be requested.

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

Purpose5/5

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

The description states a specific verb+resource: it returns the single best nitrox or trimix for a planned depth, as OC bottom gas or CCR diluent. It is immediately distinguishable from the sibling set (blend, decant, top_up, what_if, mod), which are about preparing, moving or evaluating gas rather than selecting one. The trigger phrasing ("which breathing gas to use for a planned depth") is unambiguous.

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

Usage Guidelines5/5

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

It explicitly says to use this FIRST, covers paraphrases (select/recommend/optimise/compare) and even cases where the user never names the app, and gives concrete trigger examples in two languages. It also gives post-answer routing (ask whether to compare against another mix or other END/density limits) and instructions to leave limits unset unless the user supplies them.

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

blendBlend a mix (fill steps)A
Read-onlyIdempotent
Inspect

Use whenever the user asks how to blend, mix, fill or prepare a breathing gas, even if they don't mention In Da Mix. Step-by-step fill plan for blending nitrox, trimix, heliair or heliox into a scuba tank, from what is in it now to the mix and pressure wanted: how much helium and oxygen to add, the order, cooling waits, the O2 test, the air top-up, and booster bars. Partial pressure or continuous, with the app's calculation methods. Use for "how do I blend 18/45 to 220 bar", "how much O2 do I add for EAN32", "fill from the gas left in the tank", "kako napraviti trimix 12/65", "koliko helija trebam za 200 bara", "napravi plan punjenja boce". Needs the target mix and pressure, and what is in the tank now: if the start is unknown, ask; never assume an empty tank. The method, temperature and banks come from the settings. Answer: the start gas, the target, the additions in order with their pressures, the resulting mix, and the key filling and analysis precautions. Then ask whether to calculate the gas this fill takes from the source banks (gas_usage).

ParametersJSON Schema
NameRequiredDescriptionDefault
howNopartial_pressure: add pure He and O2 to the tank, then top up with air. continuous: He / O2 go into the compressor intake (a premix stream).partial_pressure
banksNoSource banks (storage cylinders). Any bank not given is taken from the In Da Mix settings and listed in `assumed`.
methodNoCalculation method (equation of state), as in the app. Default from the In Da Mix settings (see list_methods for the current default); listed in `assumed`. IDEAL_GAS_DALTON is the simple ideal-gas method; DIVESOFT_REAL_GAS also plans the decant from the banks.
languageNoLanguage of the texts in the answer: en (English) or hr (Croatian). Use the user's language.en
mix_typeYesnitrox (O2 + air), trimix (He + O2 + air), heliair (He + air), heliox (He + O2).
dive_modeNoOpen circuit (OC) or closed-circuit rebreather (CCR). Sets which defaults apply (from the In Da Mix settings: ppO2, END, density, O2 narcotic). The values used are listed in `assumed`.OC
depth_unitNoUnit of every depth in the question and the answer.m
temperatureNoFill-site (ambient) temperature, in temperature_unit. Default from the In Da Mix settings; listed in `assumed`.
use_boosterNoA gas booster is available: banks that can't decant high enough are boosted. With DIVESOFT_REAL_GAS it changes the plan; with other methods it only plans the gas.
helium_firstNoPartial pressure: add helium before oxygen (trimix, heliox).
include_stepsNoAlso return the app's ƒx steps ("How this was calculated"): every formula with its numbers. Long: only when the user asks how it was calculated.
pressure_unitNoUnit of every pressure in the question and the answer.bar
tank_volume_lNoWater volume of the tank being filled, litres (a twin 12 = 24). Used for gas litres and bank use.
start_pressureNoPressure already in the tank, in pressure_unit. 0 = empty. This changes the result a lot: if the user did not give it, ask before calling. If you call without it, the tool assumes an empty tank and lists that in `assumed`.
heat_correctionNoCorrect for the heating of the gas while filling.
target_pressureYesFill pressure wanted, in pressure_unit (e.g. 200 or 232 bar, 3000 psi).
start_he_percentNoHe percent of the gas already in the tank.
start_o2_percentNoO2 percent of the gas already in the tank (21 for air).
temperature_unitNoUnit of the fill temperature.C
target_he_percentNoHe percent of the mix wanted (trimix, heliair, heliox).
target_o2_percentNoO2 percent of the mix wanted (nitrox, trimix, heliox).

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), and the description goes well beyond them: it discloses the empty-tank fallback and that assumptions are recorded in `assumed`, that method/temperature/banks are inherited from settings, and the exact shape of the returned answer plus its precautions.

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?

Front-loaded with the trigger condition, and each sentence contributes something (examples, preconditions, output contract, follow-up), which justifies the length for a 21-parameter tool. It is somewhat sprawling, with many multilingual example phrases in one clause, but there is little true redundancy.

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?

No output schema exists, so the description carries the return-value burden and does so fully: it lists the start gas, target, ordered additions with pressures, resulting mix, and key filling/analysis precautions. For a complex, deeply nested parameter set, the agent has everything needed to call 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 the schema already documents all 21 parameters and the baseline is 3. The description adds genuine meaning on top: it flags start_pressure as result-changing with an ask-first rule, notes the target mix/pressure requirement, and explains that several parameters are defaulted from settings and surfaced in `assumed`.

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

Purpose5/5

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

States a specific verb and resource (step-by-step fill plan for blending nitrox/trimix/heliair/heliox into a scuba tank) and enumerates exactly what the plan contains. It is clearly distinguished from siblings by naming the settings source, list_methods for defaults, and the gas_usage follow-up.

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

Usage Guidelines5/5

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

Explicit trigger ('whenever the user asks how to blend, mix, fill or prepare a breathing gas'), explicit preconditions (target mix, pressure, and current tank contents), an explicit when-not/ask rule ('if the start is unknown, ask; never assume an empty tank'), and named alternatives (gas_usage, list_methods). Nothing is left to inference.

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

decantDecant (cascade from cylinders)A
Read-onlyIdempotent
Inspect

Decanting one gas (oxygen, or helium) from source cylinders into a small cylinder without a compressor, as the app's Decant: a cascade, each cylinder equalised in turn (ideal gas). plan refills: one refill or a series (e.g. a CCR O2 cylinder from 75 to 150 bar after every dive): which cylinders each refill uses, the pressures after, how many refills the cylinders give, why it stops, and how many cylinders would be needed. plan diving_days: the app's diving-days planner (use per day, dives a day, Extra cylinders). For linked banks or a booster use fills_from_bank. Prefer it for CCR oxygen logistics. Use for "how many 3 L O2 cylinders do I need to refill my 2 L CCR cylinder after 10 dives", "how many CCR diving days do these O2 cylinders give", "koliko dana mogu roniti s ovim bocama kisika", "koliko puta mogu pretočiti kisik". Don't invent cylinders and don't change the user's gas use per dive or per day. Answer for refills: the number of complete refills, which cylinders each uses, the pressures after where useful, the cylinder that limits it, and why one more refill isn't possible. Answer for diving days: the days, dives a day, use per day, the pressures it keeps to, the cylinders used, and the Extra cylinders. Then ask whether to compare with an extra cylinder, another start pressure or another daily use.

ParametersJSON Schema
NameRequiredDescriptionDefault
planNorefills: the tank goes from start_pressure to target_pressure at every refill. diving_days: the app's Decant planner (use per day, dives a day).refills
refillsNorefills: how many refills in a row are wanted (e.g. dives − 1). Left out: as many as the cylinders give.
sourcesNoThe source cylinders, each with its volume and pressure; several identical ones: one entry with count. refills: needed; opened lowest pressure first. diving_days: decanted in this order; left out = the app's defaults (listed in `assumed`).
languageNoLanguage of the texts in the answer: en (English) or hr (Croatian). Use the user's language.en
dives_per_dayNodiving_days: dives a day.
include_stepsNoAlso return the app's ƒx steps ("How this was calculated"): every formula with its numbers. Long: only when the user asks how it was calculated.
pressure_unitNoUnit of every pressure in the question and the answer.bar
tank_volume_lNoWater volume of the cylinder being refilled, litres (e.g. a rebreather's 2 or 3 L).
gas_he_percentNoHe percent of that gas.
gas_o2_percentNoO2 percent of the gas decanted (100 for oxygen, 0 for helium); only names it in the answer.
start_pressureNorefills: the tank's pressure before each refill (what is left after a dive), in pressure_unit. 0 = empty. This changes the result a lot: if the user did not give it, ask before calling. If you call without it, the tool assumes an empty tank and lists that in `assumed`. diving_days: its pressure now.
target_pressureNorefills: the pressure wanted after each refill, in pressure_unit (needed). diving_days: the pressure it is filled to at most.
use_per_day_maxNodiving_days: highest O2 use a day. Give one use: both are taken as it.
use_per_day_minNodiving_days: lowest O2 use a day, in pressure_unit of the cylinder.
fill_before_every_diveNodiving_days: refill before every dive (true) or once a day (false).
min_pressure_before_diveNodiving_days: the cylinder needs at least this before a dive, in pressure_unit.
min_pressure_to_start_dayNodiving_days, daily fill: the cylinder must start the day with at least this. Default: min_pressure_before_dive + use_per_day_max × (dives_per_day − 1) / dives_per_day.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds real behavioral context beyond them: the ideal-gas cascade assumption, equalisation order, the caution that start_pressure 'changes the result a lot' and should be asked for, and that defaults are surfaced in `assumed`. It stops short of describing return shape in detail, but for a computation tool this is strong.

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

Conciseness3/5

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

The opening is front-loaded and useful, but the answer-composition lists are stated twice in near-identical form ('which cylinders each refill uses, the pressures after...' vs. 'which cylinders each uses, the pressures after where useful...'), and the closing instruction about offering comparisons is peripheral. It is long for what a 17-param compute tool needs to say.

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 17 parameters, zero required fields, no output schema, and rich defaults, the description does the necessary work of explaining both modes, the defaults that will be assumed, and the shape of the answer. Missing only minor items such as unit-handling caveats, which the pressure_unit parameter already covers.

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 the baseline is 3, but the description goes further by framing the two plan modes and telling the agent not to invent cylinders or alter the user's gas use. The mode-level semantics (refills = start→target each time, diving_days = per-day usage planner) add meaning across parameters that the per-parameter schema text does not tie together.

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

Purpose5/5

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

The description states a specific verb and resource (decanting oxygen/helium from source cylinders into a small cylinder without a compressor) and immediately splits its two modes (refills vs diving_days). It explicitly distinguishes itself from the sibling fills_from_bank, so an agent can route without opening either schema.

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

Usage Guidelines5/5

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

It names the alternative tool and the condition that selects it ('For linked banks or a booster use fills_from_bank'), states a preference domain ('Prefer it for CCR oxygen logistics'), and gives concrete trigger queries in two languages. When-not-to-use is explicit rather than inferred.

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

fills_from_bankHow many fills the banks giveA
Read-onlyIdempotent
Inspect

How many identical fills the source banks give before a bank can't supply the next one, and why it stops (bank down to the minimum pressure, or it can't decant high enough without a booster). Every tank is assumed to start the same (start_pressure / mix). Use for "how many tanks can I fill with NX32 from my 50 L O2 bank at 180 bar", "how many trimix fills can I make", "koliko boca mogu napuniti", "za koliko punjenja imam kisika". Answer: the number of complete fills, the banks and the start of each tank, the bank that limits it, the bank pressures after, and why one more fill isn't possible; say that every fill is assumed to start the same. Then ask whether to see what a booster or an extra bank would add.

ParametersJSON Schema
NameRequiredDescriptionDefault
howNopartial_pressure: add pure He and O2 to the tank, then top up with air. continuous: He / O2 go into the compressor intake (a premix stream).partial_pressure
banksNoSource banks (storage cylinders). Any bank not given is taken from the In Da Mix settings and listed in `assumed`.
methodNoCalculation method (equation of state), as in the app. Default from the In Da Mix settings (see list_methods for the current default); listed in `assumed`. IDEAL_GAS_DALTON is the simple ideal-gas method; DIVESOFT_REAL_GAS also plans the decant from the banks.
languageNoLanguage of the texts in the answer: en (English) or hr (Croatian). Use the user's language.en
mix_typeYesnitrox, trimix, heliair, heliox, or top_up (a ready-made supply gas from the top-up bank).
dive_modeNoOpen circuit (OC) or closed-circuit rebreather (CCR). Sets which defaults apply (from the In Da Mix settings: ppO2, END, density, O2 narcotic). The values used are listed in `assumed`.OC
max_fillsNoStop counting here.
depth_unitNoUnit of every depth in the question and the answer.m
temperatureNoFill-site (ambient) temperature, in temperature_unit. Default from the In Da Mix settings; listed in `assumed`.
use_boosterNoA gas booster is available: banks that can't decant high enough are boosted. With DIVESOFT_REAL_GAS it changes the plan; with other methods it only plans the gas.
helium_firstNoPartial pressure: add helium before oxygen (trimix, heliox).
include_stepsNoAlso return the app's ƒx steps ("How this was calculated"): every formula with its numbers. Long: only when the user asks how it was calculated.
pressure_unitNoUnit of every pressure in the question and the answer.bar
tank_volume_lNoWater volume of the tank being filled, litres (a twin 12 = 24). Used for gas litres and bank use.
start_pressureNoPressure already in the tank, in pressure_unit. 0 = empty. This changes the result a lot: if the user did not give it, ask before calling. If you call without it, the tool assumes an empty tank and lists that in `assumed`.
heat_correctionNoCorrect for the heating of the gas while filling.
target_pressureYesFill pressure wanted, in pressure_unit (e.g. 200 or 232 bar, 3000 psi).
start_he_percentNoHe percent of the gas already in the tank.
start_o2_percentNoO2 percent of the gas already in the tank (21 for air).
temperature_unitNoUnit of the fill temperature.C
min_bank_pressureNoA bank isn't used below this pressure (regulator / compressor intake / booster inlet), in pressure_unit. Default 10 bar.
supply_he_percentNoHe percent of the supply gas.
supply_o2_percentNoO2 percent of the ready-made supply gas (20.9 for air, 32 for EAN32).
target_he_percentNoHe percent of the mix wanted (trimix, heliair, heliox).
target_o2_percentNoO2 percent of the mix wanted (nitrox, trimix, heliox).

TDQS

A4.1/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 the safety profile is covered; the description adds genuinely new context: the uniform-start assumption, the fact that unspecified values are reported in `assumed`, and what the answer will contain. It doesn't discuss runtime behavior such as how long a 500-fill scan takes or error conditions, keeping it at a solid 4 rather than 5.

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?

Purpose is front-loaded in the first sentence, and the examples plus answer-format sentence follow logically. There is mild redundancy in stating the uniform-start assumption twice (in the preamble and again in the answer instruction), and the response-format sentence is long, but nothing is wasted.

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 25-parameter tool with no output schema, the description compensates by spelling out the returned content (fill count, limiting bank, resulting pressures, why one more fill fails) and by instructing the follow-up offer. That covers the main gaps; it still doesn't mention error handling or how the `assumed` fallbacks should be surfaced to the user beyond a brief note.

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% across all 25 parameters, including the critical note on start_pressure, so the schema already carries the semantics. The description only adds that start_pressure and the mix define the assumed tank start; that is marginal over what the schema documents, so the baseline 3 applies.

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

Purpose5/5

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

The opening sentence states a specific verb, resource and scope: counting how many identical fills the source banks can supply before one can't supply the next. It also gives the stopping condition (bank hits min pressure, or can't decant high enough without a booster), which cleanly distinguishes it from siblings like decant (which plans the transfer itself) and gas_usage.

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

Usage Guidelines4/5

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

It supplies concrete trigger phrasing in two languages ("how many tanks can I fill with NX32", "how many trimix fills can I make", "koliko boca mogu napuniti"), so an agent can match user intent reliably. It never names a sibling alternative or a when-not-to-use case (e.g. when the user actually wants the decant plan, use DIVESOFT_REAL_GAS or decant), so it stops 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.

gas_usageGas usage and banks for one fillA
Read-onlyIdempotent
Inspect

For one blend: the litres of each gas it takes from the banks, each bank's pressure afterwards, and whether a bank can still decant (or needs boosting, or runs short). Same inputs as blend, plus the banks. Use for "how much helium will this fill use", "is my O2 bank enough for this fill", "koliko helija trošim za ovu mješavinu", "koliko plina ostaje u bankama". Banks not given come from the settings. Answer: the oxygen, helium and other gas used, each bank's pressure before and after, whether the fill works, and whether decanting is enough or a booster is needed; keep the litres of gas and the bank pressure drop apart. Then ask whether to calculate how many such fills the banks give (fills_from_bank).

ParametersJSON Schema
NameRequiredDescriptionDefault
howNopartial_pressure: add pure He and O2 to the tank, then top up with air. continuous: He / O2 go into the compressor intake (a premix stream).partial_pressure
banksNoSource banks (storage cylinders). Any bank not given is taken from the In Da Mix settings and listed in `assumed`.
methodNoCalculation method (equation of state), as in the app. Default from the In Da Mix settings (see list_methods for the current default); listed in `assumed`. IDEAL_GAS_DALTON is the simple ideal-gas method; DIVESOFT_REAL_GAS also plans the decant from the banks.
languageNoLanguage of the texts in the answer: en (English) or hr (Croatian). Use the user's language.en
mix_typeYesnitrox (O2 + air), trimix (He + O2 + air), heliair (He + air), heliox (He + O2).
dive_modeNoOpen circuit (OC) or closed-circuit rebreather (CCR). Sets which defaults apply (from the In Da Mix settings: ppO2, END, density, O2 narcotic). The values used are listed in `assumed`.OC
depth_unitNoUnit of every depth in the question and the answer.m
temperatureNoFill-site (ambient) temperature, in temperature_unit. Default from the In Da Mix settings; listed in `assumed`.
use_boosterNoA gas booster is available: banks that can't decant high enough are boosted. With DIVESOFT_REAL_GAS it changes the plan; with other methods it only plans the gas.
helium_firstNoPartial pressure: add helium before oxygen (trimix, heliox).
include_stepsNoAlso return the app's ƒx steps ("How this was calculated"): every formula with its numbers. Long: only when the user asks how it was calculated.
pressure_unitNoUnit of every pressure in the question and the answer.bar
tank_volume_lNoWater volume of the tank being filled, litres (a twin 12 = 24). Used for gas litres and bank use.
start_pressureNoPressure already in the tank, in pressure_unit. 0 = empty. This changes the result a lot: if the user did not give it, ask before calling. If you call without it, the tool assumes an empty tank and lists that in `assumed`.
heat_correctionNoCorrect for the heating of the gas while filling.
target_pressureYesFill pressure wanted, in pressure_unit (e.g. 200 or 232 bar, 3000 psi).
start_he_percentNoHe percent of the gas already in the tank.
start_o2_percentNoO2 percent of the gas already in the tank (21 for air).
temperature_unitNoUnit of the fill temperature.C
target_he_percentNoHe percent of the mix wanted (trimix, heliair, heliox).
target_o2_percentNoO2 percent of the mix wanted (nitrox, trimix, heliox).

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already establish read-only/idempotent/non-destructive, so the description correctly doesn't restate safety. It adds useful behavioral context instead: missing banks fall back to settings and are surfaced in `assumed`, and omitting start_pressure silently assumes an empty tank. It also warns to keep gas litres and bank pressure drop conceptually separate.

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

Conciseness3/5

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

Front-loads the purpose, but the body is repetitive ("each bank's pressure afterwards" reappears as "each bank's pressure before and after") and mixes a stack of quoted intents in two languages with the answer-shape narrative. Several sentences could be merged without losing meaning.

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 21 params, nested bank objects, and no output schema, the description does the heavy lifting by enumerating the return contents (O2/He/other gas used, before/after bank pressure, whether the fill works, decant vs booster) and flagging the settings-derived `assumed` values. An agent has enough to call and interpret it, though the decant/booster branch logic remains only sketched.

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 carries all 21 parameters, their enums and defaults; baseline 3 applies. The description adds only the settings-fallback note for banks, which is already echoed in the schema's own `banks` description, so little net new parameter meaning is contributed.

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

Purpose4/5

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

States a specific verb+resource: litrage of each gas drawn from banks, post-fill bank pressures, and whether banks can still decant. It also anchors itself against a sibling ("Same inputs as blend, plus the banks"), which helps an agent disambiguate. Not quite a 5 because the opening sentence is a dense run-on rather than a crisp one-line purpose.

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?

Provides concrete triggering questions ("how much helium will this fill use", "is my O2 bank enough") and an explicit follow-up route to fills_from_bank. It implies a split from blend via "same inputs as blend, plus the banks" but never states when to pick blend instead, so there is no explicit exclusion rule.

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

list_methodsCalculation methodsA
Read-onlyIdempotent
Inspect

The calculation methods (equations of state) In Da Mix offers, with their ids for the method input. The current default is in the default field. Use when the user asks about calculation models: ideal versus real gas, compressibility, Z-factors, Peng-Robinson, MultiDeco. Use for "which gas models are supported", "ideal gas versus Peng-Robinson", "koje modele izračuna podržava aplikacija", "razlika između real gas i ideal gas". Always call it rather than relying on a remembered list. Answer: the methods and the current default; the differences briefly, only when asked; don't recommend switching unless the user asks. Then offer to compare the same blend across methods (blend with each method, the same inputs).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.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, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds genuinely useful behavioral context beyond that: the response shape (methods + ids + default field) and the claim that this list is authoritative and current enough that the agent should call it instead of trusting memory. It does not discuss failure modes or caching, which keeps it short of a 5.

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?

It is well front-loaded: purpose first, then when-to-use, then answer guidance and follow-up. However, it is longer than a listing tool needs — several near-duplicate example phrasings and an 'Answer: ...' block edge toward prompt engineering rather than tool documentation, so a few sentences do not strictly earn their place.

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

Completeness5/5

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

There is no output schema, so the description must describe the return values itself, and it does: the method list with ids plus the default field. For a zero-parameter, read-only enumeration tool, an agent has everything needed to select it, call it, and use the result; the added answering guidance is a bonus rather than a gap-filler.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4 and the schema carries nothing to explain. The description does add cross-tool meaning by noting the returned ids are 'for the method input', telling the agent how this output feeds other tools' arguments. That is a real addition, though it is stated in a single clause without naming which tools consume the method 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 names the resource precisely — the calculation methods (equations of state) offered by Da Mix — and states what comes back: each method's id plus the current default in the `default` field. This clearly distinguishes it from siblings like best_mix, blend, or what_if, which compute results rather than enumerate supported models. An agent can tell what this tool yields without opening any schema.

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

Usage Guidelines5/5

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

It gives explicit trigger conditions (user asks about calculation models, ideal vs real gas, compressibility, Z-factors, Peng-Robinson, MultiDeco), concrete example utterances including a non-English one, and a direct instruction: always call it rather than relying on a remembered list. It also states the boundaries of the answer (differences only when asked; don't recommend switching unless asked) and suggests the follow-up of comparing a blend across methods.

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

modMaximum operating depthA
Read-onlyIdempotent
Inspect

Use whenever the user asks how deep a gas can go or checks an existing breathing gas (nitrox, trimix, CCR diluent) against a depth, even if they don't mention In Da Mix; never work a MOD out by hand. Maximum operating depth of a breathing gas: the MOD by the ppO2 limit (as on a cylinder label), and for hypoxic gases the minimum depth. With complete: true also the complete MOD, the deepest depth within the ppO2, END and gas density limits together, with the limit that sets it. Call it with only the gas (o2_percent, he_percent) and the dive mode: leave ppo2_bar out unless the user gave one, so the In Da Mix setting is used. Answer: the gas and its MOD, the ppO2 limit used and the dive mode (and the minimum depth for a hypoxic gas); nothing else, no table of other ppO2 values, no ppO2 recommendation of your own. Then ask whether to also calculate the complete MOD within the END and gas density limits; if yes, call it again with complete: true (same gas and mode). Only when the user asks for END, density or all the limits, call with complete: true at once, and answer: the complete MOD and the limit that sets it, the MOD by ppO2, END and gas density at the complete MOD, and the limits used; report limits_check as it is (a value at its limit complies). Use for "what is the MOD of EAN32", "max depth for NX38", "how deep can I take 18/45", "can I take air to 50 m", "can I use 10/70 at 65 m", "is this diluent OK for 70 m", "koja je maksimalna dubina za NX38", "koliko duboko mogu s 18/45", "je li 12/65 dobar za 65 metara".

ParametersJSON Schema
NameRequiredDescriptionDefault
max_endNoMaximum END for the complete MOD, in depth_unit. Default from the In Da Mix settings for the dive mode; the value used is listed in `assumed`.
completeNoAlso the complete MOD (within the END and gas density limits too). Leave it out at first; set true only when the user says yes to it. Giving max_end or max_density_g_per_l turns it on.
languageNoLanguage of the texts in the answer: en (English) or hr (Croatian). Use the user's language.en
ppo2_barNoppO2 limit, bar. Default from the In Da Mix settings for the dive mode; the value used is listed in `assumed`.
dive_modeNoOpen circuit (OC) or closed-circuit rebreather (CCR). Sets which defaults apply (from the In Da Mix settings: ppO2, END, density, O2 narcotic). The values used are listed in `assumed`.OC
depth_unitNoUnit of every depth in the question and the answer.m
he_percentNoHelium in the gas, percent (0 for nitrox).
o2_percentYesOxygen in the gas, percent (32 for EAN32, 18 for trimix 18/45).
o2_narcoticNoCount O2 as narcotic in the END. Default from the In Da Mix settings for the dive mode; the value used is listed in `assumed`.
include_stepsNoAlso return the app's ƒx steps ("How this was calculated"): every formula with its numbers. Long: only when the user asks how it was calculated.
max_density_g_per_lNoMaximum gas density for the complete MOD, g/L. Default from the In Da Mix settings for the dive mode; the value used is listed in `assumed`.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, and the description adds substantial context beyond them: defaults come from the 'In Da Mix' settings and are echoed in `assumed`, how limits_check should be reported, and how the follow-up complete-MOD call behaves. This is well past the annotation bar.

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?

It is front-loaded with the trigger condition and organized into invocation and answer rules, and the multilingual example queries aid matching. It is nonetheless a long block with the answer-format rules restated for the complete mode, so some sentences are near-duplicative.

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?

With no output schema, the description carries the burden of describing returns and does so precisely: the gas and MOD, the ppO2 limit and dive mode, minimum depth for hypoxic gases, and for complete mode the limiting factor plus limits_check semantics.

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% with enums documented, so the baseline is 3, but the description adds real invocation guidance: 'Call it with only the gas (o2_percent, he_percent) and the dive mode: leave ppo2_bar out unless the user gave one,' which the schema alone does not convey.

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 names a specific verb and resource: 'Maximum operating depth of a breathing gas: the MOD by the ppO2 limit ... and for hypoxic gases the minimum depth.' It also distinguishes the two output modes (ppO2 MOD vs complete MOD), so an agent can tell exactly what this tool computes versus siblings like best_mix or blend.

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?

Usage conditions are explicit and even prescriptive: 'Use whenever the user asks how deep a gas can go or checks an existing breathing gas ... never work a MOD out by hand,' plus when to pass complete: true and when not to. It stops short of naming sibling alternatives (e.g. best_mix for gas selection), which keeps it from a 5.

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

top_upTop up with a supply gasA
Read-onlyIdempotent
Inspect

Top a tank up with a ready-made supply gas (air, EAN32, a trimix premix…): the pressure added, the mix you end up with, its MOD, and the gas density at a depth. For a ready-made supply gas; to add pure oxygen or helium use what_if or blend. Use for "I have 50 bar of EAN32 left, what do I get if I top up with air to 200", "dopuni mi bocu s 50 bara EAN32 zrakom do 220 bara", "koji će biti konačni postotak kisika". Needs the start pressure and mix, the final pressure and the supply gas: ask if one is unknown, don't assume. Answer: the start, the gas added and the final pressure, the resulting mix, and its MOD by the settings. Then ask whether to check the mix for a planned depth (mod, with the complete MOD).

ParametersJSON Schema
NameRequiredDescriptionDefault
banksNoSource banks (storage cylinders). Any bank not given is taken from the In Da Mix settings and listed in `assumed`.
methodNoCalculation method (equation of state), as in the app. Default from the In Da Mix settings (see list_methods for the current default); listed in `assumed`. IDEAL_GAS_DALTON is the simple ideal-gas method; DIVESOFT_REAL_GAS also plans the decant from the banks.
languageNoLanguage of the texts in the answer: en (English) or hr (Croatian). Use the user's language.en
dive_modeNoOpen circuit (OC) or closed-circuit rebreather (CCR). Sets which defaults apply (from the In Da Mix settings: ppO2, END, density, O2 narcotic). The values used are listed in `assumed`.OC
depth_unitNoUnit of every depth in the question and the answer.m
temperatureNoFill-site (ambient) temperature, in temperature_unit. Default from the In Da Mix settings; listed in `assumed`.
use_boosterNoA gas booster is available: banks that can't decant high enough are boosted. With DIVESOFT_REAL_GAS it changes the plan; with other methods it only plans the gas.
target_depthNoDepth for the gas density, in depth_unit. Default 30 m.
include_stepsNoAlso return the app's ƒx steps ("How this was calculated"): every formula with its numbers. Long: only when the user asks how it was calculated.
pressure_unitNoUnit of every pressure in the question and the answer.bar
tank_volume_lNoWater volume of the tank being filled, litres (a twin 12 = 24). Used for gas litres and bank use.
start_pressureNoPressure already in the tank, in pressure_unit. 0 = empty. This changes the result a lot: if the user did not give it, ask before calling. If you call without it, the tool assumes an empty tank and lists that in `assumed`.
heat_correctionNoCorrect for the heating of the gas while filling.
target_pressureYesFill pressure wanted, in pressure_unit (e.g. 200 or 232 bar, 3000 psi).
start_he_percentNoHe percent of the gas already in the tank.
start_o2_percentNoO2 percent of the gas already in the tank (21 for air).
temperature_unitNoUnit of the fill temperature.C
supply_he_percentNoHe percent of the supply gas.
supply_o2_percentYesO2 percent of the ready-made supply gas (20.9 for air, 32 for EAN32).

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and non-destructive, so the safety profile is covered. The description adds real behavioral context the annotations don't: it describes the response contents (start, gas added, final pressure, resulting mix, MOD) and prescribes a follow-up question about checking the mix at a planned depth. It stops short of describing the `assumed` fallback mechanics available elsewhere, but adds genuine value beyond the structured fields.

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?

Front-loaded with purpose and routing before examples, and every sentence carries signal. The two Croatian sample utterances ('dopuni mi bocu...') are somewhat bulky and partly redundant with the English example, though defensible given the tool's language parameter. Slightly long but well ordered.

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 19-parameter tool with nested bank objects and no output schema, the description covers the required inputs, the routing decision, and the shape of the answer, which is what an agent needs to answer the user. Advanced parameters (banks, method, heat_correction, use_booster) are left entirely to the schema, which is acceptable at 100% coverage but leaves no cross-cutting guidance on 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 coverage is 100%, so the schema already documents all 19 parameters, and the description mostly restates the same inputs (start pressure and mix, final pressure, supply gas). It does stress that start_pressure materially changes the result, but the schema description already says 'This changes the result a lot'. Baseline 3 is appropriate when the schema carries the 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?

States a specific verb and resource ('Top a tank up with a ready-made supply gas') and immediately enumerates the outputs (pressure added, resulting mix, MOD, gas density). It also distinguishes itself from siblings by scoping to ready-made supply gas versus pure O2/He, naming what_if and blend. An agent can route correctly without opening any schema.

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

Usage Guidelines5/5

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

Explicit routing rule: 'For a ready-made supply gas; to add pure oxygen or helium use what_if or blend.' It also gives concrete trigger utterances in two languages and a precondition ('Needs the start pressure and mix, the final pressure and the supply gas: ask if one is unknown, don't assume'). This is about as close to when/when-not/alternatives as a description gets.

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

what_ifWhat If: add gas and see the mixA
Read-onlyIdempotent
Inspect

What mix you get when you add given pressures of oxygen, helium and/or air to what is in the tank (the app's What If): the pressure after each addition, the resulting mix, its MOD, EAD, END and gas density. Use for "what if" additions: "I have 50 bar of air, what do I get if I add 30 bar of O2 and top up with 120 bar of air", "what if I add 40 bar of helium", "što dobijem ako dodam 30 bara kisika", "dodam 40 bara helija, što dobijem". what_if: given additions -> the resulting mix; blend: a target mix -> how to make it. Pass only the additions and the tank's start the user gave. Answer: the start, the additions in order, the final pressure, the resulting O2 and He, and its MOD by the settings. Then ask whether to check its complete MOD or to adjust the additions for a target mix (blend).

ParametersJSON Schema
NameRequiredDescriptionDefault
methodNoCalculation method (equation of state), as in the app. Default from the In Da Mix settings (see list_methods for the current default); listed in `assumed`. IDEAL_GAS_DALTON is the simple ideal-gas method; DIVESOFT_REAL_GAS also plans the decant from the banks.
add_airNoPressure of air added, in pressure_unit.
languageNoLanguage of the texts in the answer: en (English) or hr (Croatian). Use the user's language.en
dive_modeNoOpen circuit (OC) or closed-circuit rebreather (CCR). Sets which defaults apply (from the In Da Mix settings: ppO2, END, density, O2 narcotic). The values used are listed in `assumed`.OC
add_heliumNoPressure of pure helium added, in pressure_unit.
add_oxygenNoPressure of pure oxygen added, in pressure_unit.
depth_unitNoUnit of every depth in the question and the answer.m
temperatureNoFill-site (ambient) temperature, in temperature_unit. Default from the In Da Mix settings; listed in `assumed`.
helium_firstNoPartial pressure: add helium before oxygen (trimix, heliox).
target_depthNoDepth for the gas density, in depth_unit. Default 30 m.
include_stepsNoAlso return the app's ƒx steps ("How this was calculated"): every formula with its numbers. Long: only when the user asks how it was calculated.
pressure_unitNoUnit of every pressure in the question and the answer.bar
start_pressureNoPressure already in the tank, in pressure_unit. 0 = empty. This changes the result a lot: if the user did not give it, ask before calling. If you call without it, the tool assumes an empty tank and lists that in `assumed`.
start_he_percentNoHe percent of the gas already in the tank.
start_o2_percentNoO2 percent of the gas already in the tank (21 for air).
temperature_unitNoUnit of the fill temperature.C

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover read-only/idempotent/non-destructive, but the description adds substantial behavior: the full result set (MOD, EAD, END, density), the 'assumed' fallback for missing start pressure, and a mandated follow-up (ask whether to check MOD or switch to blend). For a read-only calculation tool this is rich, non-redundant disclosure.

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?

Front-loaded with the core purpose, examples, and sibling contrast. It is somewhat sprawling, with bilingual example queries and some repetition ('the app's What If', restating outputs), but every section is functional and nothing is irrelevant.

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?

With 16 optional parameters, no output schema, and no required fields, the description compensates well: it names the return values, the units/assumption behavior, the missing-input edge case, and the conversational next step. An agent has everything needed to invoke and follow up correctly.

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

Parameters3/5

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

Schema description coverage is 100% and the 16 parameters carry detailed per-field docs (units, defaults, semantics), so the schema does the heavy lifting. The description reinforces only the high-level rule ('pass only the additions and the tank's start') and the start_pressure caveat, adding little beyond the schema's own text. 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?

States a specific verb+resource: computes the resulting mix from adding given O2/He/air pressures to the tank's existing contents. It also names the outputs (pressure after each addition, mix, MOD, EAD, END, density), so an agent knows exactly what it produces and can distinguish it from siblings.

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

Usage Guidelines5/5

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

Explicitly says 'Use for "what if" additions' and contrasts with the blend sibling: 'what_if: given additions -> the resulting mix; blend: a target mix -> how to make it.' It even instructs what to pass and to ask before calling when start pressure is unknown, closing the main failure mode.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updates
    • First observedbest_mix
    • First observedblend
    • First observeddecant
    • First observedfills_from_bank
    • First observedgas_usage
    • First observedlist_methods
    • First observedmod
    • First observedtop_up
    • First observedwhat_if

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    B
    maintenance
    Deterministic Odoo ERP calculators: implementation, migration and upgrade cost, ROI and TCO, US/Canada/EU sales tax and VAT, Canadian payroll source deductions, and inventory maths (reorder point, safety stock, EOQ, landed cost, OEE). 24 tools, each a pure function, the numbers are arithmetic rather than a model's guess. Hosted remote server, no install and no API key; a stdio bridge is included
    24
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Provides comprehensive running performance calculations including VDOT, training paces, race time predictions, velocity markers, and heart rate zones using Jack Daniels, Greg McMillan, and Riegel methodologies.
    9
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Race nutrition planning for endurance athletes. Calculates carb, sodium and fluid targets for marathons, ultras, cycling and triathlons. Returns personalised Lecka product recommendations by race type, conditions and athlete weight.
    3
    1
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources