Skip to main content
Glama

Server Details

Source-cited US machine-economy data: power, grid, AI-infra construction, jobs, chip imports.

Status
Healthy
Last Tested
Transport
Streamable HTTP
URL

Glama MCP Gateway

Connect through Glama MCP Gateway for full control over tool access and complete visibility into every call.

MCP client
Glama
MCP server

Full call logging

Every tool call is logged with complete inputs and outputs, so you can debug issues and audit what your agents are doing.

Tool access control

Enable or disable individual tools per connector, so you decide what your agents can and cannot do.

Managed credentials

Glama handles OAuth flows, token storage, and automatic rotation, so credentials never expire on your clients.

Usage analytics

See which tools your agents call, how often, and when, so you can understand usage patterns and catch anomalies.

100% free. Your data is private.
Tool DescriptionsA

Average 4.6/5 across 32 of 32 tools scored. Lowest: 3.9/5.

Server CoherenceA
Disambiguation5/5

Every tool has a clearly distinct purpose: describe tools provide metadata, query tools retrieve data, and each targets a specific dataset (capacity, demand, generation, etc.) or ISO region. Even the multiple queue tools are distinguished by ISO name in the tool name and description.

Naming Consistency4/5

The majority follow a consistent verb_noun_v1 pattern (describe_* and query_*). However, a few tools use different verbs (get_source_evidence_v1, list_capabilities_v1) and some lack the 'power' prefix (describe_capacity_factor_v1 vs. describe_power_capacity_v1), causing minor inconsistency.

Tool Count4/5

32 tools is on the higher side but appropriate given the breadth of U.S. power data covered (multiple datasets and 8 ISO queues). Each tool earns its place, though a single metadata tool per dataset could have reduced count.

Completeness4/5

The tool set covers major power datasets (EIA-860, 923, 930, 861, interconnection queues for all major ISOs, ERCOT prices). Minor gaps include lack of price tools for other ISOs and absence of emissions or fuel cost data, but core workflows are well-covered.

Available Tools

38 tools
describe_ai_infrastructure_construction_v1Describe AI Infrastructure Construction (data centers + fabs)A
Read-onlyIdempotent
Inspect

Describe valid filters, groupings, metrics, detail fields, and citation fields for ai_infrastructure.construction.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which the description does not contradict. The description adds behavioral context by specifying exactly what aspects are described (filters, groupings, etc.), which goes beyond what 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 a single sentence that is front-loaded with the core action and scope. Every word is essential; there is no redundancy or fluff.

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 tool with no parameters and an output schema, the description is complete in stating what it describes. It could optionally mention it is for discovering valid inputs to the query tool, but the naming and sibling tools make this implicit.

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 has no parameters (100% coverage with zero params). The description adds value by listing the types of information the tool returns about the queryable dataset, compensating for the lack of parameters.

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 describes valid filters, groupings, metrics, detail fields, and citation fields for a specific dataset (ai_infrastructure.construction). The verb 'describe' and resource are explicit, and it distinguishes from sibling describe tools which cover different topics like capacity factor or power capacity.

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 usage context is clear from the name and sibling tools: this is a discovery tool for the corresponding query tool (query_ai_infrastructure_construction_v1). While it doesn't explicitly state 'use this before querying', the purpose is evident. No other tool describes the same dataset, so guidance is sufficient.

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

describe_ai_infrastructure_employment_v1Describe AI Infrastructure Employment (data centers + semiconductors)A
Read-onlyIdempotent
Inspect

Describe valid filters, groupings, metrics, detail fields, and citation fields for ai_infrastructure.employment.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already indicate readOnly, idempotent, and non-destructive behavior. The description adds specific behavioral context by listing what aspects are described (filters, groupings, etc.), providing value beyond annotations.

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 that is concise, front-loaded, and contains no superfluous words. Every part of the sentence is meaningful.

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 parameters, existing output schema, and the tool's simple nature, the description is complete. It clearly communicates what the tool produces without needing additional details.

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?

There are no parameters, so schema coverage is 100% and the baseline is 4. The description does not need to add parameter information beyond what the 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 states the tool's purpose: describing valid filters, groupings, metrics, detail fields, and citation fields for ai_infrastructure.employment. It uses specific verb+resource and distinguishes from sibling describe tools for other datasets.

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: before querying employment data, use this tool to discover available fields. However, it does not explicitly state when to use vs. alternatives, but the naming and context make it clear that sibling tools serve different datasets.

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

describe_ai_infrastructure_trade_v1Describe AI Infrastructure Trade (chip imports)A
Read-onlyIdempotent
Inspect

Describe valid filters, groupings, metrics, detail fields, and citation fields for ai_infrastructure.trade.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds specific context about what the tool describes (filters, groupings, etc.), which goes beyond the annotations. No contradictory information is present.

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 effectively communicates the tool's purpose without unnecessary words. It is front-loaded and efficient.

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?

Given the zero parameters and presence of an output schema, the description is adequate. It could optionally mention that it is intended to be used before querying trade data, but the current wording is complete enough.

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 100% schema description coverage, the description does not need to add parameter information. The baseline score of 4 is appropriate as there is no missing parameter documentation.

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 that this tool describes valid filters, groupings, metrics, detail fields, and citation fields for ai_infrastructure.trade. This is a specific verb+resource, and given the sibling tools, it distinguishes itself from other describe tools for different datasets.

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?

While not explicitly stating when to use this tool versus alternatives, the description clearly implies that it provides metadata for the trade dataset, which is a unique resource among siblings. The context of sibling tools (e.g., describe_ai_infrastructure_construction_v1) makes the usage clear.

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

describe_capacity_factor_v1Describe Power Capacity FactorA
Read-onlyIdempotent
Inspect

Describe capacity factor: net generation / (operating nameplate × hours), joined across EIA-860M and EIA-923.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare safe read-only behavior. Description adds formula and data sources, which is useful context beyond annotations.

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?

Single sentence, no waste, front-loaded with key 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?

With no parameters, rich annotations, and output schema present, the description provides formula and data sources, which is fully complete for a describe tool.

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?

No parameters to document; schema coverage is 100%. Baseline 4 for zero parameters.

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?

Clearly states verb 'describe', specific resource 'capacity factor', and provides the formula and data sources. Distinguishes from siblings by being a definition tool.

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?

Implies usage via 'describe' vs 'query' sibling distinction, but no explicit when-to-use or when-not-to-use guidance.

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

describe_power_capacity_v1Describe Power CapacityA
Read-onlyIdempotent
Inspect

Describe valid filters, groupings, metrics, detail fields, and citation fields for power.capacity.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds that it returns 'valid' elements, but does not disclose additional behavioral details beyond what 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 a single, focused sentence that is front-loaded with the verb 'describe' and immediately states the resource. Every word contributes meaning.

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 zero parameters, full annotation coverage, and the presence of an output schema, the description is complete: it lists all categories of metadata returned (filters, groupings, metrics, detail fields, citation fields).

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?

There are no parameters, so the baseline is 4. The description does not need to explain parameters, but it does explain that the tool returns metadata about query fields.

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 tool describes valid filters, groupings, metrics, detail fields, and citation fields for 'power.capacity'. The verb 'describe' and explicit resource distinguish it from sibling tools like describe_capacity_factor_v1.

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 this tool is used to obtain metadata before querying power.capacity, but it does not explicitly state when to use it versus alternatives. The sibling names provide context, but the description itself lacks usage guidance.

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

describe_power_demand_rollup_v1Describe Power Demand (national / region rollup)A
Read-onlyIdempotent
Inspect

Describe valid filters, groupings, metrics, detail fields, and citation fields for power.demand_rollup.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds transparency by enumerating exactly what aspects are described (filters, groupings, etc.), complementing annotations without contradiction.

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?

Single sentence front-loads the core action and includes all necessary details. No filler words, perfectly concise for a zero-parameter tool.

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 parameters, full annotations, and an output schema (implied), the description covers what the tool does and for which dataset. Complete for its role as a metadata discovery tool.

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?

No parameters exist, so the parameter semantics dimension is satisfied by default. Schema description coverage is 100%. Baseline 4 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?

The description uses specific verbs ('Describe valid filters, groupings, metrics, detail fields, and citation fields') and clearly identifies the target resource ('power.demand_rollup'). It distinguishes from siblings like describe_power_demand_v1 and query_power_demand_rollup_v1 by specifying the rollup variant.

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 before query_power_demand_rollup_v1 to understand available fields. The title adds context ('national / region rollup'), but no explicit when-not or alternatives are provided. Still, the purpose is clear for a describe tool.

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

describe_power_demand_v1Describe Power DemandA
Read-onlyIdempotent
Inspect

Describe valid filters, groupings, metrics, detail fields, and citation fields for power.demand.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already indicate the tool is read-only, idempotent, and non-destructive. The description adds specific behavioral context by detailing what aspects (filters, groupings, etc.) are described. No contradictions with annotations.

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, front-loaded sentence that conveys the tool's purpose efficiently without unnecessary words.

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?

Given the zero parameter input and presence of an output schema, the description adequately explains what the tool returns. It could be slightly more explicit about the return format, but the output schema likely covers that.

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 100% schema coverage (empty schema), the description adds meaning by listing the categories of information provided (filters, groupings, metrics, etc.). It compensates for the lack of parameter detail, though could be more precise about the output structure.

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 that the tool describes valid filters, groupings, metrics, detail fields, and citation fields for power.demand. This explicitly defines the tool's specific resource and action, distinguishing it from sibling describe tools that cover different subjects like capacity factor or power generation.

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?

No explicit guidance on when to use this tool versus siblings. However, the description implies it is useful as a metadata discovery tool before running query_power_demand_v1. An explicit mention of this usage context would improve clarity.

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

describe_power_generation_v1Describe Power GenerationA
Read-onlyIdempotent
Inspect

Describe valid filters, groupings, atoms, metrics, detail fields, and citation fields for power.generation.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

Annotations already provide readOnlyHint=true, idempotentHint=true, and destructiveHint=false, making the tool's safety profile clear. The description adds no new behavioral context beyond the annotations, so a score of 3 is appropriate as it neither enriches nor contradicts the structured metadata.

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 that immediately conveys the tool's purpose without any extraneous information. It is front-loaded and every word contributes to clarity.

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 the tool has no parameters and an output schema is present, the description comprehensively lists what the tool describes (filters, groupings, atoms, metrics, detail fields, citation fields). This is sufficient for an agent to understand the tool's role as a metadata provider.

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 has no parameters, and schema description coverage is 100%. Per the guidelines, 0 parameters warrants a baseline score of 4. The description does not need to compensate for missing parameter details.

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 explicitly states that the tool describes valid filters, groupings, atoms, metrics, detail fields, and citation fields for power.generation. It uses a specific verb (describe) and resource (power generation metadata), clearly distinguishing it from sibling describe tools targeting other topics.

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 does not explicitly state when to use this tool versus alternatives, nor does it mention its primary relationship with query_power_generation_v1. The usage is implied (to get metadata before querying), but the lack of explicit guidance and no mention of when not to use it results in a score of 3.

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

describe_power_interconnection_queue_caiso_v1Describe Power Interconnection Queue (CAISO)A
Read-onlyIdempotent
Inspect

Describe valid filters, groupings, metrics, detail fields, and citation fields for power.interconnection_queue_caiso.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

