{"ok":true,"site":{"host":"washy-washy.ryankes.eu","url":"https://washy-washy.ryankes.eu/","type":"live","desc":"A phone-friendly laundry chart: programme, temperature and spin for every pile, what can share a drum, and where the iron's thermostat goes.","tools":[{"name":"washy_get_config","kind":"answer","impl":"imperative","description":"Read the laundry chart and machine currently active on washy-washy-web — the uploaded or edited one, or the bundled example if none is active.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/config","/config/machine","/docs/","/disclaimer","/changelog"]},{"name":"washy_validate_chart","kind":"act","impl":"imperative","description":"Validate laundry chart rows against the currently active machine, without saving anything — the same check the on-page chart editor runs on Save.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"object","properties":{"clothing_type":{"type":"string"},"detergent":{"type":"string"},"fabric_softener":{"type":"string"},"temperature":{"type":"string"},"spin":{"type":"string"},"duration":{"type":"string"},"program":{"type":"string"},"options":{"type":"string"},"ironing":{"type":"string"},"ironing_notes":{"type":"string"},"iron_setting":{"type":"string"},"drying":{"type":"string"},"colour_group":{"type":"string"},"mix_tags":{"type":"string"},"notes":{"type":"string"},"reference_name":{"type":"string"},"reference_link":{"type":"string"}},"required":["clothing_type","detergent","fabric_softener","temperature","spin","duration","program","options","ironing","ironing_notes","iron_setting","drying","colour_group","mix_tags","notes","reference_name","reference_link"]}}},"required":["rows"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/config","/config/machine","/docs/","/disclaimer","/changelog"]},{"name":"washy_set_chart","kind":"act","impl":"imperative","description":"Replace the active chart with the given rows, validated against the currently active machine — the same as Save on the /config page.","annotations":{"consequentialHint":true},"inputSchema":{"type":"object","properties":{"rows":{"type":"array","items":{"type":"object","properties":{"clothing_type":{"type":"string"},"detergent":{"type":"string"},"fabric_softener":{"type":"string"},"temperature":{"type":"string"},"spin":{"type":"string"},"duration":{"type":"string"},"program":{"type":"string"},"options":{"type":"string"},"ironing":{"type":"string"},"ironing_notes":{"type":"string"},"iron_setting":{"type":"string"},"drying":{"type":"string"},"colour_group":{"type":"string"},"mix_tags":{"type":"string"},"notes":{"type":"string"},"reference_name":{"type":"string"},"reference_link":{"type":"string"}},"required":["clothing_type","detergent","fabric_softener","temperature","spin","duration","program","options","ironing","ironing_notes","iron_setting","drying","colour_group","mix_tags","notes","reference_name","reference_link"]}}},"required":["rows"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/config","/config/machine","/docs/","/disclaimer","/changelog"]},{"name":"washy_set_machine","kind":"act","impl":"imperative","description":"Replace the active washer and iron, re-validating the current chart against them — the same as Save on the /config/machine page.","annotations":{"consequentialHint":true},"inputSchema":{"type":"object","properties":{"washer":{"type":"object","properties":{"name":{"type":"string","maxLength":60},"capacity":{"type":"string","maxLength":30},"programs":{"type":"array","items":{"type":"string","maxLength":32}},"temperatures":{"type":"array","items":{"type":"string","maxLength":15}},"spins":{"type":"array","items":{"type":"string","maxLength":10}},"options":{"type":"array","items":{"type":"string","maxLength":20}}},"required":["name","capacity","programs","temperatures","spins","options"]},"iron":{"type":"object","properties":{"name":{"type":"string","maxLength":60},"settings":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","maxLength":30},"dots":{"type":"string","maxLength":5},"label":{"type":"string","maxLength":20},"detail":{"type":"string","maxLength":60},"steam":{"type":"boolean"}},"required":["key","dots","label","detail","steam"]}}},"required":["name","settings"]}},"required":["washer","iron"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/config","/config/machine","/docs/","/disclaimer","/changelog"]},{"name":"washy_export_pdf","kind":"act","impl":"imperative","description":"Render the active chart as a PDF, the same as the front page's download buttons — returned as base64 rather than downloaded.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"layout":{"type":"string","enum":["phone","print"]},"cut":{"type":"string","enum":["full","wash","iron"]}},"required":["layout"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/config","/config/machine","/docs/","/disclaimer","/changelog"]}],"favicon":"/favicons/washy-washy.ryankes.eu.png","apiSurface":"spec","category":"Productivity & Business","toolCount":5}}