Skip to main content
Glama

Krita Adjust Pixels

krita_adjust_pixels

Adjust pixel regions in Krita layers with invert, grayscale, HSV shifts, blur, brightness/contrast, or posterize while preserving alpha. Uses a crash-free Pillow bridge instead of native filters.

Instructions

Crash-free image adjustments on a Krita layer region, computed with Pillow over the get_pixels/set_pixels PNG bridge (libkis Filter.apply() hard-crashes Krita 5.3.3, so native filters are quarantined; see krita_list_filters for names).

operation: invert | grayscale | hsv (hue_shift -360..360, saturation_shift/value_shift -100..100) | blur (radius px) | bright_contrast (brightness/contrast factors, 1.0 = unchanged) | posterize (bits 1-8). width/height 0 = to the canvas edge; layer=None targets the active layer. Alpha is preserved throughout.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
xNo
yNo
bitsNo
layerNo
widthNo
heightNo
radiusNo
contrastNo
hue_shiftNo
operationYes
brightnessNo
value_shiftNo
saturation_shiftNo

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.6/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 full behavioral burden and does significant work: it promises 'crash-free', notes 'Alpha is preserved throughout', explains the internal computation path, and warns about the native filter crash based on the specific Krita version. It does not mention whether changes are undoable or if the operation returns anything, but for a pixel mutation tool the provided traits are meaningful and non-obvious.

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?

Every sentence earns its place: the first sentence states the value proposition and crash caveat, the second compactly maps operations to parameters and defaults, and the final clause covers the alpha guarantee. Dense but not bloated, and all critical decision 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?

Given the tool's complexity (13 parameters, no annotations, zero schema descriptions), the description supplies enough to call it correctly for most cases: operation semantics, ranges, defaults, layer handling, and edge behavior. It omits x/y meaning but that is inferable as a region offset sketch. An output schema exists which can explain return values, so the overall context is 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?

Schema description coverage is 0%, so the description must compensate. It defines the 'operation' values and their associated parameters with ranges (hue_shift -360..360, saturation_shift/value_shift -100..100), explains 'brightness/contrast factors, 1.0 = unchanged', 'posterize (bits 1-8)', and 'width/height 0 = to the canvas edge; layer=None targets the active layer'. The only notable gap is x/y coordinates, which are left to inference.

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

Purpose5/5

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

The description opens with a specific verb and resource: 'image adjustments on a Krita layer region'. It enumerates concrete operations (invert, grayscale, hsv, blur, bright_contrast, posterize) and names the integration mechanism (Pillow over get_pixels/set_pixels PNG bridge), distinguishing it from the quarantined native filter path and from sibling tools that mutate pixels (krita_set_pixels).

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?

The text explicitly tells the agent why this tool exists ('libkis Filter.apply() hard-crashes Krita 5.3.3, so native filters are quarantined') and points to a sibling for filter names ('see krita_list_filters for names'). It also clarifies layer targeting and canvas-edge semantics, so the agent knows when and how to prefer it.

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

Deploy Server

Other Tools