The description provides additional context beyond the annotations by specifying exactly what aspects (filters, groupings, etc.) are described. The annotations already indicate read-only and idempotent behavior, and the description is consistent. No contradiction and adds meaningful detail about the tool's output scope.

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, well-structured sentence that front-loads the essential information. Every word is necessary, and there is no redundancy or filler.

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 the tool has no parameters and includes an output schema, the description fully covers what the agent needs: it lists the types of fields that will be described. The annotations handle safety and side effects, making the description complete for this metadata tool.

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 has zero parameters, so the baseline score is 4 per the rubric. The description does not need to add parameter semantics since none exist, and it correctly omits extraneous information.

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 tool's function: to describe valid filters, groupings, metrics, detail fields, and citation fields for the CAISO interconnection queue. The verb 'describe' and resource 'power.interconnection_queue_caiso' are specific, and the title reinforces the CAISO scope, distinguishing it from sibling tools for other regions.

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 when needing to know available query parameters for the CAISO interconnection queue. However, it does not explicitly indicate when not to use it or how it differs from the generic describe_power_interconnection_queue_v1 or other regional describe tools. The title and name help, but clearer guidance would improve it.

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

describe_power_interconnection_queue_ercot_v1Describe Power Interconnection Queue (ERCOT)A
Read-onlyIdempotent
Inspect

Describe valid filters, groupings, metrics, detail fields, and citation fields for power.interconnection_queue_ercot.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds context about the specific dataset and what aspects are described (filters, groupings, etc.), but does not disclose additional behavioral traits beyond what annotations provide. No contradictions.

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?

A single sentence front-loaded with the core action ('Describe valid filters...') and efficiently lists all information categories. No redundant words or filler.

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?

Given no parameters and an existing output schema, the description adequately covers what the tool returns. It explicitly names all major information categories. It does not mention that the output is a structured schema, but that is implicit from the tool type. Minor improvement would be to note the output format.

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 and 100% schema coverage. With no parameters to document, the baseline is 4. The description accurately reflects that there are no parameters to set, simply naming the categories of information that will be returned.

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 tool's function: it describes valid filters, groupings, metrics, detail fields, and citation fields for a specific dataset (power.interconnection_queue_ercot). This is a specific verb+resource pairing that distinguishes it from sibling describe tools for other regions or data types.

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 the tool is for exploring the ERCOT interconnection queue schema, but it does not explicitly state when to use it versus alternatives like describe_power_interconnection_queue_caiso_v1. No direct guidance on when-not or prerequisites is provided.

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

describe_power_interconnection_queue_isone_v1Describe Power Interconnection Queue (ISO-NE)A
Read-onlyIdempotent
Inspect

Describe valid filters, groupings, metrics, detail fields, and citation fields for power.interconnection_queue_isone.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description adds no further behavioral context. No contradiction noted.

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, well-structured sentence that immediately informs the agent of the tool's purpose and scope. No unnecessary words.

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 parameters and the presence of an output schema, the description adequately covers what the tool does without needing to explain return values.

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?

There are zero parameters and schema coverage is 100%, so the description does not need to add parameter information. The lack of parameters is appropriately handled by the schema.

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 tool name and description clearly specify the verb 'describe' and the resource 'power.interconnection_queue_isone', listing exactly what it describes: valid filters, groupings, metrics, detail fields, and citation fields. This distinguishes it from sibling describe tools for other regions.

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 this tool should be used to retrieve metadata before querying the corresponding data tool, but it does not explicitly state when to use it vs. alternatives or provide exclusion criteria.

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

describe_power_interconnection_queue_nyiso_v1Describe Power Interconnection Queue (NYISO)A
Read-onlyIdempotent
Inspect

Describe valid filters, groupings, metrics, detail fields, and citation fields for power.interconnection_queue_nyiso.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already mark this as read-only and non-destructive. The description adds value by detailing exactly what metadata is returned (filters, groupings, etc.), providing behavioral context beyond the annotations.

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, front-loaded sentence that conveys all necessary information without redundancy. Every word contributes meaning.

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 describe tool with no parameters and an output schema, the description fully captures the tool's purpose. It is complete given the simplicity and available annotations/schema.

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 per guidelines baseline is 4. No additional parameter information is needed.

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 explicitly states it describes valid filters, groupings, metrics, detail fields, and citation fields for a specific data source (power.interconnection_queue_nyiso). The verb 'describe' and resource are clear, and it distinguishes from sibling tools (other describe_ tools for different regions/datasets).

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 context: use this tool to learn about available filters and fields for the NYISO interconnection queue. No explicit when-not or alternatives are mentioned, but the sibling tools for other regions make the scope clear.

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

describe_power_interconnection_queue_pjm_cycle_v1Describe Power Interconnection Queue (PJM cluster/cycle)A
Read-onlyIdempotent
Inspect

Describe valid filters, groupings, metrics, detail fields, and citation fields for power.interconnection_queue_pjm_cycle.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

Annotations already declare the tool as read-only, idempotent, and non-destructive. The description adds context about the data source and the categories of information described (filters, groupings, etc.), but does not disclose additional behavioral traits such as authentication requirements, rate limits, or what happens if the dataset is unavailable. With annotations covering safety, the description provides moderate supplementary value.

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 a single sentence that is concise and front-loaded with the key action. It clearly communicates the tool's output without extraneous words. However, it could be structured slightly better (e.g., listing categories more explicitly), but overall it is efficient and easy to parse.

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?

Given the tool has no parameters, an output schema exists, and the description lists the categories of information it provides (filters, groupings, metrics, detail fields, citation fields), the description is complete enough for an agent to understand its purpose and output. No critical gaps remain.

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 has zero parameters, so schema coverage is 100%. The description does not explain parameter meanings (none exist), but it clarifies what the tool returns—valid filters, groupings, metrics, detail fields, and citation fields. This adds semantic value beyond the schema, aligning with the baseline of 4 for zero-parameter tools.

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 explicitly states the tool's purpose: to describe valid filters, groupings, metrics, detail fields, and citation fields for the power.interconnection_queue_pjm_cycle dataset. It uses a specific verb ('describe') and resource, and the name and title clearly differentiate it from siblings that describe other datasets or query tools.

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 does not provide explicit guidance on when to use this tool versus alternatives (e.g., when to use describe vs. query, or when to use this specific dataset describe). While the sibling list implies it is for the PJM cycle dataset, there is no advice on prerequisites, ordering, or exclusions, leaving the agent to infer usage.

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

describe_power_interconnection_queue_pjm_v1Describe Power Interconnection Queue (PJM)A
Read-onlyIdempotent
Inspect

Describe valid filters, groupings, metrics, detail fields, and citation fields for power.interconnection_queue_pjm.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description does not need to add much. It confirms the tool is for querying metadata, which is consistent. No additional behavioral details are needed.

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 tool's purpose. Every word is essential, with no redundancy or filler.

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 zero parameters and the presence of an output schema, the description completely and accurately explains what the tool does. It leaves no ambiguity for an AI agent to invoke the tool 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?

The input schema has zero parameters, so no parameter documentation is required. Schema coverage is 100%, and the description does not need to add parameter semantics. Baseline for 0 parameters is 4.

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 explicitly states it describes valid filters, groupings, metrics, detail fields, and citation fields for a specific resource (power.interconnection_queue_pjm). This clearly identifies the tool's purpose, and the naming distinguishes it from sibling tools for other regions.

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 the tool should be used to understand the schema of the PJM interconnection queue before querying. While it does not explicitly mention alternatives or when not to use it, the naming convention and context make it clear.

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

describe_power_interconnection_queue_spp_v1Describe Power Interconnection Queue (SPP)A
Read-onlyIdempotent
Inspect

Describe valid filters, groupings, metrics, detail fields, and citation fields for power.interconnection_queue_spp.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds no further behavioral context, which is acceptable given the annotations cover safety and idempotency.

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, front-loaded sentence with no unnecessary words. It efficiently conveys the tool's purpose.

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?

Given zero parameters, existing annotations, and an output schema, the description is sufficient. It could optionally mention that the tool provides metadata for query_* tools, but it is not required.

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 no parameters, so schema coverage is 100%. Following the baseline rule (0 params = 4), no additional parameter info is needed. The description correctly omits parameter details.

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 uses the verb 'Describe' and specifies the resource 'power.interconnection_queue_spp', clearly identifying the tool's function. It distinguishes itself from sibling describe tools for other RTOs by explicitly naming SPP.

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 states what the tool does but does not provide explicit guidance on when to use it versus alternatives like the generic describe_power_interconnection_queue_v1. However, the name and context imply regional specificity.

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

describe_power_interconnection_queue_v1Describe Power Interconnection Queue (MISO)A
Read-onlyIdempotent
Inspect

Describe valid filters, groupings, metrics, detail fields, and citation fields for power.interconnection_queue.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

The description adds no behavioral context beyond the annotations already provided (readOnlyHint, idempotentHint, destructiveHint). Annotations sufficiently indicate safe, idempotent behavior, so the description is neutral but not enhancing.

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, clear sentence front-loading the verb and resource. Every word is necessary, and there is no redundancy or fluff.

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 zero parameters, an existing output schema, and comprehensive annotations, the description fully informs the agent of what the tool returns (filters, groupings, etc.) and is sufficient for a describe tool in this ecosystem.

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 description cannot add meaning beyond the empty schema. Baseline is 4 per guidelines, and the description adequately covers that there are no parameters to describe.

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 explicitly states the tool 'describe valid filters, groupings, metrics, detail fields, and citation fields for power.interconnection_queue', clearly identifying the verb, resource, and scope. It distinguishes from sibling tools by the resource name and region (MISO) implied in the title.

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 does not explicitly state when to use this tool versus alternatives. Usage context is implied by the tool being a describe tool for a specific dataset, which is standard, but no explicit exclusions or prerequisites are provided.

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

describe_power_price_ercot_v1Describe Power Prices (ERCOT day-ahead)A
Read-onlyIdempotent
Inspect

Describe valid filters, groupings, metrics, detail fields, and citation fields for power.price_ercot.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true, so the description adds context about the scope of what the tool describes (filters, groupings, etc.), which is consistent and helpful.

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 that is front-loaded and contains no unnecessary words. It efficiently communicates the tool's function.

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 the low complexity (no parameters, output schema present), the description is complete. It covers what the tool does without needing to explain return values due to output schema.

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 and 100% schema coverage, so the description adds no parameter info, which is appropriate. Baseline for 0 params is 4.

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 tool describes valid filters, groupings, metrics, detail fields, and citation fields for the specific dataset power.price_ercot. It uses specific verbs and resource, and the sibling tools for other datasets make this one distinct.

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 does not explicitly state when to use this tool versus alternatives like query_power_price_ercot_v1 or other describe tools. Usage is implied (to get metadata before querying), but no exclusions or when-not context is provided.

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

describe_power_retail_sales_v1Describe Power Retail SalesA
Read-onlyIdempotent
Inspect

Describe valid filters, groupings, metrics, detail fields, and citation fields for power.retail_sales.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the tool's safety profile is clear. The description adds value by specifying the exact types of information it returns (filters, groupings, etc.), though it does not elaborate on edge cases or output structure.

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 that clearly and efficiently conveys the tool's purpose without any wasted words. It is front-loaded and easy to scan.

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 that the tool has no parameters, has an output schema (which can explain return values), and the description explicitly lists the categories of information returned (filters, groupings, metrics, detail fields, citation fields), the description is complete enough for this simple metadata tool.

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 no parameters, so the input schema is empty with 100% coverage. The description does not need to add parameter semantics, and the baseline score for zero parameters is 4. The description provides no additional parameter info, which 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?

The description clearly states the tool's purpose: to describe valid filters, groupings, metrics, detail fields, and citation fields for a specific resource (power.retail_sales). This is a specific verb+resource pair, and it distinguishes itself from sibling describe tools by naming the resource explicitly.

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 as a metadata exploration tool before querying, but it does not explicitly state when to use this tool versus other describe tools for different datasets or when not to use it. No alternatives or exclusions are mentioned.

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

get_source_evidence_v1Get Source EvidenceA
Read-onlyIdempotent
Inspect

Fetch and hash-verify the raw source row behind a returned citation.

Pass a citation object inside params. Two ready-to-pass shapes come straight from the query tools: each aggregate row's citations[ref].verify object, or a detail record's citation (from include_records). Either proves the number with no re-query. The tool verifies the raw workbook SHA-256 before returning source-header row values. Use this when an agent must prove an answer from the underlying source row.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint), the description reveals SHA-256 verification, no re-query behavior, and that it returns source-header row values, providing comprehensive behavioral context.

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 concise and front-loaded with the core action, but the middle sentence could be slightly more streamlined without losing clarity.

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?

Given the output schema existence, the description covers purpose, input, behavior, and use case adequately, though it omits error scenarios or limitations.

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 0% schema coverage, the description compensates by describing the expected input shapes (citation object from query tools) and giving concrete examples, though it does not detail all possible properties.

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 tool fetches and hash-verifies the raw source row behind a citation, differentiating it from sibling query/describe tools that provide aggregated or descriptive 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 description explains when to use the tool ('prove an answer from the underlying source row') and how to obtain the input from query tools, but does not explicitly mention when not to use it or alternatives, though none are necessary.

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

list_capabilities_v1List CapabilitiesA
Read-onlyIdempotent
Inspect

List available exascale.build data capabilities for agent discovery before querying.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, fully informing the agent this is a safe, idempotent read operation. The description adds that it lists capabilities, but no additional behavioral traits (e.g., response size, caching) are disclosed.

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, front-loaded sentence of 11 words, with no wasted text. It efficiently conveys purpose and context.

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 the tool has no parameters, has annotations covering safety and idempotency, and has an output schema (though its contents are unknown), the description provides sufficient context for a listing tool. It clearly states the tool's role in discovery before querying.

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 has zero parameters, so the baseline is 4. The description does not need to add parameter information, and it correctly omits it.

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 explicitly states the tool lists available exascale.build data capabilities, using a specific verb (list) and resource (capabilities). It clearly distinguishes from sibling describe/query tools which target specific data topics.

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 says 'for agent discovery before querying,' implying it should be used first to determine what data is available. However, it does not explicitly state when not to use it or mention alternatives, though the sibling tools naturally serve as alternatives for specific queries.

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

query_ai_infrastructure_construction_v1Query AI Infrastructure Construction (data centers + fabs)A
Read-onlyIdempotent
Inspect

Query verified U.S. private construction spending ($ millions) for data centers and semiconductor/computer-electronics manufacturing plants, from the U.S. Census Bureau's Value of Construction Put in Place (C30).

Use this for "how much is being spent BUILDING data centers (or chip fabs) in the US" questions — the construction buildout in dollars, not capacity or investment. Filter by category ("data_center" — Census's named subcategory under Office; or "computer_electronic_electrical" — the semiconductor/computer-electronics manufacturing line under Manufacturing), basis ("seasonally_adjusted" = a seasonally-adjusted ANNUAL RATE, or "not_seasonally_adjusted" = the NOT-adjusted MONTHLY LEVEL), data_month (one month, ISO first-of-month e.g. "2026-04-01") or the data_month_from/data_month_to range, year, and revision_status ("preliminary", "revised", or "final"). Group by any of category, basis, data_month, year, or revision_status. Pass each parameter as a top-level key of params (flat — not nested under a filter, filters, or where key). Example: {"category": "data_center", "basis": "seasonally_adjusted", "data_month": "2026-04-01"} for one month; add "group_by": ["data_month"] over a data_month_from/data_month_to range for a series. Returns JSON aggregates with citations and optional row-level records when include_records is true — every value cites the exact Census workbook, sheet, row, and column.

The two categories are DISTINCT series and are never conflated: data_center is data-center buildings; computer_electronic_electrical is the chip/electronics-manufacturing (fab) line — the CHIPS-Act build-out. basis is the other fork: the seasonally-adjusted series is an ANNUAL RATE (what the current monthly pace annualizes to), while the not-seasonally-adjusted series is the actual MONTHLY LEVEL. revision_status carries Census's own preliminary/revised/final marking verbatim.

Data is monthly; the data-center series begins 2014-01. The response as_of is the release vintage (Census revises monthly); pin as_of to an earlier vintage to reproduce what was served then.

NOT additive: construction_spending_musd is a published per-(category, basis, month) reading, so a total that mixes the two bases (an annual rate + a monthly level), or that sums the seasonally-adjusted ANNUAL-RATE series across months, is not a real figure — such a result carries a construction_aggregation scope note and ranking remainders omit the metric. Filter to one basis and group_by data_month for a series over time.

Does not determine total data-center INVESTMENT (servers, chips, cooling, equipment — this is construction put-in-place only; Census does not publish an investment total), data-center MW capacity, count, square footage, or location (use the power.* capabilities for capacity and the interconnection queue), which company or project is building (Census C30 has no operator breakdown), public or government construction (this is PRIVATE construction only), or construction outside these two categories.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Discloses beyond annotations: data is monthly, start date, as_of vintage, non-additive nature, and meaning of the two basis types. These are critical for correct interpretation and are not in annotations.

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 well-organized, front-loading purpose then diving into details. Every sentence adds value; no redundancy. Minor room for more concise phrasing but highly informative.

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?

Covers all necessary context: data source, available filters, grouping, output format (JSON with citations), citation details, exclusions, and important behavioral caveats (non-additivity). No gaps given the existence of an output schema.

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?

The input schema has only a generic 'params' object with 0% coverage. The description fully compensates by listing all valid keys (category, basis, data_month, etc.), their allowed values, and usage examples with JSON examples.

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 queries U.S. private construction spending for data centers and semiconductor plants from the Census C30 dataset. It distinguishes itself from sibling tools (e.g., power queries) by focusing on economic construction data.

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 tells when to use the tool (for construction spending questions) and what it does NOT cover (investment, capacity, location, etc.). Provides examples of correct query patterns and warns against invalid aggregations.

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

query_ai_infrastructure_employment_v1Query AI Infrastructure Employment (data centers + semiconductors)A
Read-onlyIdempotent
Inspect

Query verified U.S. employment, establishments, and wages for the data-center industry and semiconductor manufacturing — by national, state, and county — from the U.S. Bureau of Labor Statistics' Quarterly Census of Employment and Wages (QCEW).

Use this for "how many people work in / how many establishments / what wages in data centers (or chip fabs) in the US, a state, or a county" questions — INDUSTRY employment, not an "AI jobs" count. Filter by industry_code ("518210" = computing infrastructure / data processing / web hosting — the data-center industry; "334413" = semiconductor & related device manufacturing), own_code ("5" = Private — the usual one; "1"/"2"/"3" = federal/state/local government; "0" = Total Covered), geography (agglvl "18" national / "58" state / "78" county; plus state USPS e.g. "VA", county_fips 5-digit e.g. "51107" Loudoun County, or area_fips), and time (year, qtr "1"-"4", the quarter ISO first-of-quarter e.g. "2025-10-01", or a quarter_from/quarter_to range). Group by any of industry, industry_code, ownership, own_code, state, county_fips, agglvl, year, qtr, or quarter. Pass each parameter as a top-level key of params (flat — not nested under a filter/where key). Example: {"industry_code": "518210", "own_code": "5", "agglvl": "18", "quarter": "2025-10-01"} for the national private figure; add "group_by": ["county_fips"], "state": "VA" for counties. Returns JSON aggregates with citations and optional row-level records when include_records is true — every value cites the exact BLS file, row, and quarter.

Measures: qtrly_estabs (establishments), month1_emplvl/month2_emplvl/month3_emplvl (employment in each month of the quarter — intra-quarter SNAPSHOTS; average them for a quarterly figure, never sum them), total_qtrly_wages ($), and avg_wkly_wage ($, on detail records). The two industries are DISTINCT, never conflated.

SUPPRESSION: BLS withholds a confidential (small county × industry) cell by zeroing its employment and wages and marking disclosure_code "N" (or "-"). Those are served as NULL (absent), never as zero — the establishment count is still shown. Roughly half of county × data-center cells are withheld; an absent value means "BLS withheld it," not "no jobs."

Data is quarterly back to 2014 Q1, ~6-month lag (latest ≈ 2025 Q4). The response as_of is the release vintage; pin as_of to reproduce an earlier vintage.

NOT additive across hierarchy or time: counts and employment are additive across distinct AREAS within ONE agglvl + ONE own_code + ONE quarter (e.g. all counties in a state). They are NOT additive across geographic levels (national already contains states/counties — a qcew_hierarchy note flags it), across ownership totals ("0"/"8" contain their components), or across QUARTERS (employment is a per-quarter stock — a qcew_period note flags it; quarterly wages, by contrast, sum across quarters into an annual bill). Filter or group_by to avoid double-counting.

Does not determine "AI jobs" or a data-center-only headcount (NAICS 518210 is the broader computing-infrastructure / hosting industry), employment for a withheld cell (served absent), occupation or job-title detail (QCEW is industry, not occupation), which company employs (no employer breakdown), or MSA / metro figures (national / state / county only).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations indicate readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description goes far beyond by detailing suppression (withheld cells as NULL, not zero), non-additivity across levels/quarters, data vintage (back to 2014 Q1, ~6-month lag), and measures semantics. No contradictions.

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 well-organized with a clear summary, usage instructions, parameter details, measures, supplements, and exclusions. Every sentence adds value; slight verbosity is justified by complexity. It is front-loaded with the main purpose.

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 the tool's complexity (many parameters, behavioral rules, and an output schema), the description covers purpose, source, all parameter keys with values, suppression, additivity constraints, time range, and exclusions. It is complete without needing to describe return format due to output schema existence.

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?

Schema description coverage is 0%, but the description fully compensates by enumerating all valid parameter keys (industry_code, own_code, agglvl, state, etc.), explaining their values, giving examples, and specifying grouping and record inclusion. This is comprehensive parameter documentation.

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 tool queries U.S. employment, establishments, and wages for data-center and semiconductor industries by geography from BLS QCEW. It specifies the verb, resource, scope, and source, and distinguishes from siblings like query_ai_infrastructure_construction_v1 by focusing on employment, not construction.

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 states when to use the tool (e.g., 'how many people work in...') and includes a dedicated list of what it does not determine (e.g., 'AI jobs', occupation detail, MSA figures). It provides clear context for appropriate use despite not naming siblings directly.

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

query_ai_infrastructure_trade_v1Query AI Infrastructure Trade (chip imports)A
Read-onlyIdempotent
Inspect

Query verified U.S. monthly IMPORTS of integrated circuits (HS-8542) — customs value (USD) by country of origin — from the U.S. Census Bureau's International Trade data.

Use this for "how much $ of chips did the US import (from Taiwan / South Korea / in total) and how is it trending" questions. HS-8542 is ALL integrated circuits (processors, memory, amplifiers, parts) — NOT AI-accelerator / GPU-specific. Filter by country (the verbatim Census name, e.g. "TAIWAN", "KOREA, SOUTH"), cty_code (the Census country code, e.g. "5830"), country_level ("total" = the all-countries TOTAL, "country" = an individual country, "grouping" = a Census bloc/continent like ASIA / APEC / EU), year, data_month (one month, ISO first-of-month e.g. "2026-04-01") or the data_month_from/data_month_to range. Group by any of country, cty_code, country_level, data_month, or year. Pass each parameter as a top-level key of params (flat — not nested under a filter, filters, or where key). Example: {"country_level": "country", "group_by": ["country"], "order_by": "general_value_usd", "top_n": 5} for the top source countries; {"country_level": "total", "group_by": ["data_month"]} for the national trend. Returns JSON aggregates with citations and optional row-level records when include_records is true — every value cites the exact Census response row, re-verifiable via get_source_evidence_v1.

Measures: general_value_usd (general imports value) and consumption_value_usd (imports for consumption) — value only; HS-8542 reports no meaningful quantity at this level, so there is no chip count. NEVER SUM across country rows: Census's groupings (ASIA, APEC, EU, OECD, ASEAN, the continents) OVERLAP each other and the individual countries, and the all-countries TOTAL contains everything — so adding rows double-counts. Filter country_level=total for the U.S. national figure, country_level=country for individual countries, or group_by country for the per-country series; a cross-row sum returns a country_aggregation note and nulls the metric in ranking remainders. Country is the country of ORIGIN (Census attribution), not where a chip is installed — there is no U.S. state/county breakdown. Imports only (not exports), customs value (not landed/CIF/duty), and recent months are preliminary and revised in later releases.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint), the description discloses key behaviors: imports only, no chip count, no state/county breakdown, preliminary months revised, customs value only, and the double-counting risk from overlapping groupings. This fully informs the agent of the tool's operational characteristics.

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 front-loaded with a clear summary and well-structured into usage, parameters, and caveats. While lengthy, every sentence adds value given the tool's complexity. Minor redundancy could be trimmed, but it is appropriately detailed.

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 the tool's complexity (multiple parameters, grouping, citation mechanism), the description is fully complete. It covers return format (JSON aggregates with citations), data source, what is not provided, and how to re-verify via get_source_evidence_v1. The existence of an output schema does not reduce need for this 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?

With input schema having 0% description coverage, the description fully documents all parameters: country, cty_code, country_level, year, data_month, data_month_from/to, group_by, order_by, top_n, include_records. It explains their usage, values, nesting (flat keys), and provides explicit examples, compensating entirely for the bare schema.

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 that the tool queries U.S. monthly imports of integrated circuits (HS-8542) with customs value by country of origin. It distinguishes from siblings like describe variants and explicitly notes it is NOT AI-accelerator/GPU-specific, ensuring correct tool selection.

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 provides explicit usage examples ('how much $ of chips did the US import') and warns against summing across country rows due to overlapping groupings. While it doesn't directly contrast with other query tools, it effectively clarifies when to use this tool and its limitations.

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

query_capacity_factor_v1Query Power Capacity FactorA
Read-onlyIdempotent
Inspect

Query verified U.S. capacity factor — how hard a fleet actually runs — by joining EIA-860M capacity and EIA-923 generation.

Requires data_month: one ISO month start, e.g. "2026-01-01". If the user names no month, ask which one (or state the month you chose); if a month is not covered, the error lists the months that are — do not retry blindly.

capacity_factor = net generation (MWh) / (operating nameplate capacity (MW) × hours in the month), computed over plant×fuel present in BOTH sources, so scope is auto-aligned. Optional group_by of state and/or fuel_group, and state/fuel_group filters. Returns the capacity factor per group with its generation and capacity, a coverage declaration (what share of in-scope capacity/generation matched), and a citation to BOTH the capacity and the generation source row. Basis is nameplate; storage is excluded; the capacity snapshot is matched to the month. Does not determine per-generator capacity factor, a net-summer/winter basis, or months absent from either source.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations indicate readOnlyHint, idempotentHint, and non-destructive. The description adds significant behavioral context: automatic scope alignment, storage exclusion, nameplate basis, and explicit statements of what the tool does not determine. No contradiction with annotations.

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?

Every sentence adds value, covering purpose, usage, parameters, behavior, and limitations. The description is dense but well-organized and front-loaded with key 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?

With an output schema present, the description does not need to detail return values. It explains the calculation, scope, filters, and output components (capacity factor, generation, capacity, coverage, citation), making it complete for a complex analytical tool.

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?

The input schema has only a generic 'params' object with 0% coverage, but the description compensates by detailing actual parameters: data_month (required), optional group_by, state, fuel_group filters. This adds essential meaning beyond the schema.

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 tool queries 'U.S. capacity factor' and explains the computation methodology using EIA-860M and EIA-923 data. It distinguishes itself from siblings like query_power_capacity_v1 and query_power_generation_v1 by focusing on capacity factor derived from both sources.

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 specifies that a data_month is required and provides guidance on handling missing month or errors, including not retrying blindly. It mentions optional parameters but does not explicitly compare usage against sibling tools for when to use this vs. others.

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

query_power_capacity_v1Query Power CapacityA
Read-onlyIdempotent
Inspect

Query verified U.S. generator-level operating, planned, retired, or canceled power capacity from EIA-860M.

Use this for capacity questions by state/jurisdiction, county FIPS, source-reported balancing authority code, fuel, prime mover, technology, lifecycle, or year. Pass filters inside the params object. The operating/planned/retired/canceled selector is lifecycle (e.g. lifecycle: "operating", the default) — there is no status or status_group parameter. Returns JSON aggregates with citations and optional generator-level records when include_records is true. Does not determine electricity supplied, generation MWh, real-time dispatch, capacity factor, battery storage throughput/duration, demand/load, prices, data-center load, or transmission deliverability. For capacity REQUESTED in an ISO interconnection queue (projects pending interconnection, not yet built), use the relevant ISO's queue tool: query_power_interconnection_queue_v1 (MISO), query_power_interconnection_queue_pjm_v1 (PJM — or query_power_interconnection_queue_pjm_cycle_v1 for PJM's cluster/cycle grid), or query_power_interconnection_queue_caiso_v1 (CAISO).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint. The description adds context: it returns JSON aggregates with citations and optional generator-level records, explains the lifecycle parameter, and clarifies there is no 'status' parameter. No contradictions with annotations.

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 somewhat long but well-organized: it front-loads the main purpose, then details usage, exclusions, and alternatives. Every sentence adds value, though minor tightening could improve conciseness.

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 the output schema exists, the description explains the return format (aggregates with citations and optional records). It covers exclusions and alternatives comprehensively, making it complete for a complex filtering tool with many potential use cases.

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?

The input schema has 0% description coverage with a single generic 'params' object. The description compensates by listing all valid filter dimensions (state, FIPS, balancing authority, fuel, etc.) and clarifying the lifecycle selector, providing essential meaning beyond the schema.

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 verb (Query), resource (power capacity), source (EIA-860M), and lifecycle states (operating, planned, retired, canceled). It distinguishes from sibling tools like query_power_generation_v1 by explicitly listing what it does not determine, such as generation MWh or capacity factor.

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 provides explicit when-to-use guidance (capacity questions by state, FIPS, etc.) and when-not-to-use (does not determine electricity supplied, demand, prices, etc.). It also names alternative tools for interconnection queue queries, such as query_power_interconnection_queue_v1, making the choice clear.

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

query_power_demand_rollup_v1Query Power Demand (national / region rollup)A
Read-onlyIdempotent
Inspect

Query verified U.S. hourly electricity demand (MW) as EIA's own published national and regional totals from the EIA Grid Monitor (region-data).

Use this for "how much load for the whole country, or a region" questions. Filter by respondent (US48 = the Lower-48 national total, or one of the 13 EIA regions — CAL, CAR, CENT, FLA, MIDA, MIDW, NE, NW, NY, SE, SW, TEN, TEX), data_date (one day) or the data_date_from/data_date_to range, and hour_number. To pin one specific UTC hour, combine data_date + hour_number. Group by any of respondent, respondent_level (national vs region), data_date, hour_number, or datetime_utc. datetime_utc and respondent_level are grouping/output axes only — not filters. Pass each parameter as a top-level key of params (flat — not nested under a filter, filters, or where key). Example: {"respondent": "US48", "data_date": "2026-06-10", "hour_number": 14} for the US48 total at one hour; add "group_by": ["datetime_utc"] over a data_date_from/data_date_to range for a series. Returns JSON aggregates with citations and optional row-level records when include_records is true.

demand_mw is EIA's OWN published demand total, served verbatim — the Adjusted series (the same canonical definition as power.demand's demand_mw), NOT a sum exascale computed. This closes power.demand's refusal of national/region totals (BA demand is non-additive across balancing authorities). demand_forecast_mw is the same respondent-hour's day-ahead forecast, so forecast-vs-actual misses need no second query.

History runs hourly from 2019-01-01 onward — this published series begins about 3.5 years later than power.demand's balancing-authority history — and is served by default; the response as_of is the knowledge cut. A query with NO calendar window and no calendar-axis group_by defaults to the latest day with reported demand and says so in a default_latest_day note — group by data_date or datetime_utc, or pass a date range, for a series over time. Pin as_of to an earlier vintage to reproduce what was served then.

INVERTED additivity: demand_mw is ALREADY a published total, so it is NOT additive across respondents — US48 already equals the sum of the 13 regions. A result spanning more than one respondent without grouping by it carries a respondent_aggregation scope note and ranking remainders omit the demand metrics: filter respondent=US48 for the national total, or group by respondent for the per-respondent series. Occasional source-quality anomalies (an hour EIA did not publish; a rare impossible value EIA published) are served verbatim and cited, never altered.

Does not determine balancing-authority-level demand (use power.demand for the BA series), demand before 2019-01-01, the raw un-Adjusted series (this route publishes the Adjusted series only), plant, generator, county, or state attribution, installed capacity (use power.capacity), monthly plant generation (use power.generation), retail sales, revenue, or customers (use power.retail_sales), wholesale prices, or long-horizon forecasts (the forecast is day-ahead only).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

The description discloses important behaviors beyond annotations: non-additivity of demand_mw, default to latest day, inverted additivity, handling of anomalies, and data history. No contradiction with annotations (readOnlyHint=true, etc.).

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 well-structured, front-loading the core purpose, then providing examples and details. Every sentence adds value, though minor trimming could improve conciseness.

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 the tool's complexity and the presence of an output schema, the description is complete: it explains return format (JSON aggregates with citations), historical range, default behavior, and exceptions, leaving no critical gaps.

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?

Despite a generic input schema with no specific parameters, the description thoroughly documents all expected parameters (respondent, data_date, hour_number, group_by, etc.), their usage, and examples, fully compensating for the schema's lack of detail.

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 tool queries verified U.S. hourly electricity demand (MW) as EIA national and regional totals, and distinguishes itself from the sibling tool power.demand which does balancing-authority-level demand.

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 to use this tool ('how much load for the whole country, or a region') and provides clear alternatives for other use cases (e.g., 'use power.demand for the BA series').

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

query_power_demand_v1Query Power DemandA
Read-onlyIdempotent
Inspect

Query verified U.S. hourly electricity demand (MW) by balancing authority from EIA-930.

Use this for "how much load" questions at the hourly balancing-authority grain: filter or group by balancing_authority_code, region, data_date (or the data_date_from/data_date_to range), hour_number, datetime_utc, or is_imputed. Pass filters inside the params object. Returns JSON aggregates with citations and optional row-level records when include_records is true. demand_mw is EIA's own cleaned (Adjusted) series, with receipts: the as-reported demand_mw_raw and the is_imputed flag ride every detail record. demand_forecast_mw is the same row's day-ahead forecast, so forecast-vs-actual misses need no second query. History runs hourly from 2015-07-01 onward and is served by default: a bare data_date anywhere in that window answers from the newest promoted vintage covering it, and the response as_of is that knowledge cut. A query with NO calendar window (no data_date, data_date_from, or data_date_to) and no calendar-axis group_by defaults to the latest day that has reported demand — not the full history — and says so in a default_latest_day note; group by data_date or datetime_utc, or pass a date range, to read a series over time. Pin as_of to an earlier vintage to reproduce exactly what was served then; one response may cite several source files, and every citation carries its own file and vintage. An empty result names the served coverage window in an empty_scope note. Demand is NOT additive across balancing authorities: a result summing more than one BA carries a ba_aggregation scope note and ranking remainders omit the demand metrics — group by balancing_authority_code for the source-grain series. Does not determine plant, generator, county, or state attribution (EIA-930 carries no such IDs, and BA footprints do not follow state lines), US48 or regional totals (computed rollups are refused; EIA's own published series is the named follow-up), installed capacity (MW — use power.capacity), monthly plant generation (use power.generation), retail sales/revenue/customers (use power.retail_sales), wholesale prices, or long-horizon forecasts (the EIA-930 forecast is day-ahead only).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds significant context: returns JSON aggregates with citations, optional records, behavior for empty results (empty_scope note), handling of as_of for historical vintage, and details on demand_mw vs demand_mw_raw. No contradictions detected.

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 lengthy but dense with useful information. It is well-structured with a clear main purpose upfront, followed by specifics on filters, default behavior, and exclusions. Every sentence adds value, though some repetition could be trimmed. Minor redundancy exists (e.g., mentioning data_date multiple times).

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 the tool's single free-form parameter and its complexity (querying EIA-930 demand with many options), the description thoroughly covers filtering, grouping, default behavior, output structure (citations, records, notes), and exclusions. The output schema exists but the description adds necessary context on response fields and edge cases, making it complete.

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?

The input schema has only one free-form 'params' object with 0% coverage. The description fully compensates by documenting acceptable filter/group fields (balancing_authority_code, region, data_date, etc.) and explaining field meanings (demand_mw as adjusted series, demand_forecast_mw as day-ahead forecast). It also covers defaults and edge cases, providing complete semantic guidance.

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 tool queries U.S. hourly electricity demand by balancing authority from EIA-930, specifying the resource, unit, and grain. It explicitly distinguishes from siblings by listing what it does not do (e.g., capacity, generation, retail sales, regional totals), making it highly specific and 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 provides explicit guidance: 'Use this for "how much load" questions at the hourly balancing-authority grain.' It details filterable fields and explains default behavior (latest day if no date range) and pitfalls (demand not additive across BAs). It also lists excluded use cases with tool alternatives, such as using power.capacity for installed capacity.

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

query_power_generation_v1Query Power GenerationA
Read-onlyIdempotent
Inspect

Query verified U.S. monthly net electricity generation (MWh) from EIA-923.

Use this for "how much was generated" questions by state, source-reported balancing authority code, fuel, prime mover, sector, plant, or generator, for a given month. For a fuel total or a fuel mix (e.g. "coal generation", "top fuels"), filter or group by fuel_group — it sums the several energy_source_code values a fuel spans (coal alone is 6 codes), so a total is correct-by-construction; use the raw energy_source_code only when you want one exact as-reported code, since it splits coal/biomass across sub-codes. Select one atom: by_fuel (default — the complete plant total) or by_generator (generator-level, joinable to EIA-860M); never sum across atoms. History runs monthly from 2014-01 onward and is served by default: a bare data_month anywhere in that window answers from the newest promoted vintage covering it, and the response as_of is that knowledge cut (pin as_of to any date to reproduce what was served then — it resolves to the newest vintage at or before it; an empty result names the served window in an empty_scope note). balancing_authority_code is reported by EIA only from 2018 onward — a BA-filtered query cannot see earlier months. Pass filters inside the params object. Returns JSON aggregates with citations down to the exact source month-cell. Does not determine installed capacity (MW — use power.capacity), demand/load, wholesale prices, fuel cost, heat rate, capacity factor, or real-time/hourly dispatch.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Discloses data history, as_of pinning, empty results behavior, and return format beyond annotations (which already declare readOnly, idempotent, and non-destructive). No contradiction with annotations.

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 main purpose, but description is long and dense. Every sentence adds value, but could be more concise or broken into bullet points. Still well-structured.

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?

Covers all essential aspects: data source, filters, aggregation types, date limitations, return format, and exclusions. Sufficient for a complex query tool with open schema parameters.

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?

Input schema has 0% coverage (just a nullable object with additionalProperties). Description compensates fully by explaining filterable fields (state, fuel, plant, etc.) and parameter semantics (fuel_group vs. energy_source_code, atom options).

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?

Clearly states verb 'Query', resource 'U.S. monthly net electricity generation (MWh) from EIA-923', and scope. Distinguishes from siblings by listing what it does not do (capacity, demand, prices, etc.).

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 tells when to use (for 'how much was generated' questions) and when not to use (other power metrics). Provides detailed guidance on fuel_group vs. energy_source_code, atom selection, and balancing authority code date restriction.

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

query_power_interconnection_queue_caiso_v1Query Power Interconnection Queue (CAISO)A
Read-onlyIdempotent
Inspect

Query the CAISO generator interconnection queue — California ISO's public Public Queue Report, the waiting line of projects that have REQUESTED to connect to the CAISO grid (California, plus the out-of-state edges it studies: NV, AZ).

Returns cited, project-level records with CAISO's full published structure: the net megawatts to grid (net_mw_to_grid, CAISO's own headline figure) and the per-component Type/Fuel/MW triplets for hybrids (type_1..3, fuel_1..3, mw_1..3, plus an is_hybrid flag), the as-reported application_status, the cluster study_process (C01..C14, plus serial/legacy tracks), the three-valued deliverability status (deliverability_status = Full Capacity / Partial Capacity / Energy Only) with tpd_allocation_percentage / tpd_allocation_group / offpeak_deliverability, location (state, county, derived county_fips, utility, pto_study_region), the per-phase study statuses, and lifecycle dates (ir_receive_date, queue_date, proposed_online_date, current_online_date, and — for completed projects — actual_online_date). Group or filter by application_status, state, county_fips, deliverability_status, study_process, fuel_1, type_1, utility, pto_study_region, offpeak_deliverability, tpd_allocation_group, suspension_status, ia_status, or (group only) is_hybrid; filter queue_date by the queue_date_from / queue_date_to range. Pass each parameter as a top-level key of params (flat — not nested). Example: {"application_status": "ACTIVE", "fuel_1": "Battery", "state": "CA"} for active battery requests in California; {"group_by": ["application_status"]} for net MW and project counts by status; {"application_status": "ACTIVE", "group_by": ["deliverability_status"]} for the active pipeline split by deliverability. Returns JSON aggregates with citations and optional row-level records when include_records is true; every value carries source, as_of, and a source_row verifiable with get_source_evidence_v1.

net_mw_to_grid is REQUESTED capacity, not built: historically the large majority of queued megawatts withdraw before they are built, so the report is withdrawn-dominated. NEVER read a queue-MW total as installed or operating capacity — it is additive across distinct projects but is a REQUESTED total only. Scope by application_status: ACTIVE is the live pipeline, COMPLETED is built and in service (and carries an actual_online_date), WITHDRAWN left the queue. CAISO publishes no separate built-MW column — net_mw_to_grid is served under CAISO's own name and never relabeled or duplicated as a built figure. For built/operating capacity use query_power_capacity_v1.

CAISO only — never summed, deduped, or compared across ISOs. For the MISO interconnection queue use query_power_interconnection_queue_v1; for PJM use query_power_interconnection_queue_pjm_v1 (or query_power_interconnection_queue_pjm_cycle_v1 for PJM's cluster/cycle grid); for the NYISO (New York) queue use query_power_interconnection_queue_nyiso_v1; for the ISO-NE (New England) queue use query_power_interconnection_queue_isone_v1; for the ERCOT (Texas) queue use query_power_interconnection_queue_ercot_v1; for the SPP (central US) queue use query_power_interconnection_queue_spp_v1. This tool serves CAISO's Public Queue Report (Cluster 14 and prior, plus the serial/legacy tracks); CAISO's separate current-cluster intake file is a distinct publication and is not served here. CAISO reports no data-center / load type, and this tool does not infer one — that interpretation is the analyst's, from cited rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Beyond annotations (readOnly, idempotent, not destructive), the description discloses critical behaviors: net_mw_to_grid is requested capacity not built, most projects withdraw, CAISO does not provide a separate built-MW column, and the tool does not infer data-center types. No contradiction with annotations.

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 well-structured: first paragraph outlines returned fields, second provides examples and caveats, third addresses pitfalls and alternatives. Every sentence adds value, though some rephrasing could tighten it slightly.

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 the tool's complexity (one flexible param, no required fields, output schema exists), the description is complete. It covers filtering, grouping, returned data structure, important caveats, and cross-ISO comparisons.

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?

With 0% schema description coverage, the description thoroughly explains all parameter semantics: the flat params object, available filters (application_status, state, etc.), grouping via group_by array, and include_records flag. Provides concrete examples.

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 tool queries the CAISO generator interconnection queue. It specifies the resource (CAISO's Public Queue Report) and distinguishes it from sibling tools by naming alternatives for other ISOs and built capacity.

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 provides explicit guidance on when to use this tool vs alternatives, listing specific sibling tools for MISO, PJM, NYISO, ISO-NE, ERCOT, and SPP, and recommending query_power_capacity_v1 for built capacity. It also warns against using it for data-center load inference.

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

query_power_interconnection_queue_ercot_v1Query Power Interconnection Queue (ERCOT)A
Read-onlyIdempotent
Inspect

Query the ERCOT generator interconnection queue — ERCOT's public GIS Report (EMIL PG7-200-ER), the waiting line of generation projects that have REQUESTED to connect to the ERCOT (Texas) grid.

Returns cited, project-level records with ERCOT's full published structure across four lifecycle sheets (Large Gen + Small Gen = active; Inactive Projects; Cancellation Update): the requested capacity_mw (ERCOT publishes ONE capacity figure — no summer/winter split), the ERCOT fuel and technology codes (e.g. SOL/PV solar, OTH/BA battery, GAS/CC combined-cycle, WIN/WT wind — HYD is HYDROGEN, hydro is WAT), the cdr_reporting_zone (NORTH/SOUTH/WEST/COASTAL/HOUSTON/PANHANDLE), the interconnecting_entity, the poi_location, the composite gim_study_phase token string, and the milestone dates (screening_study_started, fis_approved, ia_signed, construction_start/construction_end, approved_for_energization/approved_for_synchronization, projected_cod). Group or filter by application_status, size_category, fuel, technology, cdr_reporting_zone, county_fips, state, gim_study_phase, or interconnecting_entity; filter projected_cod by the projected_cod_from / projected_cod_to range. Pass each parameter as a top-level key of params (flat — not nested). Example: {"application_status": "ACTIVE", "fuel": "SOL"} for active solar requests; {"application_status": "ACTIVE", "group_by": ["fuel"], "order_by": "capacity_mw", "top_n": 5} for the active pipeline's biggest fuels by requested MW. The GIS Report is published MONTHLY and its full history is queryable — this is NOT a single point-in-time snapshot. Omit as_of for the latest month, or pass as_of (a date) to get the queue as it stood at a past month: as_of resolves to the newest monthly snapshot at or before it, with vintages back to 2018-12 (the floor; an earlier as_of is refused, naming the floor). Example: {"application_status": "ACTIVE", "as_of": "2019-06-30"} returns the active queue as of mid-2019. Each month is a full point-in-time snapshot (a project that has since withdrawn is simply absent from later months — query the earlier as_of to see it), so a multi-month trend is one query per month; as_of is the history axis, not a row filter. Returns JSON aggregates with citations and optional row-level records when include_records is true; every value carries source, as_of, and a source_row verifiable with get_source_evidence_v1.

capacity_mw is REQUESTED capacity, not built: historically the large majority of queued megawatts withdraw before they are built. NEVER read a queue-MW total as installed or operating capacity — it is additive across distinct rows but is a REQUESTED total only. ERCOT prints NO status column, so application_status is derived from the sheet ERCOT files the project on: ACTIVE is the live pipeline (Large/Small Gen), INACTIVE and CANCELLED are projects that recently left the queue (the Inactive / Cancellation sheets list RECENT departures, NOT the full historical withdrawn set). The build-progress reading is carried SEPARATELY in gim_study_phase (e.g. "SS Completed, FIS Completed, IA") + the milestone dates and is never collapsed into application_status. For built/operating capacity use query_power_capacity_v1.

ERCOT only — never summed, deduped, or compared across ISOs. For the MISO interconnection queue use query_power_interconnection_queue_v1; for PJM use query_power_interconnection_queue_pjm_v1 (or query_power_interconnection_queue_pjm_cycle_v1 for PJM's cluster/cycle grid); for the CAISO (California) queue use query_power_interconnection_queue_caiso_v1; for the NYISO (New York) queue use query_power_interconnection_queue_nyiso_v1; for the ISO-NE (New England) queue use query_power_interconnection_queue_isone_v1; for the SPP (central US) queue use query_power_interconnection_queue_spp_v1. This tool serves ERCOT's GIS Report, which is GENERATION-only; ERCOT's separate large-load / data-center interconnection queue is an unstructured source (TAC-meeting PDF slides) and is NOT served here, and this tool does not infer which projects are data-center-driven — that interpretation is the analyst's, from cited rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Description adds extensive behavioral context beyond annotations: monthly snapshots, full history queryable, as_of behavior, derived application_status, and that the tool does not infer data-center-driven projects. No contradiction with annotations (readOnlyHint, idempotentHint all consistent).

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?

Though long, the description is front-loaded with core purpose and then structured with examples and warnings. Every sentence adds unique value, no wasted text. Conciseness is appropriate given complexity.

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 the tool's complexity (multiple sheets, derived status, history, caveats), the description covers all necessary aspects: source, filters, behaviors, examples, and cross-references to sibling tools. Output schema exists but description explains return format adequately.

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?

Schema coverage is 0% (only generic params object), but description fully compensates by detailing all valid parameters, their meanings, valid values (e.g., fuel codes), and how to structure queries with examples. Adds substantial meaning beyond schema.

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 queries the ERCOT generator interconnection queue, specifies the source (GIS Report), and lists return fields. It distinguishes from siblings by naming other ISO-specific tools, achieving a specific verb+resource+scope.

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 when to use this tool vs alternatives (e.g., use query_power_capacity_v1 for built capacity, lists other ISO queue tools). Provides usage examples and warns against interpreting requested capacity as built, meeting all criteria for explicit when/when-not/alternatives.

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

query_power_interconnection_queue_isone_v1Query Power Interconnection Queue (ISO-NE)A
Read-onlyIdempotent
Inspect

Query the ISO-NE generator interconnection queue — ISO New England's public IRTT "public queue" report, the waiting line of projects that have REQUESTED to connect to the New England grid (CT, MA, ME, NH, RI, VT).

Returns cited, project-level records with ISO-NE's full published structure (all 31 columns of the rendered report): the three megawatt readings kept SEPARATE (net_mw, summer_mw = max summer output, winter_mw = max winter output — net_mw is 0 for the many Capacity-Network-Resource-only requests, a real value, not missing), the request request_type (G = Generation / ETU = Elective Transmission Upgrade / TS = Transmission Service), the space-delimited multi-value fuel_type (EIA energy-source codes, e.g. "SUN BAT"), the unit_type and service code serv (CNR = Capacity Network Resource / NR = Network Resource), the jurisdiction (F = FERC / N = Non-FERC), the ISO-NE load zone, the per-stage study statuses (fs_statusia_status) with their study-document links, location (state, county, derived county_fips, poi), and lifecycle dates. Group or filter by application_status, project_status, request_type, unit_type, fuel_type, serv, jurisdiction, zone, state, county_fips, or cluster; filter requested_date by the requested_date_from / requested_date_to range. Pass each parameter as a top-level key of params (flat — not nested). Example: {"application_status": "A", "request_type": "G", "state": "MA"} for active generation requests in Massachusetts; {"group_by": ["application_status"]} for requested MW and project counts by status. Returns JSON aggregates with citations and optional row-level records when include_records is true; every value carries source, as_of, and a source_row verifiable with get_source_evidence_v1.

net_mw / summer_mw / winter_mw are REQUESTED capacity, not built: historically the large majority of queued megawatts withdraw before they are built, so the queue is withdrawn-dominated. NEVER read a queue-MW total as installed or operating capacity — it is additive across distinct rows but is a REQUESTED total only. ISO-NE publishes net, summer-peak and winter-peak MW separately — served under ISO-NE's own labels and never blended into one nameplate. Scope by application_status: A = Active (the live pipeline), C = Commercial (built and in service — the built reading), W = Withdrawn. ISO-NE ALSO carries a separate build-progress project_status (Under Study / Under Construction / In Service / …) — kept distinct from application_status, never collapsed. For built/operating capacity use query_power_capacity_v1.

ISO-NE only — never summed, deduped, or compared across ISOs. For the MISO interconnection queue use query_power_interconnection_queue_v1; for PJM use query_power_interconnection_queue_pjm_v1 (or query_power_interconnection_queue_pjm_cycle_v1 for PJM's cluster/cycle grid); for the CAISO (California) queue use query_power_interconnection_queue_caiso_v1; for the NYISO (New York, incl. load interconnection requests) queue use query_power_interconnection_queue_nyiso_v1; for the ERCOT (Texas) queue use query_power_interconnection_queue_ercot_v1; for the SPP (central US) queue use query_power_interconnection_queue_spp_v1. ISO-NE publishes no data-center / load request type (all rows are generation or transmission), and this tool does not infer one — that interpretation is the analyst's, from cited rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds substantial behavioral context: that MW are requested not built, the withdrawal dominance historical pattern, and the distinction between application_status and project_status. No contradiction with annotations.

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 every sentence adds value. It is front-loaded with purpose and key details, then covers usage, warnings, and sibling references. Minor redundancy could be trimmed but overall well-organized.

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 the complexity (many parameters, output schema, multiple ISOs, warnings), the description is complete. It covers the tool's function, output structure, parameter semantics, data interpretation caveats, and alternatives.

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?

Despite 0% schema description coverage, the description thoroughly explains parameter usage: flat top-level keys, available filter fields (application_status, request_type, state, etc.), date range filters, grouping, and the include_records toggle. Examples are provided.

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 queries the ISO-NE generator interconnection queue, specifies the source (IRRT public queue), and distinguishes from sibling tools by naming other ISO-specific tools. It enumerates the 31 columns returned, demonstrating a precise verb+resource+scope.

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 provides explicit when-to-use and when-not-to-use guidance, including alternatives for other ISOs and for built/operating capacity (query_power_capacity_v1). It also warns against summing across ISOs and misinterpreting MW as installed capacity.

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

query_power_interconnection_queue_nyiso_v1Query Power Interconnection Queue (NYISO)A
Read-onlyIdempotent
Inspect

Query the NYISO generator + load interconnection queue — New York ISO's public waiting line of projects that have REQUESTED to connect to the New York grid. Uniquely among ISOs, NYISO publishes a Load Projects tab — load interconnection requests (large-load / data-center-style demand), served as-reported.

Returns cited, project-level records with NYISO's full published structure across nine lifecycle tabs: summer and winter peak megawatts kept SEPARATE (sp_mw = SP, the max summer output; wp_mw = WP, the max winter output), the Load Projects tab's peak_mw_load, the as-reported study-phase code (study_status_code, NYISO's numeric S / Project Status # legend), the request record_type and project_type, the type_fuel codebook, the energy-storage capability, the NYISO load zone (A–K), location (state, county, derived county_fips, point_of_interconnection, utility), and lifecycle dates (ir_date, last_update, the milestone dates, and the Year/Qualifier proposed_cod kept verbatim). Group or filter by application_status, sheet_name, state, county_fips, study_status_code, record_type, type_fuel, zone, utility, or studies_available; filter ir_date by the ir_date_from / ir_date_to range. Pass each parameter as a top-level key of params (flat — not nested). Example: {"application_status": "ACTIVE", "type_fuel": "S"} for active solar requests; {"sheet_name": "Load Projects"} for the load (data-center-relevant) interconnection requests; {"group_by": ["application_status"]} for requested MW and project counts by lifecycle. Returns JSON aggregates with citations and optional row-level records when include_records is true; every value carries source, as_of, and a source_row verifiable with get_source_evidence_v1.

sp_mw / wp_mw / peak_mw_load are REQUESTED capacity, not built: historically the large majority of queued megawatts withdraw before they are built, so the queue is withdrawn-dominated. NEVER read a queue-MW total as installed or operating capacity — it is additive across distinct project-rows but is a REQUESTED total only. NYISO publishes summer (SP) and winter (WP) peak MW separately — they are served under NYISO's own names and never blended into one nameplate. Scope by application_status (ACTIVE / WITHDRAWN / IN_SERVICE / AFFECTED_SYSTEM / AFFECTED_SYSTEM_WITHDRAWN, derived from the lifecycle tab) or by sheet_name; the In Service tab is the built reading. A project may appear on more than one tab (the grain is sheet + queue_position), so the counts are project-rows, not deduped projects. For built/operating capacity use query_power_capacity_v1.

NYISO only — never summed, deduped, or compared across ISOs. For the MISO interconnection queue use query_power_interconnection_queue_v1; for PJM use query_power_interconnection_queue_pjm_v1 (or query_power_interconnection_queue_pjm_cycle_v1 for PJM's cluster/cycle grid); for the CAISO (California) queue use query_power_interconnection_queue_caiso_v1; for the ISO-NE (New England) queue use query_power_interconnection_queue_isone_v1; for the ERCOT (Texas) queue use query_power_interconnection_queue_ercot_v1; for the SPP (central US) queue use query_power_interconnection_queue_spp_v1. NYISO's Load Projects tab is served as-reported; this tool does NOT infer which projects are data-center-driven — that interpretation is the analyst's, from cited rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

The description goes well beyond annotations by detailing data source, that returned MW are requested not built, project-rows granularity, as-reported Load Projects tab, and the need to use query_power_capacity_v1 for built capacity. No contradiction with annotations.

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 lengthy but well-organized, front-loading the core action and then providing necessary details. While verbose, every sentence adds value given the tool's complexity; could be slightly tighter but remains effective.

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 the tool's many parameters, siblings, and the presence of an output schema, the description covers all essential aspects: filtering, grouping, field explanations, warnings, cross-references, and examples, leaving no gaps for an agent.

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?

The schema is generic (one 'params' object with additionalProperties), but the description enumerates many specific parameters (application_status, sheet_name, type_fuel, etc.), their meaning, and usage examples, fully compensating for the 0% schema coverage.

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 tool queries the NYISO generator + load interconnection queue, distinguishing it from siblings by naming other ISOs. The verb 'query' and resource are explicitly defined.

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 provides explicit when-to-use (NYISO only) and when-not-to (never sum or dedupe across ISOs), lists alternative tools for other ISOs and for built capacity, and includes caveats like withdrawn-dominated nature.

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

query_power_interconnection_queue_pjm_cycle_v1Query Power Interconnection Queue (PJM cluster/cycle)A
Read-onlyIdempotent
Inspect

Query PJM's cluster/cycle service-request grid — the cluster view of PJM's interconnection process: the TC1/TC2 transition cycles (re-processing the pre-Order-2023 serial backlog) and the reopened steady-state cycles (C01+, the new intake). A SEPARATE PJM publication from the full New Services queue (query_power_interconnection_queue_pjm_v1) — richer per-project cluster detail; the two share rows and are never combined.

Returns cited, project-level records with PJM's full cluster schema: the cluster cycle (TC1 / TC2 / C01 …) and stage (phase / decision point), the developer, requested megawatts (requested_max_output_mw = MFO, requested_summer_mw, requested_winter_mw), the realized built in_service_mw, long-term-firm transmission ltf_mw, location (state, county, derived county_fips), fuel and project_type as PJM reports them, the single status, and the phased System-Impact-Study report URLs + statuses. Group or filter by cycle, stage, status, state, county_fips, project_type, capacity_or_energy, fuel, developer, transmission_owner, or (group only) is_hybrid; filter submitted_date by range. Pass each parameter as a top-level key of params (flat). Example: {"cycle": "C01", "status": "Active"} for the live reopened-cycle pipeline; {"group_by": ["cycle"]} for counts by cluster cycle. Returns JSON aggregates with citations and optional row-level records when include_records is true; every value carries source, as_of, and a source_row verifiable with get_source_evidence_v1.

The requested_* figures are REQUESTED capacity, not built: historically the large majority of queued megawatts withdraw before they are built. NEVER read a requested-MW total as installed/operating capacity — additive across distinct projects but a REQUESTED total only. PJM also reports in_service_mw (the realized built MW). For built/operating capacity use query_power_capacity_v1.

PJM cluster grid only. This and PJM's New Services queue (query_power_interconnection_queue_pjm_v1) are different publications that share rows — never summed or compared across them; never across ISOs (the MISO queue is query_power_interconnection_queue_v1; the CAISO queue is query_power_interconnection_queue_caiso_v1; the NYISO queue is query_power_interconnection_queue_nyiso_v1; the ISO-NE queue is query_power_interconnection_queue_isone_v1; the ERCOT queue is query_power_interconnection_queue_ercot_v1; the SPP queue is query_power_interconnection_queue_spp_v1). PJM reports no data-center / load type, and this tool does not infer one.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations already indicate read-only, idempotent, non-destructive. The description adds key behavioral context: returns cited records with source details, warns that requested MW are not built, and clarifies relationship to other tools. No contradictions.

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?

Description is verbose but well-structured with clear warnings and examples. Front-loaded with purpose. Some redundancy (lists sibling tools already provided in context) but overall effective for a complex tool.

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 the tool's complexity (numerous parameters, multiple sibling tools, output schema present), the description covers all necessary aspects: what it returns, how to filter, relationships to other tools, and critical caveats about requested vs built capacity.

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?

Input schema has only a single open 'params' object with 0% property coverage, but the description exhaustively lists valid keys (cycle, stage, status, etc.), provides usage examples, and explains grouping/filtering. Fully compensates for schema gap.

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 verb 'Query' and resource 'PJM cluster/cycle service-request grid', distinguishing it from the sibling full PJM queue tool and other ISO tools. It explicitly notes that this is a separate publication and should not be conflated.

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?

Provides explicit when-to-use context: for cluster/cycle view of PJM. Warns against summing with other PJM tool or across ISOs. Includes example filters and grouping, and redirects to query_power_capacity_v1 for built capacity.

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

query_power_interconnection_queue_pjm_v1Query Power Interconnection Queue (PJM)A
Read-onlyIdempotent
Inspect

Query the PJM New Services (interconnection) queue — the public waiting line of projects that have REQUESTED to connect to the PJM grid (the mid-Atlantic RTO incl. Northern Virginia, PA, NJ, MD, OH, VA, WV and more).

Returns cited, project-level records with PJM's full published structure: requested megawatts (requested_max_output_mw = MFO, requested_summer_mw = MW Capacity / summer net, requested_winter_mw = MW Energy / winter net), the realized built in_service_mw for completed projects, location (state, county, derived county_fips), fuel and project_type as PJM reports them, the single as-reported status, the study-document URLs and per-stage statuses, and lifecycle dates. Group or filter by state, county_fips, status, project_type, capacity_or_energy, fuel, project_ac_dc, transmission_owner, the study statuses, or (group only) is_hybrid; filter submitted_date by the submitted_date_from / submitted_date_to range. Pass each parameter as a top-level key of params (flat — not nested). Example: {"state": "VA", "project_type": "Generation Interconnection", "status": "Active"} for active generation requests in Virginia; {"group_by": ["status"]} for requested MW and project counts by status. Returns JSON aggregates with citations and optional row-level records when include_records is true; every value carries source, as_of, and a source_row verifiable with get_source_evidence_v1.

The requested_* figures are REQUESTED capacity, not built: historically the large majority of queued megawatts withdraw before they are built. NEVER read a requested-MW total as installed or operating capacity — it is additive across distinct projects but is a REQUESTED total only. Filter status (Active / Withdrawn / In Service / Under Construction / …) to scope the queue; the full export is withdrawn-dominated. PJM also reports in_service_mw — the realized BUILT MW for in-service projects (a separate, built figure). For built/operating capacity use query_power_capacity_v1.

PJM only — never summed, deduped, or compared across ISOs. For the MISO interconnection queue use query_power_interconnection_queue_v1; for the CAISO (California) queue use query_power_interconnection_queue_caiso_v1; for the NYISO (New York, incl. load interconnection requests) queue use query_power_interconnection_queue_nyiso_v1; for the ISO-NE (New England) queue use query_power_interconnection_queue_isone_v1; for the ERCOT (Texas) queue use query_power_interconnection_queue_ercot_v1; for the SPP (central US) queue use query_power_interconnection_queue_spp_v1. For PJM's NEW cluster/cycle process — the TC1/TC2 transition cycles and the reopened steady-state Cycle 1 (C01+), with cycle/stage/developer detail — use query_power_interconnection_queue_pjm_cycle_v1 (a separate PJM publication; never combined with this one). PJM reports no data-center / load type, and this tool does not infer one — that interpretation is the analyst's, from cited rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds critical context: data is cited with source information, requested MW are not built, majority withdraw, in_service_mw is separate, and the tool returns only PJM data. No contradictions.

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 well-organized with clear sections: query target, return fields, parameters, examples, warnings, and sibling differentiation. While long, every sentence adds value. Minor verbosity in listing all sibling tools could be trimmed slightly.

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 the tool's complexity (many parameters, many siblings, output schema present), the description is thoroughly complete. It covers data fields, filtering, interpretation warnings, alternative tools, and even notes that PJM reports no data-center type. The output schema is present but the description adds necessary 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?

Input schema is generic (params object with additionalProperties true), but the description enumerates valid parameters (state, county_fips, status, etc.) with examples, fully compensating for 0% schema coverage. It also explains how to pass them as top-level keys and provides an example query.

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 tool queries the PJM New Services interconnection queue, specifies the region (mid-Atlantic RTO including specific states), and lists the returned data fields. It distinguishes from sibling tools by naming specific alternatives for other ISOs and the PJM cycle tool.

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 states when to use (PJM queue), when not to use (not for built capacity, directs to query_power_capacity_v1), and lists alternatives for MISO, CAISO, NYISO, ISO-NE, ERCOT, SPP, and the PJM cycle tool. Also warns against summing across ISOs.

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

query_power_interconnection_queue_spp_v1Query Power Interconnection Queue (SPP)A
Read-onlyIdempotent
Inspect

Query the SPP generator interconnection queue — Southwest Power Pool's public GI Summary report, the waiting line of generation projects that have REQUESTED to connect to the SPP grid (the ~14-state central-US RTO: OK, KS, TX panhandle, NE, NM, MO, CO, ND, SD, AR, LA and more).

Returns cited, project-level records with SPP's full published structure: the requested capacity_mw (SPP's headline Capacity figure) PLUS five other labeled MW columns SPP publishes — max_summer_mw, max_winter_mw, requested_max_injection_mw, requested_nrd_mw, nameplate_capacity_mw — served separately and NEVER blended; the generation_type (Wind / Solar / Battery/Storage / Thermal / Hybrid / Hydro — SPP encodes hybrids natively as Hybrid, so no is-hybrid is invented) and free-text fuel_type (slash-delimited combos like Solar/Storage kept whole); the study current_cluster (e.g. DISIS-2024-001, Surplus, RTOE Transitional Cluster) and regional cluster_group (01 NORTH05 SOUTHWEST); the transmission owner to_at_poi; the service_type (ER/NR, ER, NR); the substation_or_line; and the lifecycle dates (request_received, in_service_date, commercial_operation_date, date_withdrawn). Group or filter by native_status, generation_type, fuel_type, service_type, current_cluster, cluster_group, to_at_poi, county_fips, or state; filter request_received / commercial_operation_date by their _from / _to ranges. Pass each parameter as a top-level key of params (flat — not nested). Example: {"native_status": "DISIS STAGE", "generation_type": "Solar"} for solar in the DISIS study stage; {"native_status": "DISIS STAGE", "group_by": ["state"], "order_by": "capacity_mw", "top_n": 5} for the active study pipeline's biggest states by requested MW. Returns JSON aggregates with citations and optional row-level records when include_records is true; every value carries source, as_of, and a source_row verifiable with get_source_evidence_v1.

capacity_mw is REQUESTED capacity, not built: historically the large majority of queued megawatts withdraw before they are built — in the SPP file ~66% of rows are WITHDRAWN. NEVER read a queue-MW total as installed or operating capacity — it is additive across distinct rows but is a REQUESTED total only. Always scope by native_status, which is SPP's OWN status vocabulary served VERBATIM (IA FULLY EXECUTED/ON SCHEDULE, IA FULLY EXECUTED/COMMERCIAL OPERATION, IA FULLY EXECUTED/ON SUSPENSION, IA PENDING, DISIS STAGE, FACILITY STUDY STAGE, SPECIAL STUDY, ERAS, TERMINATED, WITHDRAWN, …); it is never mapped to a lifecycle enum and there is no derived active/withdrawn flag — that equivalence is the analyst's. For built/operating capacity use query_power_capacity_v1. SPP's GI Summary is regenerated on demand and SPP keeps no per-vintage archive, so this serves SPP's CURRENT queue (the response as_of is SPP's own "Last Updated On" stamp); it is NOT a deep point-in-time history — history accrues forward from first capture, so there is no as_of time-travel parameter.

SPP only — never summed, deduped, or compared across ISOs. For the MISO interconnection queue use query_power_interconnection_queue_v1; for PJM use query_power_interconnection_queue_pjm_v1 (or query_power_interconnection_queue_pjm_cycle_v1 for PJM's cluster/cycle grid); for the CAISO (California) queue use query_power_interconnection_queue_caiso_v1; for the NYISO (New York) queue use query_power_interconnection_queue_nyiso_v1; for the ISO-NE (New England) queue use query_power_interconnection_queue_isone_v1; for the ERCOT (Texas) queue use query_power_interconnection_queue_ercot_v1. SPP's GI queue is GENERATION-only and infers no load/data-center type — that interpretation is the analyst's, from cited rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

The description adds significant behavioral context beyond annotations: it explains the response structure (citations, as_of), data interpretation (requested vs installed), and limitations (no history, no deduplication). No contradictions.

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 comprehensive but verbose, with some repetition of warnings. It is well-structured into logical sections, but slightly longer than necessary.

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 the tool's complexity (one free-form parameter, no required fields, rich output schema), the description covers all necessary aspects: parameter options, grouping, ordering, output format, domain context, and sibling differentiation.

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?

The schema provides only a generic 'params' object with 0% description coverage. The description compensates fully by listing all valid keys (native_status, generation_type, etc.), their meanings, and examples, effectively documenting the free-form 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 clearly states that the tool queries the SPP generator interconnection queue, lists the data fields returned, and explicitly distinguishes from sibling tools for other ISOs, providing a specific verb and resource.

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 provides explicit when-to-use and when-not-to-use guidance, lists alternative tools for other ISOs, gives example parameter usage, and warns about interpreting capacity as requested not built.

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

query_power_interconnection_queue_v1Query Power Interconnection Queue (MISO)A
Read-onlyIdempotent
Inspect

Query the MISO generator interconnection queue — the public waiting line of projects that have REQUESTED to connect to the MISO grid (the 15-state Midwest/South footprint).

Returns cited, project-level records: requested megawatts (net summer / net winter), location (state, county, derived county_fips), fuel and technology as MISO reports them, three independent status dimensions (application_status, study_phase, post_gia_status), and queue / withdrawn / in-service dates. Group or filter by state, county_fips, application_status, study_phase, post_gia_status, fuel_type, facility_type, service_type, study_group, study_cycle, or is_hybrid; filter queue_date by the queue_date_from / queue_date_to range. Pass each parameter as a top-level key of params (flat — not nested). Example: {"state": "IN", "fuel_type": "Solar", "application_status": "Active"} for active solar requests in Indiana; {"group_by": ["application_status"]} for requested MW and project counts by status. Returns JSON aggregates with citations and optional row-level records when include_records is true; every value carries source, as_of, and a source_row verifiable with get_source_evidence_v1.

This is REQUESTED capacity, not built: historically the large majority of queued megawatts withdraw before they are built. NEVER read a requested-MW total as installed or operating capacity — it is additive across distinct projects but is a REQUESTED total only. Filter application_status (Active / Withdrawn / Done) to scope the queue; the full export is withdrawn-dominated. For built/operating capacity use query_power_capacity_v1.

MISO only — never summed, deduped, or compared across ISOs into a national total (each ISO's methodology, inclusion rules, and withdrawal rates differ). For the PJM interconnection queue (the mid-Atlantic RTO incl. Northern Virginia) use query_power_interconnection_queue_pjm_v1 (or query_power_interconnection_queue_pjm_cycle_v1 for PJM's new cluster/cycle process incl. the reopened Cycle 1); for the CAISO (California) queue use query_power_interconnection_queue_caiso_v1; for the NYISO (New York, incl. load interconnection requests) queue use query_power_interconnection_queue_nyiso_v1; for the ISO-NE (New England) queue use query_power_interconnection_queue_isone_v1; for the ERCOT (Texas) queue use query_power_interconnection_queue_ercot_v1; for the SPP (central US) queue use query_power_interconnection_queue_spp_v1 — separate ISO blocks, never combined with this one. MISO reports no data-center / load type, and this tool does not infer one — that interpretation is the analyst's, from cited rows.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations already indicate read-only, idempotent, non-destructive. The description adds critical context: that data represents requested (not built) capacity, that majority of megawatts withdraw, and that MISO reports no data-center type. No contradiction with annotations.

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 well-structured and front-loaded, with clear sections: purpose, return fields, filters, examples, warnings, and sibling disambiguation. Every sentence earns its place, though it could be slightly tighter without losing value.

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 the complexity of the tool (multiple filter dimensions, output schema existence, warnings, sibling tools), the description covers all necessary aspects: what it does, parameters, return fields, caveats, and alternatives. It is fully complete.

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?

The input schema has a generic 'params' object with no description. The description compensates fully by listing valid keys (state, county_fips, application_status, etc.), giving examples, and explaining that parameters are flat top-level keys. Without this, the schema is uninformative.

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 that the tool queries the MISO generator interconnection queue, lists the fields returned (megawatts, location, statuses, dates), and distinguishes it from sibling tools for other ISOs. The verb 'query' and the specific scope (MISO) are explicit.

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 states when to use (for MISO interconnection queue, requested capacity) and when not to use (not for built/operating capacity, not to combine across ISOs). It lists alternative sibling tools for other ISOs and for built capacity, guiding proper tool selection.

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

query_power_price_ercot_v1Query Power Prices (ERCOT day-ahead)A
Read-onlyIdempotent
Inspect

Query verified ERCOT wholesale electricity prices — ERCOT's Day-Ahead Market Settlement Point Prices ($/MWh, EMIL NP4-190-CD), the price cleared the day before each operating day at every ERCOT (Texas) settlement point, served hourly.

Returns cited prices for each (settlement_point, delivery_date, hour_ending): the per-hour price_usd_per_mwh in detail records, plus avg_price_usd_per_mwh, min_price_usd_per_mwh, and max_price_usd_per_mwh over the result scope. Each settlement_point is one of ERCOT's locations — a trading Hub (e.g. HB_NORTH, HB_HOUSTON — the regional benchmark prices), a Load Zone (e.g. LZ_HOUSTON), a Resource Node (one generator's connection point), or a DC-tie — and settlement_point_type carries ERCOT's OWN verbatim classification code (HU/LZ/RN/LZ_DC and finer codes) so an agent can tell a regional benchmark from a single-plant node. Filter or group by settlement_point, settlement_point_type, hour_ending, or delivery_date; filter a date window with delivery_date_from / delivery_date_to, or one day with delivery_date. Pass each parameter as a top-level key of params (flat — not nested). Example: {"settlement_point": "HB_NORTH", "delivery_date": "2026-06-20", "group_by": ["hour_ending"]} for the North hub's 24 hourly day-ahead prices; {"delivery_date": "2026-06-20", "group_by": ["settlement_point_type"]} for the average price by location type. With no date filter the result defaults to the latest delivery day with prices (it does not scan all history); the API history floor is 2023-12-13. Returns JSON with citations and optional row-level records when include_records is true; every value carries source, as_of (the delivery day), and a source_row verifiable with get_source_evidence_v1.

A price is INTENSIVE ($/MWh): it is AVERAGED, min'd, and max'd over a scope — NEVER summed (a "total price" is meaningless, so no sum is offered). An average across more than one settlement point (e.g. a hub and a resource node together) is indicative, not a settlement value — group_by settlement_point for the per-point series, or filter to one point/type. This is the DAY-AHEAD hourly market, NOT real-time / 5-minute prices. ERCOT's day-ahead settlement-point price is a TOTAL only — there is no energy/congestion/loss component split and no loss component, and none is synthesized. ERCOT's own hour-ending label (01:00..24:00) and dst_flag are carried verbatim (a day is 24 hours normally, 25 on the fall-back DST date with 02:00 repeated, 23 on spring-forward). A settlement point is an electrical/aggregate location, not a plant — ERCOT supplies no county or lat/lon, so the only geography anchor is state = TX.

This is a PRICE ($/MWh) — not capacity (MW) or generation (MWh): for installed/operating capacity use query_power_capacity_v1, for electricity generated use query_power_generation_v1. ERCOT only — prices are NEVER blended, averaged, or compared across ISOs (each ISO's market design and redistribution license differ); this tool serves ERCOT's day-ahead settlement-point prices alone.

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Annotations already indicate readOnlyHint, idempotentHint, destructiveHint. The description adds detailed behavioral context: defaults to latest day, history floor, no sum possible, and indicative averages across points. No contradictions.

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 lengthy but well-structured with clear sections, examples, and warnings. Every sentence adds value; slight reduction possible without losing clarity.

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?

Covers all aspects: filtering, grouping, output fields, unit interpretation, DST edge cases, and data lineage. Output schema is mentioned, reducing need for return value explanation.

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?

Input schema has only a generic 'params' object with 0% coverage. The description fully explains all possible fields (settlement_point, delivery_date, etc.), their meanings, and examples, compensating for schema gaps.

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 queries ERCOT day-ahead wholesale electricity prices, specifying units ($/MWh), data source (EMIL NP4-190-CD), and settlement point types. It distinguishes from siblings like query_power_capacity_v1 and query_power_generation_v1.

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 tells when to use this tool (for ERCOT day-ahead prices) and when not to (for capacity/generation, other ISOs, or summing prices). Provides examples and warnings against blending across ISOs.

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

query_power_retail_sales_v1Query Power Retail SalesA
Read-onlyIdempotent
Inspect

Query verified U.S. annual retail electricity sales — billed MWh, revenue, and customer counts — by utility, state, and customer sector from EIA-861.

Use this for "who sold how much power to whom" questions at the annual utility×state×sector grain: filter or group by data_year, state, sector (residential / commercial / industrial / transportation), part, service_type, ownership, ba_code, data_type, eia_utility_id, or utility_name. Pass filters inside the params object. Returns JSON aggregates with citations down to the exact stacked sector/measure cell, and optional row-level records when include_records is true. Defaults keep totals faithful: the in-row total sector block is excluded unless named explicitly (it duplicates the four sectors); EIA's state-level Adjustment (99999) and Withheld (88888) sentinel rows stay in state totals but are auto-excluded from any utility-keyed query; territories are excluded unless included_in_default_us_metrics is false. A result mixing service types carries a service_type_mix note quoting the file's own law — revenue sums Parts A,B,C,D but sales/customers sum A,B,D only (Part C delivery re-counts Part B energy). History spans data years 2016–2024, one annual census per year, each its own vintage. Reach an earlier year through as_of, not data_year: as_of resolves to the newest census at or before it (so as_of 2018-06-01 — or just 2018 — returns the 2018 census) and the response echoes that resolved as_of. data_year only filters within the resolved vintage, so data_year 2018 under the default as_of (latest = 2024) returns an empty scope, not 2018; the default serves 2024, a multi-year trend is one query per year, and an as_of before 2016 is refused, naming the floor. Does not determine hourly or peak load (sales are billed MWh over a year — use power.demand), facility-level or data-center-specific load, county-level detail, average retail price (cents/kWh — deferred), the ~1,700 small short-form (EIA-861S) utilities, or monthly freshness (this is the annual census, not the monthly EIA-861M sample).

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

Behavior5/5

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

Beyond annotations (readOnlyHint, idempotentHint, destructiveHint), the description details crucial behaviors: default exclusion of total sector, handling of sentinel rows, territory exclusion, service type mix in revenue sums, and the nuanced interplay between as_of and data_year. It also warns about empty results when misusing data_year.

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?

Despite its length, every sentence is purposeful and informative. The description is front-loaded with the core purpose and then systematically covers details, behaviors, exclusions, and examples. There is no redundancy or fluff.

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?

The description covers all essential aspects: purpose, parameters, behaviors, limitations, return format (citations, optional records), and what the tool does not do. Given the tool's complexity and the presence of an output schema, it is fully complete.

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?

The input schema has one parameter 'params' with 0% description coverage, but the description thoroughly lists and explains all valid fields (data_year, state, sector, etc.) and their defaults. This adds immense value beyond the bare schema.

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 queries verified U.S. annual retail electricity sales data from EIA-861, specifying the grain (utility×state×sector) and measures (billed MWh, revenue, customer counts). It distinguishes from siblings like query_power_demand by explicitly listing what it does NOT do, such as hourly or peak load.

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 provides explicit guidance on when to use this tool (e.g., 'who sold how much power to whom') and when not to use it (e.g., for hourly/peak load, facility-level, monthly data). It names alternative tools or capabilities, like power.demand for peak load, and explains default behaviors and parameter interactions.

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

Discussions

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

Try in Browser

Your Connectors

Sign in to create a connector for this server.

Resources