Skip to main content
Glama

query_nem_data

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.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
questionYesPlain-English question (max 500 chars).

TDQS

A4.8/5.0
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.

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