Skip to main content
Glama

pylips-mcp

tests License: MIT Python 3.10+

MCP server for controlling Philips Android TV via the JointSpace API and ADB.

Exposes 14 tools covering power, volume, ambilight, app launching, and YouTube playback. Handles the TP Vision SHA1 certificate chain transparently.

Demo

MCP client: the 16 tools, then get_state on the real TV

Recorded against the real TV with docs/demo/record.sh: a minimal MCP client (docs/demo/mcp_demo.py) starts the server over stdio with TV_HOST/TV_USER/TV_PASS in the environment, lists the tools and calls get_state (read-only). Credentials never appear on screen.

Related MCP server: Smart Home Control MCP Server

Tools

Outil

Rôle

power_on

Allume la TV Philips

power_off

Eteint la TV Philips (standby)

screen_off

Eteint l'ecran de la TV tout en gardant le son actif (mode musique). Note: fonctionne principalement en source HDMI/TV, limite en mode Android.

screen_on

Rallume l'ecran de la TV apres un screen_off

volume_up

Augmente le volume de la TV (default +5)

volume_down

Baisse le volume de la TV (default -5)

volume_set

Regle le volume a un niveau specifique

mute

Coupe ou remet le son de la TV

ambilight_on

Active l'Ambilight de la TV

ambilight_off

Desactive l'Ambilight de la TV

ambilight_mode

Change le mode Ambilight

ambilight_color

Met l'Ambilight sur une couleur fixe (RVB 0-255), luminosite optionnelle

list_apps

Liste les applications disponibles sur la TV

launch_app

Lance une application sur la TV

youtube_video

Lance YouTube sur une video specifique (URL youtube ou ID de video)

get_state

Retourne l'etat actuel de la TV : powerstate (On/Standby), volume, muted, ambilight_on, ambilight_mode

send_key

Envoie une touche de telecommande

YouTube ID extraction

extract_video_id is deliberately duplicated in catt-mcp (cast_youtube, Chromecast with start position and dual-screen sync). Both servers stay installable on their own; each one tests its copy with the same table of cases (tests/test_youtube_id.py). Decision recorded on 2026-09-20.

Requirements

  • Python 3.10+

  • JointSpace credentials (user + password) from a one-time pairing with the TV (see Setup); the server itself talks to the TV API directly and does not need pylips at runtime

  • Philips Android TV with JointSpace API enabled (2016+ models)

  • ADB enabled on the TV (for YouTube deep linking)

  • wakeonlan Python package (optional, for Wake-on-LAN)

Installation en une ligne

uvx pylips-mcp                 # depuis PyPI ; avant publication : uvx --from git+https://github.com/amineutron/pylips-mcp pylips-mcp

Configuration Claude Desktop / Claude Code (mcpServers) :

{ "pylips": { "command": "uvx", "args": ["pylips-mcp"], "env": { "TV_HOST": "192.0.2.10", "TV_USER": "...", "TV_PASS": "..." } } }

Setup

1. Pair with your TV

Pairing is done once, to get a JointSpace user and password. Use the pairing tool of eslavnov/pylips from a clone of that repository (the pylips package on PyPI is an unrelated project: do not pip install pylips), and follow its README with your TV's IP. pylips-mcp does not need pylips afterwards.

Keep the user and password the pairing gives you: they go into config.yaml (step 3) or TV_USER / TV_PASS.

2. Install dependencies

pip install pylips-mcp        # or: uvx pylips-mcp

3. Configure

Copy config.example.yaml to config.yaml and fill in your TV credentials:

tv:
  host: "192.168.0.XX"
  user: "your_user"
  pass: "your_password"

4. Run

pylips-mcp                    # installed (pip, uvx) ; `pylips-mcp --help` lists the settings
python -m pylips_mcp          # same thing, from any environment where the package is installed
python server.py              # from a clone, without installing (thin launcher, code in pylips_mcp/)

Or set via environment variables:

TV_HOST=192.168.0.XX TV_USER=xxx TV_PASS=xxx pylips-mcp

The code lives in the pylips_mcp package (with the TP Vision certificate), so it can be installed next to other MCP servers without module name clashes.

Claude Desktop Configuration

{
  "mcpServers": {
    "philips-tv": {
      "command": "python3",
      "args": ["/path/to/pylips-mcp/server.py"],
      "env": {
        "TV_HOST": "192.168.0.XX",
        "TV_USER": "your_user",
        "TV_PASS": "your_password"
      }
    }
  }
}

