Agenti
Un file da copiare. Una chiave per la casa. L’agente legge i conti e prepara le bozze. Confermi tu.
Come funziona
- Scarica la skill. Un cartella spartisco/ con un SKILL.md. La incolli in Claude, Cursor o Codex.
- Crea la chiave in Casa. Connettori → Nuova chiave. La vedi una volta. Tienila in una variabile d'ambiente (file .env) o nel gestore di password del tuo agente, mai dentro il file della skill.
- Chiedi in italiano. «Chi deve cosa a giugno», «prepara la luce di agosto». L’agente chiama Spartisco. Tu confermi in app.
Cosa può
- Leggere spese confermate, split, saldi, giorni di presenza.
- Scrivere i giorni, se gli dai il permesso occupazione.
- Creare una bozza di spesa, se gli dai il permesso bozze.
Cosa non può
- Confermare una spesa.
- Chiudere un periodo.
- Vedere abbonamento, fatture, altre case.
- Estrarre una bolletta con l’AI (resta un tuo click: le letture costano).
Incolla la skill
La skill è lo standard SKILL.md (Claude, Cursor, Codex).
spartisco/ SKILL.md references/openapi.md references/lexicon.md assets/.env.example
- Claude: cartella in Impostazioni → Skills, oppure ~/.claude/skills/spartisco/.
- Cursor: .cursor/skills/spartisco/ nel progetto, o skills utente.
- Codex: ~/.codex/skills/spartisco/.
Poi, nello stesso ambiente, la variabile:
SPARTISCO_API_KEY=spt_live_…
Il SKILL.md che scarichi da Connettori ha già host e id della casa. Quello da questa pagina no: serve solo a leggere le regole.
Scarica la skillLa chiave
Si crea solo in app: Casa → Connettori. Da Lite in su. Demo no.
La vedi una volta. Se la perdi, ruoti. Revocare è un click.
Non metterla:
- nel SKILL.md
- in una chat
- in un testo pubblico o in un repo
Un agente con lettura vede nomi, saldi e chi ha dormito in casa. È lo stesso peso di un link /r, più i giorni.
Permessi
| Permesso | Default | Fa |
|---|---|---|
| Lettura | sì | saldi, spese confermate, occupazione |
| Occupazione (giorni) | no | scrive i giorni (Home Assistant, calendari) |
| Bozze | no | crea una spesa da confermare in app |
| Consuntivi | no | scarica un PDF già emesso |
90 giorni, poi scade. 60 chiamate al minuto.
Contratto HTTP
Se non usi una skill: stessa allowlist, Bearer, centesimi interi.
Base: https://app.spartisco.casa/api/v1
POST /spaces/:id/expenses (scope draft.write) crea sempre una bozza. L’agente non conferma.
Header opzionale `Idempotency-Key`: stessa chiave e stessa key entro 24 ore restituisce la stessa spesa (201), senza un duplicato.
Corpo JSON:
| Campo | Tipo | Obbligatorio | Note |
|---|---|---|---|
| `voce` | stringa | no | Voce già esistente. `tag` e `name` sono campi sconosciuti (422). Una voce sconosciuta è 422 `unknown_voce`: l’API non ne crea di nuove. Senza voce la bozza si salva e la Conferma chiede «Scegli la voce.» |
| `amount_cents` | intero | sì | Centesimi. `12850` = 128,50 €. Maggiore di zero |
| `period_id` | stringa | sì | Id da GET /periods. Periodo pareggiato → 409 |
| `payer` | stringa | no | Id persona da GET /people, solo la stringa. Un oggetto (`{id}`, `{person_id}`, `{type,id}`) è 422 `invalid_body`. Se manca, la bozza non ha pagatore: lo scegli tu al conferma |
| `competence_from` | stringa | no | Data `YYYY-MM-DD` |
| `competence_to` | stringa | no | Data `YYYY-MM-DD` |
| `note` | stringa | no | Nota visibile sulla bozza |
Qualsiasi altro campo in cima (`correction`, `corrections`, `correction_units`, …) è 422 `invalid_body`; `fields` elenca i nomi.
Esempio:
```json
{
"voce": "Luce agosto",
"amount_cents": 12850,
"period_id": "01PERIODO",
"payer": "01PERSONA",
"competence_from": "2026-08-01",
"competence_to": "2026-08-31",
"note": "bolletta luce"
}
```
Risposta 201, e ogni spesa nei GET, ha questi campi:
| Campo | Note |
|---|---|
| `id` | Id della spesa |
| `review_state` | `draft` oppure `confirmed`. Una bozza non entra nei totali |
| `created_via` | `agent` oppure `app` |
| `voce` | Voce, oppure `null` se la bozza non ne ha |
| `title` | Titolo `Voce · competenza`. Senza voce è il nome già in archivio |
| `amount_cents` | Centesimi |
| `currency` | `EUR` |
| `period_id` | Periodo |
| `competence_from` | Data `YYYY-MM-DD`, oppure `null` |
| `competence_to` | Data `YYYY-MM-DD`, oppure `null` |
| `note` | Nota, oppure `null` |
| `payer` | Id persona, oppure `null` se non c’è pagatore |
GET `/spaces/:id/expenses/:eid` aggiunge `split_line` (persona, alloggio, centesimi). L’agente non conferma.
Domande
Serve saper programmare?
No. Copi la cartella, crei la chiave, parli in italiano.
Lite ce l’ha?
Sì. Lite, Casa, Famiglia: stessi permessi. Demo no.
L’agente può sbagliare i conti?
Non deve. I riparti li legge già calcolati. Se non tornano, deve dirtelo.
Posso dare la chiave allo zio?
No. Allo zio mandi il link del consuntivo. La chiave è per un agente, su una casa, col permesso che hai scelto.
Francia / Écot?
Stessa cosa su ecot.fr/agents. Stesso motore, altra lingua.
Da Lite, 29 € l’anno. L’agente non paga un extra.
Vedi i piani