Select Layer
photopea_select_layerSelect a layer by name or index to set it as the active target for subsequent edits such as filters, adjustments, and fills.
Instructions
Set a layer as the active layer by name or index. Many tools (apply_filter, apply_adjustment, fill_selection) operate on the active layer — use this to target a specific layer first. Use get_layers to find layer names and indices.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| target | Yes | Layer name (string) or index (number) |
Implementation Reference
- src/tools/layer.ts:76-89 (handler)Handler registration for photopea_select_layer tool. Calls buildSelectLayer to generate the Photopea JS script, executes it via the bridge, and returns a success/error result.
server.registerTool("photopea_select_layer", { title: "Select Layer", description: "Set a layer as the active layer by name or index. Many tools (apply_filter, apply_adjustment, fill_selection) operate on the active layer — use this to target a specific layer first. Use get_layers to find layer names and indices.", inputSchema: { target: layerTarget, }, annotations: { readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false }, }, async (params) => { const script = buildSelectLayer({ target: params.target }); bridge.sendActivity({ type: "activity", id: "", tool: "select_layer", summary: `Select layer: ${params.target}` }); const result = await bridge.executeScript(script); if (!result.success) return { isError: true, content: [{ type: "text" as const, text: result.error || "Failed to select layer" }] }; return { content: [{ type: "text" as const, text: `Layer selected: ${params.target}` }] }; }); - src/bridge/script-builder.ts:261-267 (helper)Builds the JavaScript string to set a layer as active in Photopea. Uses layerRef helper to resolve the target (by name string or numeric index).
export function buildSelectLayer(params: LayerTarget): string { const ref = layerRef(params.target); return [ `app.activeDocument.activeLayer = ${ref};`, `app.echoToOE('ok');`, ].join("\n"); } - src/bridge/script-builder.ts:57-62 (helper)Helper function that emits a JS expression resolving to a layer — by numeric index (app.activeDocument.layers[index]) or by name string (app.activeDocument.layers.getByName(...)).
function layerRef(target: string | number): string { if (typeof target === "number") { return `app.activeDocument.layers[${target}]`; } return `app.activeDocument.layers.getByName('${escapeString(target)}')`; } - src/bridge/types.ts:100-102 (schema)TypeScript interface defining the LayerTarget type used by buildSelectLayer and other layer-related script builders.
export interface LayerTarget { target: string | number; } - src/tools/layer.ts:6-22 (registration)Import of buildSelectLayer from script-builder and definition of layerTarget zod schema used in the tool registration.
import { buildAddLayer, buildAddFillLayer, buildDeleteLayer, buildSelectLayer, buildSetLayerProperties, buildMoveLayer, buildDuplicateLayer, buildReorderLayer, buildGroupLayers, buildGetLayers, escapeString, } from "../bridge/script-builder.js"; const layerTarget = z.union([z.string(), z.number()]).describe("Layer name (string) or index (number)"); export function registerLayerTools(server: McpServer, bridge: PhotopeaBridge): void {