Skip to main content
Glama
michaelkrasa

Alpha ESS MCP Server

by michaelkrasa

Alpha ESS MCP Server

A Model Context Protocol (MCP) server that provides access to Alpha ESS solar inverter and battery system data through the official Alpha ESS Open API.

Installation

uv sync

Related MCP server: Fronius MCP Server

Configuration

Create a .env file in the project root:

ALPHA_ESS_APP_ID=your_app_id_here
ALPHA_ESS_APP_SECRET=your_app_secret_here

To get your Alpha ESS API credentials:

  1. Visit https://open.alphaess.com/

  2. Create a developer account

  3. Add your inverter system using the Serial Number (SN) and CheckCode

  4. Obtain your AppID and AppSecret

Usage with Claude Desktop

Add to your Claude Desktop config file:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "alpha-ess": {
      "command": "uv",
      "args": [
        "run",
        "python",
        "/path/to/alpha-ess-mcp-server/main.py"
      ],
      "env": {
        "ALPHA_ESS_APP_ID": "your_app_id_here",
        "ALPHA_ESS_APP_SECRET": "your_app_secret_here"
      }
    }
  }
}

Available Tools

Authentication & System Management

  • authenticate_alphaess() - Validate API credentials

  • get_ess_list() - List all registered Alpha ESS systems

Data Retrieval

  • get_alpha_ess_data() - Get comprehensive energy statistics for all systems

  • get_last_power_data(serial?) - Get real-time power data snapshot

  • get_one_day_power_data(query_date, serial?) - Get detailed power data for a specific date

  • get_one_date_energy_data(query_date, serial?) - Get energy summary for a specific date

Battery Configuration

  • get_charge_config(serial?) - Get current battery charging configuration

  • get_discharge_config(serial?) - Get current battery discharge configuration

  • set_battery_charge(enabled, dp1_start, dp1_end, dp2_start, dp2_end, charge_cutoff_soc, serial?) - Configure battery charging schedule

  • set_battery_discharge(enabled, dp1_start, dp1_end, dp2_start, dp2_end, discharge_cutoff_soc, serial?) - Configure battery discharge schedule

Parameters

  • serial (optional) - System serial number. If not provided, automatically selects the first system if only one exists

  • query_date - Date in YYYY-MM-DD format

  • enabled - Boolean to enable/disable the configuration

  • dp1_start/dp1_end, dp2_start/dp2_end - Time periods in HH:MM format (minutes must be :00, :15, :30, :45)

  • charge_cutoff_soc/discharge_cutoff_soc - SOC percentage (0-100)

Testing

uv run python test_methods.py

License

MIT License

References

Available Tools

10 tools
authenticate_alphaessA
Authenticate with the Alpha ESS Open API to validate credentials.

Returns:
    dict: Authentication result with success status and message
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the core behavior (authentication and validation) and return type (dict with success status and message), which is helpful. However, it doesn't mention potential side effects (e.g., session creation), error conditions, or rate limits, leaving some behavioral aspects unclear.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and well-structured: one sentence for the purpose and one for the return value. Every sentence earns its place, with no wasted words. It's appropriately sized for a simple authentication tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (0 parameters, authentication-only), the description is reasonably complete. It explains what the tool does and what it returns. With an output schema present, it doesn't need to detail return values further. However, it could benefit from mentioning prerequisites (e.g., required credentials) or error handling for a more complete context.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100%. The description doesn't need to add parameter semantics beyond what the schema provides (none). A baseline of 4 is appropriate for zero-parameter tools, as there's no parameter documentation burden.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Authenticate with the Alpha ESS Open API to validate credentials.' It specifies the verb ('authenticate') and resource ('Alpha ESS Open API'), and distinguishes it from sibling tools which are all data retrieval or configuration tools. However, it doesn't explicitly differentiate from potential alternative authentication methods, keeping it at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

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

