Skip to main content
Glama

Server Details

Read-only access to Australian NEM grid-scale battery performance, revenue, dispatch and FCAS data.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Last Tested
Transport
Streamable HTTP
URL
Tool DescriptionsA

Average 4.4/5 across 8 of 8 tools scored. Lowest: 3.7/5.

Server CoherenceA
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.

Available Tools

8 tools
get_battery_detailAInspect

Deep-dive metrics for one battery by DUID (e.g. HPR1 = Hornsdale): revenue, dispatch, SOC, FCAS. WARNING: rev_today, energy_rev_today, fcas_rev_today and contingency_fcas_rev_today are MONTH-TO-DATE by default, not daily (matching the rev_mtd keys in fcas_breakdown) — do not report them as 'today's revenue'. throughput_cycles, throughput_mwh, avg_dispatch_price, avg_charge_price and efficiency_pct cover the same window. Pass date_from and date_to (both required together) to scope this window explicitly, e.g. to a single day, instead of relying on the month-to-date default. For a true daily time series use get_battery_revenue. Also returns commercial_context (e.g. TOLLED, CONTRACTED) and commercial_note — ALWAYS check commercial_context before comparing this unit's revenue against another unit's: tolled/contracted units do not trade merchant and their spot figures are not comparable.

ParametersJSON Schema
NameRequiredDescriptionDefault
duidYesBattery DUID, e.g. HPR1
date_toNoOptional end date YYYY-MM-DD (requires date_from too).
date_fromNoOptional start date YYYY-MM-DD (scopes revenue/throughput stats; requires date_to too). Omit both for the month-to-date default.
Behavior5/5

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

With no annotations, the description carries the full behavioral burden, and it delivers: it discloses the surprising month-to-date default behavior, names exactly which fields are affected, explains the date-scoping mechanism, and warns about the incomparability of merchant vs tolled/contracted revenue figures. This far exceeds what the schema or 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 dense but every sentence earns its place: it opens with the core purpose, then warns about the most dangerous semantic trap, then gives the fix, then routes the user to the alternative tool, then cautions about comparison integrity. No filler or repetition; the structure is front-loaded with the most decision-critical 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 no output schema and no annotations, the description is remarkably complete. It documents the key return categories, the specific fields affected by date scoping, the parameter contract, the sibling alternative, and the necessary commercial_context check. An agent can reasonably call the tool correctly without additional context.

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

Parameters5/5

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

Even though schema coverage is 100%, the description adds genuine meaning beyond the schema: it explains that date_from and date_to must both be provided together, that omitting them invokes the month-to-date default, and which returned metrics are scoped by them. The duid example and the commercial_context field also add semantic context not present in the schema alone.

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, actionable purpose: 'Deep-dive metrics for one battery by DUID', with examples (HPR1 = Hornsdale) and a clear return scope (revenue, dispatch, SOC, FCAS). It distinguishes itself from sibling tools by explicitly routing daily time-series needs to get_battery_revenue, so an agent can tell it apart from its siblings without opening schemas.

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 gives explicit usage guidance: pass date_from and date_to together to scope the window, omit them for month-to-date defaults, and 'For a true daily time series use get_battery_revenue.' It also warns not to report month-to-date values as 'today's revenue' and to check commercial_context before cross-unit comparisons. This is explicit and actionable.

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

get_battery_optimalAInspect

