Skip to main content
Glama

AI HueBot

npm version license node

Control your Philips Hue lights with AI. Set vibes, save favorites, and let it learn your preferences over time.

An MCP server that connects any AI client (Claude, etc.) to your Hue lights. Just describe the mood you want.

Features

  • Vibe mode -- say "cozy evening" or "deep focus" and the AI picks colors and brightness for every light

  • Saved vibes -- every vibe is auto-saved and can be re-applied later

  • Ratings & feedback -- rate vibes 1-10 so the AI learns what you like

  • Favorites -- quickly access your top-rated vibes

  • Individual & bulk control -- set any light or all lights at once

  • Scene activation -- trigger any Hue scene by name

  • Smart hints -- gently introduces the feedback system to new users

  • Zero config auth -- built-in OAuth credentials, just authorize in your browser once

Related MCP server: LIFX MCP Server

Quick Start

npx ai-huebot

That's it. Add it to your AI client (see below), then just ask:

"Set a cozy evening vibe"

"Make the bedroom warm orange at 40%"

"Rate that vibe 9 out of 10"

"Apply my highest rated vibe"

Setup

Claude Code

claude mcp add ai-huebot -- npx ai-huebot

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "ai-huebot": {
      "command": "npx",
      "args": ["ai-huebot"]
    }
  }
}

Any MCP Client

  • Command: npx

  • Args: ["ai-huebot"]

  • Transport: stdio

First Run

Call the hue_auth tool from your AI client. It opens your browser to authorize with Philips Hue. Tokens are saved to ~/.ai-huebot/tokens.json and refresh automatically.

Tools

Tool

Description

hue_auth

Authorize with Philips Hue (browser OAuth)

list_lights

List all lights with current state

set_light

Control a single light (on/off, brightness, color)

set_all_lights

Set all lights to the same state

set_scene

Activate a Hue scene by name

set_vibe

Describe a mood -- AI picks colors for each light (auto-saves)

save_vibe

Manually save a light configuration as a named vibe

list_saved_vibes

List all saved vibes

apply_saved_vibe

Re-apply a saved vibe

delete_saved_vibe

Delete a saved vibe

rate_vibe

Rate a vibe (1-10) and/or leave text feedback

get_vibe_feedback

View all feedback, filterable by rating

get_favorites

Get your top-rated vibes (rating >= 7)

get_user_hint

Get a one-time hint about the feedback system

acknowledge_hint

Dismiss the hint permanently

How It Works

Auth: OAuth 2.0 against the Hue Remote API (CLIP v2). Built-in credentials work out of the box -- or set HUE_CLIENT_ID, HUE_CLIENT_SECRET, and HUE_CALLBACK_URL env vars to use your own.

Vibes: When you describe a vibe, the AI chooses hex colors and brightness for each light. The configuration is automatically saved to ~/.ai-huebot/saved-vibes/ as JSON so you can re-apply it anytime.

Feedback loop: Rate vibes and leave feedback. The AI uses this history to suggest vibes you'll like and avoid ones you didn't. Favorites (rating >= 7) are surfaced on request.

Development

git clone https://github.com/EthanSK/ai-huebot-mcp.git
cd ai-huebot-mcp
npm install
npm run build   # compile TypeScript
npm run dev     # run with tsx (auto-reload)

Troubleshooting

  • 403 on CLIP v2 API -- CLIP v2 requires a hue-application-key header containing a whitelisted bridge username. The hue_auth flow creates this automatically, but if the stored username is lost or invalid, v2 calls will return 403. The server automatically falls back to the v1 API in this case. To fix permanently, re-run hue_auth to re-establish the bridge link.

  • Auth token expiry -- Access tokens last 7 days and auto-refresh using the stored refresh token. If refresh fails (e.g. revoked access), re-run hue_auth to re-authorize.

  • Bridge not responding -- Make sure your Hue bridge is powered on and on the same network as your machine. The bridge's local IP can change if your router reassigns it -- check the Hue app for the current IP.

  • MCP server not loading in Claude Code -- MCP servers initialize at session start. If AI HueBot doesn't appear, run /reload-plugins or restart the Claude Code session. Run /doctor to check for configuration errors.

License

MIT

Available Tools

21 tools
acknowledge_hintA

Mark the feedback system hint as shown so it won't be displayed again.

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?

No annotations are provided, so the description carries the full burden. It explicitly discloses the state-changing side effect: the hint is marked as shown and will not be displayed again. It does not mention scope or persistence details, but for a zero-parameter tool this is reasonably transparent.

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 sentence with no filler. The action and consequence are front-loaded and immediately clear.

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 tool with no output schema, this description covers the essential behavior well. It could clarify whether the acknowledgment is per-user or global, but the current wording is sufficient for an agent 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?

The tool has zero parameters and zero required parameters, so there is no parameter semantics for the description to explain. Baseline 4 applies.

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 ('Mark') and a specific resource ('the feedback system hint') plus the effect ('so it won't be displayed again'). This clearly distinguishes it from sibling read-only tools like get_user_hint and get_vibe_feedback.

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: use this tool after a feedback hint has been shown and should be dismissed so it no longer reappears. It does not explicitly route away from alternatives, but no sibling performs the same acknowledgment action.

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

animate_lightsA

Animate lights through a sequence of color phases. Each phase defines colors/brightness for each light, and the animation cycles through them with smooth transitions. Great for dynamic vibes like 'lava flow', 'ocean waves', 'disco', etc. The AI should generate creative phases based on the vibe description. The animation runs in the background and can be stopped with stop_animation.

ParametersJSON Schema
NameRequiredDescriptionDefault
vibeNoOptional vibe description for context (e.g. 'lava flow', 'aurora borealis')
cyclesNoHow many times to loop through all phases (default: 5)
phasesYesArray of animation phases. The animation cycles through these in order. Use at least 2-3 phases for a good effect.
transition_timeNoHow long the transition between phases takes in milliseconds, using Hue dynamics (default: 2500)
duration_per_phaseNoHow long each phase lasts in milliseconds (default: 3000)

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does reveal important traits: the animation runs in the background, cycles through phases, and is stoppable via stop_animation. However, it omits other behavioral details an agent might need — what happens when cycles complete (auto-stop or persists?), whether calling this interrupts an existing animation, and what side effects occur on lights currently showing a static scene.

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?

Four sentences, all earning their place: core action, phase composition, use-case examples, AI generation guidance, and lifecycle/stopping behavior. The most decision-relevant info is front-loaded; examples are compact and illustrative rather than bloated.

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?

The tool has a moderately complex nested phases parameter, 5 total parameters, and no output schema. The description covers the main lifecycle concerns (background execution, stop mechanism) and usage context well. Remaining gaps: prerequisites are not mentioned (light IDs presumably come from list_lights), and with no output schema, the return/acknowledgment behavior after invocation is never addressed. These are notable but non-critical omissions.

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 coverage is 100%, so the baseline is 3. The description adds value beyond the schema: it instructs the AI to 'generate creative phases based on the vibe description,' which operationalizes the vibe parameter in a way the schema's dry 'Optional vibe description for context' does not. It also frames the phases concept ('Each phase defines colors/brightness for each light') in a way that helps an agent construct well-formed phase arrays.

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+resource pair ('Animate lights through a sequence of color phases') that clearly identifies the mechanism. It distinguishes itself from siblings: static set tools (set_light, set_all_lights, set_scene) which don't animate, and stop_animation which is explicitly referenced as the complementary tool. Vibe examples ('lava flow', 'ocean waves', 'disco') further ground the purpose.

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: it's for dynamic, time-varying light sequences ('cycles through them with smooth transitions') and explicitly names the sibling tool that stops it (stop_animation). However, it never explicitly states when NOT to use it — e.g., no direct statement that static settings should use set_light or set_scene instead. The guidance is good but the exclusion is implied rather than stated.

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

apply_saved_vibeB

Apply a previously saved vibe by name. Restores the light configuration that was saved.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe name of the saved vibe to apply

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It says the tool 'restores' the light configuration, implying it changes current state, but it does not disclose whether it overwrites all light settings, whether it requires authentication, what happens if the name is invalid, or whether effects are temporary.

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 two short sentences with no filler. It front-loads the core action and immediately clarifies the purpose, making it easy for an agent to parse quickly.

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 with one string parameter, so the description covers the basic action. However, without annotations or an output schema, it would benefit from stating side effects (e.g., current lights will be overwritten) and any requirement that the vibe must already be saved.

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%, so the baseline is 3. The description adds minimal extra meaning by saying 'by name,' which reinforces the name parameter's role, but it does not enrich the parameter semantics beyond what the schema already states.

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 ('Apply') and a specific resource ('previously saved vibe'), and states that it restores the saved light configuration. This clearly distinguishes it from save_vibe, list_saved_vibes, and delete_saved_vibe without needing to inspect 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 Guidelines2/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 a saved vibe should be applied—but gives no explicit guidance on when not to use it or which sibling to use instead. It does not mention preconditions such as the vibe needing to exist, nor does it distinguish usage from set_vibe or set_scene.

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

delete_saved_vibeA

Delete a previously saved vibe by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesThe name of the saved vibe to delete

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It merely states the action without revealing whether deletion is permanent, irreversible, or what happens if the named vibe does not exist. For a destructive operation, this is a notable gap.

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 sentence with no wasted words, and the central verb 'Delete' is front-loaded. Every word contributes to the core purpose, making it highly efficient for an agent to parse.

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

Completeness3/5

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

Given the simple one-parameter schema and no output schema, the description covers the basic action and parameter. However, it omits important contextual cues for a destructive tool, such as irreversibility or failure behavior. The absence of annotations makes this omission more significant, though the simplicity keeps it from being severely incomplete.

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 schema already explains that 'name' refers to the saved vibe to delete. The description adds only the phrase 'by name', which does not provide meaningful semantics beyond the schema, so the baseline 3 applies.

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 clear action ('Delete') and a specific resource ('previously saved vibe'), with the method of identification ('by name'). It distinguishes itself from sibling tools like save_vibe, apply_saved_vibe, and list_saved_vibes by targeting removal rather than creation, application, or listing.

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 when a previously saved vibe should be removed, but it does not explicitly state when to use this tool versus alternatives or mention prerequisites such as listing saved vibes to confirm names. There are no exclusions or direct references to sibling tools, leaving the routing decision to inference.

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

get_favoritesA

Get top-rated vibes (rating >= 7 by default). Use this to suggest vibes the user has enjoyed before.

ParametersJSON Schema
NameRequiredDescriptionDefault
min_ratingNoMinimum rating threshold (default: 7)

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the behavioral disclosure burden. It does reveal the rating threshold and 'top-rated' semantics, and 'Get' implies a read-only operation. However, it does not clarify whether the results are user-specific or global, how they are ordered, or whether authorization is required, leaving some behavioral ambiguity.

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 two short sentences with the core behavior front-loaded before the use case. There is no filler, and every sentence contributes useful information for selecting and invoking the tool.

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 one-parameter read tool with no output schema, the description is mostly adequate: it names the result, the default behavior, and a use case. It is incomplete regarding result ordering, user-specific vs. global scope, and return shape, which matters because sibling tools like list_saved_vibes could overlap semantically.

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 only parameter, min_rating, is already fully described in the schema with its default and range. The description merely restates the default threshold ('rating >= 7 by default') and adds no extra meaning about how the parameter affects the results, so the baseline score of 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 states a specific action ('Get'), a specific resource ('top-rated vibes'), and the default rating threshold ('rating >= 7 by default'), so an agent can tell what the tool returns. It does not explicitly distinguish this from related siblings like list_saved_vibes or get_vibe_feedback, so it stops short of a 5.

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

Usage Guidelines4/5

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

The description gives a clear intended use case: 'Use this to suggest vibes the user has enjoyed before.' This is actionable and sufficiently specific for selecting the tool in a recommendation context. It does not mention when-not-to-use it or point to alternatives, but the guidance is not merely implied.

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

get_user_hintA

Get a hint message about the feedback system for the user. Returns a hint only if the user hasn't been told about the feedback system yet. Relay the hint text to the user if one is returned.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It clearly discloses the conditional return behavior and instructs the agent what to do when a hint is returned. It does not explicitly state whether the call has side effects, but the 'get' verb and the sibling acknowledge_hint imply it does not acknowledge the hint itself.

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 two sentences, front-loaded with the purpose, and every sentence earns its place. It avoids extra detail while still covering the condition, the return value, and the agent action.

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

Completeness5/5

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

Given the zero-parameter schema and absence of an output schema, the description is sufficient: it states what is returned, when it is returned, and what the agent should do with it. The only implicit detail is the no-hint case, but 'only if' makes that clear.

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 of 4 applies because there is no parametric ambiguity for the agent to resolve.

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 ('Get') and a specific resource ('a hint message about the feedback system'), making the tool's purpose immediately clear. It is distinct from siblings like acknowledge_hint and get_vibe_feedback because it targets the feedback-system onboarding hint 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 description provides clear context: a hint is returned only if the user hasn't been told about the feedback system, and the agent should relay it. It does not explicitly mention alternatives or when not to use the tool, but the conditional logic is enough to guide correct usage.

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

get_user_profileA

Get the full user profile with light preferences, vibe history, colour preferences, and patterns. Read this before making vibe decisions to personalise recommendations. The profile is stored as markdown at ~/.ai-huebot/user-profile.md and is auto-populated over time.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses that the profile is stored as markdown at a specific path and is auto-populated over time. 'Get' and 'Read this' imply a read-only operation. It does not discuss failure modes or auth, but for a zero-parameter read tool this is sufficient.

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 compact, front-loads the most important information about what the tool returns and when to use it, and adds a useful storage detail without any filler. Every sentence earns its place.

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 zero-parameter read tool, the description is complete: it explains what is returned, when to call it, why it matters, where the data lives, and how it is maintained. No output schema exists, but the description adequately conveys the content and format.

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 baseline is 4. The input schema is empty and the description does not need to document parameter behavior. No additional semantic meaning is required.

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 action ('Get'), the resource ('full user profile'), and the specific contents ('light preferences, vibe history, colour preferences, and patterns'). It distinguishes itself from sibling tools like get_user_hint and get_favorites by explicitly focusing on the full profile.

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 explicit guidance on when to use the tool: 'Read this before making vibe decisions'. It also explains the purpose ('to personalise recommendations'). It does not mention alternative tools or when not to use it, but the context is clear enough.

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

get_vibe_feedbackA

Retrieve all vibe feedback entries. Optionally filter by minimum rating or sort by rating. Useful for understanding user preferences.

ParametersJSON Schema
NameRequiredDescriptionDefault
min_ratingNoOnly return vibes with at least this rating
sort_by_ratingNoSort results by rating descending (default: false)

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of behavioral disclosure. 'Retrieve all' implies read-only behavior and complete results, which is helpful, but it does not mention authentication, pagination, result shape, or any side effects. The description is adequate but not deeply transparent.

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 two sentences with no wasted words. It front-loads the primary action, then covers optional filtering and intended use, with each sentence earning its place.

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 tool with two optional parameters and no output schema, the description covers the essential behavior and usage context. It could be more complete by describing the response shape or any default limits, but nothing critical is missing for a likely straightforward list operation.

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 already documents both parameters with 100% coverage, including their types, ranges, and default behavior. The description merely restates 'filter by minimum rating or sort by rating' without adding meaning beyond the schema, so 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 states a specific verb ('Retrieve') and resource ('all vibe feedback entries'), making the core action clear. It does not explicitly differentiate from sibling tools like get_favorites or rate_vibe, but the resource is specific enough to avoid major confusion.

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 'Useful for understanding user preferences' provides a general intended use case, which implies when this tool might be relevant. However, it does not offer explicit guidance on when to choose this tool over alternatives like get_favorites or get_user_hint.

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

hue_apiA

Make an arbitrary Philips Hue CLIP v2 API call. This gives full unrestricted access to the Hue API. The path is relative to /route/clip/v2/ (e.g. 'resource/light', 'resource/light/{id}', 'resource/scene', 'resource/grouped_light/{id}', 'resource/room', 'resource/zone', 'resource/bridge'). See https://developers.meethue.com/develop/hue-api-v2/ for full API docs.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyNoOptional JSON body for PUT/POST requests
pathYesAPI path after /route/clip/v2/ (e.g. 'resource/light', 'resource/light/{id}', 'resource/scene', 'resource/grouped_light/{id}')
methodYesHTTP method

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It discloses that the tool grants full unrestricted access, which signals powerful, low-level behavior with no guardrails. It further clarifies the path is relative to a specific base route, which helps set expectations about how requests are constructed. It does not detail response formats or error behavior, but the external docs link partially compensates.

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 two sentences with no filler. The first sentence immediately establishes the tool's purpose and power level; the second gives the path convention, concrete examples, and a documentation link. Every sentence earns its place, and the most important information is front-loaded.

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 generic raw API tool with three parameters and no output schema, the description provides essential context: base path, example endpoints, and external documentation. It could additionally mention that responses are raw API payloads and that this tool should be preferred when no dedicated sibling covers the desired call, but the given details are sufficient for an agent to begin using it correctly.

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 already has 100% description coverage for all three parameters, so the baseline is 3. The description adds useful path examples and clarifies the base-relative convention, but it does not meaningfully enhance the semantics of method or body beyond what the schema already provides. This is adequate but not exceptional.

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?

Description states a specific verb (Make), a resource (arbitrary Philips Hue CLIP v2 API call), and the scope (full unrestricted access to the Hue API). The phrase 'arbitrary' and 'full unrestricted access' clearly distinguishes this raw API tool from the specialized sibling tools like set_light or set_scene.

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 makes the intended context clear: this is a general-purpose raw API access tool for arbitrary endpoints under /route/clip/v2/ with concrete examples. It does not explicitly list when-not-to-use it versus specific siblings, but the 'arbitrary and unrestricted' framing implies it is the fallback for calls not covered by specialized tools.

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

hue_authA

Start the Philips Hue OAuth authorization flow. Opens a browser window to authorize access to your Hue lights. Only needed on first use or when tokens expire.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden and does a good job: it states that calling the tool opens a browser window and starts an OAuth authorization flow. It does not detail that the call may block waiting for user interaction or what the return value is, but the core side effect is transparent.

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 short sentences with no filler. The purpose is front-loaded in the first sentence, and each subsequent sentence adds useful timing or behavioral context.

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 auth tool with no output schema, the description covers what it does, when it is needed, and the main observable side effect. It could mention that completion depends on the user finishing the browser authorization, but it is otherwise complete enough to invoke 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?

The tool has zero parameters, so there is no parameter detail to add; per the rubric this is a baseline 4. The description's focus on the auth flow is sufficient since the input schema is empty.

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 'Start the Philips Hue OAuth authorization flow,' which is a specific verb plus resource. It clearly identifies the tool's role as authorizing access to Hue lights, and this is distinct from the sibling tools that perform light control or profile operations.

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

Usage Guidelines5/5

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

It explicitly scopes when the tool is needed: 'Only needed on first use or when tokens expire.' This tells an agent not to call it on every request and effectively distinguishes it from the other Hue API tools that are used for ongoing operations.

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

list_lightsA

List all Philips Hue lights with their current state including on/off, brightness, and color.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations provided, the description must carry the behavioral burden. The verb 'List' and the phrase 'current state' make it clear this is a read-only inspection operation and not a mutating action. It does not mention authentication or rate limits, but for a zero-parameter read operation the core behavior is transparent.

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 sentence that front-loads the action and resource, then specifies the relevant returned state fields. Every word earns its place, and there is no redundant filler.

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, zero-parameter, read-only list tool with no output schema, the description adequately states what it does and what the response includes. It could additionally mention response format or authentication expectations, but these are minor gaps given the low complexity and the presence of a separate hue_auth sibling.

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 no parameters, and the schema is an empty properties object, so there is no parameter documentation burden. The description adds value by explaining what the returned data will contain, which is relevant context despite the lack of 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 states a specific verb ('List'), a clear resource ('all Philips Hue lights'), and the meaningful content of the result (on/off, brightness, color). It is readily distinguishable from sibling tools like set_light and set_all_lights because it is read-oriented rather than write-oriented.

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 this should be used when an agent needs the current state of lights, but it does not explicitly state when to avoid it or mention alternatives. Sibling names like set_light and set_scene make the contrast inferable, but the description itself provides no direct routing guidance.

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

list_saved_vibesA

List all previously saved vibes. Shows names, descriptions, and light configurations.

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?

With no annotations, the description carries the behavioral burden. It clearly implies a read-only operation and tells the agent what data will be shown. It does not mention ordering, empty results, or errors, but for a simple list tool this is reasonably transparent.

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 short sentences with no filler. The tool's action is stated first, followed by the output contents, making it immediately scannable.

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?

The description covers the tool's purpose and the fields returned, which is sufficient for a no-parameter listing tool. It omits minor details like output ordering or pagination, but these are not critical for a simple saved-vibes 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 input schema has zero parameters, so the baseline is 4. The description adds no parameter details, but none are needed.

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 ('List') and resource ('previously saved vibes') and clearly states what the tool returns: names, descriptions, and light configurations. This distinguishes it from sibling tools that save, apply, delete, or animate vibes.

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

Usage Guidelines4/5

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

It provides clear context: use this tool when you need to see previously saved vibes and their details. It does not explicitly exclude alternatives, but for a simple listing operation the intended usage is unambiguous.

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

rate_vibeA

Rate a vibe and/or leave feedback. At least one of rating or feedback must be provided. Use the vibe name from saved vibes.

ParametersJSON Schema
NameRequiredDescriptionDefault
ratingNoRating from 1 to 10
feedbackNoOptional text feedback about the vibe
vibe_nameYesThe name of the vibe to rate (must match a saved vibe name)

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It reveals constraints but not side effects: it does not say whether the rating/feedback is persisted, whether an existing rating is overwritten, whether authentication is required, or what happens after submission. 'Rate' and 'leave feedback' imply a write operation but leave behavioral consequences opaque.

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 short sentences with no filler. The core action, the important conditional constraint, and the reference to saved vibes are all front-loaded and each sentence 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?

For a simple three-parameter tool, the description covers the key precondition and parameter usage adequately. However, with no output schema and no annotations, it does not explain what the agent can expect as a return value or confirm that the action is persisted. This is a noticeable but not critical gap.

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 coverage is 100%, so the baseline is 3. The description adds genuine value by expressing a constraint the schema does not encode: at least one of rating or feedback must be provided. It also reinforces that vibe_name must reference an existing saved vibe, which clarifies intent beyond the raw field descriptions.

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 ('Rate a vibe and/or leave feedback') with a clear resource ('vibe') and references saved vibes, which distinguishes it from sibling tools like get_vibe_feedback (read) and save_vibe (creating a vibe). An agent can tell this is the write/feedback tool 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 description gives a clear operational rule: at least one of rating or feedback must be provided, and the agent should use a saved vibe name. However, it does not explicitly state when to prefer this over alternatives like get_vibe_feedback or how it relates to save_vibe/apply_saved_vibe; the usage context is implied rather than stated.

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

save_vibeA

Save the current light state as a named vibe. Captures a snapshot of specified lights with their colors and brightness so it can be re-applied later.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesA memorable name for the vibe (e.g. 'sunset chill', 'deep focus')
lightsYesArray of light settings to save. Use list_lights first to get current state.
descriptionNoOptional description of the vibe

TDQS

A4/5.0
Behavior3/5

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

With no annotations provided, the description carries the behavioral disclosure burden. It explains that the tool captures and persists a snapshot, but it does not disclose whether saving over an existing name overwrites it, or mention any authentication requirements or side effects beyond persistence.

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 concise sentences state the action, the object, and the purpose without any filler. The key verb and resource are front-loaded, making the tool's function immediately clear.

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

Completeness4/5

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

Given the simple schema with comprehensive parameter descriptions, the definition is largely complete for calling the tool. It lacks only a note about handling duplicate names or error cases, but these are not essential for basic invocation.

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 baseline is 3. The description adds value by reinforcing that the parameters represent a snapshot, but it does not add syntax-level details beyond what the schema already provides.

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 ('Save') and clearly defines the resource ('current light state as a named vibe'). It distinguishes itself from siblings like apply_saved_vibe by emphasizing the capture/save action and future re-application, so an agent can tell them apart.

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 clearly communicates the use case: saving a snapshot of light settings to re-apply later. The schema adds practical guidance to use list_lights first to obtain current state, but no explicit alternative or exclusion is mentioned.

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

set_all_lightsA

Set all Hue lights to the same state. You can control on/off, brightness, and color.

ParametersJSON Schema
NameRequiredDescriptionDefault
onNoTurn all lights on (true) or off (false)
color_hexNoColor as hex string (e.g. #FF0000 for red)
brightnessNoBrightness percentage (0-100)

TDQS

A3.5/5.0
Behavior2/5

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

There are no annotations, so the description carries the full burden of behavioral disclosure. It does not explain whether omitted parameters preserve current values, whether at least one parameter is required, or what the broader side effects of changing all lights are. This is a bulk mutation tool, and important behavioral context is missing.

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 two short, dense sentences with no filler. The core statement comes first, and the capability summary adds just enough detail without repeating schema content unnecessarily.

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 a simple interface, but with no annotations and no output schema, the description alone must fully prepare an agent to call it. It lacks guidance on required inputs, omitted-parameter behavior, and the distinction from similar tools. 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.

Parameters3/5

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

Schema description coverage is 100%, so the parameters are already documented in the input schema. The description adds only a high-level mapping ('on/off, brightness, color') without any extra semantic detail, such as how parameters interact or whether they are optional collectively. Baseline 3 is appropriate.

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 ('Set'), a specific resource ('all Hue lights'), and a clear scope ('same state'). It also lists the controllable dimensions (on/off, brightness, color), making the tool's purpose immediately distinguishable from siblings like set_light.

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 'all Hue lights' implies the tool is appropriate when targeting every light at once, rather than an individual light. However, it does not explicitly contrast with set_light, set_scene, or other alternatives, nor does it state when not to use it.

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

set_effectA

Set a native Hue light effect. Supported effects: 'candle' (candle flicker), 'fire' (fireplace), 'prism' (color cycling/rainbow). Use 'no_effect' to stop. Can target a specific light or all lights.

ParametersJSON Schema
NameRequiredDescriptionDefault
effectYesThe effect to apply: 'candle' (flicker), 'fire' (fireplace), 'prism' (color cycling), or 'no_effect' to stop
light_idNoOptional specific light ID. If omitted, applies to all lights.

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It discloses what effects do, how to stop them, and that it can target one light or all lights. It does not, however, mention whether the effect overrides existing scenes or states, what happens on invalid light IDs, or any persistence behavior.

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 compact: two sentences with no filler. The core purpose is front-loaded, supported effects are enumerated, the stop behavior is included, and targeting scope is stated. Every sentence earns its place.

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 two-parameter command with a fully documented schema, the description covers the essential information: what to set, valid values, how to stop, and targeting scope. It could be more complete by explicitly naming the sibling tools it is not, but nothing critical is missing for basic invocation.

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 already fully documents both parameters (100% coverage), including the effect enum and the optional light_id behavior. The description adds some human-friendly elaboration ('candle flicker', 'fireplace', 'rainbow') but does not materially go beyond what the schema already provides, 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 clearly identifies the action and resource: 'Set a native Hue light effect' with specific supported effect names. It is clear enough to be distinguished from set_light and set_all_lights, though it does not explicitly contrast itself with those sibling tools.

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 gives useful context: this is for native Hue effects, includes the supported effect names, and explains how to stop with 'no_effect'. However, it does not explicitly say when to prefer this tool over alternatives like set_light, set_all_lights, or animate_lights, leaving some routing 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.

set_lightB

Set a specific Hue light's state. You can control on/off, brightness (0-100), and color (hex string like #FF0000 or xy coordinates).

ParametersJSON Schema
NameRequiredDescriptionDefault
onNoTurn the light on (true) or off (false)
light_idYesThe light ID (from list_lights)
color_hexNoColor as hex string (e.g. #FF0000 for red)
brightnessNoBrightness percentage (0-100)
color_xy_xNoCIE x color coordinate
color_xy_yNoCIE y color coordinate

TDQS

B3.2/5.0
Behavior2/5

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

There are no annotations, so the description carries the full behavioral disclosure burden. It states that it changes a light's state and which properties can be set, but it does not disclose auth requirements, whether setting color_hex conflicts with xy coordinates, what happens when on=false with brightness/color, or side effects.

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

Conciseness5/5

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

The description is two sentences with no filler. It front-loads the action and resource, then lists controllable aspects efficiently. Every sentence adds value.

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 6-parameter mutation tool with no annotations and no output schema, this description is incomplete. It does not clarify whether only light_id can be sent, how color_hex interacts with xy coordinates, whether brightness applies when turning off, or what auth/state prerequisites exist.

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 baseline is 3. The description adds a little context by noting color can be a hex string or xy coordinates and giving an example, but it does not explain precedence or interaction between color_hex and color_xy_x/y 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 uses a specific verb ('Set') and resource ('a specific Hue light's state') and enumerates what can be controlled. The word 'specific' distinguishes it from set_all_lights, but it does not explicitly identify or contrast sibling tools.

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 this tool is for controlling one light rather than all lights, but it gives no explicit 'when to use this vs. alternatives' guidance. It does not mention set_all_lights, set_scene, or other sibling tools, nor any exclusions.

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

set_sceneA

Activate a Hue scene by name. Lists available scenes if the exact name is not found.

ParametersJSON Schema
NameRequiredDescriptionDefault
scene_nameYesThe name of the scene to activate

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It usefully reveals the fallback behavior of listing available scenes when the exact name is not found, but it does not disclose other important traits like authentication requirements, side effects beyond activation, or what a successful response looks like.

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 short sentences, with the core action first and the fallback behavior second. There is no wasted language, and the key information is front-loaded.

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 single-parameter tool, this description is reasonably complete: it states the action, the input scope, and the behavior when the name is not found. It could be more complete by noting authentication prerequisites or success/error output, but these are minor gaps given the tool's low complexity.

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 already fully documents the single 'scene_name' parameter at 100% coverage, so the description adds little parameter-level detail beyond restating the name-based activation concept. This meets the baseline for adequate schema 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 uses a specific verb ('Activate') and clear resource ('a Hue scene by name'), which immediately distinguishes it from sibling tools like set_light or list_lights. It also mentions a fallback behavior (listing scenes) that further clarifies its scope.

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 a Hue scene needs to be activated by name. However, it does not explicitly discuss alternatives or exclusionary conditions, such as when set_vibe or set_light would be more appropriate.

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

set_vibeA

Set a vibe across your lights. Provide a vibe description and an array of light settings that match the vibe. Claude should determine appropriate colors and brightness for each light based on the vibe description.

ParametersJSON Schema
NameRequiredDescriptionDefault
vibeYesDescription of the vibe (e.g. 'cozy evening', 'deep focus', 'sunset')
lightsYesArray of light settings. Use list_lights first to get available light IDs.

TDQS

A3.5/5.0
Behavior2/5

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

With no annotations, the description only communicates that this is a mutating operation across the user's lights. It does not disclose whether the operation replaces existing light state, requires authentication, can partially fail, or returns a confirmation. The 'Claude should determine...' line describes request construction rather than tool behavior.

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

Conciseness5/5

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

Three short sentences front-load the action and then explain the input and the agent's role in selecting values. There is no repetitive filler; every sentence contributes either scope or invocation logic.

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

Completeness4/5

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

Given full schema coverage for both required parameters and a straightforward input shape, the description provides enough to invoke the tool correctly, including the instruction to derive per-light settings from the vibe. It falls slightly short because there are no annotations and no output schema, leaving return behavior and side effects unmentioned, but this is a moderate gap.

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 already covers all parameters at 100%, so the baseline is 3. The description adds value by defining the relationship between the vibe string and the lights array ('colors and brightness ... based on the vibe description'), telling the agent how to populate color_hex and brightness. This cross-field guidance goes beyond the individual property descriptions.

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 opens with a specific action ('Set') and a target resource ('your lights'), and clarifies the input pattern of a vibe plus an array of matching light settings. It is not a tautology and is more specific than the bare name, but it does not explicitly differentiate from sibling tools like set_light, set_all_lights, or set_scene.

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 tells the agent to provide a vibe description and an array of light settings, and instructs it to determine colors and brightness from the vibe. There is implied context for multi-light vibe setting, but no explicit statement of when to choose this over alternatives, and no exclusions.

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

stop_animationA

Stop any currently running animation or effect. Stops background phase animations started by animate_lights, and also clears any native Hue effects (candle, fire, prism) on all lights.

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?

With no annotations, the description carries the full burden of behavioral disclosure. It clearly reveals that the tool affects 'all lights' when clearing native Hue effects and explicitly names the two categories it stops. It could go further by mentioning what happens to light states after stopping (e.g., whether current colors/brightness are preserved) or whether it is idempotent, but the core side effects are disclosed.

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 two sentences with no unnecessary words. It front-loads the main action in the first sentence and then provides scoping details in the second. Every phrase earns its place, and it is appropriately sized for the tool's simplicity.

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

Completeness4/5

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

Given zero parameters, no output schema, and a simple global stop action, the description provides sufficient context for an agent to decide when to call the tool and what to expect. It could mention idempotence or what happens if nothing is running, but that is a minor gap for such a straightforward operation.

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 baseline is 4. There are no parameters to document, and the description does not need to add parameter-level meaning. It appropriately focuses on behavior instead.

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 a specific verb and resource: 'Stop any currently running animation or effect.' It further distinguishes the tool from siblings by explicitly naming animate_lights as the source of background phase animations and listing native Hue effects (candle, fire, prism). This lets an agent know exactly what the tool affects and how it differs from related tools like set_effect or animate_lights.

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 first sentence directly conveys when to use this tool: whenever an animation or effect is running and needs to be stopped. The second sentence adds context by identifying the exact sources it targets, which helps with selection against siblings. However, it does not explicitly state when not to use it or mention alternatives like set_effect for stopping a specific effect, so it falls just short of a 5.

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

update_user_profileA

Update a section of the user profile with new observations, preferences, or notes. Use this to record things the user tells you about their preferences, or to add evolution notes with suggestions.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesThe new content for the section (markdown format). Replaces the entire section content.
sectionYesThe section to update. One of: 'light inventory', 'room mappings', 'colour preferences', 'color preferences', 'time-of-day patterns', 'time of day patterns', 'vibe history', 'explicit preferences', 'evolution notes'

TDQS

A3.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the burden of disclosing behavior. It says 'update' and 'record,' which can sound additive, but the actual behavior is that content replaces the entire section. That destructive/overwrite trait is only present in the parameter schema, not in the tool description, and no other behavioral details like persistence or output are disclosed.

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 tight sentences with no filler. The first states the core action and resource, the second gives concrete real-world triggers. Every phrase adds value.

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 two-parameter tool with full schema descriptions and no output schema, the description provides enough context: it states the action, the resource, and when to use it. The main missing piece is an explicit overwrite warning in the tool description, but the schema already communicates that to an agent.

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%: both `section` and `content` have explanatory descriptions, including allowed section values and the fact that content is markdown and replaces the section. The tool description adds no parameter-level meaning beyond that, so the baseline 3 is appropriate.

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 verb and resource ('Update a section of the user profile') and further narrows the intent with 'observations, preferences, or notes.' This makes it easy to distinguish from sibling tools like get_user_profile and the various light/vibe actions.

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 gives explicit usage cues: 'record things the user tells you about their preferences' and 'add evolution notes with suggestions.' It does not name alternatives or exclusions, but the read/write split with get_user_profile is clear enough from context.

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. 21 tool updatesv1.0.0
    • First observedacknowledge_hint
    • First observedanimate_lights
    • First observedapply_saved_vibe
    • First observeddelete_saved_vibe
    • First observedget_favorites
    • First observedget_user_hint
    • First observedget_user_profile
    • First observedget_vibe_feedback
    • First observedhue_api
    • First observedhue_auth
    • First observedlist_lights
    • First observedlist_saved_vibes
    • First observedrate_vibe
    • First observedsave_vibe
    • First observedset_all_lights
    • First observedset_effect
    • First observedset_light
    • First observedset_scene
    • First observedset_vibe
    • First observedstop_animation
    • First observedupdate_user_profile

TDQS

A3.7/5.0

Scored across 21 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap among set_vibe, set_scene, apply_saved_vibe, and animate_lights for creating ambience, and get_favorites overlaps with get_vibe_feedback. Descriptions mostly clear up the boundaries, so only a couple of tools could be confused.

Naming Consistency4/5

Names are consistently snake_case with verb-first patterns like list_*, set_*, get_*, save_*, and delete_*. Exceptions are hue_api and hue_auth, which lack a leading verb, but they are still descriptive and contextually appropriate.

Tool Count3/5

At 21 tools, this sits in the heavy range (16-25). The expanded vibe, feedback, and profile features justify many of them, but the count feels slightly overloaded compared to typical Hue control servers.

Completeness4/5

The surface covers lighting control (states, scenes, effects, animations) plus a full vibe lifecycle with rating, feedback, favorites, hints, and user profile management. Minor gaps exist such as no dedicated room/zone management or direct saved-vibe editing, but hue_api provides an escape hatch.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to control Philips Hue smart lighting systems, including individual lights, groups, scenes, brightness, and color adjustments through natural language commands.
    -
  • A
    license
    B
    quality
    D
    maintenance
    Enables control of LIFX smart lights through natural language, including power control, color adjustment, lighting effects, and scene management using the LIFX HTTP API.
    9
    6 npm
    2
    ISC
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables control of Philips Hue lights through the Model Context Protocol, providing tools for turning lights on/off, setting brightness and color, and retrieving light status.
    1
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Enables discovery and control of Philips Hue lighting devices via a local bridge using the CLIP v2 API, without any cloud dependency.
    10
    MIT