The description implies usage context (authentication for API access) but doesn't explicitly state when to use this tool versus alternatives. Given that all sibling tools are data/configuration operations, it's reasonable to infer this should be used first for credential validation, but this isn't explicitly stated. No misleading guidance is present.

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

get_alpha_ess_dataB
Get statistical energy data for all registered Alpha ESS systems.

Returns:
    dict: Energy data with success status and system information
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool returns energy data with success status and system information, which is helpful, but lacks details on authentication requirements, rate limits, error handling, or data freshness. For a tool with zero annotation coverage, this leaves significant gaps in understanding its operational behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded, with the main purpose stated clearly in the first sentence. The second sentence adds value by describing the return format. Both sentences earn their place, and there's no unnecessary repetition or fluff, making it efficient for an agent to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters, an output schema exists, and annotations are absent, the description is moderately complete. It explains what data is retrieved and the return structure, but it lacks context on authentication needs (implied by sibling 'authenticate_alphaess') and doesn't differentiate from similar tools. For a tool with no inputs and an output schema, this is adequate but could be more comprehensive.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100%, so the schema fully documents the absence of inputs. The description doesn't need to add parameter semantics, and it appropriately avoids discussing inputs. This meets the baseline for tools with no parameters, as there's nothing to compensate for.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get statistical energy data for all registered Alpha ESS systems.' It specifies the verb ('Get'), resource ('statistical energy data'), and scope ('all registered Alpha ESS systems'), making it easy to understand what the tool does. However, it doesn't explicitly distinguish this tool from siblings like 'get_ess_list' or 'get_last_power_data', which might also retrieve system-related data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 doesn't mention prerequisites (e.g., authentication via 'authenticate_alphaess'), exclusions, or comparisons to siblings like 'get_one_date_energy_data' or 'get_one_day_power_data'. Without such context, an agent might struggle to select the right tool for specific scenarios.

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

get_charge_configA
Get battery charging configuration for a specific Alpha ESS system.
Returns structured configuration with clear period definitions and status.
If no serial provided, auto-selects if only one system exists.

Args:
    serial: The serial number of the Alpha ESS system (optional)
    
Returns:
    dict: Enhanced response with structured charging configuration
ParametersJSON Schema
NameRequiredDescriptionDefault
serialNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the return format ('structured configuration with clear period definitions and status') and the auto-selection behavior for missing serials, which are useful. However, it lacks details on error handling, rate limits, or authentication requirements, leaving gaps for a mutation-free but context-sensitive tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by key behavioral details and parameter explanations. Every sentence adds value without redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (1 optional parameter) and the presence of an output schema (which handles return values), the description is largely complete. It covers purpose, usage guidelines, and parameter semantics adequately. However, it could benefit from mentioning authentication needs or error cases, slightly reducing completeness.

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

Parameters4/5

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

The description adds significant meaning beyond the input schema, which has 0% description coverage. It explains that 'serial' is optional and clarifies its purpose ('The serial number of the Alpha ESS system') and the auto-selection logic when omitted. This compensates well for the schema's lack of documentation, though it doesn't detail format constraints like serial length or patterns.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get battery charging configuration for a specific Alpha ESS system.' It specifies the verb ('Get') and resource ('battery charging configuration'), and distinguishes it from siblings like 'get_discharge_config' and 'set_battery_charge'. However, it doesn't explicitly differentiate from 'get_alpha_ess_data' or 'get_ess_list', which might also retrieve system data, so it's not a perfect 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description provides clear context for usage: 'If no serial provided, auto-selects if only one system exists.' This guides when to omit the parameter. However, it doesn't explicitly state when to use this tool versus alternatives like 'get_discharge_config' or other data retrieval tools, nor does it mention prerequisites such as authentication, so it's not a full 5.

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

get_discharge_configA
Get battery discharge configuration for a specific Alpha ESS system.
Returns structured configuration with clear period definitions and status.
If no serial provided, auto-selects if only one system exists.

Args:
    serial: The serial number of the Alpha ESS system (optional)
    
Returns:
    dict: Enhanced response with structured discharge configuration
ParametersJSON Schema
NameRequiredDescriptionDefault
serialNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses key behavioral traits: it's a read operation ('Get'), returns structured configuration, and has auto-selection logic for the serial parameter. However, it lacks details on permissions, rate limits, error handling, or what happens if multiple systems exist without a serial, leaving gaps in 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded: the first sentence states the core purpose, followed by key behavioral details and parameter/return info. Every sentence adds value, with no wasted words, making it efficient and easy to parse for an AI agent.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (1 optional parameter) and the presence of an output schema (which handles return values), the description is largely complete. It covers purpose, usage guidelines, and parameter semantics adequately. However, without annotations, it could benefit from more behavioral details like error cases or system prerequisites.

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

Parameters4/5

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

The description adds meaningful semantics beyond the input schema, which has 0% coverage. It explains that 'serial' is optional, specifies it's 'The serial number of the Alpha ESS system,' and describes the auto-selection behavior when omitted. This compensates well for the low schema coverage, though it doesn't detail format constraints like length or pattern.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get battery discharge configuration for a specific Alpha ESS system.' It specifies the verb ('Get') and resource ('battery discharge configuration'), distinguishing it from siblings like 'get_charge_config' or 'get_alpha_ess_data.' However, it doesn't explicitly differentiate from 'set_battery_discharge,' which is a write operation, though this is implied by the 'Get' verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description provides clear context for usage: 'If no serial provided, auto-selects if only one system exists.' This guides when to omit the parameter. It doesn't explicitly mention when not to use this tool or name alternatives among siblings, but the context implies it's for read-only configuration retrieval, not for setting or other data types.

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

get_ess_listB
Get list of registered Alpha ESS systems with auto-selection logic.
Returns enhanced system information with structured metadata.

Returns:
    dict: Enhanced response with system list and auto-selection recommendations
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'auto-selection logic' and 'enhanced system information', which adds some context about what the tool does beyond basic listing. However, it fails to disclose critical behavioral traits such as whether this requires authentication (unlike 'authenticate_alphaess'), rate limits, error handling, or what 'auto-selection' entails operationally. The description is too vague about the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately concise with three sentences that each add value: stating the action, detailing the return content, and specifying the return type. It is front-loaded with the core purpose. There is minimal waste, though the 'Returns:' label is slightly redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 0 parameters, an output schema exists, and no annotations are provided, the description is moderately complete. It explains the tool's purpose and return value, which the output schema will detail further. However, for a tool with 'auto-selection logic' and in a context with multiple sibling tools, more guidance on usage and behavior would improve completeness, especially since annotations are absent.

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

Parameters4/5

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

The tool has 0 parameters with 100% schema description coverage, so the schema fully documents the lack of inputs. The description adds no parameter information, which is appropriate here. The baseline for 0 parameters is 4, as no compensation is needed, and the description doesn't introduce confusion about parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb ('Get') and resource ('list of registered Alpha ESS systems'), making the purpose understandable. It distinguishes from siblings by mentioning 'auto-selection logic' and 'enhanced system information', which differentiates it from simpler data retrieval tools like 'get_alpha_ess_data'. However, it doesn't explicitly contrast with all siblings, preventing a perfect score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

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 like 'get_alpha_ess_data' or 'get_last_power_data'. It mentions 'auto-selection logic' but doesn't explain when this is beneficial or what scenarios warrant its use. No exclusions or prerequisites are stated, leaving the agent with minimal usage context.

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

get_last_power_dataA
Get the latest real-time power data for a specific Alpha ESS system.
Returns structured snapshot with clear field names and units.
If no serial provided, auto-selects if only one system exists.

Args:
    serial: The serial number of the Alpha ESS system (optional)
    
Returns:
    dict: Enhanced response with structured real-time power data
