{"ok":true,"site":{"host":"printable.photos","url":"https://printable.photos/","type":"live","desc":"printable.photos","tools":[{"name":"list_projects","kind":"answer","impl":"imperative","description":"List the projects available in printable.photos. Project IDs are intentionally not exposed; use project names with switch_project.","title":"List printable.photos projects","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"create_project","kind":"act","impl":"imperative","description":"Create a new printable.photos project by name. The new project becomes the current project.","title":"Create printable.photos project","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Name for the new project."}},"required":["name"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"switch_project","kind":"act","impl":"imperative","description":"Switch the UI to an existing project by exact project name. Project IDs are not accepted.","title":"Switch printable.photos project","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Exact name of the project to make current."}},"required":["name"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"rename_project","kind":"act","impl":"imperative","description":"Rename the currently selected printable.photos project. Project IDs are not accepted.","title":"Rename current printable.photos project","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"New name for the current project."}},"required":["name"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"get_current_project","kind":"answer","impl":"imperative","description":"Get the currently selected project, UI-configurable settings, and current project images. Internal unit settings are intentionally omitted.","title":"Get current printable.photos project","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"update_settings","kind":"act","impl":"imperative","description":"Update settings available in the UI for the current project: page preset or custom page size, page margin, page gap, image crop, image width, and rotation. Internal unit settings are intentionally not exposed. Explicit pageWidth/pageHeight values override pagePreset dimensions.","title":"Update printable.photos settings","inputSchema":{"type":"object","properties":{"pagePreset":{"type":"string","enum":["4x6","5x7","8x10","Letter","Legal","Tabloid"],"description":"Optional UI page preset to apply."},"pageWidth":{"type":"number","description":"Custom page width using the same numeric value shown in the UI."},"pageHeight":{"type":"number","description":"Custom page height using the same numeric value shown in the UI."},"pageMargin":{"type":"number","description":"Page margin value shown in the UI. Must be zero or greater."},"pageGap":{"type":"number","description":"Gap between images shown in the UI. Must be zero or greater."},"imageCrop":{"type":"string","enum":["original","square"],"description":"Image crop option shown in the UI."},"imageWidth":{"type":"number","description":"Image width value shown in the UI. Must be greater than zero."},"allowRotation":{"type":"boolean","description":"Whether photos may be rotated to reduce total page count."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"upload_images","kind":"act","impl":"imperative","description":"Upload one or more images into the currently selected project. Prefer hosted URLs or local server http(s) URLs for each image. Base64 image data URLs are accepted when needed. For URLs served by another origin, servers should allow cross-origin reads from https://printable.photos with CORS headers, otherwise the images cannot be read by this page.","title":"Upload images to current printable.photos project","inputSchema":{"type":"object","properties":{"images":{"type":"array","minItems":1,"description":"Images to upload into the current project.","items":{"type":"object","properties":{"url":{"type":"string","description":"Prefer a hosted or local server http(s) URL for an image that permits CORS reads from this page. Base64 image data URLs are accepted when needed."},"name":{"type":"string","description":"Optional file name to use in the project."}},"required":["url"],"additionalProperties":false}}},"required":["images"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"},{"name":"delete_image","kind":"transact","impl":"imperative","description":"Delete an image from the currently selected project by imageId as returned by get_current_project or upload_images. Images outside the current project are not affected.","title":"Delete image from current printable.photos project","inputSchema":{"type":"object","properties":{"imageId":{"type":"string","description":"Image ID from the currently selected project."}},"required":["imageId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute"}],"favicon":"/favicons/printable.photos.png","apiSurface":"spec","category":"Media & Personal","toolCount":8}}