AetherEdge
The AetherEdge server provides a read-only API for managing and monitoring an IoT edge gateway, allowing you to inspect, monitor, and diagnose the runtime across the following areas:
Channels & Device I/O: List communication channels, check channel status, view point-to-instance mappings, list points (filtered by type: Telemetry/Status/Command/Analog), view a single point's mapping, and find unmapped points.
Alarms: List active alarms (filtered by channel, level, or keyword), get a specific active alert, list historical alarm events (filtered by rule, level, keyword, or event type), list/get alarm rules, and retrieve aggregate alarm statistics.
Historical Data: Query time-series historical data for a point over a configurable time range, and get the latest historical value for a specific point.
Device Models & Instances: List available product types and device instances (filtered by product type).
Business Rules: List all business/automation rules and get a specific rule by ID.
Network & Uplink: View MQTT uplink configuration, check MQTT connection status, and inspect installed TLS certificate info.
Routing: List all machine-to-cloud (M2C) and cloud-to-machine (C2M) routing entries.
Templates: List channel configuration templates, optionally filtered by protocol.
Note: This interface is intentionally read-only by default. Write access requires explicit, bounded authorization, consistent with AetherEdge's deny-by-default control philosophy.
AetherEdge
Product site: aetheriot.ai · Developer site: aetheriot.dev
Documentation: docs.aetheriot.ai · Getting started · User journeys · Connect devices · Protocol adapters · Connect AI · 中文
Connect physical devices, prove the data path, and commission deterministic behavior—without making the cloud, a browser, or an AI model part of the control loop.
AetherEdge is an open-source, industry-neutral IoT edge kernel, six-service runtime, CLI, and Rust SDK for Linux gateways. Shared memory is authoritative for live point state; embedded SQLite stores desired state, history, audit, and a durable outbox. The default distribution needs no Redis, PostgreSQL, cloud service, browser, or LLM.
AI is a replaceable client behind the same typed, governed application boundary as every other client. Device control is deny-by-default, explicitly confirmed, and audited. Already commissioned acquisition, safety, rules, and alarms keep running deterministically when every external client is disconnected.
Is AetherEdge the right starting point?
You want to… | Start with… |
Connect field devices and run local behavior on a Linux gateway | AetherEdge |
Deploy an energy-management solution and operator Console | |
Coordinate an edge fleet or cloud jobs | |
Implement or validate a shared protocol |
AetherEdge's direct users are device manufacturers, system integrators, solution builders, application developers, and edge operators. It deliberately does not pretend to be a finished application for every industry.
Related MCP server: thingworx-mcp
From a blank host to a useful Edge
The product journey is:
safe-empty install -> operator identity -> disabled device channel
-> physical/logical point mapping -> read-only data proof
-> reviewed behavior -> explicit commissioning -> audit and operationEvery consequential change follows:
inspect -> plan -> validate -> confirm -> apply -> audit -> observe -> reviseCreating configuration never silently enables hardware.
1. Install a safe-empty runtime
Download the matching .run package and checksum from
GitHub Releases, then verify and
run the fresh-install package on the target Linux host:
sha256sum -c AetherEdge-<arch>-<version>.run.sha256
chmod +x AetherEdge-<arch>-<version>.run
sudo ./AetherEdge-<arch>-<version>.runThe installer creates the six services, aether CLI, private bootstrap
credentials, embedded database, and an empty configuration. It does not add a
device, enable a rule, or install a domain solution.
2. Establish identity and prove the empty runtime
Start with the local health gate:
aether doctorA healthy first boot has six healthy services and valid SHM. Sign in with the
private bootstrap credential, change that password immediately, create a
dedicated account for normal operation, and export its signed
AETHER_ACCESS_TOKEN. Then prove that nothing was commissioned implicitly:
aether channels list --json
aether models instances list --json
aether rules list --jsonThe channel, instance, and rule collections should all be empty. Getting Started covers the exact bootstrap and token flow.
3. Create one channel—still disabled
Choose a protocol included in the installed IO build. A governed create command
requires authentication and confirmation, but the new channel remains disabled
unless --enabled true is explicitly requested:
AETHER_ACCESS_TOKEN='<signed access JWT>' aether channels create \
--name "PLC#1" \
--protocol modbus_tcp \
--params '{"host":"192.168.1.10","port":502}' \
--confirmedBefore enabling it, declare the physical points, map protocol addresses, bind the required points to a logical instance supplied by a Domain Pack, and review unresolved mappings. Follow Connect Devices for that complete workflow and the Protocol Adapter Reference for the exact feature, runtime ID, transport, and mapping matrix.
4. Prove observation before control
device -> aether-io -> authoritative SHM -> API and embedded history -> clientVerify channel health, timestamps, quality, freshness, topology generation, historical samples, and unmapped points. A connected socket without fresh data is not a healthy acquisition path, and a missing value is not zero.
Once the mapping is complete, enable the channel with the latest desired-state revision returned by the channel query:
AETHER_ACCESS_TOKEN='<signed access JWT>' aether channels enable <CHANNEL_ID> \
--expected-revision <REVISION> \
--confirmedThe first useful milestone is a read-only data path. Do not add physical commands merely to prove acquisition.
5. Add and commission deterministic behavior
Add logical models, calculations, alarms, and local rules through a downstream Domain Pack or application composition. Draft rules and control paths stay disabled until their inputs, targets, permissions, failure behavior, and audit path have been reviewed.
review disabled behavior -> validate -> confirm -> enable
-> inspect audit evidence -> observe the physical outcomeA successful command acceptance is not proof that the physical device reached the requested state. Observe that outcome separately.
6. Choose a replaceable client
All clients enter through authenticated aether-api:6005:
Client | Use it for |
| Installation, commissioning, diagnostics, and operations |
HTTP/OpenAPI | Dedicated applications and generated clients |
Read-only MCP | AI-assisted inspection and explanation |
Temporary write-enabled MCP | One bounded, explicitly authorized maintenance task |
| A downstream solution or embedded composition |
Downstream Console | A domain-specific operator experience, such as AetherEMS |
The other five process APIs stay on loopback. Clients must not proxy them or write SHM or SQLite directly. AetherEdge ships no universal Web Console; a UI is a replaceable application client, never a second state authority.
To attach an existing runtime to Claude in the default read-only mode:
claude mcp add aether -- aether mcpSet AETHER_ACCESS_TOKEN for the session. Use SSH stdio or an HTTPS ingress for
a remote Edge—never expose an internal service port. See
Connect AI Assistants.
Developing without field hardware
Run the industry-neutral SDK composition or a protocol verification simulator. Neither commissions a physical device:
cargo run -p aether-example-minimal-gateway
cargo run -p simulator -- \
--scenario tools/simulator/scenarios/modbus_protocol_verification.yaml \
--port 5020A source checkout is a developer path, not the normal operator installation flow. See Getting Started.
Build a downstream solution
cargo add aether-edge-sdk --features local-runtimeaether-edge-sdk, imported as aether_sdk, is the supported Rust application
facade. A downstream product combines the SDK, a Domain Pack, and a dedicated
application or agent in its own repository. Domain processors, models, and
Consoles do not become dependencies of the AetherEdge kernel. AetherEMS is the
reference energy-domain implementation of this model.
Runtime model
Process | Responsibility |
| Protocol acquisition and sole telemetry/status writer |
| Instances, rules, and audited control dispatch |
| Alarm evaluation and lifecycle |
| Embedded history and optional history adapters |
| Authenticated remote application API and WebSocket |
| Durable legacy Cloud/MQTT delivery and experimental CloudLink foundation |
Devices -> aether-io -> authoritative SHM
|-> automation and alarms
|-> API and embedded history
`-> durable outbox -> optional cloud
domain <- ports <- application <- runtime/interfaces
^
`---- downstream static Rust adapters (out of tree)AetherEdge currently delivers the integrator-grade runtime, application contracts, governed commands, MCP foundations, Pack v1, and SDK facade. The complete conversational intent compiler, simulation, temporary behavior, and continuous outcome evaluation remain product direction. See the platform status for the exact delivery boundary.
Contributing
Development setup and verification live in CONTRIBUTING.md. Repository rules for agents and contributors live in AGENTS.md.
License
Licensed under either MIT or Apache-2.0, at your option.
Available Tools
16 toolsalarms_listA
List active alarms, optionally filtered by channel/level/keyword
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based) | |
| size | No | Page size | |
| level | No | Filter by warning level (1=low, 2=medium, 3=high) | |
| channel | No | Filter by channel ID | |
| keyword | No | Keyword search across rule name, channel, point |
TDQS
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 states listing active alarms but does not disclose pagination behavior, ordering, or scope of results (all vs. user-accessible). Schema adds pagination params but behavioral details are 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?
Single sentence with no fluff, front-loaded with purpose and key behavior. 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?
Given no annotations and no output schema, the description adequately covers the core behavior. It lacks details on return format or pagination specifics, but the schema handles parameter context. Slightly above average for a list 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?
Schema coverage is 100% with detailed descriptions for each parameter. The description adds only a brief summary of available filters ('channel/level/keyword'), which adds minimal value 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 clearly specifies the action 'list' and the resource 'active alarms', and mentions optional filters. It effectively distinguishes from siblings like alarms_rule_get (single rule) and alarms_rules_list (list rules).
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 lacks explicit guidance on when to use this tool versus alternatives like alarms_stats or history_latest. Usage context is implied but not clarified (e.g., only active alarms, no historical).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alarms_rule_getB
Get a specific alarm rule by ID
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Alarm rule ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies a read operation ('Get') but does not explicitly state that it is non-destructive, requires any permissions, or has rate limits. For a simple retrieval, more could be said about its safety.
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 with no wasted words. 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 the lack of output schema and sibling tools that return lists, the description could mention the return format or that it returns the full rule object. It is minimal and leaves the agent guessing about complete behavior.
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 covers 100% of the parameter description, and the description adds no additional meaning beyond what the schema already provides for the 'id' parameter. Baseline of 3 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 verb (Get), resource (alarm rule), and scope (by ID). It effectively distinguishes from sibling tools like alarms_rules_list (list) and rules_get (different resource).
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 alarms_rules_list for listing or rules_get for a different rule type. The description only states the basic action.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alarms_rules_listA
List alarm rules, optionally filtered by channel/enabled/level/keyword
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number (1-based) | |
| size | No | Page size | |
| level | No | Filter by warning level (1=low, 2=medium, 3=high) | |
| channel | No | Filter by channel ID | |
| enabled | No | Filter by enabled/disabled state | |
| keyword | No | Keyword search across rule name, channel, point |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, yet the description omits any behavioral traits such as pagination, rate limits, or side effects. For a read operation, minimal transparency is offered.
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 single-sentence description is highly concise, front-loaded with the core action, and contains no extraneous 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?
For a listing tool with no output schema, the description is sufficient but could mention pagination or result ordering. However, it adequately covers the filtering options.
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?
All 6 parameters have schema descriptions (100% coverage), so the tool description adds no new meaning beyond the optional filtering, providing baseline value.
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 'List alarm rules, optionally filtered by channel/enabled/level/keyword' clearly states the resource (alarm rules) and action (list), and distinguishes from siblings like alarms_list (alarms vs rules) and alarms_rule_get (single rule).
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 listing with filters but provides no exclusions or comparisons to sibling tools like rules_list or alarms_stats, leaving the agent to infer when to choose this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
alarms_statsB
Get aggregate alarm statistics
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavior. 'Get' suggests read-only, but no details on expected behavior (e.g., returns aggregated counts, may be faster than listing all alarms, always returns a single object). The lack of output schema or behavioral notes makes it hard for the agent to predict the call's outcome.
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 with no extraneous words. Perfectly concise for a simple 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?
Despite simplicity, the description lacks crucial context: what constitutes 'aggregate alarm statistics'? Expected return values (e.g., total count, breakdown by status, time range)? Without this, the agent cannot fully anticipate the tool's 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?
The tool has zero parameters, and the input schema coverage is 100% (empty). Per guidelines, 0 params baseline is 4. The description adds no parameter-specific information because 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 states 'Get aggregate alarm statistics', which clearly identifies the verb (Get) and resource (aggregate alarm statistics). This distinguishes it from siblings like alarms_list (which lists individual alarms) and alarms_rule_get (which gets a specific rule). However, it could be more specific about what 'aggregate' means (e.g., counts, severity distribution).
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 when-to-use or when-not-to-use guidance is provided. The description implies usage for retrieving overall statistics, but does not contrast with sibling tools like alarms_list. An agent might infer that this is for summary data vs. detailed list, but the guidance is weak.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
channels_mappingsB
Show a channel's point-to-instance mappings
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | Channel ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description implies a read-only operation with the word 'Show', and there is no contradiction with missing annotations. However, no additional behavioral details (e.g., permissions, rate limits, or side effects) are disclosed, leaving the agent with minimal insight beyond the basic action.
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 redundant words. It is front-loaded and efficient, stating the tool's purpose directly.
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 (one parameter, no output schema, no annotations), the description is minimally adequate. It does not explain the return format or the nature of 'point-to-instance mappings', which would help an agent understand the output without additional 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 description coverage is 100% (channel_id described as 'Channel ID'), and the description adds no extra meaning beyond what is already in the schema. The tool's single parameter is adequately documented in the schema, so a baseline score of 3 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 verb 'Show' and the resource 'channel's point-to-instance mappings', giving a specific purpose. It distinguishes from siblings like channels_points (general points) and channels_points_mapping (mapping operations), but does not elaborate on what the mappings are.
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 information is provided about when to use this tool versus alternatives such as channels_points_mapping or channels_unmapped_points. The description gives no contextual guidance or use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
channels_pointsA
List points on a channel, optionally filtered by type (T/S/C/A)
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | Channel ID | |
| point_type | No | Optional point-type filter: T | S | C | A |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states it lists points but does not disclose pagination, error handling, or other behavior. Minimal 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?
Single sentence, to the point, with no wasted words. Front-loaded with the core action.
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 list tool with 2 parameters and no output schema, the description is minimally complete. It lacks details on result set size, ordering, or additional 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 description coverage is 100% with both parameters documented. The description adds no new meaning beyond the schema, so baseline of 3 applies.
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 'List' and the resource 'points on a channel', with an optional filter. It is specific and distinguishes from sibling tools like channels_mappings and channels_status.
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 mentions an optional filter but provides no explicit guidance on when to use this tool versus siblings or alternatives. Usage is implied but not detailed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
channels_points_mappingC
Show the instance mapping for a single point
| Name | Required | Description | Default |
|---|---|---|---|
| point_id | Yes | Point ID | |
| channel_id | Yes | Channel ID | |
| point_type | Yes | Point type: T | S | C | A |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description fails to disclose behavioral traits such as read-only, destructive potential, or rate limits. Only a brief purpose statement.
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, no filler. 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?
Despite 3 parameters fully described in schema, no output schema or annotations. The description does not explain return format, error handling, or preconditions, leaving the agent with incomplete context for a single point lookup.
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 100%; each parameter (point_id, channel_id, point_type) has a basic description in the schema. The tool description adds no additional meaning beyond what the schema already provides.
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?
Description clearly states verb 'Show' and resource 'instance mapping for a single point'. It distinguishes from sibling 'channels_mappings' which likely lists all mappings. However, 'instance mapping' could be more explicit.
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 on when to use this tool vs alternatives like 'channels_mappings' or 'channels_points'. No context provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
channels_statusB
Get the connection status of a specific channel
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | Channel ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description must fully convey behavioral traits. It only states 'Get the connection status' without detailing side effects, caching, or what the status entails (e.g., format, possible values). Insufficient for a tool with no 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 extraneous words. However, it lacks details that might be expected for completeness (e.g., output description), so it is slightly undersized given the absence of annotations and output 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?
With no output schema and no annotations, the description should at least hint at the return format or possible values of the connection status. It does not, leaving the agent with incomplete context for a tool of moderate 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?
Schema coverage is high (100%) and the schema already describes the single parameter (channel_id). The description adds no additional meaning beyond the schema, so baseline score applies.
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 (Get) and resource (connection status of a specific channel). It is specific and distinguishable from sibling tools like channels_mappings or channels_points.
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 (e.g., when only need status vs. full channel details). The description lacks explicit when/when-not or alternative tool references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
channels_unmapped_pointsA
List points on a channel that have no protocol address mapping (points not wired to a device register; instance routing is a separate concern)
| Name | Required | Description | Default |
|---|---|---|---|
| channel_id | Yes | Channel ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. While the tool name implies a read operation, the description does not explicitly state read-only behavior, required permissions, or any side effects. This omission limits 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 sentence that efficiently communicates the tool's purpose and scope, with no unnecessary words. It is front-loaded with the action.
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 list tool with one parameter and no output schema, the description adequately conveys what will be returned (unmapped points). However, it does not detail the output format or fields, which might be needed for precise 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 input schema has 100% coverage for its single parameter (channel_id). The description adds no additional meaning beyond the schema's description, meeting the baseline for high 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 lists points on a channel lacking protocol address mapping, using a specific verb ('List') and resource ('unmapped points'). It differentiates from siblings like 'channels_points' (likely all points) and 'channels_points_mapping' (mappings).
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 notes that instance routing is a separate concern, indicating when not to use this tool. This helps the agent choose between this and related tools for routing or mapping queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
history_latestB
Get the latest historical value for a point
| Name | Required | Description | Default |
|---|---|---|---|
| point_id | Yes | Point ID within that series | |
| series_key | Yes | Logical key identifying the series, e.g. "io:1001:T" |
TDQS
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 'get' implying read-only, but does not specify any other behavioral traits such as authentication needs, 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence, very concise and front-loaded. It avoids unnecessary words while clearly conveying the core functionality.
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 lack of output schema and annotations, the description is too minimal. It does not explain what 'latest' means or describe the return format, leaving important contextual gaps for a tool with two parameters.
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 100% with descriptions for both parameters. The tool description does not add any additional meaning beyond the schema, so it meets the baseline of 3 without extra credit.
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 action ('Get') and the resource ('the latest historical value for a point'). It is specific and distinguishing from sibling tools like alarms_list or rules_list, which do not involve historical values.
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, nor any prerequisites or context. It simply states what it does without indicating when it is appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
models_instancesA
List device instances, optionally filtered by product type
| Name | Required | Description | Default |
|---|---|---|---|
| product | No | Filter by product type, e.g. "ESS", "Battery" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the basic action (list) but does not disclose any behavioral traits such as return format, pagination, authorization requirements, or side effects. The description is too minimal for a tool with no 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 clear sentence with no unnecessary words. It is front-loaded and communicates the core function effectively. No waste.
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 list tool with one optional parameter and no output schema, the description covers the basics. However, it lacks details on default behavior, pagination, or potential volume of results. The context of sibling tools suggests some overlap, but the description does not address this.
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 100% for the single parameter, so baseline is 3. The description adds 'optionally filtered' which is already implied by the parameter being nullable, so marginal added value. No detailed format or constraints beyond 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?
Description clearly states 'List device instances' with optional filtering by product type. The verb 'List' and resource 'device instances' are specific and unambiguous. It distinguishes from sibling tool 'models_products' which lists product types, making the purpose distinct.
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 listing instances with optional filter, but provides no explicit guidance on when to use this tool versus alternatives like 'models_products' or 'history_latest'. No when-not or alternative names given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
models_productsB
List available product types
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It only says 'List available product types', omitting any behavioral traits like authentication needs, rate limits, or result 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, no wasted words. It is appropriately sized for a simple tool, though could slightly expand on result details.
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, no-output-schema tool, the description is adequate but minimal. It lacks details on pagination, sorting, or what constitutes a product type.
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?
No parameters exist, and schema description coverage is 100%. The description adds no parameter info, which is acceptable given 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 'List available product types' clearly states the action and resource. It distinguishes from sibling tools like alarms_list or rules_list by focusing on product types, but does not explicitly differentiate.
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 on when to use this tool versus alternatives such as models_instances or other list tools. The description does not mention context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
routing_listA
List all M2C/C2M routing entries
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description only says 'list', which implies read-only behavior. It does not disclose any potential side effects, permissions, pagination, or return format. Basic transparency is achieved but could be improved.
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, clear sentence with no unnecessary words. Front-loaded and 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?
For a zero-parameter list tool, the description is largely complete. However, it could mention whether the list is complete or paginated, and what fields are returned, but the absence is not critical given the tool's simplicity.
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 schema coverage is 100% by default. The description does not need to add parameter meaning. Per guidelines, 0 parameters yields a baseline of 4.
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 action (list) and the specific resource (routing entries of type M2C/C2M), distinguishing it from sibling tools which deal with alarms, channels, rules, 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?
No explicit guidance on when to use this tool vs alternatives. However, since there are no other routing-related tools, the usage context is implied but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rules_getB
Get a specific business rule by ID
| Name | Required | Description | Default |
|---|---|---|---|
| rule_id | Yes | Rule ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose any behavioral traits such as permissions required, side effects, or error handling (e.g., behavior when rule_id is not found). This leaves the agent without critical context for safe invocation.
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 extremely concise, using a single sentence that immediately conveys the core purpose. No extraneous information is present.
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 (single parameter, no output schema, no nested objects), the description is minimally adequate. However, it would benefit from mentioning that the rule details are returned or clarifying the requirement for rule_id to be valid.
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 100% with a single parameter 'rule_id' described as 'Rule ID'. The tool description adds no additional semantic meaning beyond what the schema already provides, meeting the baseline for high 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 verb 'Get' and the resource 'business rule by ID', distinguishing it from sibling tools like 'rules_list' which lists all rules. However, it lacks details on what constitutes a 'business rule' and what the response contains.
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 when a specific rule ID is available, but no explicit guidance on when not to use this tool or alternatives like 'rules_list' or 'alarms_rule_get' is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rules_listB
List all business rules
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavioral traits. It only states it lists all business rules, implying a read-only operation, but omits details about pagination, limits, or output format. The description is insufficient for understanding side effects or constraints.
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 unnecessary words. It is concise and directly conveys the tool's action. 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?
Given the tool's simplicity (no parameters, no output schema), the description provides basic understanding. However, it lacks differentiation from sibling tools like 'alarms_rules_list', and omits any mention of scope or limitations, leaving some ambiguity about what 'business rules' encompasses.
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 zero parameters, and the schema coverage is trivially 100%. The description adds no parameter details because none exist, which is acceptable. The baseline for no parameters is 4, and the description does not detract from this.
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 'List all business rules' clearly states the action (list) and the resource (business rules), fulfilling the basic purpose. However, it does not differentiate from sibling tools like 'rules_get' or 'alarms_rules_list', which could cause ambiguity.
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 'rules_get' (for a specific rule) or 'alarms_rules_list' (for alarm-specific rules). The description implies a generic listing scenario but lacks explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
templates_listB
List channel configuration templates, optionally filtered by protocol
| Name | Required | Description | Default |
|---|---|---|---|
| protocol | No | Filter by protocol, e.g. "modbus" |
TDQS
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 states 'List', implying a read-only operation, but does not mention pagination, authorization requirements, or the structure of the response. For a simple listing tool, this is adequate but lacks detail.
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, clear sentence that front-loads the core purpose. Every word is necessary; there is no filler. It is appropriately concise for the tool's simplicity.
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 output schema and no annotations, so the description should explain what the output looks like or provide context about template types. It does not; it only repeats the filter option. For a complete description, more details on the return format or template structure are 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?
Schema description coverage is 100% (the single parameter 'protocol' has a description). The description's phrase 'optionally filtered by protocol' adds no new semantic value beyond the schema's 'Filter by protocol, e.g. "modbus"'. Baseline score of 3 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 specifies the verb 'List' and the resource 'channel configuration templates', clearly stating the action and object. It also mentions optional filtering by protocol, which adds precision. The tool name 'templates_list' is sufficiently distinct from sibling tools like 'alarms_list' or 'routing_list'.
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 like 'routing_list' or 'channels_mappings'. There is no mention of prerequisites, context, or scenarios where this tool should be preferred. The 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.
TDQS
Most tools have distinct purposes, especially across different domains like alarms, history, models, and rules. However, the channels tools (channels_mappings, channels_points_mapping, channels_unmapped_points) have overlapping functionalities that could cause confusion, though descriptions mostly clarify the differences.
All tools use a consistent domain prefix followed by an underscore and a descriptive term. While the second part mixes verbs (get, query, list) and nouns (instances, products, status), the pattern is predictable and readable. Minor inconsistency with 'channels_points_mapping' vs 'channels_unmapped_points' but overall clear.
With 17 tools, the set is slightly above the typical 3-15 range but still well-scoped for a multi-domain IoT management server. Each tool serves a clear purpose and the count feels appropriate for the breadth of functionality covered.
The toolset is heavily read-only, with only get/list/query operations. Missing create, update, or delete tools for alarms, channels, rules, and templates. This is a significant gap for lifecycle management, likely causing agent failures if any mutation is needed.
Maintenance
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
Self-hosted MCP gateway: turn any API, database or MCP server into AI connectors — no code.
Protocol-native energy infrastructure orchestration for AI data centers. Provides 46 MCP tools across 8 grid protocols (IEC-61850, DNP3, Modbus, OCPP, OpenADR, IEEE 2030.5, IEC 60870-5-104, ICCP) with 5 core API primitives: connect, dispatch, settle, comply, and intel. Enables AI agents to programmatically interact with substations, grid interfaces, and energy assets for real-time workload-grid coordination.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Data-ontology maps of your business systems, served to AI agents over MCP.
Related MCP Servers
AlicenseAqualityDmaintenanceEnables AI assistants to interact with inSCADA systems via the Model Context Protocol, providing 39 tools for live data, alarms, scripts, historical analysis, charts, and more.3966MIT- AlicenseAqualityDmaintenanceMCP server for PTC ThingWorx, the IIoT platform, providing 8 tools for AI agents to read live state and trigger actions across the industrial asset graph with env-gated safety for writes and invocations.8MIT
- AlicenseNot gradedqualityAmaintenanceEnables cloud LLM agents to discover and invoke physical hardware on edge and IoT devices through standard MCP tools, bridging constrained device channels like UART, BLE, and Wi-Fi.3MIT
- AlicenseAqualityAmaintenanceProvides AI agents with safe, governed read access to industrial control systems (OPC-UA, Modbus, S7, Mitsubishi, MTConnect, MQTT/Sparkplug) plus cross-protocol diagnostics for troubleshooting data breaks, alarm floods, and unhealthy tags.21531MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/EvanL1/AetherEdge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server