SSL Note

Philips TVs present a TP Vision certificate chain from 2015 signed with SHA1. Modern OpenSSL and the Fedora/RHEL crypto policy reject SHA1 signatures, so a classic CA verification is impossible, even with the bundled chain and SECLEVEL=0.

What this server does instead, honestly:

  • CA verification is disabled (it cannot succeed);

  • the SHA-256 fingerprint of the certificate presented by the TV must match the leaf certificate shipped in tpvision_ca.pem (checked by urllib3 after the TLS handshake, so a man-in-the-middle cannot impersonate the TV without the private key). Verified against a real 55OLED705 (JointSpace 6, port 1926);

  • PYLIPS_TLS_FINGERPRINT=<sha256 hex> pins another TV, PYLIPS_TLS_PIN=0 disables pinning and logs a warning.

tpvision_ca.pem is the public TP Vision chain (leaf restfultv.tpvision.com, intermediate ca.tpvision.com, root www.tpvision.com, valid until 2042), extracted from a TV with openssl s_client -showcerts. It contains no secret.

License

MIT

Volume en HDMI ARC

Quand la TV est reliee a un ampli en HDMI ARC, le son ne sort pas de la TV : agir sur son volume n'a aucun effet audible. Si denon.host est renseigne dans la configuration, volume_up, volume_down, volume_set et mute sont donc rediriges vers l'ampli Denon ; sinon ils passent par l'API de la TV.

Pour piloter l'ampli directement (entrees, extinction, statut), utiliser denon-mcp.

Part of the Lyra ecosystem

Dépôt

Rôle

lyra

assistant DevOps vocal, local par défaut (AGPL-3.0)

fedora-agents

MCP : machines virtuelles KVM et sauvegardes

mcp-tracking

MCP + API + tableau de bord des tâches longues

neutroncore

hub PWA du homelab

hue-mcp

MCP Philips Hue (fork de ThomasRohde/hue-mcp)

pylips-mcp

MCP TV Philips

denon-mcp

MCP ampli Denon

catt-mcp

MCP Chromecast et DLNA

Available Tools

17 tools
ambilight_colorB
Idempotent

Met l'Ambilight sur une couleur fixe (RVB 0-255), luminosite optionnelle

ParametersJSON Schema
NameRequiredDescriptionDefault
bYesBleu (0-255)
gYesVert (0-255)
rYesRouge (0-255)
brightnessNoLuminosite (0-255) ; par defaut celle de la couleur

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already disclose that the operation is non-read-only, idempotent, and non-destructive, so the description does not need to restate those traits. It adds the fixed-color and optional-brightness behavior, but does not explain side effects like whether this switches modes or requires Ambilight to be on. There is no contradiction with the annotations.

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

Conciseness4/5

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

The description is a single short, front-loaded sentence with no filler. The phrasing is slightly awkward and lacks a clear imperative verb, but it is compact and efficiently states the action and key parameters.

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?

For a simple tool with four scalar parameters, full schema coverage, and safety annotations, the description is mostly adequate. However, it does not clarify the relationship to ambilight_mode or whether setting a color also affects the on/off state, leaving a meaningful usage gap.

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 100%, so r, g, b, and brightness are already fully documented with ranges. The description's mention of 'RVB 0-255' and 'luminosite optionnelle' adds no 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.

Purpose4/5

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

The description clearly identifies the resource (Ambilight) and the action: setting it to a fixed RGB color with optional brightness. The phrase 'couleur fixe' helps distinguish this from mode-based or on/off siblings, though it does not name them explicitly.

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

Usage Guidelines3/5

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

The description implies it is meant for fixed-color Ambilight settings, which helps rule out ambilight_mode, ambilight_on, and ambilight_off. However, it gives no explicit when-to-use or when-not-to-use guidance and does not mention any alternatives.

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

ambilight_modeC
Idempotent

Change le mode Ambilight

ParametersJSON Schema
NameRequiredDescriptionDefault
modeYesMode Ambilight

TDQS

C2.9/5.0
Behavior2/5

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

The description only restates that the mode changes, while the annotations already provide idempotentHint=true, readOnlyHint=false, and destructiveHint=false. It adds no extra behavioral context, such as whether the change applies immediately, requires Ambilight to be on, or has side effects on current playback.

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 short sentence with no filler, making it easy to parse. It could have included a little more context about the mode values, but for a one-parameter setter this level of brevity is effective.

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?

For a simple setter with an enum parameter and no output schema, the description plus schema is mostly sufficient. However, it omits any prerequisite or side-effect context, such as whether the tool should only be used while Ambilight is active, which would make it fully complete.

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 100%, so the mode parameter and its enum values are fully documented in the input schema. The description itself adds no semantic detail beyond the schema, matching the baseline for high schema coverage.

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 ('Change') with a clear resource ('le mode Ambilight'), so an agent can identify this as a tool that sets the Ambilight mode. It does not explicitly differentiate from sibling tools like ambilight_on or ambilight_off, but the word 'mode' signals that this is about selecting a mode rather than toggling power.

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

Usage Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives such as ambilight_on, ambilight_off, or get_state. The agent must infer usage from the tool name and sibling context, since no conditions or exclusions are provided.

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

ambilight_offA
Idempotent

Desactive l'Ambilight de la TV

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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

The description states the basic state-changing behavior and is consistent with annotations: readOnlyHint=false, idempotentHint=true, and destructiveHint=false. It adds no extra behavioral context beyond the direct action, such as scope (only Ambilight vs. entire TV) or side effects, but it does not contradict any annotation.

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 efficient clause with no filler or repetition. It conveys the complete operation in minimal words, which is ideal for a simple parameterless command.

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 trivial no-parameter tool with helpful annotations, the description is nearly complete: it says what the tool does and the name disambiguates it among siblings. A brief note clarifying that this only affects Ambilight rather than the TV's main power would be nice but is not essential.

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

Parameters4/5

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

The tool has zero parameters and 100% schema description coverage, so there is no parameter information for the description to add. This is the appropriate baseline for a parameterless tool.

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 ('Desactive') and a clear resource ('l'Ambilight de la TV'), making the tool's function immediately unambiguous. It also naturally contrasts with sibling tools like ambilight_on and ambilight_mode, so an agent can distinguish it without opening schemas.

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 about when to use this tool versus alternatives such as power_off, screen_off, or ambilight_mode. The intended usage is only implied by the tool name and the one-line description, with no explicit exclusions or selection criteria.

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

ambilight_onA
Idempotent

Active l'Ambilight de la TV

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

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

The description only states what the tool does and adds no behavioral context beyond the annotations. It does not mention effects, limitations, or prerequisites, though the annotations already signal idempotence and non-destructive behavior. Since there is no contradiction and the annotations cover the basic safety profile, it is not a 1, but the description itself contributes little transparent detail.

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, directly worded declarative sentence with no filler. It is appropriately sized for a tool with no parameters and a simple action.

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 no-argument command, the description, empty schema, and annotations are nearly sufficient to invoke the tool correctly. It lacks only an explicit note about how it relates to ambilight_mode or ambilight_off, but the action itself is unambiguous.

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

Parameters4/5

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

There are zero parameters in the schemaholen, so no parameter documentation is needed. The baseline for zero-parameter tools is 4, and the description correctly omits irrelevant parameter details.

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

Purpose5/5

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

The description uses a specific verb ('Active') and a specific resource ('l'Ambilight de la TV'), clearly indicating that this tool turns on the TV's Ambilight feature. It is easily distinguished from siblings like power_on, ambilight_off, and ambilight_mode because it names the exact feature and direction of action.

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 provided about when to use this tool versus alternatives such as ambilight_mode or power_on. The context is only implied by the tool name, but there is no explicit 'use this when...' or exclusion of alternatives.

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

get_stateA
Read-onlyIdempotent

Retourne l'etat actuel de la TV : powerstate (On/Standby), volume, muted, ambilight_on, ambilight_mode

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering side-effect safety. The description adds value by specifying the exact state fields returned, including the powerstate enum (On/Standby), which is useful behavioral context beyond the annotations.

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

Conciseness5/5

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

A single, front-loaded sentence contains all essential information: the action, the target, and the returned fields. There is no redundant filler or repetition of the tool name.

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 zero-parameter read-only tool with no output schema, the description is fully sufficient. It states what the tool returns and the key fields, so an agent can understand the result without additional documentation.

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)Skip, so the input schema carries no semantic burden. The baseline for a zero-parameter tool is 4, and the description correctly focuses on the output rather than inventing parameter details.

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

Purpose5/5

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

The description uses a specific verb ('Retourne') and a concrete resource ('etat actuel de la TV'), and lists the exact state fields returned: powerstate, volume, muted, ambilight_on, ambilight_mode. This clearly distinguishes it from sibling action tools such as power_on, volume_up, and mute.

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

Usage Guidelines3/5

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

The description implies usage for retrieving current TV state but does not explicitly state when to prefer it over alternatives. The sibling names are clearly mutating commands, making the distinction inferable, but there is no overt when-to-use or when-not-to-use guidance.

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

launch_appC

Lance une application sur la TV

ParametersJSON Schema
NameRequiredDescriptionDefault
appYesNom de l'application

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already convey mutability and open-world effects, but the description adds no behavioral detail beyond the bare fact of launching. It does not disclose whether the TV must already be powered on, whether an already-open app is brought to the foreground, or what happens if the requested app is unavailable.

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 short sentence with no filler, and the essential action is front-loaded. Nothing could be removed without losing content.

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 state-changing tool with no output schema, the description leaves important operational context unspecified, such as preconditions related to TV power or behavior for unsupported apps. The presence of power_on as a sibling makes the missing coordination guidance particularly notable.

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 fully documents the only parameter with 100% coverage ("Nom de l'application") and an enum restricting values. The description adds no additional parameter meaning, so the baseline 3 applies.

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 ("Lance") and resource ("une application sur la TV"), making the core action clear. It does not explicitly differentiate itself from sibling youtube_video, which may also launch something on the TV, but the enum in the schema disambiguates the supported targets.

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 about when to choose launch_app over alternatives such as list_apps, youtube_video, or power_on. The intended use case is only implied by the tool name and one-line description.

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

list_appsB
Read-onlyIdempotent

Liste les applications disponibles sur la TV

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, covering the safety profile. The description adds no further behavioral context, such as what 'available' means, whether it returns details like IDs or just names, or any rate limits. Since annotations carry the safety burden and the description is consistent, a 3 is appropriate.

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, short sentence that conveys the core purpose without any fluff. It is perfectly concise and front-loaded, with no redundant information.

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?

For a simple list tool with no parameters and no output schema, the description states what it does but omits details about the return value (e.g., format, whether it returns names or IDs, sorting, or pagination). Since there is no output schema to fill this gap, the agent may be left guessing about the response structure, which is a notable omission for a tool whose entire purpose is to produce a list.

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

Parameters4/5

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

The tool has zero parameters, and the schema coverage is trivially 100%. Per the baseline for 0-parameter tools, a score of 4 is given. The description does not need to elaborate on parameters since none exist, and it adds no extra semantic meaning beyond the schema (which is empty).

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 action ('Liste') and the resource ('les applications disponibles sur la TV'), making the tool's purpose unambiguous. It implicitly distinguishes from launch_app by focusing on listing rather than launching, though it does not explicitly call out that distinction.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention that it should be used to discover apps before launching them, nor does it contrast with launch_app or any other sibling. The agent is left to infer usage from the name and context.

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

muteA
Idempotent

Coupe ou remet le son de la TV

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior1/5

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

The description reveals a toggle behavior: each call cuts or restores sound depending on current state. This directly contradicts idempotentHint=true, since repeating a toggle does not produce the same effect every time. Therefore, the description contradicts an annotation.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler or redundancy. For a zero-argument command, it communicates the full action efficiently.

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?

For a simple no-argument, no-output tool, the description is nearly sufficient. However, the idempotency conflict leaves an agent unsure whether repeated calls are safe or will toggle sound off and on, which is a significant gap in predicting behavior.

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

Parameters4/5

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

There are zero parameters, so no parameter semantics are needed. The description adds no parameter detail, but that is appropriate because the schema is empty and there is nothing to document.

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 clear, specific verbs ('coupe ou remet') and identifies the exact resource ('le son de la TV'). Its toggle meaning is distinct from sibling volume controls, so an agent can tell it apart without opening the schema.

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 intended use is implied: call this when you want to mute or restore TV sound rather than incrementally adjust volume. However, it offers no explicit when/when-not guidance or named alternatives among the volume siblings.

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

power_offA
Idempotent

Eteint la TV Philips (standby)

ParametersJSON Schema
NameRequiredDescriptionDefault

No 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=false, destructiveHint=false, and idempotentHint=true, so the safety profile is known. The description adds a useful behavioral nuance by specifying standby rather than a hard power cut, but provides no further side-effect detail.

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 short phrase that conveys the action, target, and resulting state with no filler. It is appropriately sized for a parameterless command.

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 parameterless command with annotations covering mutability, idempotence, and destructiveness, the description provides enough context to invoke the tool correctly. No output schema is present, but none is essential for a fire-and-forget power command.

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

Parameters4/5

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

The tool has zero parameters and the input schema already covers this fully (100% coverage). The baseline of 4 applies because there are no parameter semantics for the description to clarify.

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 names a specific action ('Eteint' = turns off), the exact resource (the Philips TV), and the resulting state (standby). This clearly distinguishes it from siblings like power_on and screen_off.

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 intended use is implied by the action ('turn off the TV'), but no explicit guidance is given about when to prefer this over screen_off or power_on. There are no prerequisites to document since it takes no parameters.

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

power_onA
Idempotent

Allume la TV Philips

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already convey readOnlyHint=false, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds no extra behavioral context beyond the action itself, which is acceptable for a trivial 0-parameter operation.

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, short sentence that is perfectly front-loaded and contains no fluff. It is as concise as possible while remaining informative.

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

Completeness5/5

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

For a tool with no parameters, no output schema, and a simple idempotent action, the description is complete. The agent knows exactly what the tool does, and nothing else is needed to invoke it correctly.

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

Parameters4/5

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

There are zero parameters, so there is nothing to document. The baseline of 4 applies since the schema and description are both empty on this front.

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 'Allume la TV Philips' ('Turns on the Philips TV') states a specific verb and resource, clearly distinguishing it from siblings like power_off and screen_on. The meaning is unambiguous even though it is in French.

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 provided about when to use power_on versus alternatives such as screen_on or power_off. The intended usage is implied by the name and description, but no explicit context or exclusions are given.

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

screen_offA
Idempotent

Eteint l'ecran de la TV tout en gardant le son actif (mode musique). Note: fonctionne principalement en source HDMI/TV, limite en mode Android.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=false, destructiveHint=false, and idempotentHint=true. The description adds value beyond annotations by explaining the exact behavioral effect (keeps sound active) and operational limitations (source-dependent). 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 one clear sentence followed by a concise note. Both statements earn their place: the first defines the core behavior, the second provides a practical operating constraint. No filler 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, no-output-schema command, the description covers the primary effect, the auxiliary behavior (sound remains), and a key environmental limitation. It could be slightly more explicit about when to prefer this over power_off or screen_on, but overall it is sufficiently complete for correct invocation.

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

Parameters4/5

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

The tool has zero parameters, and schema coverage is trivially 100%. Per the baseline rule for 0-parameter tools, a score of 4 is appropriate; the description correctly focuses on behavior rather than parameter details, as none exist.

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

Purpose5/5

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

The description clearly states the tool turns off the TV screen while keeping sound active, using a specific verb and resource. It distinguishes itself from siblings like power_off and screen_on by explicitly mentioning the sound stays on, and the note about HDMI/TV versus Android mode adds more scoping.

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 it (music mode, screen off but audio still needed) and provides clear context through the source limitation note. It does not explicitly name alternative tools or say 'use this instead of X', but the purpose and limitation give reasonable guidance.

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

screen_onA
Idempotent

Rallume l'ecran de la TV apres un screen_off

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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

Annotations already declare idempotentHint=true, readOnlyHint=false, and destructiveHint=false, so the safety profile is covered. The description adds the precondition that the tool re-lights the screen after screen_off, which is useful but does not elaborate on state or failure behavior. There is 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.

Conciseness5/5

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

The description is a single short sentence that communicates the action and precondition without waste or redundant restatement of the tool name.

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 parameterless command with annotations covering idempotence and destructiveness, the description provides the key precondition. It does not explicitly route around power_on, but the sibling list plus 'screen' scope make this sufficient for correct invocation.

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

Parameters4/5

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

The input schema is empty with 0 parameters, so there is nothing for the description to add. The schema coverage is complete, and the tool needs no parameter documentation.

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

Purpose5/5

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

The description states a concrete action ('Rallume l'ecran de la TV') and ties it to a sibling command ('apres un screen_off'), identifying screen-level scope and distinguishing it from power_on/power_off. An agent can tell exactly what this tool targets.

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 phrase 'apres un screen_off' gives an explicit condition for when the tool is appropriate, but it does not explicitly say when not to use it or mention power_on as the alternative for full power-on. Context is clear, exclusions are absent.

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

send_keyB

Envoie une touche de telecommande

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesTouche a envoyer (ex: Home, Back, Play, Pause, Stop)

TDQS

B3.2/5.0
Behavior3/5

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

Annotations indicate readOnlyHint=false, so the tool is known to modify state. The description adds no further behavioral context, such as error handling on invalid keys, prerequisites (e.g., device must be on), or side effects. Since annotations already cover mutation, the description provides minimal additional transparency.

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 is front-loaded with the action. It is not verbose and serves the basic purpose, though it could include a brief usage note without sacrificing conciseness.

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 is simple, but the description lacks guidance on when to use it relative to specific key-handling siblings, and does not address error conditions or return behavior (though no output schema exists). Given the availability of specific tools, the description should clarify its role to be complete.

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 input schema fully describes the 'key' parameter with examples ('Home, Back, Play, Pause, Stop'), and schema coverage is 100%. The description itself does not add extra semantic meaning beyond the schema, so it does not need to compensate.

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 'Envoie une touche de telecommande' (Sends a remote control key) clearly identifies the action (send) and resource (key). It is distinct from siblings like power_on or volume_up, which target specific functions, but it does not explicitly state that it handles generic keys not covered by those tools.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus the specific sibling tools (power_on, volume_up, etc.). It does not mention that specific key tools should be preferred for those functions, or that this tool is for arbitrary keys. The agent is left to infer the appropriate context.

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

volume_downB

Baisse le volume de la TV (default -5)

ParametersJSON Schema
NameRequiredDescriptionDefault
stepNoDecrement (default 5)

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already indicate this is a mutating operation (readOnlyHint=false) and not destructive. The description adds little beyond the basic action. It does not disclose side effects, rate limits, or the actual default behavior, and it contains a discrepancy with the schema default (says -5, schema says 5). This is not a contradiction with annotations but fails to provide useful extra transparency.

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

Conciseness4/5

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

The description is a single, concise sentence that front-loads the core action. It is efficient, though the incorrect default value detracts from its quality.

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 simple tool with one optional parameter and no output schema, the description is mostly sufficient, but the erroneous default and lack of clarification about step semantics (e.g., whether negative values are allowed) leave gaps. The misleading default is a critical omission.

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 100%, so the parameter is documented. However, the description incorrectly states the default as -5 while the schema says 5, which actively misleads. This misinformation is worse than providing no additional context, so the score is below the baseline.

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 verb 'Baisse' (lowers) plus the resource 'volume de la TV' clearly states the action. It is easily distinguishable from sibling tools like volume_up (raises) and volume_set (sets a specific value). The purpose is unambiguous.

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

Usage Guidelines2/5

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 volume_up, volume_set, or mute. It simply states the action without any context or exclusions, leaving the agent to infer usage.

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

volume_setB
Idempotent

Regle le volume a un niveau specifique

ParametersJSON Schema
NameRequiredDescriptionDefault
levelYesNiveau de volume (0-60)

TDQS

B3.4/5.0
Behavior2/5

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

The description adds no behavioral detail beyond the annotations: it does not say whether setting volume unmutes, whether it accepts out-of-range values, or what side effects apply. Annotations already convey idempotence and non-read-only status, but the description itself carries no extra behavioral context.

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

Conciseness5/5

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

A single clear sentence that front-loads the operation and resource. It is appropriately sized for a simple one-parameter tool.

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

Completeness4/5

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

For a simple tool with a fully documented schema and helpful annotations, the description is nearly sufficient. It lacks only nuance about interaction with mute or the meaning of 'level' in the broader state model, but the core call is complete.

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 coverage is 100% and the level parameter is documented with its 0-60 range. The description only repeats the idea of a specific level, adding no meaning beyond the 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 specific action ('Regle le volume') and target ('a un niveau specifique'), making it clear this is an absolute volume setter rather than a relative adjustment. It distinguishes itself from volume_up/volume_down by the word 'specifique', though it does not explicitly name the alternatives.

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?

Usage is implied: use this tool when you want a specific absolute volume level, versus volume_up/volume_down for increments. There is no explicit when/when-not guidance or named alternative, so context must be inferred.

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

volume_upB

Augmente le volume de la TV (default +5)

ParametersJSON Schema
NameRequiredDescriptionDefault
stepNoIncrement (default 5)

TDQS

B3.3/5.0
Behavior2/5

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

Annotations already indicate readOnlyHint=false, openWorldHint=true, idempotentHint=false, and destructiveHint=false, covering basic safety traits. The description adds no extra behavioral context (e.g., effect on volume limits, whether repeated calls accumulate, or any prerequisites), so it contributes minimal value beyond the annotations.

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

Conciseness5/5

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

A single, front-loaded sentence conveys the action and default increment with zero waste. The structure is optimal for quick comprehension.

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?

For a simple tool with one optional parameter and no output schema, the description is mostly sufficient. However, it lacks guidance on how to choose this tool over siblings, which is relevant given the similar volume-related tools available. The absence of usage context slightly undermines completeness.

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 coverage is 100% with a clear description for the step parameter. The description merely restates the default value without adding new semantics, so it meets the baseline but does not enhance understanding of parameter behavior or constraints.

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

Purpose5/5

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

The description clearly states the verb (augmenter) and resource (TV volume), and specifies the default increment (+5). It naturally distinguishes from siblings like volume_down, volume_set, and mute, making the tool's purpose unambiguous.

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 provided on when to use this tool versus alternatives. The description does not mention, for instance, using volume_set for precise values or mute for toggling silence, leaving the selection entirely to the agent's inference from the name and schema.

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

youtube_videoA

Lance YouTube sur une video specifique (URL youtube ou ID de video)

ParametersJSON Schema
NameRequiredDescriptionDefault
videoYesURL YouTube (youtube.com/watch?v=xxx, youtu.be/xxx) ou ID de video (11 caracteres)

TDQS

A4/5.0
Behavior3/5

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

Annotations already indicate the tool is not read-only, not idempotent, and not destructive. The description adds no further behavioral context (e.g., that playback may replace current media, or that YouTube must be installed). It does not contradict annotations, and the bar is lower since annotations are present, but the description adds no extra value beyond the plain action.

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, concise sentence that gets straight to the point. No filler or redundant phrasing; it is appropriately compact for the simplicity of the operation.

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 one-parameter tool with no output schema, the description and schema together fully specify how to call it. It lacks only minor details like behavior on invalid URLs, but those are not essential for correct invocation. The overall context is sufficient for an agent to use the tool effectively.

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 100%, and the tool description merely restates the parameter format already given in the schema ('URL youtube ou ID de video'). No additional meaning, constraints, or examples are provided, so the description does not go beyond the schema's own documentation.

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

Purpose5/5

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

The description states a specific action ('Lance YouTube sur une video specifique') with a clear resource (YouTube video) and specifies the input format (URL or ID). This is unambiguous and distinguishes the tool from the sibling device-control tools, none of which target video playback specifically.

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 purpose is clear enough that an agent knows when to use it: whenever a specific YouTube video needs to be launched. There are no conflicting sibling tools for playing videos, so no alternative is needed. While explicit 'when not to use' guidance is absent, the context is self-evident given the tool's unique role.

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. 1 tool updatev0.4.0
    • Addedambilight_color
  2. 16 tool updatesv0.2.1
    • First observedambilight_mode
    • First observedambilight_off
    • First observedambilight_on
    • First observedget_state
    • First observedlaunch_app
    • First observedlist_apps
    • First observedmute
    • First observedpower_off
    • First observedpower_on
    • First observedscreen_off
    • First observedscreen_on
    • First observedsend_key
    • First observedvolume_down
    • First observedvolume_set
    • First observedvolume_up
    • First observedyoutube_video

TDQS

A3.5/5.0

Scored across 17 tools

Disambiguation4/5

Most tools map cleanly to distinct TV functions such as power, volume, screen, apps, and Ambilight. However, the four Ambilight tools—especially ambilight_mode versus ambilight_color and ambilight_on/off—could cause some selection confusion.

Naming Consistency4/5

The names are mostly consistent snake_case verb_noun style (power_on, volume_set, list_apps, send_key). Minor deviations like ambilight_color, ambilight_mode, and youtube_video are noun-style rather than verb-led, but the overall pattern remains readable.

Tool Count4/5

17 tools is slightly above the ideal 3-15 range but is reasonable for a smart TV control server that covers power, volume, screen, Ambilight, apps, media, and remote input. No tool feels redundant or unnecessary.

Completeness4/5

The toolset covers the main smart-TV workflows: power management, volume control, muting, screen toggling, Ambilight control, app launching, media playback, remote key injection, and state retrieval. Missing input/source selection and current Ambilight color reading are minor gaps that can be partially worked around via send_key or get_state.

Maintenance

ActivityNo data
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers