{
  "date": "2026-10-15",
  "mode": "headless",
  "host": "Python JSON-RPC stdio verification client",
  "python": "3.11.9",
  "system": "Windows NT 10.0.26200; official x64 binary",
  "server": {
    "name": "photocraft",
    "version": "0.8.2"
  },
  "protocol": "2024-11-05",
  "steps": [
    {
      "tool": "doc_open",
      "arguments": {
        "path": "canyon.webp"
      },
      "result": {
        "content": [
          {
            "type": "text",
            "text": "{\"height\":941,\"index\":0,\"layers\":1,\"name\":\"canyon.webp\",\"warnings\":[],\"width\":1672}"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "doc_inspect",
      "arguments": {},
      "result": {
        "content": [
          {
            "type": "text",
            "text": "{\"activeLayer\":2,\"canRedo\":false,\"canUndo\":false,\"channels\":{\"alpha\":[],\"colors\":[{\"name\":\"Red\",\"visible\":true},{\"name\":\"Green\",\"visible\":true},{\"name\":\"Blue\",\"visible\":true}],\"composite\":\"RGB\",\"compositeVisible\":true,\"layerMaskView\":null,\"quickMask\":null,\"target\":{\"kind\":\"composite\"}},\"depth\":8,\"hasSelection\":false,\"height\":941,\"history\":[\"Open\"],\"isolatedLayers\":[],\"lastAppliedComp\":null,\"layerComps\":[],\"layerMaskView\":null,\"layers\":[{\"blend\":\"Normal\",\"bounds\":[0,0,1672,941],\"clipped\":false,\"fill\":1.0,\"hasMask\":false,\"hasVectorMask\":false,\"id\":2,\"kind\":\"Pixel\",\"labelColor\":\"none\",\"linkGroup\":null,\"name\":\"Background\",\"opacity\":1.0,\"selected\":true,\"vectorMaskEnabled\":null,\"visible\":true}],\"measurement\":{\"count\":0,\"countGroups\":0,\"ruler\":null,\"scale\":\"1 pixels = 1.0000 pixels\"},\"mode\":\"Rgb\",\"name\":\"canyon.webp\",\"notes\":[],\"path\":\"canyon.webp\",\"quickMask\":false,\"resolution\":72.0,\"revision\":1,\"selectedLayers\":[2],\"selectionBounds\":null,\"snapshots\":[],\"symmetry\":null,\"timeline\":null,\"variables\":null,\"width\":1672}"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "command_run",
      "arguments": {
        "id": "image.imageRotation.flipCanvasHorizontal",
        "params": {}
      },
      "result": {
        "content": [
          {
            "type": "text",
            "text": "null"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "doc_render_preview",
      "arguments": {
        "max_side": 640
      },
      "result": {
        "content": [
          {
            "type": "image",
            "mimeType": "image/png",
            "saved_file": "preview.png"
          },
          {
            "type": "text",
            "text": "flattened preview (max side 640)"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "doc_export",
      "arguments": {
        "path": "canyon-flipped.png"
      },
      "result": {
        "content": [
          {
            "type": "text",
            "text": "{\"path\":\"canyon-flipped.png\",\"warnings\":[]}"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "doc_save",
      "arguments": {
        "path": "canyon-flipped.pcraft"
      },
      "result": {
        "content": [
          {
            "type": "text",
            "text": "{\"path\":\"canyon-flipped.pcraft\",\"warnings\":[]}"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "doc_open",
      "arguments": {
        "path": "output/canyon-flipped.png"
      },
      "result": {
        "content": [
          {
            "type": "text",
            "text": "{\"height\":941,\"index\":1,\"layers\":1,\"name\":\"canyon-flipped.png\",\"warnings\":[],\"width\":1672}"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "doc_inspect",
      "arguments": {},
      "result": {
        "content": [
          {
            "type": "text",
            "text": "{\"activeLayer\":4,\"canRedo\":false,\"canUndo\":false,\"channels\":{\"alpha\":[],\"colors\":[{\"name\":\"Red\",\"visible\":true},{\"name\":\"Green\",\"visible\":true},{\"name\":\"Blue\",\"visible\":true}],\"composite\":\"RGB\",\"compositeVisible\":true,\"layerMaskView\":null,\"quickMask\":null,\"target\":{\"kind\":\"composite\"}},\"depth\":8,\"hasSelection\":false,\"height\":941,\"history\":[\"Open\"],\"isolatedLayers\":[],\"lastAppliedComp\":null,\"layerComps\":[],\"layerMaskView\":null,\"layers\":[{\"blend\":\"Normal\",\"bounds\":[0,0,1672,941],\"clipped\":false,\"fill\":1.0,\"hasMask\":false,\"hasVectorMask\":false,\"id\":4,\"kind\":\"Pixel\",\"labelColor\":\"none\",\"linkGroup\":null,\"name\":\"Background\",\"opacity\":1.0,\"selected\":true,\"vectorMaskEnabled\":null,\"visible\":true}],\"measurement\":{\"count\":0,\"countGroups\":0,\"ruler\":null,\"scale\":\"1 pixels = 1.0000 pixels\"},\"mode\":\"Rgb\",\"name\":\"canyon-flipped.png\",\"notes\":[],\"path\":\"output/canyon-flipped.png\",\"quickMask\":false,\"resolution\":72.00900268554688,\"revision\":1,\"selectedLayers\":[4],\"selectionBounds\":null,\"snapshots\":[],\"symmetry\":null,\"timeline\":null,\"variables\":null,\"width\":1672}"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "doc_open",
      "arguments": {
        "path": "<verification-root>\\outside.webp"
      },
      "result": {
        "content": [
          {
            "type": "text",
            "text": "automation path rejected: absolute paths must be inside the automation root: `<verification-root>\\outside.webp`"
          }
        ],
        "isError": true
      }
    },
    {
      "tool": "doc_export",
      "arguments": {
        "path": "<verification-root>\\denied.png"
      },
      "result": {
        "content": [
          {
            "type": "text",
            "text": "automation path rejected: absolute paths must be inside the automation root: `<verification-root>\\denied.png`"
          }
        ],
        "isError": true
      }
    },
    {
      "tool": "doc_new",
      "arguments": {
        "width": 680,
        "height": 360,
        "background": "white",
        "name": "PhotoCraft editable text sample"
      },
      "result": {
        "content": [
          {
            "type": "text",
            "text": "{\"document\":2}"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "command_run",
      "arguments": {
        "id": "type.create",
        "params": {
          "x": 48,
          "y": 160,
          "text": "PhotoCraft Sample",
          "name": "Editable title",
          "font": "Inter",
          "size": 44,
          "color": "#10251f"
        }
      },
      "result": {
        "content": [
          {
            "type": "text",
            "text": "{\"bounds\":[50,126,438,170],\"layer\":7}"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "doc_save",
      "arguments": {
        "path": "title-source.psd"
      },
      "result": {
        "content": [
          {
            "type": "text",
            "text": "{\"path\":\"title-source.psd\",\"warnings\":[]}"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "doc_render_preview",
      "arguments": {
        "max_side": 680
      },
      "result": {
        "content": [
          {
            "type": "image",
            "mimeType": "image/png",
            "saved_file": "title-source-preview.png"
          },
          {
            "type": "text",
            "text": "flattened preview (max side 680)"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "doc_open",
      "arguments": {
        "path": "output/title-source.psd"
      },
      "result": {
        "content": [
          {
            "type": "text",
            "text": "{\"height\":360,\"index\":3,\"layers\":2,\"name\":\"title-source.psd\",\"warnings\":[],\"width\":680}"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "command_run",
      "arguments": {
        "id": "type.info",
        "params": {}
      },
      "result": {
        "content": [
          {
            "type": "text",
            "text": "{\"antialias\":\"Smooth\",\"bounds\":[50,126,438,170],\"layer\":10,\"lines\":[{\"ascent\":42.625,\"baseline\":0.0,\"descent\":10.61328125,\"end\":17,\"start\":0,\"x0\":0.0,\"x1\":390.54296875}],\"orientation\":\"Horizontal\",\"paragraphs\":[{\"end\":17,\"start\":0,\"style\":{\"align\":\"Left\",\"auto_leading\":1.2000000476837158,\"direction\":\"Auto\",\"end_indent_pt\":0.0,\"first_line_indent_pt\":0.0,\"hyphenate\":false,\"space_after_pt\":0.0,\"space_before_pt\":0.0,\"start_indent_pt\":0.0}}],\"pxPerPt\":1.0,\"runs\":[{\"end\":17,\"start\":0,\"style\":{\"baseline_shift_pt\":0.0,\"caps\":\"Normal\",\"color\":{\"alpha\":1.0,\"c\":[0.06274999678134918,0.14509999752044678,0.12156999856233597,0.0],\"mode\":\"Rgb\"},\"discretionary_ligatures\":false,\"faux_bold\":false,\"faux_italic\":false,\"features\":[],\"font_family\":\"Inter\",\"font_style\":\"\",\"horizontal_scale\":1.0,\"italic\":false,\"kern\":0.0,\"kerning\":\"Metrics\",\"language\":null,\"leading_pt\":null,\"ligatures\":true,\"postscript_name\":\"Inter-Regular\",\"size_pt\":44.0,\"strikethrough\":false,\"tracking\":0.0,\"underline\":false,\"variations\":[],\"vertical_scale\":1.0,\"weight\":400}}],\"shape\":\"Point\",\"text\":\"PhotoCraft Sample\",\"transform\":[1.0,0.0,0.0,1.0,48.0,160.0],\"warp\":null}"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "command_run",
      "arguments": {
        "id": "type.edit",
        "params": {
          "text": "PhotoCraft Edited"
        }
      },
      "result": {
        "content": [
          {
            "type": "text",
            "text": "{\"antialias\":\"Smooth\",\"bounds\":[50,126,413,162],\"layer\":10,\"lines\":[{\"ascent\":42.625,\"baseline\":0.0,\"descent\":10.61328125,\"end\":17,\"start\":0,\"x0\":0.0,\"x1\":366.416015625}],\"orientation\":\"Horizontal\",\"paragraphs\":[{\"end\":17,\"start\":0,\"style\":{\"align\":\"Left\",\"auto_leading\":1.2000000476837158,\"direction\":\"Auto\",\"end_indent_pt\":0.0,\"first_line_indent_pt\":0.0,\"hyphenate\":false,\"space_after_pt\":0.0,\"space_before_pt\":0.0,\"start_indent_pt\":0.0}}],\"pxPerPt\":1.0,\"runs\":[{\"end\":17,\"start\":0,\"style\":{\"baseline_shift_pt\":0.0,\"caps\":\"Normal\",\"color\":{\"alpha\":1.0,\"c\":[0.06274999678134918,0.14509999752044678,0.12156999856233597,0.0],\"mode\":\"Rgb\"},\"discretionary_ligatures\":false,\"faux_bold\":false,\"faux_italic\":false,\"features\":[],\"font_family\":\"Inter\",\"font_style\":\"\",\"horizontal_scale\":1.0,\"italic\":false,\"kern\":0.0,\"kerning\":\"Metrics\",\"language\":null,\"leading_pt\":null,\"ligatures\":true,\"postscript_name\":\"Inter-Regular\",\"size_pt\":44.0,\"strikethrough\":false,\"tracking\":0.0,\"underline\":false,\"variations\":[],\"vertical_scale\":1.0,\"weight\":400}}],\"shape\":\"Point\",\"text\":\"PhotoCraft Edited\",\"transform\":[1.0,0.0,0.0,1.0,48.0,160.0],\"warp\":null}"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "doc_save",
      "arguments": {
        "path": "title-edited.psd"
      },
      "result": {
        "content": [
          {
            "type": "text",
            "text": "{\"path\":\"title-edited.psd\",\"warnings\":[]}"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "doc_export",
      "arguments": {
        "path": "title-edited.png"
      },
      "result": {
        "content": [
          {
            "type": "text",
            "text": "{\"path\":\"title-edited.png\",\"warnings\":[\"2 layer(s) flattened; layers, masks and blend modes are not kept\"]}"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "doc_render_preview",
      "arguments": {
        "max_side": 680
      },
      "result": {
        "content": [
          {
            "type": "image",
            "mimeType": "image/png",
            "saved_file": "title-edited-preview.png"
          },
          {
            "type": "text",
            "text": "flattened preview (max side 680)"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "doc_open",
      "arguments": {
        "path": "output/title-edited.psd"
      },
      "result": {
        "content": [
          {
            "type": "text",
            "text": "{\"height\":360,\"index\":4,\"layers\":2,\"name\":\"title-edited.psd\",\"warnings\":[],\"width\":680}"
          }
        ],
        "isError": false
      }
    },
    {
      "tool": "command_run",
      "arguments": {
        "id": "type.info",
        "params": {}
      },
      "result": {
        "content": [
          {
            "type": "text",
            "text": "{\"antialias\":\"Smooth\",\"bounds\":[50,126,413,162],\"layer\":13,\"lines\":[{\"ascent\":42.625,\"baseline\":0.0,\"descent\":10.61328125,\"end\":17,\"start\":0,\"x0\":0.0,\"x1\":366.416015625}],\"orientation\":\"Horizontal\",\"paragraphs\":[{\"end\":17,\"start\":0,\"style\":{\"align\":\"Left\",\"auto_leading\":1.2000000476837158,\"direction\":\"Auto\",\"end_indent_pt\":0.0,\"first_line_indent_pt\":0.0,\"hyphenate\":false,\"space_after_pt\":0.0,\"space_before_pt\":0.0,\"start_indent_pt\":0.0}}],\"pxPerPt\":1.0,\"runs\":[{\"end\":17,\"start\":0,\"style\":{\"baseline_shift_pt\":0.0,\"caps\":\"Normal\",\"color\":{\"alpha\":1.0,\"c\":[0.06274999678134918,0.14509999752044678,0.12156999856233597,0.0],\"mode\":\"Rgb\"},\"discretionary_ligatures\":false,\"faux_bold\":false,\"faux_italic\":false,\"features\":[],\"font_family\":\"Inter\",\"font_style\":\"\",\"horizontal_scale\":1.0,\"italic\":false,\"kern\":0.0,\"kerning\":\"Metrics\",\"language\":null,\"leading_pt\":null,\"ligatures\":true,\"postscript_name\":\"Inter-Regular\",\"size_pt\":44.0,\"strikethrough\":false,\"tracking\":0.0,\"underline\":false,\"variations\":[],\"vertical_scale\":1.0,\"weight\":400}}],\"shape\":\"Point\",\"text\":\"PhotoCraft Edited\",\"transform\":[1.0,0.0,0.0,1.0,48.0,160.0],\"warp\":null}"
          }
        ],
        "isError": false
      }
    }
  ],
  "release": {
    "url": "https://github.com/storytold/photocraft/releases/tag/v0.8.2",
    "asset": "photocraft-0.8.2-windows-x64-portable.zip",
    "sha256": "242acd4134e7947b462d68748b32a6f038fa97099601da950652489690f81799"
  },
  "workspace": {
    "read_root": "<verification-root>/workspace",
    "write_root": "<verification-root>/workspace/output",
    "input": "/images/desert-arch.webp"
  },
  "checks": {
    "horizontal_flip_pixel_comparison": "Decoded RGB exactly matches a horizontal flip of the input: mean and maximum absolute differences both 0.",
    "psd_reopen": "type.info returns PhotoCraft Sample before editing and PhotoCraft Edited after saving and reopening.",
    "png_dimensions": [
      680,
      360
    ],
    "permission_denials": "Read and write outside the granted roots returned isError; denied output was not created."
  },
  "not_tested": [
    "Desktop bridge",
    "AI assistant host integration",
    "macOS and Linux",
    "Browser PSD text editing",
    "Photoshop round trip"
  ],
  "files": [
    {
      "name": "canyon-flipped.png",
      "bytes": 2644499,
      "sha256": "8a02384de7a11af37f2a7edbeb3f6799111838bf1e61997e44607402a94def4a"
    },
    {
      "name": "preview.png",
      "bytes": 523545,
      "sha256": "88ddd0b0dd3e49171710770b527bf9849c6ad5efd535c63a1a8a8f51fa996566"
    },
    {
      "name": "title-edited-preview.png",
      "bytes": 10328,
      "sha256": "26bdbeb883a7ee60c77fecb9fc3e747cd91ec90186036e707f6a67291733af14"
    },
    {
      "name": "title-edited.png",
      "bytes": 9629,
      "sha256": "5fd957e77eb83e2aebe69b7be87b8bddfb9b3a525b20acaf009fb26e5fd256de"
    },
    {
      "name": "title-edited.psd",
      "bytes": 65879,
      "sha256": "57cf7a5c1d739b72a760f9e1aeafdaa0ce36e77f575f2b2d0dffe7ebc62d2cf9"
    },
    {
      "name": "title-source-preview.png",
      "bytes": 11392,
      "sha256": "840a896d75cadfb9b08a86326f6bc27681c24b2a9c52048e7e93bb3ad872bfdb"
    },
    {
      "name": "title-source.psd",
      "bytes": 68365,
      "sha256": "1c20a2e61a897e2a457c510fbc1db9df8d77329d8ceb02464f01f9b15d6f0882"
    }
  ],
  "launch": {
    "executable": "photocraft-0.8.2-windows-x64-portable/photocraft-cli.exe",
    "arguments": [
      "mcp",
      "--automation-read-root",
      "<verification-root>/workspace",
      "--automation-write-root",
      "<verification-root>/workspace/output"
    ],
    "transport": "stdio; newline-delimited JSON-RPC; initialize then notifications/initialized then tools/list and tools/call",
    "path_note": "Actual absolute paths were used. Machine-specific prefixes are replaced with <verification-root> in this published record."
  }
}