Actual vs LP-optimal dispatch revenue, per-DUID summary, over a date range (energy-only, perfect-foresight benchmark). NOT a revenue-total source — use get_battery_revenue for that. Both the 'actual' AND the 'optimal' figures here are MLF-adjusted (get_battery_revenue's is gross) — the LP's objective is solved on MLF-adjusted prices, not just settled at them afterward — and both cover solved LP days only (days where the solver failed are dropped from both), so the two tools' totals will not match even for the same DUID and date range. The requested date_to may also be silently truncated to the latest date with sufficient fleet-wide LP coverage. Pass duid to restrict to one battery — omitting it scans every DUID and can time out even on a ~3-week range; even a single-DUID, single-month scan has been observed to time out, so keep date ranges short and retry narrower on a timeout.

ParametersJSON Schema
NameRequiredDescriptionDefault
duidNoBattery DUID, e.g. HPR1 (optional — omit for all DUIDs)
date_toYesEnd date YYYY-MM-DD
date_fromYesStart date YYYY-MM-DD
Behavior5/5

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

With no annotations provided, the description must disclose behavior itself, and it does so richly. It reveals that both actual and optimal figures are MLF-adjusted, that the LP objective is solved on MLF-adjusted prices, that only solved LP days are included and failed days are dropped, that calls cannot match get_battery_revenue totals, that date_to may be silently truncated, and that timeouts are possible.

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 long, but every sentence carries necessary operational or semantic information. It front-loads the core purpose and differentiates the tool from its sibling before covering MLF treatment, dropped days, truncation, and timeout guidance. Nothing in the paper is wasted.

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?

This is a nontrivial tool with no output schema, yet the description anticipates potential misinterpretations and common pitfalls: revenue-total confusion, MLF adjustment, solver-failure days, silent date truncation, and timeout risk. For the complexity of the data returned and the absence of annotations, the description is remarkably complete.

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 input schema already provides descriptions and 100% coverage for all three parameters, so a baseline of 3 is appropriate. The description adds meaningful operational semantics beyond the schema: duid restricts to one battery, omitting it scans all DUIDs and risks timeouts, and date ranges should be kept short. This goes beyond the schema's basic type descriptions.

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 precise statement of what the tool does: 'Actual vs LP-optimal dispatch revenue, per-DUID summary, over a date range'. It explicitly identifies the tool as a benchmark comparison and differentiates it from the sibling tool get_battery_revenue, including the key distinction that this is not a revenue-total source.

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 gives direct guidance on when to use this tool versus an alternative: 'NOT a revenue-total source — use get_battery_revenue for that.' It also provides operational guidance on parameters, explaining that omitting duid scans every DUID and can time out, and advises keeping date ranges short and retrying narrower on timeout.

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

get_battery_revenueAInspect

Daily gross-spot revenue by market (energy + FCAS) for one battery (DUID) over a date range. Daily grain only. This is the tool for total revenue questions — use get_battery_optimal only for the actual-vs-perfect-foresight benchmark, not as a revenue source (its 'actual' figure is MLF-adjusted and solved-days-only, so it will not match this tool's totals). Each day also carries energy_rev_mlf_adjusted (null if the LP backcast hasn't run for that day yet, not zero) alongside the gross energy_rev, so MLF-adjusted figures are available here too without switching tools.

ParametersJSON Schema
NameRequiredDescriptionDefault
duidYesBattery DUID, e.g. HPR1
date_toYesEnd date YYYY-MM-DD
date_fromYesStart date YYYY-MM-DD
Behavior4/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It reveals that the tool returns daily grain only (no sub-daily), that energy_rev_mlf_adjusted can be null (not zero) when the LP backcast hasn't run, and explains why get_battery_optimal's 'actual' figure is not comparable. This provides solid behavioral context, though it omits details like authorization or rate limits, which are less critical for a read-only data tool.

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 concise (3 sentences), front-loads the core purpose, then provides usage guidance and a specific note about the MLF-adjusted field. Every sentence adds value without redundancy.

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 lacking an output schema, the description explains the key output fields (energy_rev, energy_rev_mlf_adjusted) and a critical behavior (null vs zero). It omits a full list of fields but covers the essential information for a revenue query tool. This is nearly complete for the use case.

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 parameter described (e.g., duid example 'HPR1', date format 'YYYY-MM-DD'). The description adds that the date range is for daily grain only, but does not significantly extend parameter meaning beyond what the schema provides. With high schema coverage, baseline is 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 it returns daily gross-spot revenue by market (energy + FCAS) for one battery over a date range. It specifies the resource (battery), metric (revenue), and constraints (daily grain only). It distinguishes from the sibling get_battery_optimal, making the purpose 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?

The description explicitly tells when to use this tool ('for total revenue questions') and warns against using get_battery_optimal as a revenue source, explaining why its figures differ. It also notes that MLF-adjusted figures are available here, eliminating the need to switch tools.

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

get_event_detailAInspect

Summary stats for one market price event by id (per-interval dispatch during the event is not exposed).

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesEvent id
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It adds one valuable limitation ('per-interval dispatch during the event is not exposed') which clarifies what data is unavailable. However, it does not mention what 'summary stats' includes or the nature of the return value, leaving moderate gaps.

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, front-loaded with the core purpose, and includes a parenthetical caveat. Every word earns its place, with 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?

The tool is simple (one parameter, no output schema), but the description does not fully explain what response to expect beyond 'summary stats'. The added caveat about per-interval dispatch is useful, but the lack of detail about the output format leaves the description somewhat incomplete for an agent expecting precise return values.

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 single parameter 'id' is already described as 'Event id'. The description adds no additional meaning about the parameter format or source, so it relies on the schema. This meets the baseline 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 'Summary stats for one market price event by id' clearly identifies the specific verb (get), resource (market price event), and scope (summary stats, by id). It distinguishes itself from sibling tools like list_events (which lists events) and battery-related tools, 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 Guidelines3/5

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

The description implies usage when you need summary stats for a single event and already have an id. It does not explicitly mention alternatives or when not to use it, but the 'by id' wording and sibling tool names (e.g., list_events) provide enough contextual guidance.

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

get_fleet_summaryAInspect

Fleet-wide snapshot: unit count, total capacity, revenue month-to-date, average spot price.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Behavior3/5

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

No annotations are provided, so the description carries the full burden. The word 'snapshot' and the tool name's 'get' prefix imply a read-only, non-destructive operation, but the description does not explicitly state side-effect-free behavior, authentication needs, or data freshness. This is adequate for a simple getter but not richly transparent.

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, compact sentence with no filler. Every word earns its place by naming the resource and the four key data points.

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 zero-parameter read-only snapshot, the description covers the essential content. However, with no output schema present, it would benefit from clarifying units, data freshness, or return shape, making it slightly incomplete.

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 has zero parameters, so the baseline of 4 applies. The description adds useful semantic context by enumerating the specific metrics returned, which is more than the empty 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 clearly identifies the resource as a fleet-wide snapshot and lists the exact metrics (unit count, total capacity, revenue month-to-date, average spot price). This distinguishes it from sibling tools like get_battery_detail, which focus on individual battery data.

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 phrase 'Fleet-wide' implicitly signals this is the aggregate-summary alternative to battery-specific tools, giving the agent a clear context for when to use it. However, it does not explicitly name alternatives or state exclusions, so it falls short of full guidance.

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

list_bess_unitsAInspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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.

list_eventsAInspect

List NEM spot-price events (negative, elevated, spike, extreme), optionally filtered by region.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax events to return (default 50, max 500)
regionNoNEM region, e.g. SA1 (optional)
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the action and resource without mentioning side effects, pagination, return format, or read-only nature, leaving significant transparency gaps.

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 action and resource. Every word contributes meaning, with no redundant or filler content.

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 is simple with only two optional parameters, but the description omits details about return format, ordering, or pagination. Since there is no output schema, the description should provide more context on what the response contains, making it adequate but incomplete.

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 includes full descriptions for both limit and region, covering 100% of parameters, so the description adds little beyond the schema. The phrase 'optionally filtered by region' merely repeats the schema's optional flag.

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 'List' and the resource 'NEM spot-price events', including specific event types (negative, elevated, spike, extreme). This distinguishes it from the sibling get_event_detail, which focuses on individual event details.

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 implies usage for listing events, optionally filtered by region, which is clear from the context. However, it does not explicitly mention alternatives like get_event_detail for detailed views, though the purpose is distinct enough to infer.

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

query_nem_dataAInspect

Ask a natural-language question about NEM BESS data; returns generated SQL, result rows and a plain-English explanation. Scope each question to roughly one region-month or less — aggregates spanning more (e.g. a full year by region, or per-day top-N across all regions) can exceed the 15s query timeout. For per-day top-N / bottom-N questions, phrase them so the generated SQL uses a window function (ROW_NUMBER/RANK) rather than a per-day correlated subquery — the latter has been observed to silently return all-null rows with no error. Only dispatch_prices, daily_revenue, optimal_dispatch, bess_price_profile and market_events are reachable here; the market_* cache tables (market_monthly, market_regression, market_corr_tracker, market_daily_price, market_daily_fleet) behind the market-analysis page live in a separate database and are NOT queryable through this tool — a question about them will be recomputed from dispatch_prices instead, which is slower and easy to phrase incorrectly.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYesPlain-English question (max 500 chars).
Behavior5/5

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

No annotations exist, so the description carries the full behavioral burden. It discloses a 15-second query timeout, a silent failure mode (all-null rows with no error), and the data-boundary behavior: market_* tables are not queryable here and will instead be recomputed from dispatch_prices, which is slower and easy to phrase incorrectly. This level of candid failure disclosure is exceptional.

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 dense but every clause earns its place: purpose and returns first, then scope and timeout rationale, then the silent-failure SQL trap, then the reachable/unreachable table boundary with fallback behavior. There is zero filler and the highest-risk information (scope/timeout) is 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?

For a single-parameter tool with no output schema and no annotations, the description covers the major operational realities: what it returns, timeout limits, silent-failure traps, and reachable data. The gaps are a concrete example of a well-phrased question and a more explicit shape of the returned result rows, which would push it to a 5.

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 the single 'question' parameter is already documented ('Plain-English question max 500 chars'), so the baseline is 3. The description meaningfully raises it by telling the agent how to phrase questions appropriately scoped, which patterns trigger the correct SQL (window function) and which trigger silent failures, going beyond the schema without being redundant.

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 first sentence states a specific verb and resource ('Ask a natural-language question about NEM BESS data') and enumerates the returns (generated SQL, result rows, plain-English explanation). This clearly distinguishes it from the sibling getter/list tools, so an agent can tell them apart without opening schemas.

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 gives explicit usage constraints: scope questions to roughly one region-month or less to avoid the 15s timeout, and for per-day top-N/bottom-N queries it names the correct construction (window function ROW_NUMBER/RANK) and warns against the dangerous alternative (per-day correlated subquery returning all-null rows without error). It also explicitly lists which tables are reachable and which are not, and what happens if the agent asks about the unreachable ones.

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

Frequently Asked Questions

Discussions

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Access Great Britain electricity grid open data from the NESO API, enabling queries about generation, demand, and market data.
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables access to Great Britain electricity grid and market data via the Elexon BMRS Insights API.
    9
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    MCP server for the Australian Energy Market Operator (AEMO) National Electricity Market. Plain-English access to 5-min dispatch prices, regional demand, interconnector flows, generation by fuel, rooftop PV.
    5
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources