Skip to main content
Glama
FernanMoreno

domoai-mcp

by FernanMoreno

DomoAI

범용 에이전틱 홈 오토메이션 런타임으로, 시맨틱 장치 모델, 다중 어댑터 구성 및 하나의 일반 MCP 인터페이스를 제공합니다.

개발 환경

이 프로젝트는 uv와 Python 3.12를 사용합니다.

uv sync
uv run pytest
uv run ruff check .
uv run mypy src

런타임 종속성에는 MCP Python SDK, Pydantic, Home Assistant HTTP/WebSocket 클라이언트, 선택적 Zigbee2MQTT 어댑터용 aiomqtt, JSON Schema 검증 및 OR-Tools가 포함됩니다. 로컬 SQLite 영속성은 Python 표준 라이브러리를 사용합니다. 개발 도구는 uv의 기본 dev 종속성 그룹을 통해 설치됩니다.

종속성을 추가하거나 업데이트하려면 pyproject.toml을 편집하고 잠금 파일을 다시 생성하십시오:

uv lock
uv sync

Related MCP server: Home Assistant MCP Server

로컬 MCP 서버

시맨틱 MCP 서버는 stdio를 통해 실행할 수 있습니다. Home Assistant 설정이 없으면 결정론적 픽스처를 사용합니다:

uv run domoai-mcp

호스트 구성 예시:

{
  "mcpServers": {
    "domoai": {
      "command": "uv",
      "args": ["run", "domoai-mcp"],
      "cwd": "/path/to/DomoAI"
    }
  }
}

동일한 명령을 Claude Code, Codex 또는 기타 호환 MCP 클라이언트에 등록할 수 있습니다.

통합 MCP 표면

단일 domoai-mcp 서버는 동일한 MCP 세션을 통해 검색, 상태, 에너지 컨텍스트, 정책 인식 계획 검증/실행 및 제안 전용 OR-Tools 도구 validate_scenario, optimize_scenario 및 explain_solution을 노출합니다. Claude Code, Codex 또는 로컬 stdio를 지원하는 기타 호환 MCP 클라이언트에 정확히 하나의 서버를 등록하십시오:

{
  "mcpServers": {
    "domoai": {
      "command": "uv",
      "args": ["run", "domoai-mcp"],
      "cwd": "/path/to/DomoAI"
    }
  }
}

OR-Tools는 내부 제안/검증/설명 계층으로 유지됩니다. 장치를 실행하거나, 계획을 승인하거나, 어댑터를 호출할 수 없으며, 두 번째 공개 OR-Tools MCP 엔드포인트는 없습니다.

이식 가능한 optimize-home-energy 스킬은 모든 DomoAI 작업을 하나의 mcp 역할을 통해 라우팅합니다. 해당 참조 워크플로는 결정론적 인-프로세스 픽스처로 로컬에서 검증됩니다:

uv run pytest -q tests/contract/test_skill_contract.py
uv run pytest -q tests/integration/test_energy_skill_workflow.py

워크플로는 시맨틱 읽기, 제안, 설명 및 계획 검증에 동일한 연결을 사용하며 execute_plan 외부에서는 절대 실행되지 않습니다. 민감한 계획은 명시적 운영자 승인을 위해 일시 중지됩니다.

에너지 인식 시나리오의 경우, 이식 가능한 v2 절차는 제안 전용 최적화 도구를 호출하기 전에 mcp.get_energy_context를 통해 완전한 유형화된 컨텍스트를 읽습니다. 컨텍스트는 요금제와 태양광 예측을 고정된 기간에 맞추고 하나의 배터리 프로필을 포함할 수 있습니다. CP-SAT는 비용, 최대 수입 및 태양광 자체 소비 증거와 슬롯별 에너지 균형을 반환합니다. 물리적 어댑터는 절대 호출하지 않습니다. 컨텍스트 실패, 수정 불일치, 실행 불가능 또는 솔버 시간 초과는 검증 및 실행 전에 중지됩니다. 결정론적 제공자와 집중된 승인 명령은 저장소 계약 및 통합 테스트로 다루어집니다.

실시간 에너지 데이터를 위한 일회성 태양광 프로필

OMIE 요금제와 Open-Meteo 예측은 에너지 컨텍스트가 요청될 때마다 자동으로 수집됩니다. 물리적 설치 메타데이터만 한 번 제공하면 됩니다. 예제를 복사하고, 자리 표시자 값을 인버터 또는 설치업체 데이터로 바꾼 다음 런타임이 이를 가리키도록 하십시오:

cp config/solar-profile.example.json config/solar-profile.json
export DOMOAI_ENERGY_LIVE=1
export DOMOAI_TARIFF_PROVIDER=omie
export DOMOAI_SOLAR_PROVIDER=open_meteo
export DOMOAI_SOLAR_PROFILE_PATH=config/solar-profile.json
uv run domoai-mcp

프로필은 엄격하고 버전이 지정되며 자격 증명이 없습니다. 최적화에 결과를 사용하기 전에 실제 설치 값을 포함해야 합니다. 예제의 마드리드 값은 형식만 문서화합니다. 이전의 개별 DOMOAI_SOLAR_* 변수는 상호 배타적인 호환성 대체 수단으로 계속 사용할 수 있습니다.

범용 제공자 SDK

향후 Home Assistant, 인버터 및 MQTT 통합은 시맨틱 런타임에 도달하기 전에 소스별 ID와 페이로드를 제공자 SDK v1 경계로 변환해야 합니다. SDK는 DomoAI의 표준 DeviceType, Capability 및 SourceRef 모델을 재사용하고 제공자를 텔레메트리 및 명령 역할로 분리합니다:

external provider
      ↓
ProviderManifest + DeviceDescriptor + Measurement
      ↓
ProviderRegistry (stable order, safe diagnostics)
      ↓
canonical runtime / StateStore / MCP / OR-Tools

제공자 명령은 제한된 시맨틱 매개변수와 멱등성 키만 전달합니다. PlanService, 정책 검증 또는 AdapterPort를 우회하지 않습니다. 첫 번째 구체적인 구현은 HomeAssistantProvider입니다. 인증된 REST/WebSocket 클라이언트를 재사용하고, 레지스트리 메타데이터를 사용할 수 있을 때 Home Assistant device_id로 엔터티를 그룹화하며, 명시적 엔터티/기능 메트릭 매핑만 노출합니다. 이는 기존 HomeAssistantAdapter에 추가됩니다. 런타임 팩토리는 DOMOAI_HOME_ASSISTANT_PROVIDER=1이 명시적으로 활성화된 경우에만 이를 선택합니다. 동일한 제공자 객체가 ProviderRegistry에 등록되고 기존 AdapterPort로 래핑되므로 DeviceRegistry, StateStore, 계획 실행 및 MCP는 하나의 시맨틱 경로와 하나의 Home Assistant 클라이언트를 유지합니다. 공개 경계는 docs/adapter-sdk.md 및 docs/contracts.md를 참조하십시오.

실시간 Home Assistant 런타임

하드웨어 없이 로컬 개발을 위해 재현 가능한 가상 실험실은 dev/lab/README.md에 있으며, 최소 시작은 Mosquitto/가짜 Zigbee2MQTT 및 PyModbus를 다룹니다. Home Assistant, Matter Server 및 KNX Virtual/ETS는 선택적 수동 프로필로 유지됩니다.

해당 실험실을 운영하는 권장 경로는 명시적 실행기입니다:

uv run domoai-lab up
uv run domoai-lab status
uv run domoai-lab smoke

스모크 테스트는 로컬 Home Assistant, MQTT/Zigbee2MQTT, Modbus, Matter 및 KNX 픽스처만 사용합니다. 게이트웨이, 토큰 또는 커미셔닝을 생성하지 않습니다. 실시간 스모크 테스트는 분리되어 있으며 실제 서비스와 DOMOAI_* 변수가 필요합니다.

구성 루트는 실시간 소스가 구성되지 않은 경우 결정론적 픽스처를 선택하고, 하나의 소스에 대한 직접 어댑터를 선택하거나, 두 개 이상의 완전한 소스 구성에 대한 복합 런타임을 선택합니다. Home Assistant를 다음과 같이 구성하십시오:

export DOMOAI_HOME_ASSISTANT_URL="http://home-assistant.local:8123"
export DOMOAI_HOME_ASSISTANT_TOKEN="<long-lived-access-token>"
export DOMOAI_HOME_ASSISTANT_PROVIDER="1"
export DOMOAI_HOME_ASSISTANT_MAPPING_PATH="config/home-assistant-mappings.json"
export DOMOAI_DATABASE_PATH="data/domoai.sqlite3"
uv run domoai-mcp

제공자 모드는 선택 사항입니다. 활성화되지 않으면 호환성을 위해 기존 HomeAssistantAdapter가 선택됩니다. 활성화된 경우 URL/토큰 쌍이 필요하며 선택적 엄격한 v1 매핑 문서로 에너지 역할을 명시적으로 만들 수 있습니다:

{
  "schema_version": "v1",
  "metric_mappings": {
    "sensor.pv_power": {"power": "energy.pv.power"},
    "sensor.grid_power": {"power": "energy.grid.power"}
  }
}

런타임은 REST 서비스 호출을 인증하고, 계획, 결과 및 수정된 감사 이벤트를 SQLite에 유지하며, 백그라운드에서 어댑터 이벤트 소비자를 실행합니다. 지원되는 쓰기 매핑에는 현재 조명/스위치 전원 및 토글 작업, 조명 밝기, 커버 위치/열기/닫기/중지 및 기후 목표 온도가 포함됩니다. 불완전한 URL/토큰 쌍은 시작 전에 거부됩니다. 토큰은 비밀 구성으로 읽히며 장치, 명령, 결과 또는 감사 페이로드에 포함되지 않습니다.

제공자 SDK 경로는 런타임 팩토리와 독립적으로 실행될 수 있습니다:

provider = HomeAssistantProvider(
    HomeAssistantClient(base_url, token),
    metric_mappings={
        "sensor.pv_power": {"power": "energy.pv.power"},
        "sensor.battery_soc": {"battery": "battery.soc"},
    },
)

매핑된 센서 기능만 표준 에너지 메트릭이 됩니다. 클라이언트는 또한 상태 페이로드에 device_id가 포함되지 않은 경우 WebSocket을 통해 Home Assistant의 활성화된 엔터티 레지스트리를 읽습니다. 레지스트리 ID는 제공될 때 보존되며 이름이나 영역에서 유추되지 않습니다.

DOMOAI_HOME_ASSISTANT_PROVIDER를 제거하면 에이전트 직면 MCP 표면을 변경하지 않고 기존 어댑터로 롤백됩니다. 제공자 경로는 결정론적 픽스처로 다루어집니다. 선택적 실시간 제공자-런타임 스모크는 명령을 실행하지 않고 실제 Home Assistant 인스턴스에 대해 동일한 경로를 검증합니다:

uv run pytest -q tests/integration/test_home_assistant_provider_smoke.py

실제 URL/토큰 쌍이 필요하며 토큰은 저장소 외부에 보관됩니다.

실시간 Zigbee2MQTT 런타임

네이티브 Zigbee2MQTT 어댑터는 선택 사항이며 제한된 v1 프로필(조명/스위치 전원, 조명 밝기, 온도, 습도 및 재실 여부)을 지원합니다. Home Assistant 또는 다른 소스와 함께 구성하십시오:

export DOMOAI_ZIGBEE2MQTT_URL="mqtt://mqtt-broker.local:1883"
export DOMOAI_ZIGBEE2MQTT_BASE_TOPIC="zigbee2mqtt"
export DOMOAI_MQTT_TIMEOUT_SECONDS="5"
export DOMOAI_MQTT_USERNAME="domoai"
export DOMOAI_MQTT_PASSWORD="<mqtt-password>"
uv run domoai-mcp

Zigbee2MQTT는 Home Assistant 또는 다른 구성된 소스와 함께 실행될 수 있습니다. 어댑터는 Zigbee2MQTT 브리지/장치 토픽을 소비하고 기존 계획, 정책 및 실행기 경계를 통해 매핑된 장치 /set 명령만 게시합니다. 페어링, 제거, OTA, 그룹, 브리지 관리 및 임의 MQTT 게시는 노출되지 않습니다.

실시간 Matter Server 런타임

네이티브 Matter 어댑터는 Matter Server를 컨트롤러 경계로 사용하고 호환되는 WebSocket 엔드포인트에 연결합니다. Home Assistant, Zigbee2MQTT 또는 다른 소스와 함께 구성하십시오:

export DOMOAI_MATTER_SERVER_URL="ws://matter-server.local:5580/ws"
export DOMOAI_MATTER_TIMEOUT_SECONDS="5"
uv run domoai-mcp

어댑터는 검색 전에 서버 스키마 범위를 검증하고 node:<node_id>/endpoint:<endpoint_id> 소스 참조를 보존하며 제한된 v1 조명/스위치 전원 및 밝기 프로필과 읽기 전용 온도, 습도 및 재실 여부 상태만 노출합니다. 커미셔닝, 패브릭 관리, OTA, 그룹, 공급업체 클러스터 및 임의 속성 작업은 에이전트 직면 경계 외부에 남아 있습니다. 실시간 Matter 스모크 테스트는 선택 사항입니다. 픽스처 테스트에는 Matter 서버나 하드웨어가 필요하지 않습니다.

실시간 KNX/IP 런타임

네이티브 KNX 어댑터는 임의 그룹 트래픽에서 장치를 유추하는 대신 명시적 매핑 파일을 사용합니다. 제한된 v1 프로필은 조명 및 스위치 전원, 조명 밝기, 읽기 전용 온도, 습도 및 재실 여부를 지원합니다. 다른 물리적 소스와 함께 구성하십시오:

export DOMOAI_KNX_GATEWAY_HOST="knx-gateway.local"
export DOMOAI_KNX_CONFIG_PATH="config/knx.json"
export DOMOAI_KNX_TIMEOUT_SECONDS="5"
uv run domoai-mcp

매핑 파일은 각 엔터티, 시맨틱 기능, 상태 그룹 주소, 명령 그룹 주소 및 DPT를 선언합니다. 알 수 없는 필드, 잘못된 형식의 주소, 지원되지 않는 DPT 및 쓰기 가능한 센서 매핑은 시작 시 거부됩니다. KNX/IP 터널링은 선택 사항이며 다른 구성된 어댑터와 공존할 수 있습니다. 픽스처 테스트는 인메모리 전송을 사용하며 게이트웨이나 하드웨어가 필요하지 않습니다. ETS 가져오기, 커미셔닝, 라우팅, 보안 자격 증명, 임의 그룹 값 작업, 장면 및 추가 xknx 장치 프로필은 v1에 포함되지 않습니다.

실시간 Modbus TCP 런타임

네이티브 Modbus 어댑터는 유닛 ID, 레지스터 영역, 0 기반 PDU 오프셋 및 스칼라 인코딩의 명시적 v1 매핑을 사용합니다. 조명/스위치 전원, 조명 밝기, 읽기 전용 온도, 습도 및 재실 여부를 지원합니다. 다른 물리적 소스와 함께 구성하십시오:

export DOMOAI_MODBUS_HOST="modbus-controller.local"
export DOMOAI_MODBUS_PORT="502"
export DOMOAI_MODBUS_CONFIG_PATH="config/modbus.json"
export DOMOAI_MODBUS_TIMEOUT_SECONDS="5"
export DOMOAI_MODBUS_POLL_INTERVAL_SECONDS="5"
uv run domoai-mcp

매핑은 엄격하며 장치를 스캔하거나 유추하지 않습니다. 알 수 없는 필드, 모호한 40001 스타일 주소, 지원되지 않는 인코딩, 쓰기 가능한 센서 및 안전하지 않은 명령은 거부됩니다. Modbus TCP는 선택 사항이며 Home Assistant, Zigbee2MQTT, Matter Server 및 KNX와 공존할 수 있습니다. RTU/ASCII, TLS, 스캐닝, 공급업체 기능 코드 및 임의 레지스터 읽기/쓰기는 v1 외부에 있습니다. 픽스처 테스트는 인메모리 전송을 사용하며 컨트롤러나 하드웨어가 필요하지 않습니다.

다중 어댑터 ID 및 라우팅

런타임은 Home Assistant 장치/엔터티 구분을 따릅니다. 하나의 물리적 소스 장치는 여러 소스 엔터티를 노출할 수 있는 반면, DomoAI는 기능 수준 경로가 있는 하나의 표준 장치를 제공합니다. 안정적인 소스 식별자와 연결은 이름이나 영역 변경 전반에 걸쳐 ID를 보존합니다. 다른 어댑터의 기여를 연결하려면 명시적 canonical_id가 필요합니다. 명령은 실행 전에 정확히 하나의 소스 엔터티로 확인됩니다. 모호하거나, 알 수 없거나, 사용할 수 없는 경로는 실패 시 닫히므로 런타임은 다른 프로토콜이나 엔터티로 명령을 자동으로 보내지 않습니다.

이 동작에는 실시간 게이트웨이, 브로커 또는 컨트롤러가 필요하지 않습니다. 결정론적 다중 어댑터 픽스처는 구성, 부분 실패, 토폴로지, 정확한 라우팅 및 쓰기 금지 안전성을 다룹니다:

uv run pytest -q tests/contract/test_multi_adapter_runtime.py \
  tests/integration/test_multi_adapter_runtime.py \
  tests/performance/test_multi_adapter_targets.py

확인된 로컬 검증

2026-08-17에 저장소는 저장소 테스트 스위트가 다루는 단위, 어댑터, 검색, 계획, MCP-계약, 최적화, 성능, Home Assistant 실행, KNX 및 Modbus 픽스처, 런타임 구성, OMIE 및 Open-Meteo 제공자 시나리오를 통과했습니다. Home Assistant 기존 어댑터 스모크는 로컬 Docker 실험실에 대해 통과했습니다. 로컬 Zigbee2MQTT 및 Modbus 스모크가 통과했습니다. 읽기 전용 OMIE 및 Open-Meteo 공용 네트워크 스모크는 선택적 구성으로 통과했습니다. Matter 검색 및 KNX/IP는 커미셔닝된 Matter 노드 또는 연결 가능한 KNX 게이트웨이와 매핑이 필요하기 때문에 선택 사항으로 남아 있습니다.

로컬 실행 명령은 다음과 같습니다:

uv run domoai-mcp

품질 게이트는 다음과 같습니다:

uv run pytest -q
uv run ruff check .
uv run mypy src
uv lock --check

실시간 자격 증명이 없는 최신 전체 스위트 결과는 318 passed, 8 skipped이며 경고가 없습니다. 건너뛰기는 선택적 Matter Server, KNX/IP 및 외부 노드, 게이트웨이 또는 서비스 구성이 없는 기타 실시간 사례입니다. 결정론적 픽스처 범위는 활성화된 상태로 유지됩니다. 별도의 실시간 결과는 Zigbee2MQTT/Modbus 2 passed, OMIE/Open-Meteo 2 passed, Home Assistant 기존 어댑터 1 passed 및 Home Assistant 제공자 런타임 브리지 1 passed입니다. FastMCP 호환성 심은 전역적으로 경고를 억제하지 않고 알려진 pydantic_settings 불완전 필드 경고를 MCP 계약 외부에 유지합니다.

어댑터 및 공개 계약 가이드는 docs/adapter-sdk.md와 docs/contracts.md에 있습니다.

Available Tools

20 tools
cancel_recurring_scheduleB
Destructive

Cancel a recurring schedule; stops all future occurrences.

ParametersJSON Schema
NameRequiredDescriptionDefault
schedule_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

The annotations already indicate destructiveHint=true, so the description adding 'stops all future occurrences' provides useful context about the scope of the destructive action. However, the description does not disclose additional behavioral details such as irreversibility, whether past occurrences are affected, or any required permissions beyond the annotation hints.

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

Conciseness4/5

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

The description is a single concise sentence that front-loads the action and consequence. It is efficient with no wordiness, earning a high mark for conciseness, though it is slightly under-specified for full structural completeness.

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?

The tool has one parameter, an output schema, and clear annotations for its destructive nature, so the description is mostly sufficient for an agent to invoke it correctly. The main gap is the lack of guidance on where to find schedule_id or how the cancellation result is returned, but the output schema could cover the latter.

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

Parameters3/5

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

The schema describes schedule_id with minimal detail (type and title only), and the description does not elaborate on what schedule_id refers to or how to obtain it. With only one parameter at 0% schema description coverage, the description does not compensate for the lack of parameter semantics; however, the single parameter is fairly self-explanatory in context.

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 states a specific action ('Cancel a recurring schedule') and its effect ('stops all future occurrences'). It clearly distinguishes this from scheduling or listing tools among siblings, though it does not explicitly name an alternative tool for other operations.

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 when to use the tool: when the user's intent is to stop a recurring schedule. It does not provide explicit guidance on when not to use it or mention any alternative tools (e.g., schedule_plan for creating schedules). This is adequate but leaves the agent to infer the usage context.

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

cancel_scheduled_planA
Destructive

Cancel a pending scheduled plan before it executes.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYes

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?

Annotations already indicate destructiveHint=true, so the cancellation as a destructive operation is covered. The description adds the useful behavioral detail that cancellation only applies before execution. It does not discuss irreversibility or side effects, but given the annotation coverage this is acceptable.

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

Conciseness5/5

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

The description is a single concise sentence with no filler. The core purpose and timing constraint are front-loaded, making it easy for an agent to quickly 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?

For a simple one-parameter cancel action, the description covers the essential behavioral scope. The output schema and annotations provide additional safety information. It could be slightly more complete by pointing to how to find plan_id or distinguishing from canceling recurring schedules, but it is largely sufficient.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not compensate by explaining the plan_id parameter, such as where to obtain it or that it must reference a pending scheduled plan. While plan_id is a self-evident string identifier, the description adds no parameter-level meaning beyond the schema.

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

Purpose5/5

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

The description clearly states the specific action (cancel), the resource (a pending scheduled plan), and the timing constraint (before it executes). This makes the tool's purpose distinct from siblings like cancel_recurring_schedule and reschedule_plan.

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 usage context: only pending scheduled plans that have not yet executed can be canceled. It does not explicitly mention alternatives or when-not-to-use cases, but the pending/before-executes condition gives adequate guidance for the common scenario.

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

commit_or_schedule_bundleC
Destructive

Commit one validated bundle through the runtime-owned physical execution and scheduling boundary.

ParametersJSON Schema
NameRequiredDescriptionDefault
membersYes
scenario_idYes
bundle_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the mutation risk is known. The description adds little behavioral context: it doesn't say whether the commit is irreversible, what side effects occur, or whether it can result in execution or scheduling, even though the tool name contains 'or_schedule'. No contradiction with annotations, but no added transparency either.

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

Conciseness3/5

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

The description is one sentence and visually concise, with no repetition. However, it spends words on an opaque phrase ('runtime-owned physical execution and scheduling boundary') instead of explaining the tool's behavior, making it under-specified rather than effectively concise.

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

Completeness1/5

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

For a destructive tool with 3 required parameters, no output schema, and many closely related sibling tools, one vague sentence is far from complete. It omits parameter semantics, expected outcomes, and the relationship to execution and scheduling tools, so an agent lacks critical context for correct invocation.

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

Parameters1/5

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

The schema provides no parameter descriptions, and the description does not compensate: the bundle_digest is loosely echoed by 'bundle', but scenario_id and members are completely unexplained. The members field is an array of arbitrary objects, which particularly needs semantic guidance. An agent cannot know what values are valid or what these parameters mean.

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 specifies a concrete action ('Commit') and a resource ('one validated bundle'), so the core purpose is identifiable. However, it does not state what committing actually does or how this differs from the sibling execute_plan or schedule_plan tools; the phrase. 'runtime-owned physical execution and scheduling boundary' is abstract jargon.

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 word 'validated' implies the bundle must already be validated before this tool is used, which gives some usage context. But it provides no explicit when-to-use/when-not-to-use guidance and no alternatives among the many workflow siblings, so an agent cannot reliably choose between this, execute_plan, schedule_plan, or request_approval.

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

discover_devicesB
Read-only

Read or refresh the canonical semantic device inventory.

ParametersJSON Schema
NameRequiredDescriptionDefault
typesNo
area_idNo
refreshNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the 'refresh' capability and the canonical inventory context, but it does not explain what refresh does cotidiano (e.g., whether it triggers re-discovery, side effects, or rate limits).

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

Conciseness4/5

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

The description is a single front-loaded sentence with no wasted words. It is concise and readable, though it is also too sparse to fully serve as guidance.

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

Completeness2/5

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

For a tool with three optional parameters and an output schema, the description covers only the core action. It omits parameter semantics and usage context, leaving the agent to infer what types, area_id, and refresh actually control.

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

Parameters1/5

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

Schema description coverage is 0%, and the description offers no meaning for the three parameters (types, area_id, refresh). 'refresh' is only implied by the verb, and types/area_id are completely unexplained.

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

Purpose5/5

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

The description uses a specific verb pair 'Read or refresh' and a precise object, 'the canonical semantic device inventory.' This clearly distinguishes the tool from siblings like get_state or validate_command, which target different resources.

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?

There is no guidance on when to use this tool versus alternatives, nor any mention of exclusions or conditions. The description does not explain when 'refresh' should be used or when a simple read is sufficient.

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

execute_planB
Destructive

Execute a previously validated plan after runtime safety checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo
plan_idYes
approval_idNo
bundle_digestNo
validation_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already indicate destructiveHint=true and readOnlyHint=false, so the description is not required to restate destructiveness. It adds useful context about pre-validation and runtime safety checks, but does not explain consequences, irreversibility, or approval requirements beyond what the parameter approval_id hints at.

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

Conciseness4/5

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

The description is a single front-loaded sentence with no wasted words. It conveys the core purpose and an important prerequisite, though brevity leaves some behavioral details to inference.

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

Completeness2/5

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

For a destructive tool with five parameters and no schema description coverage, this is incomplete. It omits the meaning of dry_run, approval_id, and bundle_digest, and does not describe what 'runtime safety checks' entails or what the agent should expect after execution. The output schema exists, so return-value documentation is less critical, but invocation guidance is still thin.

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

Parameters2/5

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

Schema description coverage is 0%, so the description needed to compensate for the five parameters. It only vaguely maps to validation_digest via 'previously validated' and gives no meaning for dry_run, approval_id, bundle_digest, or plan_id. This is insufficient for correct invocation.

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 uses a specific verb and object ('Execute ... plan') and adds the qualifier 'previously validated' to distinguish this from plan creation or scheduling. It does not explicitly differentiate from schedule_plan or commit_or_schedule_bundle, but the execute/validate/schedule contrast is clear from the sibling names.

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 phrase 'previously validated plan' implies that validate_plan should happen first, and 'after runtime safety checks' suggests a required sequence. However, it does not explicitly say when to use this instead of schedule_plan, or mention any exclusions or alternatives.

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

explain_solutionA
Read-only

Explain a typed optimization result without changing runtime state.

ParametersJSON Schema
NameRequiredDescriptionDefault
resultYes

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?

The annotations already declare readOnlyHint=true and destructiveHint=false; the description reinforces this with 'without changing runtime state'. It adds the qualifier 'typed optimization result' but does not disclose behavior like whether it returns a summary, how it handles invalid inputs, or whether it requires an existing optimization context. Given annotation coverage, this is adequate but not rich.

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?

One concise sentence that leads with the action and resource, then adds the key side-effect guarantee. Every word earns its place with no unnecessary elaboration.

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

Completeness4/5

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

For a simple read-only explanation tool with one object parameter, annotations already covering safety, and an output schema available, the description covers the essentials. It could be more complete by referencing the relationship to optimize_scenario or describing the expected result object, but the current level is sufficient for basic invocation.

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

Parameters2/5

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

The single 'result' parameter has no schema description, and schema description coverage is 0%. The description's phrase 'typed optimization result' gives only a high-level hint and does not explain the expected shape, fields, or constraints of the object. With zero parameter descriptions in either schema or description, the agent is left without meaningful parameter guidance.

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

Purpose5/5

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

The description uses a specific verb ('Explain') and a specific resource ('typed optimization result'), and explicitly notes it makes no runtime state change. This clearly distinguishes it from the many mutating siblings like execute_plan, schedule_plan, or optimize_scenario. Even without naming a sibling, an agent can infer its role.

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

Usage Guidelines4/5

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

The description implies use whenan agent has a typed optimization result to inspect, and explicitly states it does not change runtime state, which excludes it from planning/execution workflows. It does not name alternative tools or provide explicit when-not conditions, but the context is still reasonably clear.

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

get_energy_contextB
Read-only

Read a complete canonical energy context for one requested horizon.

ParametersJSON Schema
NameRequiredDescriptionDefault
horizonYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

Annotations declare readOnlyHint=true and destructiveHint=false, which establishes the safety profile. The description is consistent with this and adds that the result is a 'complete canonical' context for one horizon, but it gives no further behavioral details such as response contents or potential errors. Given the annotations cover the main behavior, this is adequate but not rich.

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

Conciseness5/5

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

A single sentence that is front-loaded with the verb and resource. Every word contributes, with no fluff or repetition of the tool name.

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

Completeness2/5

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

Despite having an output schema and read-only annotations, the parameter contract is too vague. An agent cannot reliably construct the 'horizon' object from the description alone, and there is no guidance about the content or format of that nested object. The tool is simple, but the missing horizon semantics leave an important gap.

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

Parameters2/5

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

Schema description coverage is 0% and the sole parameter 'horizon' is an open object with no structure. The description only says the operation is 'for one requested horizon,' which adds minimal meaning but does not explain what fields or format the horizon object should contain. It fails to compensate for the schema gap.

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

Purpose5/5

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

The description uses a specific verb ('Read') and identifies the resource ('complete canonical energy context') and scope ('one requested horizon'). It clearly distinguishes an energy-context read operation from sibling tools like get_state by naming the domain and completeness.

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?

There is no guidance on when to choose this tool over siblings such as get_state, validate_plan, or explain_solution. The description implies a read use case but does not state when not to use it or name alternatives.

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

get_stateC
Read-only

Read bounded semantic state snapshots for selected devices.

ParametersJSON Schema
NameRequiredDescriptionDefault
devicesYes
allow_staleNo
capabilitiesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's 'Read' adds no new safety information. It contributes only the 'bounded' qualifier, hinting at limits without explaining staleness, rate limits, or output behavior. It is consistent with annotations, so no contradiction.

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?

One concise sentence that front-loads the core action and target. No wasted words, but it sacrifices valuable information that could be included without structural bloat.

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

Completeness2/5

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

With three parameters and zero schema coverage, the description is under-specified. It does not address the optional parameters, the meaning of 'bounded', or when to choose this tool over its many siblings. The output schema helps for return values, but the description alone leaves important gaps.

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

Parameters2/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 for the three parameters. It mentions 'selected devices', giving some meaning to the required 'devices' parameter, but it does not explain 'allow_stale' or 'capabilities', leaving those semantics entirely unspecified.

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 uses a specific verb 'Read' with a resource 'bounded semantic state snapshots' and a scope 'selected devices'. It clearly identifies the operation and object, and the phrase distinguishes it from siblings like get_energy_context or discover_devices, though not explicitly.

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?

No guidance on when to use this tool versus alternatives such as get_energy_context or validate_command. The description does not specify prerequisites, use cases, or exclusions, leaving the agent to infer from the tool name alone.

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

inspect_commissioningA
Read-only

Read the shared, non-authoritative commissioning report for future battery and EV bindings.

ParametersJSON Schema
NameRequiredDescriptionDefault
refreshNo
asset_typesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

The description goes beyond the readOnlyHint/destructiveHint annotations by stating the report is 'shared' and 'non-authoritative,' which tells the agent this is not the source of truth and may represent pending/future bindings. With annotations already covering the read-only safety profile, the description adds meaningful behavioral context without contradicting them. It does not mention caching behavior affected by 'refresh,' but that is partially discoverable via the schema.

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

Conciseness5/5

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

A single, front-loaded sentence with no filler. Every phrase earns its place: the verb, the object, the shared/non-authoritative qualifier, and the domain scope.

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

Completeness4/5

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

For a read-only inspector with no required parameters and an output schema present, the description is nearly complete. The main gaps are not explaining the 'refresh' parameter's behavior and not stating explicitly that asset_types filters the report; still, the readOnlyHint, destructiveHint, and output schema carry much of the contextual burden.

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

Parameters3/5

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

