osint
Server Details
Source-cited US machine-economy data: power, AI infra, chips, robot trade + adoption, satellites.
- 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.
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.
Tool Definition Quality
Average 4.5/5 across 62 of 62 tools scored. Lowest: 3.5/5.
Each capability has a clearly named describe/query pair, and domains like power, AI infrastructure, robotics, and space are distinct. The generic describe_capability_v1/query_capability_v1 could be confused with the named variants, and the many ISO-specific interconnection queues share similar names, but descriptions explicitly disambiguate them.
All tools follow a consistent lowercase snake_case verb_noun pattern: describe_<capability>_v1 and query_<capability>_v1, with a few utility tools like list_capabilities_v1 and get_source_evidence_v1. There is no mixing of conventions.
At 62 tools, the set is far too large for typical server scope. The describe/query pairs inflate the count even though each is justified, and the generic capabilities plus per-ISO variants make it feel heavy and hard to navigate.
The server covers each domain thoroughly with describe, query, and evidence verification, plus generic fallbacks for capabilities not yet in the client's tool list. Minor gaps exist (e.g., no county/state attribution for some data, no load types in ISO queues) but they are explicitly documented and workable.
Available Tools
66 toolsdescribe_ai_infrastructure_construction_v1Describe AI Infrastructure Construction (data centers + fabs)ARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for ai_infrastructure.construction.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 description is not required to restate safety. The description adds no extra behavioral context (e.g., return format or side effects), but with annotations covering the safety profile, this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the verb 'Describe' and immediately lists the object types covered. It contains no filler, redundancy, or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter tool with an output schema, the description fully covers the agent's needs: it states the exact resource and what aspects are described. No additional context is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero input parameters, so parameter semantics are inherently not needed. The description instead clarifies what the output describes, which is appropriate given the 100% schema coverage (empty schema).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Describe' and enumerates the exact categories (filters, groupings, metrics, detail fields, citation fields) for ai_infrastructure.construction, clearly distinguishing it from query_* siblings. It specifies both the resource and the scope of the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for discovering valid query parameters for the construction dataset, but it does not explicitly state when to use it versus the companion query_ai_infrastructure_construction_v1. 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.
describe_ai_infrastructure_employment_v1Describe AI Infrastructure Employment (data centers + semiconductors)ARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for ai_infrastructure.employment.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 safety profile is well covered. The description adds no new behavioral traits beyond listing what aspects it describes, which is more about content than behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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. It is efficiently structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, annotations cover safety, and an output schema exists, the description is fully adequate. It clearly scopes the tool to a specific dataset and indicates what kind of information will be provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds useful context by naming the dataset and the categories of information it describes, even though no parameter-specific semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb 'Describe' and a specific resource 'ai_infrastructure.employment', enumerating exactly what it covers (filters, groupings, metrics, detail fields, citation fields). This clearly distinguishes it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use the tool: when you need to know the valid query options for ai_infrastructure.employment. It doesn't explicitly mention alternatives or exclusions, but the context is clear from the dataset specificity and sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_ai_infrastructure_equipment_trade_v1Describe AI Infrastructure Equipment Trade (chip-making tools)ARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for ai_infrastructure.equipment_trade.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 no extra behavioral context (e.g., auth requirements, rate limits, response format nuances), so it meets the baseline for annotation-supported descriptions but does not exceed it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the full purpose without any superfluous words or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and an output schema, the description sufficiently covers the tool's role by listing the metadata categories it returns. It doesn't need to explain return values because the output schema exists and the categories are clearly stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description correctly focuses on output categories; no parameter documentation is needed since the input schema is empty.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Describe' and names the exact resource 'ai_infrastructure.equipment_trade'. It also enumerates the categories of information (filters, groupings, metrics, detail fields, citation fields), making it distinct from sibling describe tools like describe_ai_infrastructure_trade_v1.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 the corresponding query tool or other describe alternatives. It lacks any mention of when-not-to-use, prerequisites, or comparisons to siblings, despite the presence of 'describe' and 'query' pairs in the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_ai_infrastructure_production_v1Describe AI Infrastructure Production (semiconductor output and utilization)ARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for ai_infrastructure.production.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds value by specifying exactly what metadata will be described (filters, groupings, metrics, detail fields, citation fields), giving a clear behavioral contract 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the verb and resource, listing all the covered aspects without wasted words or redundancy. It is concise and informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that the tool has no input parameters and an output schema is present to explain return values, the description provides sufficient context. It fully enumerates the categories of information the tool returns, making it complete for an agent to decide when and how to use it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool accepts zero parameters, and the schema description coverage is 100%, so there are no parameter semantics to clarify. The description correctly focuses on what the tool returns rather than parameters, which is appropriate for this describe tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Describe' and names the exact resource 'ai_infrastructure.production', clearly distinguishing this from sibling describe tools for other datasets. The title adds context about semiconductor output and utilization, further clarifying the tool's focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is used to discover valid filters, groupings, and metrics for querying the production dataset, but it does not explicitly state when to use it versus alternatives or mention the companion query tool. The intended usage is inferable rather than directly stated.
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)ARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for ai_infrastructure.trade.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the read-only nature is covered. The description adds meaningful behavioral context beyond the annotations by listing the specific categories of metadata returned (valid filters, groupings, metrics, detail fields, citation fields), which is exactly what an agent needs to know before querying. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that precisely states what the tool does. No wasted words; every element ('valid filters, groupings, metrics, detail fields, and citation fields') earns its place by specifying the tool's full scope.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 existing output schema, this description is complete. It tells the agent exactly what metadata will be described and explicitly names the target dataset. The presence of an output schema covers the return structure, so no additional explanation is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty with 100% schema description coverage. The baseline for zero parameters is 4, and the description does not need to add parameter semantics since none exist. It correctly focuses on the output behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('describe') and explicitly names the resource ('ai_infrastructure.trade') and the exact categories of information it returns (filters, groupings, metrics, detail fields, citation fields). This clearly distinguishes it from the many 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies that this tool is a metadata/describe companion to query_ai_infrastructure_trade_v1, but it does not explicitly state when to use it versus alternatives or provide any 'when not to use' guidance. The purpose is clear from the verb and resource, but the usage context is only implied by the sibling tool names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_capability_v1Describe CapabilityARead-onlyIdempotentInspect
Describe any served capability by name — the generic twin of the named describe tools.
Pass capability as either a capability id from list_capabilities_v1 (e.g. "power.capacity")
or a query primitive name (e.g. "query_power_capacity_v1"). Returns the same schema payload
as the named describe tool: valid filters, groupings, metrics, detail fields, and citation
fields. Use the generic pair (this + query_capability_v1) when list_capabilities_v1 names a
capability that has no named tool in your client's tool list — clients cache tool lists, and
capabilities shipped after that cache are still fully reachable here.
| Name | Required | Description | Default |
|---|---|---|---|
| capability | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 meaningful context: it returns the same schema payload as named describe tools, accepts two kinds of identifiers, and works for capabilities shipped after a client's cached tool list. This goes beyond the annotations, though it doesn't cover error cases or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is efficient and well-structured: a front-loaded purpose statement, followed by parameter guidance, and ending with usage context. Every sentence carries necessary information and there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Though an output schema exists, the description still summarizes the return payload (valid filters, groupings, metrics, detail fields, citation fields). It covers the generic-vs-named tool relationship, parameter choices, and the unique caching scenario, making it complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has only a bare 'capability' string with no description (0% coverage). The description fully compensates by specifying valid values: a capability id from list_capabilities_v1 (e.g., 'power.capacity') or a query primitive name (e.g., 'query_power_capacity_v1'). This is essential semantic information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Describe any served capability by name' — a specific verb+resource action. It explicitly differentiates itself as 'the generic twin of the named describe tools', distinguishing it from the many sibling describe_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: 'Use the generic pair (this + query_capability_v1) when list_capabilities_v1 names a capability that has no named tool in your client's tool list'. It also explains the parameter format (capability id or query primitive name) and the caching rationale, making 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 FactorARead-onlyIdempotentInspect
Describe capacity factor: net generation / (operating nameplate × hours), joined across EIA-860M and EIA-923.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds behavioral context by specifying the metric formula and the data sources (EIA-860M and EIA-923), which is useful beyond the annotations. It does not contradict 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that includes the formula and data sources without any wasted words. It is immediately understandable and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a describe tool with no parameters, an output schema present, and comprehensive annotations, the description is complete. It fully explains what the tool does, which is to describe the capacity factor metric, including its calculation and underlying data sources. No additional context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is nothing to document. With no parameters, the baseline is 4, and the description does not need to add parameter semantics. The formula and data sources are sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb 'Describe' and clearly identifies the resource as 'capacity factor', providing the exact formula. This distinguishes it from sibling tools like query_capacity_factor_v1 (which likely queries data) and other describe tools such as describe_power_capacity_v1. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to obtain the definition and calculation of capacity factor, and the formula provides context. However, it does not explicitly state when to use this tool versus alternatives or exclude query usage. The guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_natural_gas_prices_v1Describe Natural Gas PricesARead-onlyIdempotentInspect
Describe the EIA Henry Hub and state electric-power gas-price atoms, units, aggregate grain, missingness, vintages, and citations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, and non-destructive behavior. The description adds valuable context about the scope of the description (specific dataset and metadata aspects), which goes beyond the annotations. No contradictions found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that lists all key aspects without any fluff. It is concise and directly conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters and an output schema present, the description is complete for a zero-parameter describe tool. It clearly communicates what the tool covers (dataset and metadata aspects), making it easy for an agent to select it appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The empty schema fully documents the lack of parameters, and the description does not need to add any parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool describes EIA Henry Hub and state electric-power gas-price atoms, listing specific metadata aspects like units, aggregate grain, missingness, vintages, and citations. This specific verb+resource combination distinguishes it from sibling query tools and other describe tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is for understanding dataset metadata (units, missingness, vintages) versus querying actual prices, but it does not explicitly state when to use this tool over query_natural_gas_prices_v1 or other describe tools. 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.
describe_power_asset_ownership_v1Describe Power Asset OwnershipARead-onlyIdempotentInspect
Describe annual EIA-860 ownership filters, convention, metrics, and exact-cell citations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so description adds context about what it describes but no extra behavioral traits. Consistent 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence that is concise and lists key elements. Could be marginally more structured, but it's efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists, the description adequately covers the tool's purpose. It mentions filters, convention, metrics, and citations, which is sufficient for a describe tool. However, it doesn't explicitly tie to the output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has zero parameters, so there is no need for parameter explanation. Description could mention it takes no arguments, but schema coverage is 100% and no param info is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: it describes annual EIA-860 ownership filters, convention, metrics, and exact-cell citations. It uses a specific verb and resource, distinguishing it from sibling describe tools that cover other topics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 alternatives (e.g., query_power_asset_ownership_v1). The usage is implied as descriptive, but lacks when-not-to-use or alternative mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_power_capacity_accreditation_miso_v1Describe MISO Capacity Accreditation (internal)ARead-onlyIdempotentInspect
Describe MISO accreditation document kinds, resource classes, ratios, suppressions, and citations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 agent knows this is a safe read operation. The description adds no additional behavioral details beyond listing content areas, which is acceptable given the annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence that lists key content areas. It is front-loaded with the verb and resource, free of filler, and appropriately sized for its purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, and annotations, the description adequately specifies what the tool describes (document kinds, resource classes, ratios, suppressions, citations). This is sufficient for an agent to invoke the tool correctly and understand its scope.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema is fully covered. Per the rubric, a tool with no parameters receives a baseline of 4, and the description does not need to explain parameter syntax. The content list helps the agent understand what will be described.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb 'Describe' with a specific resource: 'MISO accreditation document kinds, resource classes, ratios, suppressions, and citations.' It explicitly names MISO, distinguishing it from sibling tools like describe_power_capacity_accreditation_pjm_v1 and describe_power_capacity_market_miso_v1.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: the tool should be used when one needs to understand MISO accreditation document kinds, resource classes, ratios, suppressions, and citations. It does not explicitly state exclusions or alternatives, but the domain is well-specified, and the tool name itself differentiates from PJM equivalents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_power_capacity_accreditation_pjm_v1Describe PJM ELCC Class Ratings (internal)ARead-onlyIdempotentInspect
Describe PJM ELCC document identities, class dimensions, metrics, and citations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the description need not restate those safety traits. It adds context by indicating that the tool covers ELCC document identities, class dimensions, metrics, and citations, but it does not disclose the return format, pagination, or the 'internal' access implication suggested by the title, leaving behavioral detail largely to 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no filler, front-loading the action ('Describe') and domain ('PJM ELCC'). Each phrase adds a distinct content category (identities, dimensions, metrics, citations), so every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless describe tool, the description is mostly sufficient: it names the domain and the kinds of information described, and an output schema exists to provide structural detail. It does not expand 'ELCC' or explain why 'class dimensions' means, but given the low complexity and the presence of an output schema, the remaining gaps are not severe.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there is no parameter-level meaning for the description to clarify; the empty properties object says everything. Per the rubric, a 0-parameter tool gets a baseline of 4 since parameter semantics are not applicable, and the description does not need to compensate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific domain (PJM ELCC) and a concrete action ('Describe'), and it lists four content areas: document identities, class dimensions, metrics, and citations. This distinguishes it from sibling describe tools by focusing on ELCC, but the terms like 'class dimensions' and 'document identities' are somewhat jargon-heavy and the title's explicit 'Class Ratings' is not reflected in the description, so it is clear but not maximally crisp.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no guidance on when to use this tool versus alternatives. There is no mention of the companion query_power_capacity_accreditation_pjm_v1 or any exclusions such as 'do not use for other PJM capacity datasets', so an agent must rely on the general 'describe' convention and tool name 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_capacity_market_miso_v1Describe MISO PRA Capacity-Market Results (internal)ARead-onlyIdempotentInspect
Describe MISO PRA planning-year, season, zone, parameter, and citation fields.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 no behavioral context beyond that, such as scope limitations, response behavior, or access requirements. No contradiction exists, but no value is added beyond the structured annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the core purpose and avoids all filler or redundancy. Every word contributes meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a describe-only tool with no parameters and an output schema, the description adequately communicates the scope (MISO PRA capacity-market fields). However, it lacks any usage guidance or context about how the described fields relate to query counterparts, which slightly reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema fully covers all inputs. The baseline of 4 applies; no additional parameter explanation is needed or provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action (describe) and specific resource (MISO PRA capacity-market fields), enumerating field types: planning-year, season, zone, parameter, and citation. This distinguishes it from sibling tools like describe_power_capacity_market_pjm_v1 and describe_power_capacity_accreditation_miso_v1.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no exclusions, and no mention of related query tools. It only restates the tool's purpose without contextualizing selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_power_capacity_market_pjm_v1Describe PJM RPM Capacity-Market Results (internal)ARead-onlyIdempotentInspect
Describe PJM RPM delivery-year/LDA filters, UCAP metrics, and citations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations readOnlyHint=true, idempotentHint=true, and destructiveHint=false, the safety profile is already disclosed. The description adds scope content ('delivery-year/LDA filters, UCAP metrics, and citations') but does not reveal behavioral traits such as whether the tool returns metadata only or requires an active session. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with 10 words, front-loading the core purpose without extraneous detail. Every word adds value, and the structure is highly efficient for an agent scanning tool lists.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, non-destructive describe tool with an output schema, the description covers the key subjects (filters, metrics, citations) adequately. However, it does not mention how this tool relates to query_power_capacity_market_pjm_v1 or how the described elements map to query parameters, which would improve completeness. The output schema offloads return-value documentation, so the lack of output detail is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool accepts zero parameters, so the baseline of 4 applies. The description does not need to explain parameter semantics, and the input schema confirms an empty parameter set, making the description sufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly specifies the verb 'Describe' and the resource 'PJM RPM delivery-year/LDA filters, UCAP metrics, and citations,' which distinguishes it from sibling tools like describe_power_capacity_accreditation_pjm_v1. However, it does not explicitly explain what 'describe' outputs (e.g., schema definitions, option lists), leaving some ambiguity about the tool's exact behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not reference the corresponding query tool 'query_power_capacity_market_pjm_v1' or any conditions for preferring this describe tool over others. This lack of usage context forces the agent to rely on naming conventions alone.
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 CapacityARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for power.capacity.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds specific context about the categories of metadata it returns (filters, groupings, metrics, etc.), which is helpful beyond the annotations. No contradictions found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and resource. It contains no unnecessary words and is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (no parameters, output schema present, read-only annotations), the description is complete. It clearly explains what the tool does and lists the specific categories of information it describes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so baseline is 4 per rubric. The empty input schema is fully covered, and there is no need for parameter descriptions in the tool text.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 the specific resource 'power.capacity'. It uses a specific verb and resource, distinguishing it from sibling describe_* tools that target other datasets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied: the agent can infer that this tool is useful when needing to know the queryable fields for power.capacity. However, there is no explicit guidance on when to use it versus alternatives, such as query_power_capacity_v1, or any exclusions.
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)ARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for power.demand_rollup.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 value by specifying the categories of information returned (filters, groupings, metrics, etc.), which clarifies the tool's output nature beyond the generic 'describe' label. There is 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the verb and enumerates the metadata categories. Every word contributes to understanding the tool's purpose, with no redundant or extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's deterministic metadata-retrieval nature, the presence of an output schema, and comprehensive annotations, the description fully communicates the tool's role. It does not need to explain return formats since the output schema covers that. The description is complete for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema provides no parameter details. Per the rubric, baseline is 4. The description does not add parameter-specific information, but that is unnecessary given the absence of parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 resource power.demand_rollup. It uses a specific verb ('describe') and identifies the exact resource, distinguishing it from sibling tools like describe_power_demand_v1.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description conveys that the tool provides metadata about the rollup endpoint, which implicitly indicates when to use it (e.g., before querying power.demand_rollup). However, it does not explicitly state usage conditions or contrast with alternative tools, leaving the guidance somewhat implied rather than direct.
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 DemandARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for power.demand.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, so the safety profile is clear. The description adds valuable context beyond annotations by specifying the categories of metadata returned (filters, groupings, metrics, detail fields, citation fields), which helps the agent know what to expect without contradicting 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence of about 15 words. Every word is meaningful—it identifies the action, the dataset, and the scope. No filler or redundant phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter describe tool with an output schema present, the description fully captures what the tool does and what it returns at a high level. It leaves no ambiguity about the dataset or the categories of information described, making it complete for its simple context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description correctly focuses on the describe functionality rather than any parameter details, and no additional parameter semantics are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Describe') and a specific resource ('power.demand'), and enumerates the exact aspects covered (valid filters, groupings, metrics, detail fields, and citation fields). The tool name further distinguishes it from sibling describe tools for other datasets, making purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its usage context—an agent would use this tool to learn the valid query components for power.demand. However, it does not explicitly state when to use this over query_power_demand_v1 or other describe tools, nor does it provide exclusions or alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_power_fuel_cost_v1Describe Power Fuel Receipts and CostsARead-onlyIdempotentInspect
Describe EIA-923 receipt/cost filters, raw units, missing semantics, and exact-cell citations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 behavioral context by mentioning 'exact-cell citations' and 'missing semantics,' which informs the agent about the tool's output structure beyond the annotations. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core purpose ('Describe EIA-923 receipt/cost filters') and lists specific aspects covered. It contains no extraneous words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, complete annotations, and an existing output schema, the description adequately covers what the tool does. It specifies key details like exact-cell citations and missing semantics, ensuring the agent understands the return format without needing further explanation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline score is 4. The description does not need to add parameter-level meaning, and it appropriately describes the tool's function without referencing nonexistent parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool describes 'EIA-923 receipt/cost filters, raw units, missing semantics, and exact-cell citations.' It uses a specific verb ('describe') and resource domain ('power fuel cost'), distinguishing it from sibling describe tools focused on other domains (e.g., 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for obtaining metadata about EIA-923 receipt/cost data, but it does not explicitly state when to use this tool versus alternatives like query_power_fuel_cost_v1 or other describe tools. No when-not or exclusion guidance 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_generation_v1Describe Power GenerationARead-onlyIdempotentInspect
Describe valid filters, groupings, atoms, metrics, detail fields, and citation fields for power.generation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 by enumerating the types of metadata returned (filters, groupings, atoms, metrics, detail fields, citation fields), which goes beyond the annotations and helps the agent understand what to expect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that lists the key types of information without any unnecessary words. It is highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no nested objects, output schema present), the description fully covers the tool's purpose and scope. It clearly specifies what is described (valid filters, etc.) and is complete for a describe tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema provides full coverage trivially. The description does not need to explain parameters, and the baseline for zero-parameter tools is 4. It appropriately focuses on the tool's output content.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Describe valid filters, groupings, atoms, metrics, detail fields, and citation fields for power.generation.' This specifies a concrete action (describe) and distinct resource (power.generation metadata), differentiating it from query_power_generation_v1 and other describe tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 constructing queries, but it does not explicitly state when to use it vs. alternatives like query_power_generation_v1 or other describe tools. No exclusions or alternative guidance 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_caiso_v1Describe Power Interconnection Queue (CAISO)ARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for power.interconnection_queue_caiso.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 safety profile is clear. The description adds context by enumerating the categories of information it describes (filters, groupings, metrics, etc.), but does not disclose additional behavioral traits such as return size or performance characteristics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the verb and clearly lists the output categories. It contains no filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 is present, and annotations cover safety, the description is complete for selecting and invoking this tool. It tells you what information it provides, which is all that is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, so there are no parameter semantics to explain. The baseline score for 0-param tools is 4, and the description appropriately does not over-explain anything.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 power.interconnection_queue_caiso dataset. It uses a specific verb ('Describe'), names the exact resource, and is distinguished from siblings like describe_power_interconnection_queue_ercot_v1 by the caiso suffix.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to learn about query parameters for the CAISO interconnection queue dataset, but it does not explicitly state when to use it versus alternatives, such as the corresponding query tool or other regional describe tools. No exclusions or explicit 'when to use' guidance 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_ercot_v1Describe Power Interconnection Queue (ERCOT)ARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for power.interconnection_queue_ercot.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool read-only, idempotent, and non-destructive. The description adds context about the content of the description (valid filters, groupings, etc.), which is useful and goes beyond the annotations, though it does not disclose additional behavioral traits like return structure or limitations. With annotations present, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that avoids redundancy. Every word contributes to conveying the tool's scope, making it concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with no parameters, and an output schema exists to explain return values. The description covers all necessary aspects to understand the tool's purpose and fits well within the context of sibling describe tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to explain. The baseline of 4 applies, and the description does not need to compensate for any missing parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Describe' and names the exact resource 'power.interconnection_queue_ercot', listing the types of information covered (filters, groupings, metrics, detail fields, citation fields). This clearly distinguishes it from sibling 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.
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. It implies usage through its name and scope, but there is no guidance on when to choose the ERCOT-specific tool over the generic describe_power_interconnection_queue_v1. Thus usage is only implied.
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)ARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for power.interconnection_queue_isone.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark this as read-only, idempotent, and non-destructive. The description adds specific behavioral context by enumerating the categories of information (filters, groupings, metrics, detail fields, citation fields) that the tool returns, which is not captured in 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that clearly states the tool's output scope with no filler or repetition. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no parameters and provides an output schema. The description sufficiently covers the tool's purpose and the categories of metadata it returns, making it complete for its simple nature.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool accepts zero parameters, so the schema fully covers parameters. Per the rubric, the baseline for zero parameters is 4, and no additional parameter semantics are needed since there are none.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Describe' and identifies the exact resource: valid filters, groupings, metrics, detail fields, and citation fields for the ISO-NE interconnection queue dataset. This clearly distinguishes it from sibling describe tools for other regions or datasets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives, such as using it before querying the corresponding data. Usage is implied by the tool's purpose, but no prerequisites or alternatives are mentioned.
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)ARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for power.interconnection_queue_nyiso.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 is safely read-only. The description adds context by specifying the exact categories of information returned (filters, groupings, metrics, etc.), which is valuable beyond the annotations. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the verb and resource, enumerates the key content types. Every word earns its place; no waste or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple describe tool with no parameters and an output schema (implied by has output schema), the description is complete. It tells the agent exactly what this tool provides, and the read-only nature is covered by annotations. No gaps in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is trivially 100%. The description doesn't need to explain parameters, and the baseline for 0 params is 4. The description adds no unnecessary parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Describe') and resource ('power.interconnection_queue_nyiso'), clearly indicating this tool provides metadata about the NYISO dataset. It distinguishes itself from sibling describe tools for other regions (e.g., caiso, ercot) by naming the exact dataset, and from query tools by its descriptive role.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: it lists what the tool describes (valid filters, groupings, metrics, detail fields, citation fields), making it clear this is a reference for constructing queries to the NYISO interconnection queue. It does not explicitly exclude other tools, but the dataset-specific naming provides clear context among siblings.
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)ARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for power.interconnection_queue_pjm_cycle.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds context about the specific output aspects (filters, groupings, metrics, detail fields, citation fields) but does not disclose any additional behavioral traits beyond what annotations and the tool name imply. This is adequate but not exceptional.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
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 identifies the resource and the specific aspects covered. Every word earns its place; there is no redundancy or extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 params, output schema present, annotations provided), the description is complete for its purpose. It clearly states what the tool describes and for which dataset. The resource name includes 'cycle', aligning with the title, and the output schema covers return values, so no further explanation is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema is already fully covered (100%). The description does not need to elaborate on parameters. The baseline for 0 params is 4, and the description adds no unnecessary parameter information, which is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 a specific dataset. The resource 'power.interconnection_queue_pjm_cycle' is precisely identified, and the verb 'describe' distinguishes it from query tools. The explicit list of what is described adds specificity and differentiates it from other describe tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a clear usage context: when an agent needs to know the valid filters, groupings, metrics, detail fields, or citation fields for this dataset, use this tool. It does not explicitly name alternatives, but the distinction between describe and query tools and the dataset-specific naming provide sufficient context. No exclusions are given, but the purpose is 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_v1Describe Power Interconnection Queue (PJM)ARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for power.interconnection_queue_pjm.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety and idempotency. The description adds value by detailing the types of information returned (filters, groupings, metrics, detail fields, citation fields), which clarifies the tool's output scope. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently lists the categories of metadata the tool provides. No wasted words; every element is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 exists, the description sufficiently covers what the tool does. It names the key aspects (filters, groupings, metrics, detail fields, citation fields), which is complete for a describe tool. Slight gap: it doesn't explicitly connect to the corresponding query tool, but this is not essential.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is effectively 100%. The description doesn't need to explain parameters since none exist. It appropriately focuses on what the tool returns rather than input semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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.interconnection_queue_pjm). The verb 'describe' is specific, and the resource is uniquely identified, distinguishing it from query tools and describing what metadata aspects are covered.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no explicit guidance on when to use this tool versus alternatives. While the name implies it is for PJM data, there is a generic describe_power_interconnection_queue_v1 sibling that could be used instead, and the description does not explain when to choose this region-specific version. No exclusions or context are given.
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)ARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for power.interconnection_queue_spp.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, providing a safe-read profile. The description adds context by specifying exactly what categories of metadata will be returned (filters, groupings, metrics, detail fields, citation fields), which goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that wastes no words. It clearly begins with the verb and resource, then lists the content categories. No unnecessary detail or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that this is a describe tool with an output schema and strong annotations, the description is sufficiently complete. It names the dataset and enumerates the fields it documents, which is all an agent needs to decide whether to call it. However, it does not explicitly state that this is a preliminary step before querying, though that is strongly implied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so schema description coverage is trivially 100%. Per the rubric, a null-parameter tool gets a baseline of 4. The description does not need to explain parameters and does not add anything misleading.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Describe' and the specific resource 'power.interconnection_queue_spp', and enumerates the types of information covered (filters, groupings, metrics, detail fields, citation fields). This distinguishes it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: call this tool to learn the valid fields before querying the SPP dataset. However, it does not explicitly state when to use this tool versus alternatives (e.g., the generic describe_power_interconnection_queue_v1 or other region-specific describe tools), nor does it provide any exclusion guidance.
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)ARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for power.interconnection_queue.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a safe, read-only, idempotent operation. The description adds the specific scope of the metadata (filters, groupings, metrics, detail fields, citation fields), which outlines what the agent can expect. It does not contradict any annotations, though it adds no further behavioral context like auth or rate limits, which are likely unnecessary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that front-loads the verb and resource, then lists the covered items. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple nature of a describe tool and the presence of an output schema, the description is sufficient. It enumerates the metadata categories and the title resolves the MISO specificity. It does not explicitly connect to the query tool, but that is not required for a describe operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the description's role is minimal. The baseline of 4 applies; the description correctly lists the metadata categories rather than attempting to document nonexistent parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Describe' with a clear resource ('power.interconnection_queue') and enumerates the exact types of information it provides (filters, groupings, metrics, detail fields, citation fields). The title distinguishes this as the MISO-specific describe tool, differentiating it from regional siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its usage: it provides metadata needed before querying the dataset. However, it does not explicitly state when to use this tool over the other regional describe tools, nor does it reference the corresponding query tool. The title adds regional context but no explicit exclusions or alternatives are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_power_plant_costs_v1Describe FERC Form 1 Plant CostsARead-onlyIdempotentInspect
Describe native-XBRL Form 1 plant-cost facts, units, coverage, and exact-fact citations.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true, idempotentHint=true, and destructiveHint=false, which cover safety and idempotency. The description adds that the tool yields exact-fact citations, but this is minor behavioral context. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that immediately conveys the tool's purpose. No wasted words, and it is front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and the existence of an output schema, the description adequately covers what the tool does. It provides enough context for the agent to understand the tool's role without needing additional details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the schema covers all needed input. The description adds value by hinting at the output nature (facts, units, coverage, citations), but this is not parameter-related. Baseline 4 for zero parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool describes native-XBRL Form 1 plant-cost facts, units, coverage, and exact-fact citations. The verb 'describe' plus the specific resource 'power plant costs' clearly distinguishes it from siblings focusing on other domains (e.g., AI infrastructure) 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives, such as the many query_* or other describe_* tools. Given the large set of siblings, explicit usage directions would help the agent select the correct tool.
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)ARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for power.price_ercot.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description adds the scope of what is described (valid filters, groupings, etc.), which is useful but does not disclose additional behavioral traits such as return format or whether it lists all possible values. The bar is lowered due to annotations, and this meets it without exceeding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, concise sentence that is front-loaded with the verb and resource. Every word earns its place; there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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, the description fully covers what it does and what content it returns. The output schema exists, so return values need not be explained. Combined with annotations and the sibling query tool context, the description is complete and unambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are no parameters (0 params), so the baseline is 4. The description adds meaning by explaining the tool's output scope, but no parameter semantics are needed. The schema coverage is vacuously 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Describe') and resource ('power.price_ercot'), and enumerates the exact types of information covered (filters, groupings, metrics, detail fields, citation fields). This clearly distinguishes it from other describe tools for different datasets and from the corresponding query tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies its usage context: before constructing queries, users need to know valid filters, groupings, etc. There is no explicit 'use when' statement or alternative exclusion, but the context is clear given the sibling query tool for the same dataset. Not explicit enough for a 5.
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 SalesARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for power.retail_sales.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior. The description adds valuable context by specifying the exact categories of fields the tool will return (filters, groupings, metrics, detail fields, citation fields), setting expectations for the response content beyond safety traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core purpose and enumerates the categories precisely. There is no fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 an output schema (not shown but present), and the description clearly covers the dataset and information categories, it is fully complete for its role. There are no gaps that impede correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the input schema is empty, so schema coverage is complete. The description does not need to explain parameter semantics since none exist. This aligns with the baseline of 4 for tools with no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it describes valid filters, groupings, metrics, detail fields, and citation fields for the power.retail_sales dataset. This is a specific verb+resource combination that distinguishes it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by enumerating the types of information it will provide (filters, groupings, metrics, etc.), signaling it is a schema-discovery tool for power.retail_sales. It does not explicitly mention when to use it versus alternatives, but the sibling tool naming makes the appropriate use inferable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_robotics_adoption_v1Describe Robotics Adoption (share of plants using robots, workers exposed, robotics capex)ARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for robotics.adoption.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 no behavioral context beyond what 'describe' naturally implies, such as any constraints, output details, or relationship to query tools. It does not contradict annotations but adds no extra transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the action and lists the specific categories of information. Every word contributes meaning, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 exists, the description is largely complete. It names the specific resource and the types of metadata provided. However, it relies on the title to convey the dataset's subject ('share of plants using robots...'), so it is slightly less self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description does not need to explain parameters, and the schema coverage is 100% (empty). The mention of what is described (filters, metrics, etc.) adds contextual value even though there are no parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 robotics.adoption dataset. It uses a specific verb ('Describe') and names the resource, distinguishing it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied: it is a describe tool paired with query_robotics_adoption_v1, meant to provide metadata before querying. However, the description does not explicitly say when to use it over alternatives or mention the companion query tool, so it only partially guides usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_robotics_trade_v1Describe Robotics Trade (industrial-robot imports, value + robot counts)ARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for robotics.trade.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so safety is covered. The description adds behavioral context by specifying what the tool returns: a description of valid filters, groupings, metrics, detail fields, and citation fields. This goes beyond the annotations by outlining the tool's output content, but it does not mention potential nuances like whether the output is a schema or a textual summary. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the action ('Describe') and the resource ('robotics.trade'), followed by a concise list of what is described. Every word earns its place; there is no redundancy or filler. This is an ideal level of conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a description tool with no parameters and an output schema present, the description is complete. It enumerates all categories of information the tool provides (filters, groupings, metrics, detail fields, citation fields), which fully satisfies the need to understand what the tool outputs. The presence of an output schema means return values are already documented, so the description does not need to elaborate further. The tool is simple enough that no additional context is required.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline score is 4 as per the rubric. The description does not need to explain parameter semantics because there are none. The empty input schema is consistent, and the description focuses on the output aspects rather than inputs, which is appropriate for a describe tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Describe valid filters, groupings, metrics, detail fields, and citation fields for robotics.trade.' This is a specific verb ('Describe') with a clear resource ('robotics.trade') and enumerates the exact scope of the description. The title adds further context by specifying 'industrial-robot imports, value + robot counts', distinguishing it 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool: when one needs the valid filters, groupings, metrics, etc. for the robotics.trade dataset. It does not explicitly name alternatives or exclusions, but the resource-specific naming ('robotics.trade') and the presence of sibling describe tools for other datasets make the intended usage unambiguous. The lack of explicit 'instead of' language prevents a score of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_space_satellite_filings_v1Describe Space Satellite Filings (FCC satellite licensing docket)ARead-onlyIdempotentInspect
Describe valid filters, groupings, metrics, detail fields, and citation fields for space.satellite_filings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds that the tool describes query facets (filters, groupings, metrics, etc.), which is useful but does not disclose additional behavioral traits like output format or error handling. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the verb and resource. Every word earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 covers the tool's scope by enumerating what it describes (filters, groupings, metrics, detail fields, citation fields). No additional context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description accurately represents the tool's no-input nature and describes what it returns conceptually, which is sufficient for a describe tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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 the specific dataset 'space.satellite_filings'. This is a specific verb+resource that distinguishes it from sibling describe tools for other datasets and from the corresponding query tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is used to discover query options for satellite_filings, but it does not explicitly state when to use it (e.g., before running queries) or contrast it with query_space_satellite_filings_v1. Usage is implied rather than explicitly guided.
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 EvidenceARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive. The description adds valuable behavioral details: it verifies the raw workbook SHA-256 before returning source-header row values, and states that it proves the number with no re-query. This goes beyond the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is about 80 words and front-loaded with the core purpose. Each subsequent sentence adds necessary context: input shapes, verification behavior, and use case. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite minimal schema, the description covers the purpose, input requirements, and behavioral outcome (verified source-row values). An output schema exists, so the description need not enumerate return fields. It is complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is nearly empty (params is an arbitrary object/null, 0% coverage). The description fully compensates by specifying exactly what to pass: a citation object from either citations[ref].verify or a detail record's citation from include_records. This is critical semantic information not present in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence clearly states the action and target: 'Fetch and hash-verify the raw source row behind a returned citation.' It uses a specific verb and resource, and distinguishes from sibling query/describe tools by focusing on evidence retrieval for a citation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use it: 'Use this when an agent must prove an answer from the underlying source row.' It also explains the two input shapes from query tools, providing clear context. It doesn't explicitly list alternatives or exclusions, but the use case is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_capabilities_v1List CapabilitiesARead-onlyIdempotentInspect
List available exascale.build data capabilities for agent discovery before querying. Also call this BEFORE stating that a capability is not available — client tool lists are cached and this surface grows; anything listed here is reachable via query_capability_v1 even if your tool list predates it.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, but the description adds critical behavioral context: the tool's list grows over time, client tool lists are cached, and anything listed is reachable via query_capability_v1 even if the agent's current tool list predates it. This explains dynamic behavior and cache staleness, going beyond what annotations provide. No contradiction found.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, front-loaded with the primary purpose, followed by essential usage caveats. Every sentence adds value; there is no wasted words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 an output schema (covering return values), and annotations cover safety, the description provides sufficient context: purpose, when to use, and caveats about cache growth and capability availability. It is complete for an agent to decide when and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters (schema coverage 100%), so there are no parameter semantics to explain. Per the rubric, 0 params warrants a baseline of 4. The description adds no parameter-related information, but none is needed given the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'List available exascale.build data capabilities for agent discovery before querying.' It uses a specific verb (list) and resource (exascale.build data capabilities), and distinguishes itself from sibling tools by framing it as a discovery step before querying. It also references query_capability_v1, clarifying how it relates to the broader toolset.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: call this 'before querying' and 'BEFORE stating that a capability is not available.' It explains when the tool is necessary due to client tool lists being cached and the capability surface growing. It also implies using query_capability_v1 as the follow-up for reaching listed capabilities, giving a clear workflow.
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 substantial behavioral context beyond these: monthly data cadence, 2014-01 start, Census revision vintage semantics via as_of, category/basis distinct-series behavior, non-additivity warnings, aggregation scope notes, and citation/row-level record behavior. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Although long, the description is densely informative and excellently structured: opening purpose, explicit usage trigger, filter/parameter walkthrough, example, category/basis semantics, caveats, and exclusions. The formatting uses short paragraphs and bullet-like enumerations that make scanning easy, and every sentence contributes necessary operational detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, minimal schema, and broad sibling set, the description is remarkably complete. It covers return behavior (JSON aggregates, citations, row-level records), data semantics, aggregation pitfalls, revision handling, and boundary exclusions. The presence of an output schema means return-value explanation is not required, and the description still adds plenty of context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage for the single generic params object is 0%, so the description must fully document parameters. It does: it names category, basis, data_month, data_month_from/to, year, revision_status, group_by, and include_records, explains allowed values, gives a flat-structure rule, and provides concrete JSON examples. This is far beyond typical compensation for an opaque schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: '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).' This precisely distinguishes it from sibling query_ai_infrastructure_* tools (employment, equipment trade, production, trade) and from power.* tools by explicitly scoping to construction spending.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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: 'Use this for "how much is being spent BUILDING data centers (or chip fabs) in the US" questions.' It also gives clear exclusions and alternatives, e.g., 'use the power.* capabilities for capacity and the interconnection queue,' and lists many non-covered topics such as investment totals, MW capacity, and operator breakdown.
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)ARead-onlyIdempotentInspect
Query verified U.S. employment, establishments, and wages — total and by industry (data centers, semiconductors, construction, retail, accommodation, food service) — for any county, state, or the nation, from the U.S. Bureau of Labor Statistics' Quarterly Census of Employment and Wages (QCEW).
Use this for two families of questions: (1) "how many people work in / how many establishments / what wages in data centers or chip fabs" — INDUSTRY employment, not an "AI jobs" count; and (2) the place-based question — "what happened to a county's employment, wages, construction, or local economy (e.g. during and after a data-center / fab buildout)": total covered employment plus the buildout-phase and induced-sector series for every US county, quarterly since 2014.
Filter by industry_code — each code lives at ONE aggregation depth, shown here with its agglvl codes
(national/state/county):
"10" Total, all industries — every covered job (agglvl 10/50/70 = all ownerships combined;
11/51/71 = split by ownership)
"23" Construction (sector; 14/54/74)
"44-45" Retail trade (sector; 14/54/74)
"721" Accommodation (3-digit; 15/55/75)
"722" Food services & drinking places (3-digit; 15/55/75)
"236220" Commercial & institutional building construction (6-digit; 18/58/78)
"518210" Computing infrastructure / data processing / web hosting — the data-center industry
(6-digit; 18/58/78)
"334413" Semiconductor & related device manufacturing (6-digit; 18/58/78)
agglvl's first digit is geography (1 national / 5 state / 7 county); pick ONE industry_code and the
matching agglvl for its depth to get a clean additive scope. Also filter by own_code ("5" = Private —
the usual one; "1"/"2"/"3" = federal/state/local government; "0" = Total Covered, only on industry
"10"), geography (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). Examples:
{"industry_code": "518210", "own_code": "5", "agglvl": "18", "quarter": "2025-10-01"} — the national
private data-center-industry figure; {"industry_code": "10", "own_code": "0", "agglvl": "70", "county_fips": "51117", "group_by": ["quarter"], "quarter_from": "2014-01-01"} — total employment in
Mecklenburg County VA, quarterly (the "did the buildout move the county" series); swap
"industry_code": "23", "own_code": "5", "agglvl": "74" for its construction sector. 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). Industry series are
DISTINCT and NESTED: "10" contains the sectors, "23" contains "236220" — never sum across industry
codes (each depth has its own agglvl, so a mixed-depth scope draws the qcew_hierarchy note).
WHERE JOBS ARE COUNTED: at the employer's ESTABLISHMENT, not the work site. A construction crew building in county X for a contractor based in county Y counts in county Y — so a county's construction series understates on-site buildout labor staffed by outside contractors.
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 ("10"
and sector-level cells are rarely withheld); an absent value means "BLS withheld it," not "no jobs."
A scope containing withheld cells returns a qcew_suppression note counting them: sums skip the
NULLs, so summed employment/wages UNDERCOUNT — for a state or national figure use BLS's own row at
that level (agglvl 5x/1x) instead of summing finer cells.
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.
NAICS VINTAGE: each year is served exactly as BLS coded it — 2014-2021 under NAICS 2017, 2022Q1-forward under NAICS 2022; BLS never recodes history. The 2022 revision REDEFINED 518210 (retitled to "computing infrastructure providers…"), so a 518210 series crossing 2022Q1 mixes two definitions — a level shift at that boundary (e.g. Loudoun County VA: −45% in one quarter) is establishment reclassification, not jobs lost. Compare 518210 within one vintage side of 2022Q1, or say so when crossing it.
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
industry depths ("10" contains the sectors and 6-digit codes), 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), jobs at the work SITE (counted at the employer's establishment — see above), a definition-constant 518210 series across 2022Q1 (the NAICS vintage break — see above), industries beyond the eight pinned series (e.g. electrical contractors 238210 — largely absent/suppressed at county grain), 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).
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals critical behavioral traits beyond annotations: QCEW data lag, NAICS vintage redefinition causing level shifts, suppression of confidential cells served as NULL, establishment-based job counting (not worksite), and non-additivity across hierarchy/time. These caveats are essential for correct interpretation and far exceed the basic readOnly/idempotent annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-structured with clear sections and bullet-like lines. Every paragraph adds essential caveats (suppression, vintage, additivity), but some repetition could be trimmed for efficiency. Still, the organization makes it navigable and the length is justified by the data complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is exhaustive, covering purpose, parameters, output behavior, suppression handling, NAICS vintage issues, measures, geographic scope, and explicit limitations. Given the tool's complexity and the presence of an output schema, it does not need to describe return values—everything else is comprehensively addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema only provides a generic 'params' object with no property definitions, so the description carries the full burden of parameter semantics. It thoroughly enumerates and explains industry_code values with agglvl mappings, own_code options, geography fields, time filters, group_by fields, and include_records, including concrete examples. This fully compensates for the absent schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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. employment, establishments, and wages from BLS QCEW, specifically for data centers and semiconductors. It distinguishes itself from siblings by focusing on employment data and clarifying it is not an 'AI jobs' count, while also outlining two distinct families of questions it answers.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly specifies when to use the tool for two families of questions (industry employment and place-based county impact) and provides detailed filtering instructions with industry_code, agglvl, own_code, geography, and time parameters. It also clearly states what the tool does not determine (e.g., MSA, occupation, site headcount), giving strong usage boundaries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_ai_infrastructure_equipment_trade_v1Query AI Infrastructure Equipment Trade (chip-making tools)ARead-onlyIdempotentInspect
Query verified U.S. monthly IMPORTS of semiconductor-manufacturing EQUIPMENT (HS-8486) — customs value (USD) by country of origin — from the U.S. Census Bureau's International Trade data.
Use this for "is the fab buildout actually tooling up, and who supplies the machines" questions — the equipment leg of the fab lifecycle: construction spending (ai_infrastructure.construction) measures the shell, this measures the tools flowing in, and chip imports (ai_infrastructure.trade) measure the output side. HS-8486 covers machines and apparatus used solely or principally to MANUFACTURE semiconductor boules/wafers, devices, and integrated circuits — AND flat-panel displays (Census does not split them at this level); it is NOT the chips themselves (those are HS-8542). Filter by country (the verbatim Census name, e.g. "JAPAN", "NETHERLANDS", "KOREA, SOUTH"), cty_code (the Census country code), 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 tool-supplying 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; no tool counts, and no tool-type or vendor breakdown (one HS4 heading: no lithography-vs-deposition-vs-etch split, no per-manufacturer series such as ASML). 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; a cross-row sum returns a country_aggregation note and nulls the metric in ranking remainders. Filter country_level=total for the U.S. national figure. Country is the country of ORIGIN (Census attribution), not which U.S. fab, state, or operator receives the equipment — there is no U.S. place breakdown. Imports only (not exports), customs value (not landed/CIF/duty), and recent months are preliminary and revised in later Census releases.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses the return format (JSON aggregates with citations, optional row-level records), the exact behavior when summing overlapping rows (returns a country_aggregation note and nulls metrics), the fact that values are customs value not CIF/duty, the preliminary nature of recent months, and the data's re-verifiability via get_source_evidence_v1. This is rich 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but well-organized and front-loaded with a purpose sentence. Every section provides necessary detail given the tool's complexity, though there is a minor redundancy (e.g., mentioning the lack of vendor/tool-type breakdown in two places). It could be slightly tightened but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, empty parameter schema, and rich annotations, this description is fully self-contained. It covers parameter semantics, provides examples, explains overlapping-group double-counting risks, defines the available measures, and clarifies the data's scope (origin country, imports only, preliminary revisions). The agent has everything needed to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is effectively an empty `params` object with 0% coverage and no property definitions. The description fully compensates by detailing all filter and grouping parameters (country, cty_code, country_level, year, data_month, ranges, group_by, order_by, top_n, include_records), explaining allowed values and giving concrete examples. It leaves no ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise statement: it queries verified U.S. monthly imports of semiconductor-manufacturing equipment (HS-8486) with customs value by country of origin from Census data. It explicitly contrasts this with the construction and chip-import sibling tools, naming them and explaining the fab lifecycle roles. The tool name also clearly indicates this is the query variant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Use this for... questions' and names the alternative tools (ai_infrastructure.construction, ai_infrastructure.trade) with a clear division of responsibilities. It also provides strong guidance on how to interpret results and warns against summing across country rows due to overlapping groupings, giving the agent clear context for when and how to use the tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_ai_infrastructure_production_v1Query AI Infrastructure Production (semiconductor output and utilization)ARead-onlyIdempotentInspect
Query verified U.S. semiconductor & electronic-component PRODUCTION and CAPACITY UTILIZATION — the Federal Reserve's monthly G.17 industrial-production index (2017=100) and capacity-utilization rate (percent) for NAICS 3344 — from the Board's own release, history to 1972.
Use this for "are the domestic fabs actually producing / how hot are they running" questions — the OUTPUT leg of the fab lifecycle: construction spending (ai_infrastructure.construction) measures the shell, equipment imports (ai_infrastructure.equipment_trade) the tools flowing in, chip imports (ai_infrastructure.trade) what crosses the border; this measures domestic production and how much of the installed capacity is in use. NAICS 3344 is "semiconductor and OTHER electronic component" manufacturing — the finest split the Fed publishes here (broader than semiconductors alone, and NOT the same slice as QCEW's 334413). Filter by series_kind ("ip" = the production index, on both bases; "capacity_utilization" = percent of capacity in use, seasonally adjusted only; "capacity" = the capacity index behind the rate), series_name (the verbatim Fed series, e.g. "IP.G3344.S", "CAPUTL.G3344.S"), basis ("seasonally_adjusted" / "not_seasonally_adjusted" — IP only), year, data_month (ISO first-of-month, e.g. "2026-05-01") or the data_month_from/data_month_to range. Group by any of series_name, series_kind, basis, data_month, or year. Pass each parameter as a top-level key of params (flat — not nested). Example: {"series_kind": "capacity_utilization", "group_by": ["data_month"], "data_month_from": "2024-01-01"} for the utilization trend; {"series_kind": "ip", "basis": "seasonally_adjusted", "group_by": ["year"]} for the production index by year (an average per year). Returns JSON aggregates with citations and optional row-level records when include_records is true — every value cites the exact Fed SDMX observation, re-verifiable via get_source_evidence_v1.
Measures are avg/min/max per reading — avg_ip_index, avg_capacity_utilization_pct, avg_capacity_index (+ min/max variants): an index or a rate is INTENSIVE, so multi-month figures are AVERAGES, never sums (the Fed publishes its own quarterly/annual aggregations, which this block does not serve — monthly grain only). An index is not dollars and not unit counts (2017=100). Capacity and utilization exist seasonally adjusted only — their not-seasonally-adjusted cells are structurally absent, never zero. Averaging the IP index across both bases returns a production_aggregation note — filter or group by basis instead. National industry aggregate: no state, county, fab, or company breakdown. Every monthly release revises history (as_of carries the vintage).
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations already declaring read-only/idempotent/non-destructive, the description adds substantial behavioral context: measures are intensive and averaged not summed, capacity/utilization are SA-only with structurally absent NSA cells, averaging across bases triggers a production_aggregation note, no breakdowns by state/fab/company, revisions are as_of tagged, and citations are re-verifiable. This goes far beyond the annotation safety profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long (several paragraphs) but densely packed with essential information that compensates for the absent schema detail. It is logically structured: what, when to use, parameters, examples, behavior, limitations. While some sentences could be tightened, the length is justified given the tool's complexity and the lack of schema-level parameter documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the opaque schema (0% coverage), and the rich annotations, the description is remarkably complete. It explains return aggregates, averaging behavior, data grain (monthly only, not quarterly/annual), limitations, and revision handling. It even notes the absence of state/county/fab/company breakdowns. There is little the agent would need to guess.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is effectively opaque (only a params object with additionalProperties), but the description fully compensates by enumerating all filter parameters (series_kind, series_name, basis, year, data_month, data_month_from/to, group_by, include_records), their valid values, and giving concrete examples like {"series_kind": "capacity_utilization", "group_by": ["data_month"], "data_month_from": "2024-01-01"}. This provides complete semantic meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise, specific verb+resource: 'Query verified U.S. semiconductor & electronic-component PRODUCTION and CAPACITY UTILIZATION — the Federal Reserve's monthly G.17 industrial-production index (2017=100) and capacity-utilization rate (percent) for NAICS 3344 — from the Board's own release, history to 1972.' It clearly distinguishes this tool from siblings by positioning it as the OUTPUT leg of the fab lifecycle, contrasting with construction, equipment trade, and imports.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use guidance is provided: 'Use this for "are the domestic fabs actually producing / how hot are they running" questions.' It names alternatives (ai_infrastructure.construction, ai_infrastructure.equipment_trade, ai_infrastructure.trade) and clarifies the NAICS scope difference from QCEW's 334413, helping the agent choose correctly among siblings.
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description discloses return format ('JSON aggregates with citations and optional row-level records'), the double-counting pitfall ('NEVER SUM across country rows'), the meaning of country as origin rather than installation, that imports are not exports, customs value not landed/CIF/duty, and that recent months are preliminary. This is exemplary 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Despite being lengthy, the description is well-structured: purpose, usage examples, parameter details, measures, and critical caveats are separated logically. Every sentence adds necessary information, especially given the zero-coverage schema. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is complex, but the description covers all dimensions: what data is returned, how to filter/group/order, which measures exist, why summing is wrong, the absence of quantity data, and citation/verifiability. With an output schema present and this rich description, an agent can confidently select and invoke the tool without guessing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is a generic `params` object with additionalProperties true, so schema coverage is 0%. The description compensates fully by enumerating all meaningful parameters (`country`, `cty_code`, `country_level`, `year`, `data_month`, `data_month_from/to`, `group_by`, `order_by`, `top_n`, `include_records`), specifying formats and allowed values, and stressing that parameters must be flat top-level keys. This is far more useful than the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise statement: '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.' This names the exact verb, resource, and scope. It also differentiates from siblings by clarifying that HS-8542 covers ALL integrated circuits and is NOT AI-accelerator/GPU-specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states 'Use this for "how much $ of chips did the US import... and how is it trending" questions' and provides two complete example invocations for top source countries and national trend. It also gives a clear when-not-to-use signal: 'NOT AI-accelerator / GPU-specific.' This goes far beyond vague applicability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_capability_v1Query CapabilityARead-onlyIdempotentInspect
Query any served capability by name — the generic twin of the named query tools, reaching every capability including ones newer than your client's cached tool list.
Pass capability as either a capability id from list_capabilities_v1 (e.g. "power.price_ercot")
or a query primitive name (e.g. "query_power_price_ercot_v1"), and params as the same flat
JSON object the named query tool accepts — call describe_capability_v1 first for valid filters,
e.g. {"capability": "power.capacity", "params": {"state": "TX", "group_by": ["energy_source_code"]}}.
Returns the identical cited envelope as the named tool: same rows, same citations, same as_of.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | ||
| capability | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive behavior; the description adds that the output matches the named tool's cited envelope (same rows, citations, as_of), which is valuable. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three well-organized sentences load purpose, parameter semantics, and return behavior without fluff. Front-loaded with the core purpose and supported by a concrete example.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a generic tool with two parameters, an output schema present, and rich annotations, the description covers purpose, dispatch semantics, parameter format, prerequisite discovery, and output equivalence. No significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, but the description thoroughly explains both parameters: capability accepts either a capability id or a query primitive name, and params is the same flat JSON object the named query tool accepts. A concrete example and the describe_capability_v1 prerequisite are provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly identifies 'Query any served capability by name' and frames itself as the generic twin of the named query tools, reaching capabilities not in the cached tool list. This distinguishes it from the many sibling query_* tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States it is the generic twin of the named query tools and can target any capability, including ones newer than the client's cached list, implying use when no named tool exists or the list is stale. It explicitly recommends calling describe_capability_v1 first for valid filters, but does not formally state when not to use it.
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 FactorARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description richly discloses behavior beyond the readOnly/idempotent annotations: the exact formula, auto-aligned scope from both sources, nameplate basis, storage exclusion, month-matched snapshot, coverage declaration, citation to both source rows, and explicit non-capabilities. This is far more than the annotations alone provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized: purpose, required input, formula, optional parameters, return values, and limitations. Every sentence adds useful detail, and there is no fluff or repetition of trivial information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the sophisticated multi-source calculation and minimal schema, the description covers all necessary aspects: input format, computation scope, returned outputs, error behavior, and boundaries. The presence of an output schema means it does not need to enumerate every return field, but it still summarizes what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is an opaque `params` object with zero property documentation, so the description carries the entire burden. It explicitly documents `data_month` with format and example, optional `group_by` values, and `state`/`fuel_group` filters, making the parameters fully understandable.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear verb-resource pair ('Query verified U.S. capacity factor') and immediately explains the computation: joining EIA-860M capacity and EIA-923 generation. It distinguishes itself from sibling tools like describe_capacity_factor_v1 by emphasizing the querying/computation nature and the specific data sources, even without naming alternatives explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete usage guidance: requires `data_month`, tells the agent to ask for a month if absent, warns against blind retries on uncovered months, and describes optional grouping/filtering. It does not explicitly say 'use this instead of X when...' but provides clear operational context and lists limitations that imply when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_natural_gas_prices_v1Query Natural Gas PricesARead-onlyIdempotentInspect
Query verified EIA natural-gas price records from two public series.
atom="henry_hub_daily_spot" returns one trading-day Henry Hub spot price in
EIA's published $/MMBtu unit (series RNGWHHD). atom="state_electric_power_monthly"
returns one state-month average price paid by electric-power consumers in EIA's
published $/Mcf unit; {"atom":"state_electric_power_monthly","state":"TX"} is
the Texas power-sector proxy slice in one call. Filter either atom by date,
date_from/date_to, series, state, or price status.
The state series is an aggregate of what the state's power sector paid that month,
not a plant-level fact. EIA null values remain explicit price=null records with
price_status="source_missing"—never zero or imputed. The two source units are
never converted or blended; mixed-unit avg/min/max are null. This tool does not
assign proxies to plants or derive heat rates, $/MWh, spark spreads, or any ratio.
API revisions are preserved as immutable capture vintages selected by as_of.
Every price cites its exact archived response record, series id, period, value cell,
and SHA-256 for source-evidence verification.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, idempotent, non-destructive. The description adds significant behavioral detail: null handling with explicit price_status='source_missing', no unit mixing (mixed-unit aggregations are null), immutable capture vintages with as_of, and SHA-256 source evidence. These go far beyond the annotations and inform correct usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but well-organized: an initial summary, then atom-specific details, filtering, and caveats. Every sentence contributes a distinct constraint or behavior. The length is justified by the tool's complexity, and the front-loaded first sentence delivers the core purpose immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has two distinct data series with different units, null semantics, revision handling, and evidence requirements, the description covers all critical aspects. An output schema exists to document return structure, so the description need not repeat that. It explains unit-mixing pitfalls, proxy exclusion, and source-verification features fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is a generic 'params' object with additionalProperties and 0% coverage. The description compensates fully by defining the two atom values, listing filterable fields (date, date_from/date_to, series, state, price_status, as_of), and giving a concrete example: {"atom":"state_electric_power_monthly","state":"TX"}. This is essential meaning not available in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource statement: 'Query verified EIA natural-gas price records from two public series.' It then distinguishes the two atoms (henry_hub_daily_spot and state_electric_power_monthly) and gives concrete examples, making it clear this is a data-returning query tool rather than the sibling describe tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides detailed guidance on when to use each atom, how to filter (date, state, series, price status), and explicitly states what the tool does not do (no proxies, no heat rates, no unit conversion). It does not explicitly mention the describe sibling for metadata, but the usage boundaries are well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_power_asset_ownership_v1Query Power Asset OwnershipARead-onlyIdempotentInspect
Query verified annual EIA-860 generator ownership.
Returns the Owner schedule's raw owner names and ownership shares for each
eia_plant_id + generator_id. percent_owned is the workbook's raw fraction of
one (0.6 = 60%), not a whole-number percent. Filter by plant, generator, exact raw
owner name, state, owner state, annual vintage, or source-reported balancing
authority code; {"state":"TX","balancing_authority_code":"ERCO"} returns an ERCOT
slice in one call. Owner-name matching is exact and intentionally performs no
normalization or entity resolution.
Critical EIA convention: the Owner schedule contains only jointly owned generators
and generators wholly owned by an entity other than the operator. A generator absent
from it is wholly owned by the operator in that same annual EIA-860 Generator
schedule. An exact plant+generator query exposes this as ownership_resolution;
it does not fabricate an Owner row or a 1.0 source share. Annual vintages remain
independently queryable. Every returned share cites its exact ZIP member, sheet, row,
and Percent Owned cell for SHA-256 verification.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses behavioral traits beyond annotations: raw fraction format, exact owner-name matching without normalization, EIA convention for omitted generators, and citation with SHA-256 verification. Annotations (readOnlyHint, idempotentHint, destructiveHint) are consistent with the description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Well-structured with front-loaded purpose and detailed sections. Length is justified by the complexity of EIA conventions and filtering options, but could be slightly more concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of the domain (EIA ownership conventions, verification), the description covers all necessary aspects: return values, filtering, edge cases (absent generators), and data provenance. The presence of an output schema is noted, but the description adds valuable context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description lists all filterable fields (plant, generator, owner name, state, etc.) with an example, fully compensating for the sparse schema. It adds meaning beyond the generic 'params' object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it queries verified annual EIA-860 generator ownership, specifying the resource (power asset ownership) and output (raw owner names and shares). Distinguishes from sibling query_ tools by focusing on ownership data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit filtering options (plant, generator, owner name, state, etc.), an example query, and critical EIA convention details about which generators appear. Gives clear guidance on when to use and what to expect, including the absence of fabricated rows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_power_capacity_accreditation_miso_v1Query MISO Capacity Accreditation (internal)BRead-onlyIdempotentInspect
Query cited MISO Schedule 53 class-average and indicative-DLOL seasonal accreditation ratios, including published unit counts, storage variants, and explicit suppression atoms.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering safety. The description adds content details ('cited', 'storage variants', 'suppression atoms') but does not disclose response format, pagination, or citation behavior. This is acceptable given annotation coverage but lacks deeper 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently names the verb and resource without redundant words. It is appropriately sized for a simple query tool, though the jargon ('suppression atoms') could be clearer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an opaque params object, no parameter schema, and no usage guidance, the description is incomplete for an agent to invoke the tool correctly. It describes the data content but not how to query it or when to choose it over siblings. The presence of an output schema covers return values, but the invocation gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema defines only a free-form 'params' object with additionalProperties:true and no specific properties; schema description coverage is 0%. The description does not explain how to pass query parameters or what filters are available (e.g., date, season, unit type), leaving the agent with no guidance on how to construct a valid call.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('Query'), a specific resource ('MISO Schedule 53 class-average and indicative-DLOL seasonal accreditation ratios'), and distinguishes it from siblings like query_power_capacity_accreditation_pjm_v1 and describe_* tools by naming the MISO-specific data and its components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives. The description does not mention exclusions, alternative tools, or context like 'use this for raw data' vs 'describe' tools. The query/describe distinction is only implied by naming, not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_power_capacity_accreditation_pjm_v1Query PJM ELCC Class Ratings (internal)ARead-onlyIdempotentInspect
Query cited PJM marginal ELCC class ratings by document kind, auction, delivery year, and resource class. Preliminary, final, and incremental-auction documents remain separate; no value is preferred or reconciled.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the description need not repeat those. It adds valuable context about document separation and lack of reconciliation, which is not captured by the annotations and materially affects how results should be interpreted.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise, well-structured sentences. The main action and resource are front-loaded, and the second sentence adds a critical caveat without unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so the description correctly focuses on query dimensions and behavioral caveats. It covers the key facets and the non-reconciliation nuance. The 'internal' qualifier from the title is not carried into the description, and usage alternatives are not addressed, but overall it is sufficiently complete for a query tool with strong annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is a generic 'params' object with no property descriptions and 0% schema coverage, so the description carries the burden. It names four meaningful filtering dimensions (document kind, auction, delivery year, resource class), which gives the agent concrete guidance on what to pass. It stops short of defining parameter names or required/optional status, but this is adequate for a flexible query tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries cited PJM marginal ELCC class ratings, with specific filtering dimensions (document kind, auction, delivery year, resource class). This distinguishes it from sibling describe_ and query_ tools by naming a unique resource and operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context through the caveat that preliminary, final, and incremental-auction documents remain separate and unreconciled, but it does not explicitly say when to use this tool versus the sibling describe_power_capacity_accreditation_pjm_v1 or other query tools. No alternatives are named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_power_capacity_market_miso_v1Query MISO PRA Capacity-Market Results (internal)ARead-onlyIdempotentInspect
Query cited MISO Planning Resource Auction seasonal zonal ACP, verbatim ERZ values, published CONE parameters, and IMM conduct thresholds.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 safety profile is clear. The description adds useful context about data provenance and scope with words like 'cited', 'verbatim', and 'published'. No contradiction with annotations 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler. It efficiently communicates the action, resource, and key data categories, earning every word's place despite heavy use of acronyms.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The output schema exists and annotations are strong, but the tool's domain complexity (MISO capacity market, seasonal and zonal dimensions) and the complete lack of parameter guidance make the description insufficient for targeted invocation. The listed data elements help establish scope but omit how to select time periods or zones.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema exposes only a generic 'params' object with additionalProperties=true and zero property descriptions; schema coverage is 0%. The description does not explain how to specify query filters for ACP, ERZ values, CONE parameters, or IMM thresholds, leaving the agent without guidance on how to construct a valid request.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Query' and clearly names the resource: MISO Planning Resource Auction results. It enumerates distinct data elements (seasonal zonal ACP, verbatim ERZ values, published CONE parameters, IMM conduct thresholds), which sharply distinguishes it from sibling describe_* tools and other query tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance is given on when to use this tool versus the sibling describe_power_capacity_market_miso_v1 or query_power_capacity_market_pjm_v1. The 'Query' verb and tool name imply it is for retrieving actual data rather than metadata, but no alternatives or exclusions are stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_power_capacity_market_pjm_v1Query PJM RPM Capacity-Market Results (internal)ARead-onlyIdempotentInspect
Query cited PJM Base Residual Auction UCAP clearing prices, RTO cleared MW, reliability requirement, and published administrative price collar by delivery year and LDA.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
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 safety profile is known. The description adds the 'cited' qualifier, indicating results include evidence references, and 'internal' in the title, but it does not disclose additional behavioral traits such as pagination, rate limits, or response size. The added context is useful but minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with the verb front-loaded. Every phrase adds value, and it avoids repetition of the tool's name or title. It is compact yet information-dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has an output schema (not shown) and simple input requirements, the description provides the core domain context: what data fields are available and by which filters. It does not explain how to construct parameters or handle edge cases, but for an internal query tool with minimal expected complexity, it is largely sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is essentially empty (anyOf object/null with additionalProperties true), providing zero parameter names or types. The description compensates by stating the logical filtering dimensions 'by delivery year and LDA', which informs the agent what inputs matter. It does not specify exact parameter names or formats, but the guidance is meaningful for a 0% coverage schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with the specific verb 'Query' and clearly identifies the resource as 'PJM Base Residual Auction' results, listing exact data points (UCAP clearing prices, RTO cleared MW, reliability requirement, administrative price collar) and dimensions (delivery year, LDA). This distinguishes it from sibling query tools that target other PJM or power-market metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool is for obtaining cited PJM RPM auction results, which gives clear context for when to use it. However, it does not explicitly mention alternatives (e.g., 'use describe_power_capacity_market_pjm_v1 for metadata') or exclusions, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_power_capacity_v1Query Power CapacityARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals key behavioral details beyond annotations: the lifecycle selector parameter (operating/planned/retired/canceled) and the fact that there is no status/status_group parameter (a common confusion). It also notes the return format (JSON aggregates with citations, optional generator-level records) and explicitly states what it does not compute. Annotations already declare read-only/idempotent, so this adds context without contradicting.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but each part serves a purpose: core purpose, usage criteria, scope exclusions, and alternative tools. It is front-loaded and structured, with no filler words or repetitive content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the minimal schema, the description provides enough to correctly invoke the tool: it explains the params pattern, the lifecycle default, and the optional records flag. The output schema likely covers return structure. It also situates the tool among siblings, making it complete for an agent to select and use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only has a generic params object with no property definitions (0% coverage). The description compensates by enumerating acceptable filter keys (state, county FIPS, balancing authority, fuel, prime mover, technology, lifecycle, year) and mentions include_records. It also clarifies the default lifecycle value. However, it doesn't provide detailed value formats or the full set of possible keys, so while it's strong, it falls short of exhaustive.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific, multi-faceted statement: 'Query verified U.S. generator-level operating, planned, retired, or canceled power capacity from EIA-860M.' This clearly identifies the action (query), resource (generator-level power capacity), and scope (U.S., lifecycle status). It also lists distinguishing filter dimensions (state, county FIPS, balancing authority, fuel, etc.) that separate it from sibling tools like generation or interconnection queue.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states 'Use this for capacity questions...' and then provides a clear list of exclusions ('Does not determine electricity supplied, generation MWh, real-time dispatch, capacity factor...'). It also names specific alternative tools for interconnection queue queries. This is textbook when/when-not guidance with alternatives.
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)ARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (readOnly, idempotent, not destructive), the description adds critical behavioral traits: demand_mw is served verbatim, not a computed sum; inverted additivity with a respondent_aggregation scope note; source anomalies served verbatim and cited; default_latest_day behavior; and as_of vintage pinning. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Though lengthy, the description is appropriately sized for the tool's complexity. It front-loads the core purpose in the first sentence and organizes information into clear thematic sections (scope, parameters, data provenance, additivity, exclusions). Every sentence delivers operational value without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers data source, history range, parameter semantics, defaults, additivity caveats, data quality handling, and explicit exclusions with alternatives. An output schema exists, so return-level details are not needed here; the description is complete for selecting and invoking the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is nearly empty (only a generic params object, 0% coverage), so the description fully carries the load. It enumerates valid respondent values, data_date/hour_number combination, range parameters, group_by axes, flat params structure, and provides a concrete JSON example. It also explains which params are filters vs output axes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource: 'Query verified U.S. hourly electricity demand (MW) as EIA's own published national and regional totals from the EIA Grid Monitor (region-data).' It clearly distinguishes from siblings by stating this closes power.demand's refusal of national/region totals and that BA demand is non-additive.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use: 'Use this for "how much load for the whole country, or a region" questions.' It also provides exclusions with alternatives, e.g., 'Does not determine balancing-authority-level demand (use power.demand for the BA series)' and lists other tools for capacity, generation, retail sales, etc.
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 DemandARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint and idempotentHint, and the description adds contextual behavior: default latest day when no calendar window, vintage/as_of semantics, empty_scope notes, and citation behavior. It discloses that demand is not additive and that BA aggregation produces scope notes plus omitted demand metrics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
While the description is lengthy, every sentence contributes critical information for correct use, and the core purpose is front-loaded. The structure flows from purpose to usage, defaults, caveats, and exclusions, making it dense but efficient for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a free-form params schema and output schema present, the description covers all essential behavior: default windows, vintage handling, non-additivity, exclusions, and alternative tools. It effectively serves as the sole documentation for the tool's usage and edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema provides only a generic 'params' object with no property descriptions (0% coverage). The description compensates by enumerating filterable fields (balancing_authority_code, region, data_date, hour_number, datetime_utc, is_imputed, data_date_from/to), include_records, as_of, and group_by behavior, plus defaults and scope notes.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Query verified U.S. hourly electricity demand (MW) by balancing authority from EIA-930.' It clearly distinguishes from siblings by stating it does not compute rollups and names alternative tools for capacity, generation, and retail sales.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use ('how much load' questions at the hourly balancing-authority grain) and provides exclusions with alternative tools ('use power.capacity', 'use power.generation', etc.). It also warns against non-additivity across balancing authorities, giving clear guidance for correct usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_power_fuel_cost_v1Query Power Fuel Receipts and CostsARead-onlyIdempotentInspect
Query verified raw EIA-923 fuel receipts and delivered fuel costs.
Returns one Page 5 Fuel Receipts and Costs row per published receipt: plant/month,
fuel, supplier, purchase type, source physical quantity, and delivered cost in
EIA's stated cents/MMBtu. Filter by plant, month/range, exact source strings, state,
fuel, cost status, or source-reported balancing authority code;
{"state":"TX","balancing_authority_code":"ERCO"} returns an ERCOT slice in one
call. Quantity units remain fuel-specific (short tons, barrels, or Mcf).
EIA withholds costs for some plants. The raw . marker is preserved in
fuel_cost_raw, the numeric cost is null, and fuel_cost_status explicitly reports
withheld for unregulated receipts. Missing is never zero or imputed. This tool
does not derive heat rates, efficiency, marginal cost, generation cost, or $/MWh;
combine the cited raw atoms outside exascale.build if analysis requires those
judgments. Every quantity or cost can be verified against its exact workbook cell.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description reveals important behavioral details beyond the readOnlyHint annotation: EIA withholds costs for some plants, the raw '.' marker is preserved in fuel_cost_raw, numeric cost is null, and fuel_cost_status reports 'withheld'. It explicitly states missing values are never zero or imputed, and that every quantity can be verified against its workbook cell.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense yet well-structured: it opens with a clear purpose, then details filtering and data handling, closes with limitations. Every sentence adds value without redundancy. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 covers purpose, filtering options, data nuances, limitations, and verification. It leaves no significant gaps for an agent to misinterpret the tool's behavior or output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description compensates thoroughly by listing all major filterable fields (plant, month/range, exact source strings, state, fuel, cost status, balancing authority code) and providing a working example. This gives the agent full parameter understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries verified raw EIA-923 fuel receipts and costs, specifying it returns Page 5 Fuel Receipts and Costs rows with detailed fields. The verb 'Query' combined with the resource 'power_fuel_cost' and the contrast with sibling 'describe_power_fuel_cost_v1' make the purpose precise and distinguishable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states what the tool does not do (derive heat rates, efficiency, marginal cost, etc.) and advises combining raw atoms elsewhere for such analysis. It also provides a concrete filter example `{"state":"TX","balancing_authority_code":"ERCO"}`, giving clear guidance on usage context and alternatives.
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 GenerationARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, but the description adds valuable behavioral context: vintage handling, as_of semantics, empty_scope notes, BA data availability from 2018 onward, and citation details. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but front-loaded with the core purpose and progressively adds essential detail. Some text could be tightened (e.g., repeating 'as_of' mechanics), but every sentence serves a functional purpose given the complex domain and opaque schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite the complex data domain and minimal schema, the description covers query scope, filtering dimensions, aggregation semantics, historical behavior, BA limitation, output format (JSON with citations), and exclusions. It is fully self-sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is opaque (only a generic params object with 0% property coverage), so the description carries the full burden. It explains the meaning and proper use of key parameters (fuel_group, energy_source_code, atom, data_month, as_of, balancing_authority_code) and warns about subtle aggregation pitfalls (coal split across codes, never sum across atoms), fully compensating for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence clearly states the tool queries verified U.S. monthly net electricity generation (MWh) from EIA-923, with a specific verb and resource. It further distinguishes itself from siblings by listing non-goals (capacity, demand, prices, etc.), making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use the tool ('Use this for "how much was generated" questions...') and gives concrete selection guidance for fuel_group vs energy_source_code, atom selection, as_of pinning, and BA limitations. It also names alternatives (e.g., 'use power.capacity') for non-generation topics, satisfying the when/when-not criterion.
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only/idempotent, but description adds crucial behavioral context: net_mw_to_grid is REQUESTED capacity, not built; withdrawn-dominated; no built-MW column exists; never relabel as built. Also discloses citation behavior (source, as_of, source_row) and that no data-center type is inferred. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence adds necessary value for a complex tool with a generic schema. It is front-loaded with purpose, then details fields, warnings, and alternatives, with no redundancy. The structure is logical and scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and sparse schema, the description is complete: it covers return structure, grouping/filtering, citation verification, capacity semantics, ISO scope, and exclusions. Even with an output schema present, it adds valuable caveats (requested vs built) that are not inferable from schemas.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is a generic free-form object with 0% coverage, so the description carries the full burden. It exhaustively lists filterable fields, grouping options, the flat-params requirement, and provides concrete examples. This fully compensates 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Query') and resource ('CAISO generator interconnection queue'), and explicitly names the ISO and geographic scope. It distinguishes from sibling tools by naming alternative ISO queues (MISO, PJM, NYISO, etc.) and the capacity tool (query_power_capacity_v1).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides extensive when-to-use guidance: CAISO-only, not for cross-ISO comparison, use query_power_capacity_v1 for built capacity, and enumerates sibling tools for other ISOs. Also explains scope by application_status (ACTIVE, COMPLETED, WITHDRAWN) and notes exclusions (e.g., current-cluster intake file, data-center type).
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already declare readOnlyHint, destructiveHint, and idempotentHint, the description adds crucial non-obvious behaviors: capacity_mw is requested (not installed), monthly snapshots with as_of floor at 2018-12, application_status derived from sheet membership, and that inactive/cancelled lists are not exhaustive. It also explains that earlier as_of before the floor is refused, which is beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but it is organized into clear thematic paragraphs (returns, parameters, history, capacity caveat, status derivation, alternatives) and starts with the core purpose. While some redundancy exists (e.g., repeated emphasis on requested capacity and monthly publication), the length is justified by the tool's complexity and the need to prevent misuse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all essential operational aspects: return format, citations, group/filter parameters, time-travel semantics, error conditions (floor refusal), and proper interpretation of queue MWs. With an output schema present, it need not enumerate every return field, but it does provide enough domain context to correctly invoke and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only exposes `params` as an untyped object with zero documentation. The description compensates thoroughly by documenting accepted top-level keys (application_status, fuel, technology, group_by, order_by, top_n, as_of, include_records, etc.) and providing concrete JSON examples for active solar and grouped fuel capacity. This fully bridges the schema's 0% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with 'Query the ERCOT generator interconnection queue' and specifically identifies the ERCOT GIS Report (EMIL PG7-200-ER), clearly distinguishing it from sibling ISO queue tools. It uses a precise verb and resource, with no ambiguity about what data is returned.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly names alternatives for each ISO (e.g., 'For MISO use query_power_interconnection_queue_v1; for PJM ...'), and directs users to query_power_capacity_v1 for built/operating capacity. It also states what the tool does NOT serve (large-load queue, data-center inference), providing clear 'when-to-use' guidance.
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)ARead-onlyIdempotentInspect
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_status … ia_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.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations (read-only, idempotent, non-destructive), the description discloses that requested MW is not built capacity ('NEVER read a queue-MW total as installed or operating capacity'), that net_mw is a real value (not missing) for CNR-only requests, and that records include citation fields. It also distinguishes application_status from project_status, adding important interpretative context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but each paragraph has a clear function: data scope, value semantics/caveats, and regional alternatives. It is front-loaded with the core purpose and uses structured enumeration. Some redundancy exists but overall it is efficiently organized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with many undocumented parameters, the description covers filtering, grouping, value codes, geography, and caveats, and points to sibling tools for other ISOs. It also explains return citation behavior and the relationship to output schema, making it complete for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite zero schema parameter documentation, the description enumerates all filterable fields (application_status, request_type, fuel_type, zone, etc.), explains allowed values (e.g., 'A'=Active, 'C'=Commercial, 'W'=Withdrawn), and gives concrete parameter examples with flat top-level keys. It fully compensates 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Query') and resource ('ISO-NE generator interconnection queue — ISO New England's public IRTT public queue report'), and immediately distinguishes it from sibling ISO-specific tools. It clearly states the geographic region and report type, making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is provided: 'For built/operating capacity use query_power_capacity_v1' and a full list of ISO-specific alternatives ('For the MISO interconnection queue use query_power_interconnection_queue_v1; for PJM use...'). It also notes the tool never infers data-center/load requests, ruling out misinterpretation.
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)ARead-onlyIdempotentInspect
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 demand), served as-reported — and since its 2026-07 edition tags each load request with its own End-Use class (end_use, e.g. DAT / DAT-AI / DAT-CM, served verbatim).
Returns cited, project-level records with NYISO's full published structure across every lifecycle tab (nine tabs through 2026-06; seven since NYISO's 2026-07 restructure): 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 with NYISO's own end_use class and sis_bundle study-batch code (both 2026-07 onward, null before), the as-reported study-phase code (study_status_code — NYISO's numeric key, labeled S through 2026-06 and Project Status # / NYISO Status since), 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, studies_available, or end_use; 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 interconnection requests; {"end_use": "DAT-AI", "application_status": "ACTIVE"} for the load requests NYISO itself codes DAT-AI; {"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 — the lifecycle tab's reading, overridden to the withdrawn form when a row carries NYISO's own status code 0, per the workbook's printed '0=Withdrawn' key) 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: end_use is NYISO's OWN classification (NYISO publishes no key for the codes), and this tool does NOT infer an end use NYISO did not print — interpretation beyond the code is the analyst's, from cited rows.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes far beyond annotations by disclosing critical behavioral traits: requested vs built capacity, withdrawn-dominated queue, project-row grain, 'as-reported' data with no inference, and the 'never summed across ISOs' caveat. This context is essential for correct interpretation and is absent from the minimal annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is excessively verbose and repetitive. For instance, 'requested not built' appears twice, 'NYISO only' is stated multiple times, and the full list of sibling tools is redundantly enumerated. While comprehensive, it would benefit from tighter structuring and removal of repeated caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is exhaustively complete for a tool of this complexity: it covers all key fields, tab structure, parameter semantics, grain, exclusions, and even how to verify results via get_source_evidence_v1. Given the minimal schema and rich domain, the description leaves no crucial gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is nearly empty (only a freeform 'params' object with 0% description coverage). The description fully compensates by enumerating numerous valid keys (application_status, sheet_name, end_use, ir_date_from/to, group_by, include_records, etc.) and providing usage examples with meanings, such as 'sp_mw = SP, the max summer output.'
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a clear verb+resource: 'Query the NYISO generator + load interconnection queue.' It explicitly distinguishes from siblings by naming the ISO and listing alternative tools for other ISOs (MISO, PJM, CAISO, etc.).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance and alternatives: 'For built/operating capacity use query_power_capacity_v1' and names each ISO-specific queue tool. Also gives concrete example parameter combinations (e.g., {"application_status": "ACTIVE", "type_fuel": "S"}).
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark readOnly/idempotent; the description goes further to explain return format (cited records, source_row), the meaning of requested_* as non-built values, and that no data-center type is inferred. It adds significant behavioral 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but information-dense, with clear structure and front-loaded purpose. Minor repetition of the 'never combine' warning slightly pads length, but the level of detail is appropriate for a complex tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the minimal schema and complex domain, the description covers return values, source verification, aggregation, filtering, grouping, and caveats. It is fully sufficient for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has only a generic 'params' object with no descriptions; the description compensates by enumerating all filterable fields, grouping options, and providing concrete examples. This fully compensates for the schema's lack of parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies a distinct resource: PJM's cluster/cycle service-request grid, distinguishing it from the full New Services queue and other ISO queues. It clearly states the tool's action, scope, and relationship to sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly names when to use this tool vs alternatives: states it is a separate publication from query_power_interconnection_queue_pjm_v1, warns against summing across ISOs, and directs to query_power_capacity_v1 for built capacity. Also provides examples of valid queries.
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnly, non-destructive, idempotent, and closed-world. The description adds substantial context beyond annotations: the distinction between requested and built capacity ('NEVER read a requested-MW total as installed or operating capacity'), the withdrawn-dominated nature of the full export, the presence of cited records with `source` and `as_of`, and the explicit non-inference of data-center load type. This enriches behavioral understanding without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is exceptionally thorough but quite long. It is well-organized with a clear purpose statement, detailed field explanations, usage warnings, and sibling distinctions. However, some information could be condensed or presented in bullet points without losing value, and the repeated caution about requested capacity appears multiple times. Given the tool's complexity, this is still well-structured and front-loaded, but not maximally concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's high complexity and the minimal schema/annotations, the description is remarkably complete. It explains what records return (cited project-level data with full field list), how to group/filter, what caveats apply (requested vs built, withdrawn-dominated), and how to verify via `get_source_evidence_v1`. It also clearly delineates what is not included (data-center loads) and directs to alternative tools. The output schema exists, so return-value details are not duplicated, but the description covers all necessary usage context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is nearly empty (a single generic `params` object with no properties), so the description carries the entire burden. It explains that parameters are flat top-level keys, enumerates the filterable fields (state, county_fips, status, project_type, capacity_or_energy, fuel, project_ac_dc, transmission_owner, study statuses, submitted_date range, etc.), and provides concrete examples like `{"state": "VA", "project_type": "Generation Interconnection", "status": "Active"}`. This fully compensates for the zero schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Query the PJM New Services (interconnection) queue'. It clearly distinguishes itself from sibling queue tools by explicitly naming PJM and referencing the other regional variants (MISO, CAISO, NYISO, etc.), leaving no ambiguity about scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance on when to use this tool vs alternatives. It states 'For built/operating capacity use query_power_capacity_v1' and lists each regional queue tool for other ISOs. It also warns 'PJM only — never summed, deduped, or compared across ISOs', which directly specifies exclusions and conditions.
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)ARead-onlyIdempotentInspect
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 NORTH … 05 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.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite annotations already declaring read-only/idempotent behavior, the description adds crucial context: capacity_mw is requested not built, ~66% of rows are WITHDRAWN, the data is current-only with no point-in-time history, and SPP keeps no per-vintage archive. This significantly enriches the safety and data-quality understanding 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense and front-loaded with the core purpose, and every paragraph addresses a distinct concern (records returned, capacity semantics, status vocabulary, archival limits, cross-ISO guidance). However, there is some redundancy in warnings ('NEVER read...' repeated, and 'that equivalence/interpretation is the analyst's' used twice), so a small amount of trimming could make it tighter.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (1 free-form parameter, many siblings, output schema present), the description is exceptionally complete. It explains return structure (cited project-level records, aggregates, source/as_of/source_row), the distinction from other ISOs, the difference between requested and built capacity, and the lack of historical depth. The output schema note is satisfied, and the description goes beyond it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% since the only property is a free-form object. The description compensates by documenting key parameters (capacity_mw, generation_type, native_status, current_cluster, etc.) and gives concrete examples ('native_status': 'DISIS STAGE', 'generation_type': 'Solar') plus formatting guidance ('flat — not nested'). This fully makes up for the absent schema detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb ('Query') and resource ('SPP generator interconnection queue'), then explains exactly what SPP is and what the queue represents. It names the specific ISO and distinguishes from siblings by explicitly listing the other queue tools for MISO, PJM, CAISO, NYISO, ISO-NE, and ERCOT.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit when-to-use guidance: 'Always scope by native_status', warns against summing across ISOs, and directly names alternatives for each other ISO. It also points to query_power_capacity_v1 for built/operating capacity, making the usage context crystal clear.
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)ARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, destructiveHint, idempotentHint), the description discloses critical behavioral traits: queued MW are REQUESTED not built, the export is withdrawn-dominated, and the tool does not infer data-center/load types. It also details the response structure (citations, source, as_of, source_row) and the need to verify with get_source_evidence_v1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Though long, every sentence adds necessary context for a complex data tool. It is front-loaded with the core definition, then covers parameters, examples, caveats, and alternatives in a logical order. No redundant or filler content — each claim is actionable for an agent.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (many filter dimensions, caveats about data meaning, cross-ISO pitfalls), the description is remarkably complete. It covers what the tool returns, how to filter/group, what the data does NOT mean, and which sibling tools to use instead. The presence of an output schema is acknowledged and the description still adds value by describing record-level vs aggregate modes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is a generic object with 0% coverage, so the description carries the full burden. It lists all filterable fields (state, county_fips, application_status, study_phase, post_gia_status, fuel_type, facility_type, service_type, study_group, study_cycle, is_hybrid), date range parameters, group_by, include_records, and provides a concrete example. This fully compensates for the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Query the MISO generator interconnection queue — the public waiting line of projects that have REQUESTED to connect to the MISO grid.' It clearly defines the tool's scope (MISO, 15-state footprint) and differentiates it from sibling ISO queue tools by explicitly naming other ISO-specific alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit when-to-use guidance, including 'For built/operating capacity use query_power_capacity_v1' and 'MISO only — never summed, deduped, or compared across ISOs into a national total.' It also names exact alternative tools for PJM, CAISO, NYISO, ISO-NE, ERCOT, and SPP, giving the agent clear decision rules.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_power_plant_costs_v1Query FERC Form 1 Plant CostsARead-onlyIdempotentInspect
Query accepted native-XBRL FERC Form 1 large-steam plant facts.
Returns one separately cited XBRL fact per respondent, report year, raw plant name, and source concept: installed capacity, net generation, plant-cost balance items, fuel expense, and individual operation and maintenance lines. Values and units are as filed; nominal dollars are not adjusted, allocated, divided by generation, or combined into a derived O&M total. Plant names remain raw strings with no EIA ID matching. Every value verifies against its exact archive member, XBRL fact ID, context, concept, and SHA-256.
Coverage is the Form 1 filing population, not the full fleet. ERCOT-only merchant
entities largely do not file, so ERCOT coverage is partial and plant absence means
not present in served filings—not zero. ercot_relevance=true is a one-call filter
based only on the respondent's raw states-served disclosure mentioning Texas; it is
not a plant-location claim. v0 covers accepted native XBRL (report year 2021 onward)
and the large-steam schedule including nuclear; hydro, pumped storage, migrated
historical XBRL, and Visual FoxPro-era filings are explicitly outside v0.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent, read-only, non-destructive behavior. The description adds substantial behavioral context: format of returned facts, no adjustments or EIA matching, verification details, and coverage nuances. This goes 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a dense single paragraph. While it packs much useful information, it lacks structure (e.g., bullet points) and could be more concise. Some sentences are long and complex.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers data scope, limitations, and behavioral details well, but fails to describe the input parameter schema or provide examples. Given the output schema exists, return values are likely covered, but the missing parameter guidance is a significant gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has a single 'params' object with no defined properties (0% schema coverage). The description does not explain how to construct or use the 'params' argument, leaving a critical gap for the AI agent.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it queries accepted native-XBRL FERC Form 1 large-steam plant facts, listing specific data types. It distinguishes itself from siblings like describe_power_plant_costs_v1 by focusing on raw data retrieval rather than description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states what it returns and does not return, including coverage limitations, partial ERCOT coverage, and exclusions (hydro, migrated historical XBRL, etc.). It provides clear guidance on when to use and when not to use, and implies alternatives.
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)ARead-onlyIdempotentInspect
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); served delivery coverage begins 2014-05-02 from ERCOT's official Data Access Portal archive. Historical settlement-point names remain exactly as published, and names absent from the current pinned type list have a null type rather than being rewritten. 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.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (read-only, idempotent), the description discloses default date behavior (latest delivery day if no date), date coverage starting 2014-05-02, historical name handling (null type instead of rewriting), DST hour count (23/24/25), source citation fields, and absence of energy/congestion split. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but logically structured: overview, aggregation/units, market scope, and sibling differentiation. Every section conveys necessary nuance (DST, no sum, settlement point types, source citations). It is slightly verbose but earns its length given the domain complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description is exceptionally complete for an agent to select and invoke the tool: it covers all key parameters, unit semantics, return fields (with citations), default behavior, geographic scope, and appropriate alternatives. The output schema handles the return structure, and the description adds the contextual rules needed for correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is just a free-form params object, so the description carries full responsibility. It lists specific parameters (settlement_point, delivery_date, hour_ending, delivery_date_from/to, group_by, include_records), provides an example JSON, and explains how to pass them flat. This fully compensates for 0% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries ERCOT day-ahead settlement point prices ($/MWh), specifying the resource (ERCOT wholesale electricity) and the exact market (Day-Ahead Market). It distinguishes from siblings by explicitly contrasting with capacity and generation tools, and by stating this is day-ahead, not real-time.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides explicit when-not-to-use guidance: 'for installed/operating capacity use query_power_capacity_v1, for electricity generated use query_power_generation_v1'. It also warns against cross-ISO comparisons and summing prices, giving clear alternatives and exclusions.
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 SalesARead-onlyIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, and non-destructive behavior. The description goes far beyond by disclosing default total-block exclusion, sentinel row handling, service_type_mix summation rules, as_of resolution behavior, territory exclusions, and error floors. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and every sentence adds a distinct behavioral fact. However, it is an extremely dense single paragraph; breaking it into bullets or shorter sections would improve scannability without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity and near-empty input schema, the description is exceptionally complete: it covers filters, defaults, sentinel rows, service-type math, vintage semantics, as_of edge cases, and explicit exclusions. The agent has enough context to invoke the tool correctly without external documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description enumerates all filterable fields (data_year, state, sector, part, service_type, ownership, ba_code, data_type, eia_utility_id, utility_name) and explains nuanced parameters like as_of, include_records, and included_in_default_us_metrics. This fully compensates for the sparse schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Query verified U.S. annual retail electricity sales — billed MWh, revenue, and customer counts — by utility, state, and customer sector from EIA-861.' This clearly distinguishes the tool from descriptive siblings like describe_power_retail_sales_v1 and from demand-focused tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states 'Use this for "who sold how much power to whom" questions' and provides an extensive 'Does not determine' list pointing to alternatives (e.g., power.demand for hourly/peak load, EIA-861M for monthly fresh data). It also explains the as_of/data_year distinction to prevent misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_robotics_adoption_v1Query Robotics Adoption (share of plants using robots, workers exposed, robotics capex)ARead-onlyIdempotentInspect
Query the verified share of US manufacturing plants USING industrial robots — plus workers exposed and robotics capex — from the Census Industrial Robotic Equipment product (the first official federal robotics-adoption statistics).
Use this for "are factories actually adopting robots" questions — the INSTALLED-BASE reading the import data cannot see. Serves the percent of plants with robots and the percent of employees at plants with robots (both published as FRACTIONS of 1: 0.121 = 12.1%), Census's demeaned variants, and capital expenditures for robotic equipment ($1000) — by manufacturing industry (naics_code, 2/3-digit), by state, and by plant_size band. Filter by edition ("asm_2018_2021" = the ASM annual series; "ec_2022" = the 2022 Economic Census), table (the workbook sheet — exactly one of: "Percent of... NAICS", "Percent of... Geo", "Percent of... Geo demean", "Robot adopters vs not", "Robot adoption and plant size", "CapEx... NAICS", "CapEx... Geo", "CapEx and plant size"), data_year (2018-2022), naics_code, state, plant_size, or geo_area_name ("United States" for the national row). Group by any of edition, table, naics_code, naics_title, state, plant_size, data_year. Pass each parameter as a top-level key of params (flat — not nested under a filter, filters, or where key). Example: {"table": "Percent of... Geo", "data_year": 2022, "group_by": ["state"], "order_by": "avg_pct_plants_with_robots", "top_n": 10} for the most-automated states; {"table": "Percent of... NAICS", "edition": "asm_2018_2021", "naics_code": "336", "group_by": ["data_year"]} for transportation-equipment adoption over the ASM years. Returns JSON aggregates with citations and optional row-level records when include_records is true — every value cites its exact workbook cell-group, re-verifiable via get_source_evidence_v1.
THE ENGRAVED BOUNDARY: the two editions are NEVER spliced into one trend — the 2022 Economic Census reaches the small-plant universe the ASM sample does not (US plants-with-robots: 12.1% ASM-2021 vs 6.4% EC-2022 — a COVERAGE change, not a decline; every cross-edition scope carries an edition_scope note). Percents are INTENSIVE shares: avg/min/max over a scope, never summed. Capex sums UNDERSHOOT below the published totals wherever suppression bites (the published "United States" / "31-33" rows are the totals). Suppressed cells (D/S/A, decoded by the file's own footnotes) are null values with their verbatim letter — never zero; (s)-flagged estimates (standard error > 40%) carry their flag. Manufacturing plants only; adoption SHARES and capex, never robot counts (no official count of installed robots exists — the import unit-count series is query_robotics_trade_v1); an EXPERIMENTAL Census product (its own label); no edition after 2022 exists.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Behavioral traits are richly disclosed beyond the annotations: percents are 'INTENSIVE shares: avg/min/max over a scope, never summed,' suppressed cells are 'null values with their verbatim letter — never zero,' and cross-edition comparisons carry an 'edition_scope note.' It also warns that 'Capex sums UNDERSHOOT below the published totals wherever suppression bites' and notes the product is experimental. No contradiction with readOnlyHint/idempotentHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is lengthy but well-structured, with a clear opening sentence, parameter examples, and a CAPITALIZED 'ENGRAVED BOUNDARY' section for caveats. It is slightly redundant in contrasting with the import data (mentioned twice), but overall every sentence adds substantive value. The front-loading of the purpose makes it easy to skim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 fact that the input schema is just a free-form object, the description is exceptionally complete. It covers source data, metrics, filtering/grouping dimensions, edition differences, suppression handling, and return format ('JSON aggregates with citations'). It even points to get_source_evidence_v1 for re-verification, providing full contextual closure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides no property definitions or descriptions (coverage 0%), so the description carries the full burden. It thoroughly explains all filter parameters (edition, table, data_year, naics_code, state, plant_size, geo_area_name), valid values for several (e.g., edition values 'asm_2018_2021' and 'ec_2022'), and the exact table names. It also clarifies that parameters must be passed as flat top-level keys and provides two concrete examples showing usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Query the verified share of US manufacturing plants USING industrial robots — plus workers exposed and robotics capex — from the Census Industrial Robotic Equipment product.' It names the specific resource and metrics, and distinguishes itself from sibling query_robotics_trade_v1 by contrasting 'INSTALLED-BASE reading the import data cannot see' and later referencing the import unit-count series.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use the tool: 'Use this for "are factories actually adopting robots" questions.' It also points to the alternative tool for a different use case: 'the import unit-count series is query_robotics_trade_v1.' Additionally, it provides critical usage boundaries, such as 'the two editions are NEVER spliced into one trend' and 'Manufacturing plants only,' giving clear guidance on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_robotics_trade_v1Query Robotics Trade (industrial-robot imports, value + robot counts)ARead-onlyIdempotentInspect
Query verified U.S. monthly IMPORTS of INDUSTRIAL ROBOTS — customs value (USD) AND unit counts (number of robots) — by country of origin, from the U.S. Census Bureau's International Trade data.
Use this for "how many robots is the US importing, from whom, and what are they worth" questions — the only high-frequency official U.S. robotics series. Covers the nomenclature's two robot-specific HS-10 codes, served as the commodity dimension: "8479500000" (INDUSTRIAL ROBOTS, NESOI — multipurpose: welding/assembly arms, AMRs) and "8428700000" (INDUSTRIAL ROBOTS FOR LIFTING, HANDLING, LOADING OR UNLOADING — created by HS 2022; no data before 2022-01, a structural absence, never zero). Filter by commodity, country (the verbatim Census name, e.g. "JAPAN", "CHINA", "KOREA, SOUTH"), cty_code (the Census country code), 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 commodity, 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: {"commodity": "8479500000", "country_level": "country", "group_by": ["country"], "order_by": "general_quantity_units", "top_n": 5} for the top robot-supplying countries by unit count; {"country_level": "total", "group_by": ["data_month", "commodity"]} for the national trend per code. 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 / consumption_value_usd (customs value) and general_quantity_units / consumption_quantity_units (Census's "NO" unit of measure = the number of robots). 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 — adding rows double-counts; a cross-row sum returns a country_aggregation note and nulls the metrics in ranking remainders; filter country_level=total for the U.S. national figure. The two commodity codes ARE disjoint — adding them is legitimate — but a combined time series changes composition at 2022-01 (a commodity_scope note flags it). This is the import FLOW, not the installed base or operational stock of robots in U.S. factories; no maker, model, or humanoid breakdown (customs-classified); country is the country of ORIGIN, not which U.S. state or factory receives the robots; imports only (not exports); customs value (not landed/CIF/duty); recent months are preliminary and revised in later Census releases.
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint, idempotentHint), the description discloses critical behavioral traits: the overlapping country groupings that cause double-counting and the 'country_aggregation note' that nulls metrics, the structural absence of data before 2022-01 for one HS code, the preliminary/revision nature of recent months, and the country-of-origin semantics. It also clarify that the two commodity codes are disjoint and summable, while cross-country sums are not. This is rich behavioral context that annotations alone cannot provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long but every sentence earns its place, and the essential information is front-loaded in the first sentence. It uses paragraphs for distinct topics (main purpose, usage examples, measures, caveats) which aids scanning. It is slightly verbose, but given zero schema coverage, the length is justified. A more structured list format could improve scannability, so a 4 is appropriate.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers data source, metrics (general_value_usd, consumption_value_usd, general_quantity_units, consumption_quantity_units), filters, grouping, aggregation warnings, structural caveats, and return behavior (JSON aggregates with citations and optional records). Since an output schema already exists, it needn't detail return fields. This is fully complete for a complex query tool with no schema-defined parameter details, and leaves minimal gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema description coverage at 0%, the description fully compensates by listing and explaining all parameters: commodity, country, cty_code, country_level, year, data_month, data_month_from/to, group_by, order_by, top_n, include_records. It provides value examples ('JAPAN', 'KOREA, SOUTH', '2026-04-01'), clarifies flat param structure ('not nested under a filter... key'), and gives two concrete example parameter objects. This exceeds the baseline of 3 and fully equips the agent to construct calls.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource statement: 'Query verified U.S. monthly IMPORTS of INDUSTRIAL ROBOTS — customs value (USD) AND unit counts (number of robots) — by country of origin, from the U.S. Census Bureau's International Trade data.' This clearly distinguishes the tool from siblings like query_robotics_adoption_v1 or describe_robotics_trade_v1 by focusing on import flows with explicit data source and metrics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states usage: 'Use this for "how many robots is the US importing, from whom, and what are they worth" questions' and provides detailed exclusions: 'This is the import FLOW, not the installed base or operational stock... imports only (not exports); customs value (not landed/CIF/duty).' While it doesn't name an alternative sibling for excluded cases, the context is clear and the 'only high-frequency official U.S. robotics series' framing implies uniqueness. Missing explicit alternative references prevents a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_space_satellite_filings_v1Query Space Satellite Filings (FCC satellite licensing docket)ARead-onlyIdempotentInspect
Query the verified FCC satellite licensing docket — every space-station (SAT) filing in the FCC's own daily IBFS database dump, back to the 1960s — by applicant, application type, status, and filing date.
Use this for "who is authorized to operate what in orbit, what has been filed, and where does each filing stand" questions — the satellite-buildout licensing pipeline. Each filing carries the FCC's public filing key (file_number, e.g. "SATLOA2025061800149"), the callsign (e.g. "S3069" = SpaceX Gen2), the application type and status in the FCC's OWN vocabulary — verbatim codes plus the FCC's own decode text from the same dump vintage (app_type_code "LOA" = Launch and Operating Authority, "STA" = Special Temporary Authority, "MOD" = Modification; status_code "A/C" = Action Complete, "ATPN" = Action Taken Public Notice — codebooks in describe) — the full lifecycle date family (filed / granted / expires / …), the FCC's plain-English description of the filing, and the applicant identity (applicant_name, the FCC's verbatim registrant, e.g. "Space Exploration Holdings, LLC"). Filter by applicant_name, app_type_code, status_code, callsign, file_number, state (the APPLICANT's address state), applicant_country, report_period (the filing date) via report_period_from/report_period_to, or date_grant/date_expire ranges. Group by any of applicant_name, app_type_code, status_code, state, applicant_country. Pass each parameter as a top-level key of params (flat — not nested under a filter, filters, or where key). Example: {"applicant_name": "Space Exploration Holdings, LLC", "group_by": ["app_type_code"]} for one operator's filing mix; {"report_period_from": "2020-01-01", "group_by": ["applicant_name"], "order_by": "source_record_count", "top_n": 10} for the most active filers of the 2020s. Returns JSON aggregates with citations and optional row-level records when include_records is true — every record cites its exact row in the FCC's dump, re-verifiable via get_source_evidence_v1.
THE ENGRAVED BOUNDARY: new-filing intake into IBFS structurally ENDED at the FCC's ICFS system cutover (~mid-2025), and ICFS publishes no bulk data — so filings SUBMITTED after the cutover are not in this docket, and counts near/after 2025 UNDERCOUNT new filing activity (say so when answering; every response carries an icfs_cutover note). Status and lifecycle updates on the filings that ARE here continue to flow daily. A filing is an authorization EVENT: never a satellite count (one NGSO grant can cover thousands of satellites), never an orbital catalog (satellites in orbit are not served here), never launch activity (FAA data, not served here). state/applicant_city are the APPLICANT's mailing address — satellites are not in states. Earth stations (SES) and non-satellite FCC dockets are out of scope. The one measure is source_record_count (filings in scope).
| Name | Required | Description | Default |
|---|---|---|---|
| params | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
Tool Definition Quality
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and idempotent, and the description adds significant behavioral detail: the ICFS cutover undercount caveat, the always-present icfs_cutover note, the flat-params requirement, and the JSON aggregate return with citations. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but every major section earns its place: the dense opening covers scope and data, and the engraved-boundary section prevents misuse. It is front-loaded with the core purpose and uses examples effectively, though a few codebook details could be trimmed without loss.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with a free-form params schema and no per-parameter documentation, the description is remarkably complete: it covers filtering, grouping, output behavior, citation re-verification, temporal boundaries, and the undercount caveat. Since an output schema exists, detailed return documentation is not needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero description coverage and only a generic free-form params object, so the description fully compensates. It enumerates the filterable fields (applicant_name, app_type_code, status_code, callsign, file_number, state, applicant_country, report_period_from/to, date_grant/expire), grouping fields, order_by, top_n, include_records, and provides concrete examples with code meanings.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Query the verified FCC satellite licensing docket' and precisely defines the resource and action. It distinguishes itself from sibling tools by framing the query as the satellite-buildout licensing pipeline and explicitly pointing to get_source_evidence_v1 for record re-verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit when-to-use guidance ('Use this for questions about who is authorized, what has been filed, and where filings stand') and extensive when-not boundaries: no orbital catalogs, no launch activity, no earth stations, and no post-ICFS intake. It also names describe_space_satellite_filings_v1 for codebooks and get_source_evidence_v1 for evidence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Claim this connector by publishing a /.well-known/glama.json file on your server's domain with the following structure:
{
"$schema": "https://glama.ai/mcp/schemas/connector.json",
"maintainers": [{ "email": "your-email@example.com" }]
}The email address must match the email associated with your Glama account. Once published, Glama will automatically detect and verify the file within a few minutes.
Control your server's listing on Glama, including description and metadata
Access analytics and receive server usage reports
Get monitoring and health status updates for your server
Feature your server to boost visibility and reach more users
For users:
Full audit trail – every tool call is logged with inputs and outputs for compliance and debugging
Granular tool control – enable or disable individual tools per connector to limit what your AI agents can do
Centralized credential management – store and rotate API keys and OAuth tokens in one place
Change alerts – get notified when a connector changes its schema, adds or removes tools, or updates tool definitions, so nothing breaks silently
For server owners:
Proven adoption – public usage metrics on your listing show real-world traction and build trust with prospective users
Tool-level analytics – see which tools are being used most, helping you prioritize development and documentation
Direct user feedback – users can report issues and suggest improvements through the listing, giving you a channel you would not have otherwise
The connector status is unhealthy when Glama is unable to successfully connect to the server. This can happen for several reasons:
The server is experiencing an outage
The URL of the server is wrong
Credentials required to access the server are missing or invalid
If you are the owner of this MCP connector and would like to make modifications to the listing, including providing test credentials for accessing the server, please contact support@glama.ai.
Discussions
No comments yet. Be the first to start the discussion!
Related MCP Servers
- AlicenseAqualityBmaintenanceNarrative & signal intelligence for AI agents: crypto/AI/macro convergence & divergence.21MIT
- AlicenseAqualityCmaintenanceRecession probability, capital rotation, macro cascade analysis, and real-time economic data for Claude, ChatGPT, Cursor, and any MCP client.233871MIT
- Alicense-qualityCmaintenanceAgent-ready economic, market & geo-health intelligence — 163 MCP tools, 155 driver-backed indices.MIT

Thesma MCP Serverofficial
AlicenseAqualityDmaintenanceGives AI assistants access to SEC filings, BLS employment, Census demographics, and SBA lending data via natural language queries.60MIT