ParametersJSON Schema
NameRequiredDescriptionDefault
serialNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden. It discloses key behavioral traits: returns structured snapshot with clear field names/units, and auto-selects system if only one exists when serial is omitted. However, it doesn't mention rate limits, authentication requirements (implied by authenticate_alphaess sibling), or error handling for multiple systems without serial.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly structured and concise: purpose statement first, return format second, parameter behavior third. Every sentence earns its place with no wasted words. The Args/Returns sections are clear and appropriately brief.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has an output schema (so return values are documented elsewhere), no annotations, and simple parameters, the description is quite complete. It covers purpose, usage context, parameter semantics, and return format. The only minor gap is not explicitly mentioning authentication requirements, though this is somewhat implied by the sibling tools.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaningful context for the single parameter: explains that 'serial' is optional, identifies it as the system serial number, and describes the auto-selection behavior when omitted. This goes well beyond the bare schema, though it doesn't specify format constraints (e.g., length, pattern).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get the latest real-time power data') and resource ('for a specific Alpha ESS system'), distinguishing it from siblings like get_one_day_power_data (which likely retrieves historical data) and get_alpha_ess_data (which is more generic). The verb+resource combination is precise and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description provides clear context for when to use this tool: for real-time power data, with optional serial parameter that auto-selects if only one system exists. However, it doesn't explicitly state when NOT to use it (e.g., vs. get_one_day_power_data for historical data) or name specific alternatives, keeping it from a perfect score.

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

get_one_date_energy_dataA
Get energy data for a specific date and Alpha ESS system.
If no serial provided, auto-selects if only one system exists.

Args:
    query_date: Date in YYYY-MM-DD format
    serial: The serial number of the Alpha ESS system (optional)
    
Returns:
    dict: Energy data for the specified date with success status
ParametersJSON Schema
NameRequiredDescriptionDefault
query_dateYes
serialNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It discloses the auto-selection behavior for the serial parameter, which is useful context beyond basic functionality. However, it lacks details on authentication needs, error handling, rate limits, or data format specifics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with zero waste: purpose statement, parameter behavior, and return value. Each sentence adds essential information, and the structure is front-loaded with the core functionality.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 2 parameters, no annotations, and an output schema exists (so return values are documented elsewhere), the description is reasonably complete. It covers purpose, parameter semantics, and basic behavior, but could improve by mentioning authentication prerequisites or error cases.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning by specifying the date format (YYYY-MM-DD) and explaining the optional serial's auto-selection logic. This covers both parameters adequately, though it doesn't detail constraints like valid date ranges.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'energy data', specifies the scope 'for a specific date and Alpha ESS system', and distinguishes from siblings like 'get_alpha_ess_data' (general) and 'get_one_day_power_data' (power vs energy).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

It provides clear context about auto-selection when no serial is provided and only one system exists, which helps determine when to omit the optional parameter. However, it doesn't explicitly state when to use this tool versus alternatives like 'get_alpha_ess_data' or 'get_one_day_power_data'.

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

get_one_day_power_dataA
Get one day's power data for a specific Alpha ESS system.
Returns structured timeseries data with hourly intervals and summary statistics.
If no serial provided, auto-selects if only one system exists.

Args:
    query_date: Date in YYYY-MM-DD format
    serial: The serial number of the Alpha ESS system (optional)
    
Returns:
    dict: Enhanced response with structured timeseries data and analytics
ParametersJSON Schema
NameRequiredDescriptionDefault
query_dateYes
serialNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries full burden and does well by disclosing key behavioral traits: the auto-select behavior when only one system exists, the structured timeseries format with hourly intervals, and inclusion of summary statistics. It doesn't mention rate limits, authentication requirements, or error conditions, but provides substantial operational context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly structured and concise: purpose statement first, output format second, behavioral note third, then parameter documentation. Every sentence earns its place with zero waste. The Args/Returns sections are clearly delineated but not redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (2 parameters, no annotations, but has output schema), the description is complete enough. It explains what the tool does, when to use it, parameter semantics, and output characteristics. The output schema exists, so the description doesn't need to detail return values beyond the high-level 'Enhanced response with structured timeseries data and analytics' note.

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

