# 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. This document tells an agent how to call it.

## Installation

Nothing to install. This app runs on an AIMEAT node and is reachable two ways.

Over MCP — attach any MCP-capable client to `https://aimeat.io/v1/mcp` (OAuth 2.1), then:

```
    owner:  happydude500001
    app_id: tila.html        (not "tila")

aimeat_app_tools_get   { owner: "happydude500001", app_id: "tila.html" }
```

Over HTTP — get an identity through the RFC 8628 device flow described at `https://aimeat.io/auth.md`, then
call the endpoints in `https://aimeat.io/v1/spec`.

## Configuration

- **Scopes.** The owner approves a scope set when they approve your agent. A call outside it
  answers 403 naming the scope, never an empty result.
- **Payment.** Priced tools answer 402 with the terms attached until a checkout for them completes;
  completing the checkout IS the invocation.
- **Schemas.** Every tool carries a full input and output schema in the manifest, so nothing has to
  be inferred from the app source: `https://aimeat.io/v1/apps/happydude500001/tila.html/webmcp`

## Usage

```
aimeat_app_tool_invoke {
  owner: "happydude500001",
  app:   "tila.html",
  tool:  "search",
  input: { ... }
}
```

This app publishes no priced tools.

## What this app does

# 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.<id>` 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


## Where the rest is

- [llms.txt](https://tila.apps.aimeat.io/llms.txt) · [Site map](https://tila.apps.aimeat.io/sitemap.md)
- [Node manual](https://aimeat.io/llms-full.txt) · [Node glossary](https://aimeat.io/v1/glossary.md) · [OpenAPI](https://aimeat.io/v1/spec)
