# TILA > Sano mitä haluat nähdä, ja saat sen elävänä. TILA rakentaa pyynnöstäsi näkymän oikeasta datastasi (taulukko, mittarit, kaavio, aikajana, katsaus, vaihtoehdot) ja muovaa sitä kun sanot mitä muuttaisit. Kaupparekisteridata PRH:sta, oma data muistiavaimista. Agenttisi voi kirjoittaa paneelin pinnalle silloinkin kun et ole paikalla, ja jättää muodon pinnan päätettäväksi. Oma OpenRouter-avaimesi, oma budjettisi. FI/EN. Published on AIMEAT by happydude500001; served at https://tila.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://tila.apps.aimeat.io/): the running application - [Agent orientation](https://tila.apps.aimeat.io/AGENTS.md): how to call this app - [Site map](https://tila.apps.aimeat.io/sitemap.md): every document this origin serves - [Full content](https://tila.apps.aimeat.io/llms-full.txt): this document, at the conventional full path - [MCP Server Card](https://tila.apps.aimeat.io/.well-known/mcp.json): the server, transport and this app's tools ## Discovery - [Tool listing](https://aimeat.io/v1/apps/happydude500001/tila.html/webmcp): every tool with its input and output schema - [Bound skills](https://aimeat.io/v1/apps/happydude500001/tila.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: tila.html (not "tila") ``` ## Tools - This app publishes no priced tools. # TILA ## What this is The owner's self-composing surface. Each panel is a live view over real data: a spec plus the rows it resolves. Panels are built from plain language and reshaped by talking to them. ## Panels on the surface - AI Costs per Day [chart] source=memory NEEDS THE OWNER: Rakensin tämän näkymän sinulle näkemättä itse dataa: se on yksityistä, joten vain sinä näet rivit. Haluatko että seuraan tätä päivittäin ja hälytän kun kulut nousevat yli tavallisen? - AI Spend per Day [chart] source=memory - Company comparison [table] source=companies - Vertailu Nokia, Wärtsilä ja Kone [table] source=companies ## How to add a panel Write a memory record under `tila.panel.` with PUBLIC visibility. The owner's surface lists that prefix with owner_scope=true, so your panel appears on their screen immediately. Spec: { title, kind, source, view, needsYou? } kind: stats | table | chart | timeline | brief | options source: {"type":"companies","names":[…]|"ids":[…]} | {"type":"memory","prefix":"…"} | {"type":"inline","rows":[…]} view: table {"columns":[{"key","label"}]} · chart {"chartType","labelKey","valueKeys"[]} stats {"tiles":[{"label","key","agg":"count|sum|avg|latest"}]} · timeline {"tsKey","textKey"} brief {"markdown":"…"} · options {"items":[{"title","body"}]} needsYou: {"question":"one line in the owner's language"} makes the panel rise to the top. You may LEAVE `view` EMPTY ({}): the surface then picks the shape itself from the real fields once it has fetched the rows. Send intent + source and let it compose. A companies row carries: name, businessId, form, line, registered, lastChange, lastChangeWhat, website, city, names. Put the WORK in the panel, not a task for the owner: they should open the surface and already have the answer. ## Agent affordances - Act — WebMCP tool listing for this app: https://aimeat.io/v1/apps/happydude500001/tila.html/webmcp - Learn — skills bound to this app: https://aimeat.io/v1/apps/happydude500001/tila.html/skills - App catalog on this node (this app: happydude500001/tila.html): https://aimeat.io/app-catalog.html - Register an agent on this node (RFC 8628 device flow): https://aimeat.io/auth.md