Parameters4/5

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

The schema description coverage is 0%, so the description must compensate. It successfully adds meaning for both parameters: specifying the date format (YYYY-MM-DD) for query_date and explaining that serial is optional with auto-selection behavior when omitted. This provides crucial semantic information beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get one day's power data'), target resource ('Alpha ESS system'), and output format ('structured timeseries data with hourly intervals and summary statistics'). It distinguishes from siblings like 'get_last_power_data' by specifying daily granularity and from 'get_one_date_energy_data' by focusing on power rather than energy data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description provides clear context for when to use this tool: for retrieving power data for a specific date and system. It mentions the auto-select behavior when no serial is provided, which is helpful guidance. However, it doesn't explicitly state when NOT to use it or name alternatives among siblings like 'get_last_power_data' for recent data.

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

set_battery_chargeA
Set battery charging configuration for a specific Alpha ESS system.
If no serial provided, auto-selects if only one system exists.

Args:
    enabled: True to enable charging from grid, False to disable
    dp1_start: Start time for charging period 1 (HH:MM format, minutes must be :00, :15, :30, :45)
    dp1_end: End time for charging period 1 (HH:MM format, minutes must be :00, :15, :30, :45)
    dp2_start: Start time for charging period 2 (HH:MM format, minutes must be :00, :15, :30, :45)
    dp2_end: End time for charging period 2 (HH:MM format, minutes must be :00, :15, :30, :45)
    charge_cutoff_soc: Percentage to stop charging from grid at (0-100)
    serial: The serial number of the Alpha ESS system (optional)
    
Returns:
    dict: Result of charge configuration update with success status
ParametersJSON Schema
NameRequiredDescriptionDefault
enabledYes
dp1_startYes
dp1_endYes
dp2_startYes
dp2_endYes
charge_cutoff_socYes
serialNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the configuration update behavior and mentions the auto-selection logic for serial numbers, which is useful context. However, it doesn't address important behavioral aspects like whether this requires authentication, what permissions are needed, whether changes are reversible, or any rate limits or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement followed by organized parameter documentation. Every sentence earns its place, though the formatting with 'Args:' and 'Returns:' sections could be slightly more concise. The information is front-loaded with the core purpose stated first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a 7-parameter configuration tool with no annotations, the description does well by explaining all parameters and mentioning the return type. However, for a mutation tool that changes system behavior, it should ideally mention authentication requirements or permission prerequisites. The existence of an output schema reduces the need to fully document return values.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by providing detailed semantic information for all 7 parameters. It explains what each parameter means, provides format constraints (HH:MM with specific minute values), value ranges (0-100 for charge_cutoff_soc), and clarifies which parameters are optional (serial). This adds significant value beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Set' and resource 'battery charging configuration for a specific Alpha ESS system', making the purpose specific and actionable. It distinguishes from sibling tools like 'set_battery_discharge' by focusing on charging rather than discharging.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description provides clear context for when to use this tool: to configure battery charging settings for an Alpha ESS system. It includes the helpful detail about auto-selecting the system if only one exists when no serial is provided. However, it doesn't explicitly mention when NOT to use it or alternatives like 'set_battery_discharge' for discharge configuration.

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

set_battery_dischargeA
Set battery discharge configuration for a specific Alpha ESS system.
If no serial provided, auto-selects if only one system exists.

Args:
    enabled: True to enable battery discharge, False to disable
    dp1_start: Start time for discharge period 1 (HH:MM format, minutes must be :00, :15, :30, :45)
    dp1_end: End time for discharge period 1 (HH:MM format, minutes must be :00, :15, :30, :45)
    dp2_start: Start time for discharge period 2 (HH:MM format, minutes must be :00, :15, :30, :45)
    dp2_end: End time for discharge period 2 (HH:MM format, minutes must be :00, :15, :30, :45)
    discharge_cutoff_soc: Percentage to stop discharging battery at (0-100)
    serial: The serial number of the Alpha ESS system (optional)
    
Returns:
    dict: Result of discharge configuration update with success status
ParametersJSON Schema
NameRequiredDescriptionDefault
enabledYes
dp1_startYes
dp1_endYes
dp2_startYes
dp2_endYes
discharge_cutoff_socYes
serialNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the mutation action ('Set'), the auto-selection fallback behavior, and the return format ('dict: Result of discharge configuration update'). However, it lacks details about permissions needed, whether changes are reversible, rate limits, or error conditions that would help an agent use it safely.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement followed by organized parameter explanations and return value documentation. Every sentence adds value, though the parameter explanations could be slightly more concise by grouping format requirements rather than repeating them for each time parameter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a 7-parameter mutation tool with no annotations, the description provides substantial context: purpose, parameter semantics, return format, and system selection logic. The existence of an output schema reduces the need to fully document return values. However, it could better address behavioral aspects like error handling or prerequisites.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by providing detailed semantics for all 7 parameters. It explains what each parameter controls, format requirements (HH:MM with specific minute increments), value ranges (0-100 for discharge_cutoff_soc), and the optional nature of the serial parameter with its auto-selection behavior.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Set battery discharge configuration') and resource ('for a specific Alpha ESS system'), distinguishing it from sibling tools like 'get_discharge_config' (read-only) and 'set_battery_charge' (different configuration type). It uses precise terminology that avoids tautology.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

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

The description provides clear context for when to use this tool (configuring battery discharge) and includes implicit guidance about the optional serial parameter (auto-selects if only one system exists). However, it doesn't explicitly state when NOT to use it or name alternatives like 'get_discharge_config' for checking current settings.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 10 tool updatesv1.0.0
    • First observedauthenticate_alphaess
    • First observedget_alpha_ess_data
    • First observedget_charge_config
    • First observedget_discharge_config
    • First observedget_ess_list
    • First observedget_last_power_data
    • First observedget_one_date_energy_data
    • First observedget_one_day_power_data
    • First observedset_battery_charge
    • First observedset_battery_discharge

TDQS

A4/5.0
Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. Authentication, data retrieval (statistical, real-time, daily), configuration management (charge/discharge), and system listing are all well-separated. The descriptions clearly differentiate between energy data, power data, and configuration operations.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with clear, descriptive names. The naming convention is uniform throughout: authenticate_alphaess, get_alpha_ess_data, get_charge_config, get_discharge_config, get_ess_list, get_last_power_data, get_one_date_energy_data, get_one_day_power_data, set_battery_charge, set_battery_discharge.

Tool Count5/5

With 10 tools, this is well-scoped for an energy management system. Each tool earns its place by covering essential operations: authentication, system listing, data retrieval (statistical, real-time, daily), and configuration management (charge/discharge). The count aligns perfectly with the domain's needs.

Completeness5/5

The tool surface provides complete CRUD/lifecycle coverage for Alpha ESS energy systems. It includes authentication, system discovery, comprehensive data retrieval (statistical, real-time, daily), and full configuration management for both charging and discharging. There are no obvious gaps that would hinder agent workflows.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    Not graded
    maintenance
    Enables monitoring and control of EcoFlow Power Stations and devices through the Model Context Protocol. Users can manage battery levels, toggle AC/DC outputs, and configure charging settings across the DELTA and RIVER series via the EcoFlow API.
    9
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables access to Fronius solar inverter data via the MCP protocol, allowing real-time monitoring of energy production, consumption, and battery storage through natural language.
    14
    23
    4
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables LLM agents to query live data from Anker Solix solar systems (Solarbank, expansion batteries, Smartmeter) via natural language, such as current solar production or battery state of charge.
    12
    1
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/michaelkrasa/alpha-ess-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server