Skip to main content
Glama

Size a duct network

size_duct_network
Read-onlyIdempotent

Size every supply, return, exhaust, and outside-air duct segment from terminal CFM, infer roles, and grade existing sections or derive Manual D friction rate.

Instructions

Size every supply, return, exhaust, and outside-air segment of a connected duct network. Each terminal's requiredCfm is carried along its shortest same-system path to equipment and summed per segment; roles (main/branch/runout) are inferred. Sizes at the fixed default friction rate, or, when fan is given with segment lengthFt and fitting equivalentLengthFt, at the Manual D friction rate derived from available static pressure over the total effective length (returned as design: ASP, TEL, friction rate, longest paths). Returns per-segment recommendations, grades for segments with an existing section, and findings: missing-required-cfm, no-equipment-path, dangling-reference, mixed-system-segment, undersized, oversized, friction-rate-out-of-range, missing-equivalent-length.

Input Schema

NameRequiredDescriptionDefault
fanNoBlower data. When given, friction rate = (externalStatic − Σ componentLosses) × 100 / total effective length (longest supply + longest return effective path).
itemsYesEvery terminal, segment, fitting, and equipment item in the network.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv0.1.1
    • addedInput schema / properties / fan
      Added value: +{
      +  "description": "Blower data. When given, friction rate = (externalStatic − Σ componentLosses) × 100 / total effective length (longest supply + longest return effective path).",
      +  "properties": {
      +    "componentLossesInWg": {
      +      "additionalProperties": {
      +        "minimum": 0,
      +        "type": "number"
      +      },
      +      "description": "Device pressure drops outside the duct runs by name (coil, filter, supply-outlet, return-grille, damper), in. w.g.",
      +      "propertyNames": {
      +        "type": "string"
      +      },
      +      "type": "object"
      +    },
      +    "externalStaticInWg": {
      +      "description": "Blower external static pressure at design airflow, in. w.g.",
      +      "exclusiveMinimum": 0,
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "externalStaticInWg"
      +  ],
      +  "type": "object"
      +}
    • addedInput schema / properties / items / items / properties / equivalentLengthFt
      Added value: +{
      +  "description": "Fittings and terminals: equivalent length of straight duct for the fitting's loss, feet (Manual D style). Counted in effective length when fan is given.",
      +  "minimum": 0,
      +  "type": "number"
      +}
    • addedInput schema / properties / items / items / properties / lengthFt
      Added value: +{
      +  "description": "Segments only: measured length in feet. Required on sized segments when fan is given.",
      +  "minimum": 0,
      +  "type": "number"
      +}
  2. First observedv0.1.0

TDQS

A4.3/5.0
Behavior5/5

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

With annotations already covering the safety profile (readOnly, idempotent, non-destructive, closed-world), the description still goes well beyond them: it explains the path-tracing rule ('requiredCfm carried along its shortest same-system path'), role inference, the friction-rate formula inputs, and enumerates every finding code emitted. That is unusually rich behavioral disclosure for a computation tool.

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 purpose and efficient overall, with each clause carrying information (network scope, algorithm, friction-rate modes, outputs, findings). The long trailing findings inventory is dense but earns its place by telling the caller what failure signals to expect.

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 carries the return-value burden and does so fully: per-segment recommendations, grades for existing sections, design ASP/TEL/friction-rate/longest paths, and the complete findings taxonomy. For a nested, two-parameter computational tool this is complete enough 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 coverage is 100%, so the baseline is 3, but the description adds real meaning by tying parameters into modes: terminals' requiredCfm drives the flow sum, and 'fan' together with lengthFt/equivalentLengthFt switches on the Manual D calculation and returns design ASP/TEL. That joint requirement is more than the per-field schema docs convey.

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 opens with a specific verb and resource ('Size every supply, return, exhaust, and outside-air segment of a connected duct network') and adds the algorithm used, so the agent knows exactly what is produced. It does not, however, differentiate itself from the sibling 'size_duct', leaving the boundary between whole-network and single-run sizing to inference.

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

Usage Guidelines4/5

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

It gives a clear conditional on which sizing mode applies: fixed default friction rate by default, or Manual D friction rate when 'fan is given with segment lengthFt and fitting equivalentLengthFt'. That is actionable context, though it never names when to prefer this tool over 'size_duct' or when the tool is inappropriate.

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

Deploy Server

Other Tools