Skip to main content
Glama

PixelBlaze AI

Create and iterate on LED patterns for a PixelBlaze controller using Claude Code. An MCP server connects Claude directly to your PixelBlaze so it can create, update, and manage patterns on the device.

The included patterns and design guidance (CLAUDE.md) are built for a 2D grid mapped as rows and columns — specifically an edge-lit acrylic depth display where each row is a separate physical layer. The Y axis represents discrete layers (not a smooth gradient), so patterns are designed to create strong visual contrast and coordinated animation across layers while running smooth effects within each layer.

This approach works well for any 2D PixelBlaze setup where one axis has significantly fewer pixels than the other (e.g. 8 rows x 32 columns), and where per-row visual differentiation matters more than smooth vertical blending.

Note: This project assumes the PixelBlaze's Mapper has already been configured correctly for your hardware. The mapper defines the 2D pixel map that tells PixelBlaze which physical LED corresponds to which (x, y) coordinate — patterns depend on this being set up before they can work properly.

Adapting for your hardware

The patterns auto-detect the grid dimensions at startup using mapPixels(), so they adapt to different sizes without code changes. To adapt the design guidance for a different display:

  1. Edit CLAUDE.md to describe your hardware — pixel layout, how light works physically, what effects look good and which don't

  2. Update the pixel map on your PixelBlaze to match your physical layout

  3. Ask Claude to help you adapt — for example:

"I have a 16x16 LED matrix mounted flat on a wall. Both axes have equal resolution and smooth blending. Update CLAUDE.md to reflect this — we don't need to treat Y as discrete layers, and effects should work as true 2D patterns."

"I have a cylindrical display with 12 rings of 30 LEDs each. X wraps around the cylinder and Y is the vertical axis. Update CLAUDE.md so patterns account for the X-axis wrapping and create effects that look good on a cylinder."

Related MCP server: pixoo-mcp-server

What's in the box

  • src/pixelblaze_mcp/ -- MCP server that exposes PixelBlaze controls (create/update/delete patterns, set brightness, read device info, etc.)

  • docs/pixelblaze/ -- Cached PixelBlaze language reference, available to Claude via the docs_get_api_reference tool

  • patterns/ -- Pattern JS files with documentation headers, tracked in git

  • CLAUDE.md -- Project instructions that Claude reads automatically (hardware context, design principles, coding conventions, pattern templates)

Setup

Prerequisites

1. Clone and install dependencies

git clone <repo-url>
cd pixelblaze-ai
uv sync

2. Create the MCP config

Create .mcp.json in the project root (this file is gitignored). This tells Claude Code how to connect to your PixelBlaze:

{
  "mcpServers": {
    "pixelblaze": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/pixelblaze-ai",
        "run",
        "python",
        "-m",
        "pixelblaze_mcp.server"
      ],
      "env": {
        "PIXELBLAZE_HOST": "192.168.2.97"
      }
    }
  }
}

Replace /path/to/pixelblaze-ai with the absolute path to this directory, and 192.168.2.97 with your PixelBlaze's IP.

3. Start Claude Code

cd pixelblaze-ai
claude

Claude will automatically pick up CLAUDE.md for project context and .mcp.json for the PixelBlaze connection.

Usage

Once Claude Code is running, you can ask it to create and modify patterns conversationally. Claude has access to the PixelBlaze API reference and can deploy patterns directly to the device.

Sample prompts

Creating patterns:

  • "Create a new pattern that looks like rain falling through the layers"

  • "Make a bouncing ball effect with configurable speed and size"

  • "Create an aurora effect using Perlin noise"

Modifying patterns:

  • "The heartbeat effect has too much dark time between beats, make it faster"

  • "Make the fire pattern symmetric -- both edges should be white-hot"

  • "Add more randomization to the comet so it doesn't repeat the same path"

Adjusting parameters:

  • "Increase the brightness of the fireflies effect"

  • "The aurora layers look too similar -- add more color contrast between them"

  • "Make the glitch effect more chaotic with panel blackouts and freezes"

Working with the display:

  • "List all patterns on the device"

  • "Switch to the plasma pattern"

  • "Set the display brightness to 50%"

Available MCP tools

Claude has access to these PixelBlaze tools:

Tool

Description

pixelblaze_create_pattern

Create and activate a new pattern

pixelblaze_update_pattern

Update an existing pattern's code

pixelblaze_delete_pattern

Remove a pattern from the device

pixelblaze_list_patterns

List all patterns on the device

pixelblaze_set_active_pattern

Switch to a specific pattern

pixelblaze_get_active_pattern

See which pattern is running

pixelblaze_get_pattern_code

Read a pattern's source code

pixelblaze_set_brightness

Set display brightness (0-1)

pixelblaze_get_controls

Read current slider/control values

pixelblaze_set_control

Set a slider/control value

pixelblaze_get_device_info

Get device status and config

docs_get_api_reference

Get the PixelBlaze language reference

Project structure

pixelblaze-ai/
  .mcp.json             # MCP server config (gitignored)
  CLAUDE.md             # Project instructions for Claude
  pyproject.toml        # Python project config
  src/pixelblaze_mcp/   # MCP server source
  docs/pixelblaze/      # Cached API reference
  patterns/             # Pattern JS files (deployed to device)

Available Tools

14 tools
docs_fetch_pageA

Fetch the text content of a PixelBlaze documentation page from the web.

Use this to look up specific pages on electromage.com/docs/ that aren't covered by the cached API reference, such as hardware-specific guides, GPIO, networking, or advanced topics.

Args: url: Full URL of the documentation page (e.g. https://electromage.com/docs/GPIO/).

Returns the page text content, or an error message if unreachable.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

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

No annotations provided, but the description discloses it returns page text or error message if unreachable. Could be more explicit about being read-only, but sufficient for a fetch tool.

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

Conciseness5/5

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

Short, front-loaded paragraphs with no extraneous information. Every sentence adds value.

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 output schema exists (not needing return format explanation), the description covers purpose, usage, parameter, and basic return behavior completely.

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

Parameters5/5

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

The single parameter 'url' is described with format and example, adding meaning beyond the schema which has no description. Schema coverage is 0%, so this compensation is excellent.

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 (fetch text), resource (PixelBlaze documentation page), and distinguishes from sibling tools like docs_get_api_reference.

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?

Explicitly tells when to use (for specific pages not covered by cached API reference) and gives examples of topics. Implicitly contrasts with cached reference tools.

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

docs_get_api_referenceA

Get the full PixelBlaze language reference (electromage.com/docs/language-reference).

This covers all built-in functions available when writing pattern code: render(index), beforeRender(delta), color functions (hsv, rgb), math/waveform functions (time, wave, triangle, sin, cos, etc.), array functions, 2D/3D rendering, UI controls (sliders, pickers), language features and limitations, variables, constants, and more.

Always call this before writing or editing any PixelBlaze pattern code.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 full burden. It accurately describes the tool as retrieving a static reference document, with no contradictions. The behavior is straightforward and 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?

Concise and well-structured: first line states action, then bullet-like list, then usage instruction. Every sentence adds value with no waste.

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 tool with an output schema, the description covers purpose, content, and usage. It is complete and sufficient for an agent to select and 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?

There are no parameters (schema coverage 100%), so baseline is 4. The description adds value by detailing the content covered beyond the schema.

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

Purpose5/5

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

The description clearly states it gets the full PixelBlaze language reference, listing covered topics. It distinguishes itself from sibling tools like docs_fetch_page and docs_get_mapper_reference by specifying it is for the full language reference.

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?

Includes explicit instruction: 'Always call this before writing or editing any PixelBlaze pattern code.' This provides clear context, though it does not mention when not to use or alternatives.

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

docs_get_mapper_referenceA

Get the PixelBlaze 2D/3D pixel mapping reference documentation.

This covers how to define spatial coordinates for pixels using the mapper, coordinate systems, and the render2D/render3D pattern functions.

Call this when working with multi-dimensional LED layouts or spatial effects.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It describes the tool as retrieving documentation, which implies read-only behavior, but does not explicitly state idempotency, response format, or side effects. The behavior is straightforward, but additional detail would improve transparency.

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

Conciseness5/5

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

Three sentences, each earning its place: purpose, content summary, usage guidance. Perfectly front-loaded and concise.

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

Completeness5/5

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

Given the tool's simplicity and the existence of an output schema, the description is complete. It covers what the tool does, what content it provides, and when to use it.

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 no parameters, so the schema provides full coverage. Baseline is 4 for zero parameters. The description does not add parameter info, which 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 clearly states the tool retrieves PixelBlaze 2D/3D pixel mapping reference documentation. It distinguishes from siblings like docs_get_api_reference and docs_fetch_page by specifying the exact resource and content scope.

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 explicit guidance: 'Call this when working with multi-dimensional LED layouts or spatial effects.' This clearly indicates when to use, though it does not explicitly exclude cases or mention alternatives.

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

pixelblaze_create_patternA

Create a new pattern on the PixelBlaze with the given JavaScript code, then activate it.

Args: name: Display name for the new pattern. code: PixelBlaze JavaScript source code (must define a render(index) function).

Returns a dict with the new pattern's 'id' and 'name'.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations exist, so description carries full burden. It discloses that the tool activates the pattern after creation and requires the code to define a render(index) function, providing important 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?

Three sentences plus clear Args block, all concise and front-loaded with the main action. No unnecessary words.

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 two parameters, no annotations, and existing output schema (mentioned in description), this covers purpose, parameter semantics, side effect, and return value completely.

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

Parameters4/5

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

Schema description coverage is 0%, so description adds meaning. It explains that 'name' is a display name and 'code' must be PixelBlaze JavaScript with a render(index) function, which goes beyond the schema's title-only fields.

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 specific verb 'Create' and resource 'pattern on PixelBlaze', and adds 'then activate it', clearly distinguishing this from sibling tools like pixelblaze_update_pattern or pixelblaze_set_active_pattern.

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 this tool by mentioning activation, but does not explicitly state when not to use it or provide alternatives. The purpose is clear but lacks explicit usage boundaries.

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

pixelblaze_delete_patternC

Delete a pattern from the PixelBlaze device.

Args: pattern_id: The ID of the pattern to delete.

Returns a confirmation message.

ParametersJSON Schema
NameRequiredDescriptionDefault
pattern_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavior. It only says 'Returns a confirmation message' without detailing side effects (e.g., permanent deletion, impact on active pattern). The agent is left uncertain about irreversible consequences.

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

Conciseness3/5

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

The description is very concise, with two sentences and a parameter line. It front-loads the purpose, but the lack of detail makes it feel under-specified rather than efficiently lean.

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

Completeness2/5

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

Given the existence of an output schema, the description does not need to explain return values, but it still fails to cover important contextual details like safety considerations or error conditions. For a simple deletion operation, it is barely adequate.

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

Parameters2/5

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

The description adds minimal meaning beyond the schema: 'The ID of the pattern to delete.' With 0% schema description coverage, the description should provide more context, such as how to obtain the pattern_id or its expected format.

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 'Delete a pattern from the PixelBlaze device,' specifying a definite verb and resource. It distinguishes from sibling tools like pixelblaze_create_pattern, pixelblaze_update_pattern, and pixelblaze_list_patterns.

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 vs alternatives. It does not mention prerequisites, such as the pattern not being currently active, or when deletion is inappropriate.

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

pixelblaze_get_active_patternA

Get the currently active (running) pattern on the PixelBlaze.

Returns a dict with 'id' and 'name' of the active pattern.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/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 full burden. It states the tool reads the active pattern and returns a dict, but does not mention potential edge cases (e.g., when no pattern is active) or authentication requirements. Acceptable for a simple getter but lacks depth.

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

Conciseness5/5

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

Two sentences, no wasted words. Front-loaded with action and resource, followed by return value. Efficient and well-structured.

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?

An output schema exists (not shown) but description covers the return dict structure. For a no-parameter, simple read tool, this is largely complete. Minor omission: no mention of error conditions or what happens if no pattern is running.

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?

No parameters exist, so schema coverage is 100%. Per guidelines, baseline for 0 params is 4. Description does not need to add parameter info.

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 clearly states the action ('Get the currently active (running) pattern'), identifies the resource ('PixelBlaze'), and specifies the return value (dict with 'id' and 'name'). This distinguishes it from siblings like pixelblaze_list_patterns (lists all) and pixelblaze_set_active_pattern (sets).

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?

No explicit guidance on when to use this tool versus alternatives. While the purpose is straightforward, the description does not contrast it with similar tools (e.g., use this instead of list_patterns to check only the active pattern).

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

pixelblaze_get_controlsA

Get the UI controls for the currently active pattern.

Returns a list of control dicts, each with 'name', 'value', and 'type' keys. The controls correspond to exported slider/toggle/picker variables in the pattern code.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 full behavioral disclosure responsibility. It mentions return format but does not state that the operation is read-only, nor does it cover error conditions, prerequisites like a connected device or active pattern, or any 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?

Two sentences with no wasted words. The first sentence states the purpose, the second adds detail. Front-loaded and efficient.

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

Completeness3/5

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

The description adequately explains the return format and purpose. However, given the presence of an output schema, the description already covers it. Missing context about error handling, prerequisites, or required device state. Adequate but not thorough.

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?

There are no parameters, schema description coverage is trivially 100%. The description adds value by explaining the return format but does not need to add parameter semantics. Baseline score of 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 clearly states the tool gets UI controls for the currently active pattern and specifies the return format. This is a specific verb-resource combination that distinguishes it from sibling tools like pixelblaze_set_control.

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 UI controls are needed, but lacks explicit guidance on when to use or not use this tool versus alternatives. No prerequisites or exclusions are mentioned.

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

pixelblaze_get_device_infoA

Get hardware and runtime information about the PixelBlaze device.

Returns a dict with keys: host, pixel_count, fps, uptime_s, version_major, version_minor.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses the return structure (dict with specific keys), implying a read-only, safe operation. It could mention it's non-destructive, but given the nature of 'get', it's 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?

Two short sentences: one defining the action, the other specifying the return format. No redundant information; every word contributes.

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, output-schema-present tool, the description is complete. It explains the exact output structure and that no inputs are required. There is no missing context.

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

Parameters4/5

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

There are no parameters, so baseline is 4. The description adds value by listing the return keys, which is especially helpful since no output schema is visible. It clarifies what the tool 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 clearly states it retrieves hardware and runtime information of a PixelBlaze device, and lists specific keys. This distinguishes it from sibling tools that manage patterns, brightness, or controls.

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 implicitly conveys usage by stating the tool's purpose. While alternatives are not explicitly mentioned, the sibling tools are all for different tasks, so the context is clear. No exclusions are needed.

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

pixelblaze_get_pattern_codeA

Get the JavaScript source code of a pattern.

Args: pattern_id: The pattern ID to retrieve code for.

Returns the JavaScript source code string.

ParametersJSON Schema
NameRequiredDescriptionDefault
pattern_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description must fully convey behavior. It states it is a read operation returning source code, but does not mention error handling, permissions, or side effects. Adequate for a simple getter.

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 very concise: a one-line summary followed by an Args section and a return note. Every sentence is essential and 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?

Given the tool has a single parameter and an output schema, the description covers the essentials. It could mention error handling or prerequisites, but overall it is sufficiently complete for such a simple tool.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It adds meaning by explaining that pattern_id is 'The pattern ID to retrieve code for' and notes the return value is a JavaScript source code string.

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 'Get the JavaScript source code of a pattern', using a specific verb and resource. It distinguishes this tool from siblings like pixelblaze_create_pattern or pixelblaze_list_patterns.

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 pattern source code but provides no explicit when-to-use or when-not-to-use guidance. No alternatives are mentioned.

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

pixelblaze_list_patternsA

List all patterns stored on the PixelBlaze device.

Returns a list of dicts with 'id' and 'name' keys.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior2/5

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

Annotations are absent, so the description must disclose behavioral traits. It only mentions the return format, not whether the operation is safe, read-only, or has side effects. The read-only nature is implied by 'list', but not explicitly stated.

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

Conciseness5/5

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

Two sentences with no waste: first states purpose, second states return format. Front-loaded and efficient.

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?

The tool is simple with no parameters and an output schema. The description fully covers the action and return structure, so completeness is adequate.

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 baseline is 4. The description does not need to add parameter info 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 'List all patterns stored on the PixelBlaze device', specifying the action (list) and resource (patterns). This distinguishes it from siblings like pixelblaze_create_pattern or pixelblaze_get_active_pattern.

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?

No explicit when or when-not guidance is given, but the purpose is straightforward and usage is implied for retrieving a list of patterns. The simplicity of the tool partially compensates, but alternatives are not mentioned.

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

pixelblaze_set_active_patternA

Switch the PixelBlaze to run a specific pattern by its ID.

Args: pattern_id: The pattern ID to activate (from pixelblaze_list_patterns).

Returns a confirmation message.

ParametersJSON Schema
NameRequiredDescriptionDefault
pattern_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 must convey behavioral traits. It indicates a mutation (switch) and returns confirmation, but lacks details on side effects, permissions, latency, or whether the change is instantaneous. The minimal disclosure limits transparency beyond the obvious 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?

The description is brief, with a clear purpose statement followed by compact parameter documentation. Every sentence serves a purpose: stating the action, explaining the parameter, and indicating the return value. No extraneous content.

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?

While the tool is simple (one parameter, mutation), the description lacks details about preconditions (e.g., device must be connected) or consequences (e.g., stops previous pattern). The existence of an output schema (not shown) may supplement, but the description alone feels adequate but minimal for a mutation tool with no annotations.

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 no description for 'pattern_id' (0% coverage), but the tool description adds: 'pattern_id: The pattern ID to activate (from pixelblaze_list_patterns).' This explains the parameter's meaning and source, providing clear semantic value beyond the schema alone. Could be enhanced with format 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 states 'Switch the PixelBlaze to run a specific pattern by its ID,' clearly identifying the action (switch/run), resource (pattern), and selection mechanism (by ID). This distinguishes it from siblings like pixelblaze_get_active_pattern (read) and pixelblaze_list_patterns (list).

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 mentions 'from pixelblaze_list_patterns' for pattern_id, implying a prerequisite step, but does not explicitly state when to use this tool versus alternatives (e.g., get vs set) or provide exclusions. The guidance is implied rather than explicit.

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

pixelblaze_set_brightnessA

Set the global brightness of the PixelBlaze.

Args: value: Brightness level from 0.0 (off) to 1.0 (full brightness).

Returns a confirmation message.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavioral traits. It only mentions 'Returns a confirmation message', but omits critical details like idempotency, persistence of the setting, whether it requires an active connection, or the effect of invalid values. This leaves the agent guessing.

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: one stating the purpose and one explaining the parameter and return. It is front-loaded, efficient, and contains no fluff. Every sentence is necessary and informative.

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

Completeness4/5

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

Given the tool's simplicity (single parameter, output schema exists), the description provides adequate context. It explains the parameter and the return value. It could be slightly more complete by noting that the brightness is set immediately or globally applies, but overall it's sufficient.

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

Parameters4/5

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

The description explains the single parameter 'value' with a clear range (0.0 off to 1.0 full) and purpose. Since the input schema has no description (0% coverage), the description fully compensates by adding meaning. However, it could mention type constraints (e.g., numeric) but that's standard.

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

Purpose5/5

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

The description clearly states the verb 'Set' and the resource 'global brightness of the PixelBlaze', making the purpose immediately obvious. It distinguishes this tool from siblings like 'pixelblaze_set_active_pattern' or 'pixelblaze_set_control' by focusing specifically on global brightness.

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. For instance, the sibling 'pixelblaze_set_control' might also affect brightness, but there is no clarification. There are no examples, prerequisites, or when-not-to-use instructions.

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

pixelblaze_set_controlA

Set the value of a UI control (slider, toggle, etc.) on the active pattern.

Args: name: The control variable name (as it appears in pixelblaze_get_controls). value: Numeric value (sliders: 0.0–1.0; toggles: 0 or 1).

Returns a confirmation message.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYes
valueYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It specifies return type (confirmation message) and value ranges, but does not disclose prerequisites (e.g., must the pattern be active? what if control doesn't exist?) or side effects (e.g., immediate visual change).

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 concise (few sentences) with a clear Args section. Every sentence adds value, no 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?

Given the tool's simplicity (2 required params, no enums, has output schema), the description is fairly complete. It could mention error handling or the requirement for an active pattern, but overall it provides adequate information.

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?

Input schema has 0% description coverage, so the description adds essential meaning: 'name' is the control variable name as from pixelblaze_get_controls, and 'value' is numeric with specific ranges per control type. This significantly aids correct usage.

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 ('Set the value'), the resource ('UI control on the active pattern'), and provides specific examples (slider, toggle). It distinguishes from sibling tools like pixelblaze_set_brightness and pixelblaze_set_active_pattern.

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

Usage Guidelines4/5

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

The description implies when to use this tool (when you need to change a UI control value on the active pattern) but does not explicitly state when not to use it or mention alternatives like pixelblaze_get_controls for reading current values. The context is clear enough for typical use.

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

pixelblaze_update_patternA

Replace the JavaScript source code of an existing pattern.

Args: pattern_id: The ID of the pattern to update. code: New PixelBlaze JavaScript source code.

Returns a confirmation message.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYes
pattern_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 must convey behavioral traits. It states 'Replace the JavaScript source code' but does not disclose side effects (e.g., whether other pattern properties are preserved, if there are auth requirements, or if the operation is reversible). This is insufficient for a mutation tool.

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

Conciseness5/5

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

The description is extremely concise: a single sentence stating the action, followed by a bullet list of parameter descriptions. Every element adds value with no redundancy. The key action 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?

Given that an output schema exists, the description's note 'Returns a confirmation message.' is adequate. However, for a mutation tool with no annotations, additional context about error cases (e.g., pattern not found) or idempotency would enhance completeness. Still, basic expectations are met.

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 0% description coverage, but the tool description adds concise meanings for both parameters: 'pattern_id: The ID of the pattern to update' and 'code: New PixelBlaze JavaScript source code.' This provides essential context beyond the schema titles.

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 the specific verb 'Replace' with the resource 'JavaScript source code of an existing pattern', clearly distinguishing it from sibling tools like pixelblaze_create_pattern (create new) and pixelblaze_delete_pattern (remove). The action 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 Guidelines3/5

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

The description implies usage for updating existing patterns but does not explicitly state when to use this tool versus creating a new pattern or deleting/recreating. No alternative tools or conditionals are mentioned, leaving the agent to infer 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. Dates show when Glama detected each change.

  1. 14 tool updatesv0.1.0
    • First observeddocs_fetch_page
    • First observeddocs_get_api_reference
    • First observeddocs_get_mapper_reference
    • First observedpixelblaze_create_pattern
    • First observedpixelblaze_delete_pattern
    • First observedpixelblaze_get_active_pattern
    • First observedpixelblaze_get_controls
    • First observedpixelblaze_get_device_info
    • First observedpixelblaze_get_pattern_code
    • First observedpixelblaze_list_patterns
    • First observedpixelblaze_set_active_pattern
    • First observedpixelblaze_set_brightness
    • First observedpixelblaze_set_control
    • First observedpixelblaze_update_pattern

TDQS

A4/5.0
Disambiguation5/5

Each tool targets a distinct action: documentation tools are separated by page type, and device tools cover unique operations (CRUD, controls, brightness, info) with no overlap.

Naming Consistency5/5

All tools follow a consistent snake_case format with the server name prefix (docs_ or pixelblaze_) followed by a verb and noun, making the purpose clear.

Tool Count5/5

14 tools is well-scoped for managing PixelBlaze patterns, controls, brightness, and documentation; neither too sparse nor overwhelming.

Completeness5/5

Covers full lifecycle of patterns (CRUD, activation), brightness, control manipulation, device info, and essential documentation references with no obvious gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

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

curl -X GET 'https://glama.ai/api/mcp/v1/servers/tomnz/pixelblaze-claude'

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