Skip to main content
Glama

list_bess_units

List every NEM-registered grid-scale battery (DUID, station, region, MW/MWh, MLF, coordinates, is_commissioning, commercial_context). rev_per_mw_yr is trailing 365-day energy + FCAS revenue (NOT FPP), gross (no MLF), divided by Max Cap MW, then annualised over the days the unit actually had dispatch data — not over a fixed 365-day denominator. This is a rough simulator guide, NOT a performance ranking. It is distorted for any unit with is_commissioning=true or commissioned within the last 365 days, because that span-annualisation extrapolates a few months of ramp-up behaviour out to a full year (scale-up factors of 1.5x-2.4x are live in the current data), which magnifies both weak and negative figures rather than diluting them — do NOT try to 'correct' it by rescaling to the unit's operating span, as that double-counts the annualisation. It is also inflated for small FCAS-primary units, and structurally biased against longer-duration units (shorter-duration units can concentrate power into the highest-price intervals). Do not use it to compare units, rank performance, or answer 'which battery earns most' — use get_battery_revenue over a matched window, or get_battery_optimal for capture. Before comparing any two units' revenue, check commercial_context on each — TOLLED/CONTRACTED units don't trade merchant and their spot revenue is not comparable. Null until the first background refresh completes.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

TDQS

A4.8/5.0
Behavior5/5

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

No annotations are provided, so the description carries full responsibility for behavioral disclosure. It explains how rev_per_mw_yr is annualised, why the figure is distorted for commissioning units and small FCAS-primary or shorter-duration batteries, and warns against trying to 'correct' the metric by rescaling. It even discloses that results are null until the first background refresh completes.

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 description is long, but almost every sentence carries load-bearing caveat that prevents misuse of a genuinely misleading metric. The main purpose is front-loaded, and the warnings are ordered from global caveats to specific namespace use cases. A little more structure would help, but the length is 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?

For a zero-parameter tool with no output schema, the description is unusually complete. It defines the exact metric, its data source, its denominator, its distorting conditions, the wrong use cases, the corrective tools, and the special requirement to inspect commercial_context before comparing units. Nothing an agent needs for correct selection or safe interpretation is missing.

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

Parameters4/5

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

With zero parameters and an empty input schema, there is nothing for the description to add beyond what the schema already communicates. The description does, however, usefully explain the meaning and caveats of the flagship return field 'rev_per_mw_yr', which is the only place where parameter semantics could matter.

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 opens with a specific action and resource: 'List every NEM-registered grid-scale battery' and enumerates the returned fields, including DUID, station, region, MW/MWh, MLF, coordinates, and commercial context. This clearly distinguishes it from the sibling get_battery_* tools, which target individual batteries or revenue analysis.

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?

The description explicitly says when not to use the tool: 'Do not use it to compare units, rank performance, or answer which battery earns most.' It names the alternatives directly — get_battery_revenue and get_battery_optimal — and requires checking commercial_context before comparing units, which is concrete actionable guidance.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

TDQS

A4.2/5.0
Disambiguation4/5

Most tools are cleanly separated by object and action, but get_battery_detail, get_battery_revenue, and get_battery_optimal all overlap around battery revenue metrics and depend heavily on long cross-references and warnings to prevent misuse. The descriptions help considerably, but there are still realistic misselection paths.

Naming Consistency5/5

All tool names follow snake_case verb_noun patterns, using get_ for metrics/details and list_ for enumerations, with query_ for the natural-language endpoint. Minor vocabulary differences such as BESS versus battery do not undermine the overall consistency.

Tool Count5/5

Eight tools is comfortably within the well-scoped range and each tool covers a distinct analytical surface: inventory, fleet summary, battery revenue, optimal dispatch, events, and natural-language querying. The set feels intentionally assembled rather than padded.

Completeness4/5

The server covers battery inventory, event access, fleet-level context, per-battery revenue, optimal-dispatch benchmarking, and a general query interface, which is strong for a read-only analytics domain. The main gaps are lack of per-interval event dispatch data and the explicit unqueryability of the market-* cache tables.

Resources