Schema description coverage is 0%, so the description does not compensate for the schema's lack of parameter meanings. However, there are only two optional parameters: 'refresh' is self-explanatory as a boolean defaulting to false, and 'asset_types' is reasonably inferable as a filter for which asset types to include. The description mentions 'battery and EV bindings,' which maps loosely to asset_types, but does not explicitly explain either parameter.

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

Purpose5/5

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

The description states a specific verb ('Read') and resource ('shared, non-authoritative commissioning report') and adds the qualification 'for future battery and EV bindings.' That scope is enough to distinguish it from sibling tools like get_state or list_audit_events, and the qualifier 'non-authoritative' adds important nuance about the data's trust level.

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 a read-only reporting tool and uses language like 'shared... report' and 'non-authoritative,' which helps an agent infer it is for inspection rather than execution. However, it does not explicitly state when to use it over alternatives or when not to use it, leaving the agent to infer from the readOnlyHint annotation and sibling names.

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

list_audit_eventsA
Read-only

Query the bounded, filterable audit trail of runtime decisions.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
sinceNo
event_typeNo
subject_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already establish readOnlyHint and non-destructive behavior. The description adds useful context with 'bounded' and 'filterable,' but it does not specify how events are bounded, what the default time window is, or what event types can be filtered. It adds some value beyond annotations but remains vague.

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?

One tight, front-loaded sentence with no filler. The key ideas—bounded, filterable, runtime decisions—are all present without unnecessary elaboration.

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 that all parameters are optional and an output schema exists, a short description is acceptable. However, with zero schema descriptions, the tool description could have named the available filters or mentioned the default limit to support correct invocation. It is adequate but leaves meaningful gaps.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain any of the four parameters: limit, since, event_type, and subject_id. The word 'filterable' hints at filtering, but it does not map to the actual parameter names or expected formats, leaving the agent to infer semantics entirely from parameter names.

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 states a specific verb ('Query') and resource ('bounded, filterable audit trail of runtime decisions'), making the tool's purpose unmistakable. It also naturally distinguishes this tool from the sibling planning/execution tools, none of which are audit-related.

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

Usage Guidelines3/5

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

The description implies the tool should be used when an agent needs to inspect runtime decision audit records, and no sibling tool competes for that role. However, it does not explicitly say when to use this tool versus alternatives or when not to use it.

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

list_recurring_schedulesA
Read-only

List active recurring schedules and their next occurrence.

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?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds context that results include the next occurrence, but it does not disclose whether the list is paginated, ordered, or limited in any way.

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

Conciseness5/5

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

The description is a single, compact sentence that front-loads the action and resource. Every word earns its place; there is no fluff or redundancy.

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

Completeness4/5

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

For a zero-parameter, read-only list tool with a valid output schema, the description is largely complete. The only gap is the absence of details on filtering, ordering, or pagination, which are unlikely to be 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.

Parameters4/5

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

The tool has 0 parameters and schema coverage is 100%, so there is nothing to document. The description's mention of 'active' schedules clarifies the scope of the result set, which is useful semantic context beyond the empty schema.

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 states a clear verb ('List') and resource ('active recurring schedules'), and mentions 'next occurrence', which gives the agent a precise idea of what is returned. It is distinguishable from siblings like cancel_recurring_schedule and schedule_recurring_plan, though it does not explicitly differentiate itself.

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 a read-only listing operation, which fits naturally alongside other list/get tools, but it does not state when to prefer this tool over siblings like list_scheduled_plans. There is no explicit when/when-not guidance or naming of alternatives.

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

list_scheduled_plansA
Read-only

List plans currently pending their scheduled execution time.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the agent knows this is a safe read operation. The description adds little behavioral context beyond that, but it is consistent with the annotations and the simple nature of the 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 a single, focused sentence that states the resource and the filtering condition with no wasted words. It is appropriately concise for a zero-parameter list operation.

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

Completeness5/5

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

For a simple list tool with no parameters, an output schema present, and read-only annotations, the description is complete enough. It tells the agent what will be returned — plans awaiting execution — without needing to explain return values or parameter details.

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

Parameters4/5

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

The tool has zero parameters, so the description has no parameter semantics to explain. The baseline for zero-parameter tools is 4, and nothing in the description detracts from that.

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 has a specific verb ('List') and resource ('plans') and adds a clear status qualifier ('currently pending their scheduled execution time'). This clearly distinguishes it from sibling tools like list_recurring_schedules, which target recurring schedules rather than one-time pending plans.

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 when to use it — when you need plans that have not yet reached their scheduled execution time. However, it does not explicitly mention alternatives or state when not to use it, such as distinguishing from list_recurring_schedules or listing already executed plans.

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

optimize_scenarioA
Read-only

Compute a deterministic proposal without executing physical commands.

ParametersJSON Schema
NameRequiredDescriptionDefault
scenarioYes
validate_proposalNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description reinforces this by stating no physical commands are executed. It also adds a useful behavioral trait, determinism, which is not present in the annotations. This is good added context beyond structured metadata.

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

Conciseness5/5

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

The description is a single, tightly written sentence that front-loads the core purpose and immediately adds a critical scoping constraint. Every word earns its place and there is no padding.

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

Completeness2/5

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

Although an output schema exists and annotations cover the safety profile, the tool still requires a nested scenario object with zero documented properties. The description gives no practical invocation guidance, and the relationship to validate_scenario and execute_plan is only implied. This is not enough for reliable, correct use.

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

Parameters1/5

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

Schema description coverage is 0%, and neither the scenario object nor validate_proposal is explained in the description. The agent is left without any guidance on what shape the scenario object should take or what validate_proposal controls. The description does nothing to compensate for the undocumented parameters.

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

Purpose5/5

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

The description uses a specific verb ('compute') and a clear resource ('deterministic proposal'), and explicitly distinguishes the operation from physical execution. This makes it easy to tell apart from siblings like execute_plan, schedule_plan, and validate_scenario.

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 phrase 'without executing physical commands' clearly implies a planning or proposal-only usage, which helps separate it from execute-style siblings. However, it does not explicitly state when to use this tool over validate_scenario or explain_solution, leaving some selection judgment to the agent.

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

request_approvalA
Destructive

Issue a server-authoritative approval grant for a plan requiring confirmation. A trusted host may inject an authenticated operator principal. The optional operator_token exists only for explicitly enabled local/dev compatibility mode; the caller never supplies the recorded operator identity. The returned approval_id is single-use and bound to the plan's current validation digest.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYes
bundle_digestNo
operator_tokenNo
recurrence_digestNo
validation_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate side effects (readOnlyHint=false, destructiveHint=true). The description adds valuable behavior: the grant is server-authoritative, the returned approval_id is single-use and bound to the plan's current validation digest, and operator identity can only be injected by a trusted host. No contradiction with annotations.

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

Conciseness5/5

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

The description is three sentences with no filler. It front-loads the core purpose, then appends auth/compatibility context and return-value behavior, all of which earn their place.

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?

This is a side-effectful approval tool in a broad sibling set, so an agent would benefit from more explicit routing versus validate_plan or execute_plan, and from more detail on the optional digest parameters. The output-schema presence reduces the need to explain return shape, and the single-use approval_id behavior is already covered.

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

Parameters3/5

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

Schema description coverage is 0%, so the description carries a heavier burden. It explains operator_token's special purpose and clarifies validation_digest's binding relationship, but plan_id, bundle_digest, and recurrence_digest are left mostly to inference from their names. Partial compensation, not complete.

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 states a specific action: issuing a server-authoritative approval grant for a plan requiring confirmation. This clearly distinguishes it from sibling tools like validate_plan or execute_plan, since the focus is on approval rather than validation or execution.

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 identifies when the tool applies ('for a plan requiring confirmation') and gives concrete usage guidance around operator_token, noting it is only for local/dev compatibility and that callers should never supply the recorded operator identity. It does not explicitly name alternatives, but the intended context is clear.

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

reschedule_planA
Destructive

Request a temporal revision for a pending plan. The legacy generic mutation is fail-closed; a changed time must be validated and approved again before admission.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYes
execute_atYes
schedule_revisionNo
validation_digestNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=false and destructiveHint=true, so the mutating nature is known. The description adds meaningful behavioral context beyond this: the operation is fail-closed, and changes require re-validation and re-approval before admission. This helps an agent understand that the tool may not immediately commit the change and that additional workflow steps are required.

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 short and front-loaded, with the core purpose in the first sentence and an important behavioral caveat in the second. It is not overly verbose, though terms like 'legacy generic mutation,' 'fail-closed,' and 'admission' are somewhat jargon-heavy and could be clearer.

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

Completeness2/5

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

Given four parameters, zero schema description coverage, and a destructiveHint annotation, the description is not complete enough for reliable invocation. It explains the purpose and approval workflow but leaves optional parameters such as schedule_revision and validation_digest undocumented, which may be required in certain approval contexts. The presence of an output schema helps, but the input-side gap remains material.

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

Parameters2/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 for the four parameters. The only hint is 'changed time,' which loosely maps to execute_at, but plan_id, schedule_revision, and validation_digest are left completely unexplained. This is a significant gap for an agent trying to construct a valid call.

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 core action: 'Request a temporal revision for a pending plan.' It identifies a specific resource ('pending plan') and a distinct operation ('temporal revision'), which helps separate it from scheduling, cancellation, and execution siblings. However, it does not explicitly name a sibling alternative, so it falls just short of the strongest differentiation.

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

Usage Guidelines4/5

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

The description implies when to use this tool: when a pending plan needs a time change. It also provides important workflow context by noting the legacy generic mutation is fail-closed and that a changed time must be validated and approved again, guiding the agent toward validation/approval follow-up steps. Explicit 'do not use when...' exclusions are absent, but the context is reasonably clear.

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

schedule_planA
Destructive

Schedule a previously validated/approved plan to execute at a future time, instead of immediately. The plan still goes through every existing safety check when its time arrives.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYes
execute_atYes
approval_idNo
bundle_digestNo
validation_digestYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

The description adds meaningful behavior beyond the destructiveHint annotation by stating that 'the plan still goes through every existing safety check when its time arrives'. This reassures the agent that deferring execution does not bypass safety, and it aligns with the annotation rather than contradicting it.

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?

Two sentences, no filler, and the most important operational fact (scheduling a previously approved plan for future execution) is front-loaded. Every clause earns its place.

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?

The description gives a solid high-level picture and notes the safety-check behavior, but it does not explain how to obtain or populate the required validation_digest, what approval_id/bundle_digest are for, or how this interacts with sibling tools like cancel_scheduled_plan. The presence of an output schema and annotations helps, but the parameter gap limits completeness for a 5-parameter tool.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the burden of explaining parameters, but it only implicitly maps 'future time' to execute_at and 'validated/approved' to validation_digest/approval_id. It provides no explicit meaning for plan_id, validation_digest, approval_id, or bundle_digest, leaving required parameters unexplained.

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

Purpose5/5

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

The description uses a specific verb ('Schedule'), names the resource ('a previously validated/approved plan'), and states the key distinction ('at a future time, instead of immediately'). This clearly distinguishes it from immediate execution via execute_plan and other sibling scheduling tools.

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 explicitly conditions usage on the plan being 'previously validated/approved' and contrasts with 'instead of immediately', giving the agent a clear contextual trigger. It does not explicitly name alternative tools or exclusions, but the use case is well implied.

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

schedule_recurring_planA
Destructive

Schedule a plan's commands to run repeatedly at a fixed local time, optionally restricted to specific weekdays. Creating a standing automation is its own authority act, distinct from running the commands once: if the template plan currently requires confirmation, an approval_id from request_approval is required to create the schedule at all. Every occurrence is still independently revalidated against live state before it executes; an occurrence requiring confirmation at run time is skipped and audited, never auto-approved, and recurrence continues to its next scheduled time. An optional expires_at bounds how long the automation stays active.

ParametersJSON Schema
NameRequiredDescriptionDefault
plan_idYes
timezoneYes
expires_atNo
approval_idNo
time_of_dayYes
days_of_weekNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the annotations, the description discloses that creating a standing automation is an authority act, that approval may be required at creation time, that each occurrence is revalidated, and that confirmation-requiring occurrences are skipped and audited rather than auto-approved. This is exactly the behavioral nuance an agent needs for a destructiveHint=true 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 dense but every sentence earns its place: purpose, approval/authority, runtime safety behavior, and expiry. It is front-loaded with the core action and does not waste words on schema-restatable details.

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

Completeness5/5

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

For a complex, destructive, 6-param tool, the description covers the essential context: creation-time authority, approval requirements, recurring run-time validation, skip/audit behavior, and optional expiry. An output schema exists, so return-value documentation is not the description's burden.

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 carry parameter meaning. It does: plan_id maps to 'a plan's commands,' time_of_day/timezone to 'fixed local time,' days_of_week to optional weekday restrictions, approval_id to the request_approval flow, and expires_at to how long the automation stays active. Exact formats like time_of_day syntax are not specified, but the functional semantics are all conveyed.

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 opens with a specific verb and resource: 'Schedule a plan's commands to run repeatedly at a fixed local time, optionally restricted to specific weekdays.' This clearly distinguishes recurring scheduling from one-off execution and from the sibling tool schedule_plan.

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 gives clear context: it is for standing automations, not one-time runs, and it explains when approval_id is required. It does not explicitly name an alternative tool for one-time execution, but the distinction from running commands once is clear enough to guide selection.

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

validate_commandB
Read-only

Validate one semantic command without invoking an adapter.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYes
agent_request_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds the useful behavioral detail that no adapter is invoked, which clarifies that validation is non-executing. It does not disclose what happens on failure or whether validation has side effects beyond the annotation guarantees.

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

Conciseness5/5

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

A single sentence with no filler. The core purpose and the critical non-execution qualifier are both front-loaded and clearly expressed.

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

Completeness2/5

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

The tool has nested object parameters, no schema-level parameter descriptions, and several sibling validation/execution tools. The description gives only the core idea and leaves the agent without enough context to construct a valid command or choose confidently among siblings.

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

Parameters2/5

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

The description does not explain the command object's structure, the meaning of 'semantic command', or the optional agent_request_id. With 0% schema description coverage, the description needed to compensate but provides almost no parameter-level guidance.

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 states a specific verb ('validate'), a resource ('one semantic command'), and a key behavioral qualifier ('without invoking an adapter'). It clearly separates validation from execution, though it does not explicitly distinguish itself from sibling validation tools like validate_plan or validate_scenario.

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 phrase 'without invoking an adapter' implies this is a dry-run validation rather than an execution, which gives the agent a sense of when to use it. However, it does not explicitly state when to prefer this over validate_plan, validate_scenario, or execute_plan, leaving the routing partially to inference.

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

validate_planC
Read-only

Validate a semantic plan and return its policy decisions and digest.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNopreview
planYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

The readOnlyHint and destructiveHint annotations already convey that this is a safe, non-destructive operation. The description adds minimal behavioral context beyond validation semantics and the return of policy decisions/digest, but does not explain any validation side effects or constraints. With annotations present, this is adequate but not rich.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It covers the main purpose and return value efficiently, though it omits additional guidance that could improve usability.

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

Completeness2/5

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

With an output schema present, return values do not need elaboration, and annotations cover safety. However, the description leaves the 'mode' parameter unexplained and gives no guidance about what constitutes a semantic plan or how this relates to sibling validation/execution tools. For a tool with 0% schema description coverage and a complex nested plan object, this is incomplete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description carries the burden of explaining parameters. It indicates the 'plan' is a semantic plan but does not describe the 'mode' parameter or any expected plan structure. This is insufficient for an agent to correctly populate the arguments.

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 uses a specific verb ('Validate') and resource ('a semantic plan') and states the expected output ('policy decisions and digest'). It clearly identifies what the tool does, though it does not explicitly distinguish it from sibling validate tools like validate_command or validate_scenario.

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?

There is no guidance on when to use this tool versus alternatives such as validate_command, validate_scenario, execute_plan, or schedule_plan. The context implies it is for validating plans before execution, but no explicit when/when-not guidance or alternatives are provided.

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

validate_scenarioB
Read-only

Validate an optimization scenario against canonical devices and capabilities.

ParametersJSON Schema
NameRequiredDescriptionDefault
scenarioYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the description's read-only nature is consistent. The description adds that validation checks against canonical devices and capabilities, which clarifies the operation's basis, but does not describe failure behavior, response semantics, or side effects beyond annotations.

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

Conciseness5/5

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

A single sentence with no filler. The key action and subject are front-loaded, and every word contributes meaning.

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?

The core validation behavior is stated, and an output schema plus read-only annotations are present, reducing the burden on the description. However, the description lacks guidance on how this validation relates to sibling tools and what the scenario object must contain, so it is adequate but not fully complete.

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

Parameters2/5

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

The sole parameter, 'scenario', is an open object with additionalProperties=true and no description in the schema. The description adds that it is an 'optimization scenario' and that validation targets 'canonical devices and capabilities', but it does not explain required fields or expected structure, leaving 0% schema coverage undercompensated.

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 uses a specific verb ('Validate') and resource ('optimization scenario') and adds the validation basis ('against canonical devices and capabilities'). It distinguishes the tool from siblings like validate_command and validate_plan by the resource type, but does not explicitly contrast them.

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?

No guidance is given on when to use this tool versus validate_plan, validate_command, optimize_scenario, or explain_solution. There are no prerequisites, exclusions, or alternative routing hints.

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.

  1. 20 tool updatesv0.1.0
    • First observedcancel_recurring_schedule
    • First observedcancel_scheduled_plan
    • First observedcommit_or_schedule_bundle
    • First observeddiscover_devices
    • First observedexecute_plan
    • First observedexplain_solution
    • First observedget_energy_context
    • First observedget_state
    • First observedinspect_commissioning
    • First observedlist_audit_events
    • First observedlist_recurring_schedules
    • First observedlist_scheduled_plans
    • First observedoptimize_scenario
    • First observedrequest_approval
    • First observedreschedule_plan
    • First observedschedule_plan
    • First observedschedule_recurring_plan
    • First observedvalidate_command
    • First observedvalidate_plan
    • First observedvalidate_scenario

TDQS

B3.2/5.0

Scored across 20 tools

Disambiguation3/5

Most tools target distinct lifecycle stages, but execute_plan, schedule_plan, and commit_or_schedule_bundle have overlapping boundaries since 'bundle' is never clearly separated from 'plan.' The validate_* and schedule/cancel pairs are otherwise reasonably distinguishable with the help of their descriptions.

Naming Consistency4/5

The set consistently uses snake_case verb_noun names such as get_state, validate_plan, list_scheduled_plans, and cancel_recurring_schedule. The main deviation is commit_or_schedule_bundle, which combines two actions in one name, but overall the pattern is predictable.

Tool Count3/5

At 20 tools, the server sits in the heavier range, and the plan/bundle/schedule/recurring variations add conceptual surface area even if the domain is broad. Most tools earn their place for a full energy-management workflow, but the count is borderline and would benefit from consolidation.

Completeness4/5

The surface covers the core lifecycle well: validation, approval, execution, one-time scheduling, recurring schedules, cancellation, audit, and optimization scenarios. Minor gaps exist, such as no direct way to retrieve a single plan/approval or inspect raw capabilities, but agents can work around these.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    Enables control and management of smart home devices across multiple rooms through specialized MCP servers. Supports lights, thermostats, fans, and ovens with room-specific rules and automatic persistence.
    5
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    A powerful MCP server that enables AI assistants to discover, commission, and control Matter-compatible smart home devices through a standardized interface.
    20 npm
    8
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables control of ECHONETLite home automation devices like air conditioners and sensors via MCP, supporting HVAC management and real-time monitoring.
    14
    1
    MIT