# KOTILO > Koti-irtaimisto kuvista. Yksi kuva, kaikki tunnistetut tavarat kerralla listaksi arvioineen. Sama tuote ei mene sisään kahdesti vaan määrä kasvaa, huone tunnistetaan sen kuvauksesta, ja kuva näkyy kerran niiden tavaroiden yläpuolella jotka siitä luettiin. Saman työn voi tehdä myös omassa tekoälykeskustelussa. Published on AIMEAT by happydude500001; served at https://kotilo.apps.aimeat.io. The app id is a > filename and carries its extension — reading it off the subdomain drops the extension and every > tool lookup for it misses. ## Documentation - [This app](https://kotilo.apps.aimeat.io/): the running application - [Agent orientation](https://kotilo.apps.aimeat.io/AGENTS.md): how to call this app - [Site map](https://kotilo.apps.aimeat.io/sitemap.md): every document this origin serves - [Full content](https://kotilo.apps.aimeat.io/llms-full.txt): this document, at the conventional full path - [MCP Server Card](https://kotilo.apps.aimeat.io/.well-known/mcp.json): the server, transport and this app's tools ## Discovery - [Tool listing](https://aimeat.io/v1/apps/happydude500001/kotilo.html/webmcp): every tool with its input and output schema - [Bound skills](https://aimeat.io/v1/apps/happydude500001/kotilo.html/skills): what an agent can learn to use this app well - [Node manual](https://aimeat.io/llms-full.txt): the AIMEAT node this app runs on - [Node glossary](https://aimeat.io/v1/glossary.md): GHII, GAII, morsels and the rest - [Get an identity](https://aimeat.io/auth.md): RFC 8628 device flow, owner-approved ## Identifiers ``` owner: happydude500001 app_id: kotilo.html (not "kotilo") ``` ## Tools - `inventory_list` — call via `aimeat_app_tool_invoke { owner: "happydude500001", app: "kotilo.html", tool: "inventory_list" }` - `inventory_find_duplicate` — call via `aimeat_app_tool_invoke { owner: "happydude500001", app: "kotilo.html", tool: "inventory_find_duplicate" }` - `room_suggest` — call via `aimeat_app_tool_invoke { owner: "happydude500001", app: "kotilo.html", tool: "room_suggest" }` - `inventory_add_from_photo` — call via `aimeat_app_tool_invoke { owner: "happydude500001", app: "kotilo.html", tool: "inventory_add_from_photo" }` # KOTILO ## What this is A home contents inventory built from photographs. One row per product per room, with quantity, and the photo it was read from kept beside it. ## Data Private records under the owner: kotilo.rooms (the rooms and the description each is recognised by) and kotilo.items. (that room's items as an array). Photos live in storage under kotilo//. Nothing about the contents is published here. ## Adding an item Read the photo, then check the identifiers and the matchKey against the existing rows BEFORE writing. A product already in that room raises its quantity; a separate row needs the person to say so. ## Writing as the owner Write with owner_scope: true, or the row lands in the agent namespace and the app never shows it. > **AI provenance** — AI-generated (claude-opus-5), human editorial review, 2026-08-28T21:42:27.923Z · record: https://aimeat.io/v1/provenance/860899cb-9622-4eb8-b7a3-2f93fee2eed9 ## Agent affordances - Act — WebMCP tool listing for this app: https://aimeat.io/v1/apps/happydude500001/kotilo.html/webmcp - Learn — skills bound to this app: https://aimeat.io/v1/apps/happydude500001/kotilo.html/skills - App catalog on this node (this app: happydude500001/kotilo.html): https://aimeat.io/app-catalog.html - Register an agent on this node (RFC 8628 device flow): https://aimeat.io/auth.md