Husvo

Utvecklare

MCP och Claude

Koppla Claude till huset, så kan du fråga vad som är sent, be om en journalpost eller lägga in en idé i ett vanligt samtal. Claude får samma rätt som du har i huset, och inget mer.

I claude.ai

  1. Öppna inställningarna för anslutningar (Connectors) och lägg till en egen anslutning.
  2. Ge den namnet Husvo och adressen https://husvo.app/mcp. Lämna fälten för OAuth-klient tomma: klienten registreras av sig själv.
  3. Tryck Anslut. Du kommer till Husvo. Logga in om du inte redan är inloggad.
  4. Läs vad appen ber om och tryck Tillåt. Du skickas tillbaka till claude.ai.

Anslutningen syns i husprofilen under Anslutna appar. Tar du bort den där får Claude 401 vid nästa anrop.

Knapparnas namn i claude.ai kan ändras utan att vi märker det. Stämmer de inte, hör av dig.

I Claude Code

Skapa en personlig nyckel i husprofilen under Koppla en AI-assistent. Nyckeln visas en gång, tillsammans med kommandot:

claude mcp add --transport http husvo https://husvo.app/mcp --header "Authorization: Bearer <nyckel>"

Claude Desktop och andra klienter som talar Streamable HTTP tar samma adress och samma rubrik. Nyckeln gäller bara på /mcp och återkallas i husprofilen. Hur anropen ser ut med curl står under Kom igång.

Ett samtal

Ett exempel. Vad Claude svarar beror på vad som finns i ert hus.

  1. DuVad behöver göras i huset den här månaden?
  2. Verktyglista_hus, sedan uppgifter med houseId
  3. ClaudeTvå saker är sena: filtret i köksfläkten och brandvarnarna. Ventilationen kommer om tre veckor. Vill du att jag bockar av något?
  4. DuBrandvarnarna testade jag i går.
  5. Verktygbocka_av med maintId och gårdagens datum
  6. ClaudeKlart. Brandvarnarna är avbockade och det står en post i journalen.

Fler att prova:

  • Vad har vi lagt på badrummet sedan vi flyttade in?
  • Lägg in en idé i köket: nya lister, runt fem tusen kronor.
  • När går garantin på diskmaskinen ut?
  • Ta fram försäkringsunderlaget.

Husets egna verktyg

Skrivna för en assistent: svaren är kort text i stället för json, så att modellen läser dem lätt.

andra_uppgift

  • Skriver

Ändrar en uppgift i underhållet. Flytta datumet ("ta filterbytet nästa vecka": date), ändra hur ofta (intervalMonths), och på hushållets egna uppgifter namn och anteckning. Katalogens uppgifter går bara att flytta och ändra intervall på. Bara det som skickas ändras. Ta bort en egen uppgift med deleteMaintenanceItem. Kräver redigeringsrätt.

IndataTypKrävsOm
houseIdintegerjaHusets id från lista_hus.
maintIdintegerjaUppgiftens id från uppgifter.
datestringnejValfritt nytt datum för nästa gång, ÅÅÅÅ-MM-DD. Får inte ha varit.
namestringnejValfritt nytt namn, bara egna uppgifter.
intervalMonthsintegernejValfritt: 0 för en gång (bara egna), eller 1 till 240 månader.
notestringnejValfri anteckning. En tom sträng tar bort den. Bara egna uppgifter.

bocka_av

  • Skriver

Bockar av en uppgift i underhållet som gjord och skriver en post i journalen, med valfri kostnad. "Jag bytte filter i går, det kostade 400 kr": date i går och costKr 400. En återkommande uppgift får ett nytt datum, en som skulle göras en gång försvinner ur uppgifterna. Kräver redigeringsrätt. Samma datum två gånger ger ingen ny post.

IndataTypKrävsOm
houseIdintegerjaHusets id från lista_hus.
maintIdintegerjaUppgiftens id från uppgifter.
datestringnejNär den gjordes, ÅÅÅÅ-MM-DD. Utelämnat betyder i dag.
costKrintegernejValfri kostnad i hela kronor. Hamnar på journalposten.

forsakringsunderlag

  • Läser

Försäkringsunderlaget som pdf: alla prylar rum för rum med märke, modell, serienummer, inköp, pris och garanti, och bilderna sist. Samma fil som knappen under Prylar.

IndataTypKrävsOm
houseIdintegerjaHusets id från lista_hus.

ideer

  • Läser

Idéerna rum för rum, med roomId och ideaId, status, prio, kostnad i tkr och år. För klara idéer också vad de kostade och hur det blev mot budgeten.

IndataTypKrävsOm
houseIdintegerjaHusets id från lista_hus.
roomIdintegernejValfritt: bara ett rum.

journal

  • Läser

Husets journal, nyast först: vad som gjorts, när, kostnad, vem som gjorde det och garanti. Med summan av alla kostnader. För "vad kostade köket": ideer visar vad klara idéer kostade mot budgeten, sok hittar journalposterna.

IndataTypKrävsOm
houseIdintegerjaHusets id från lista_hus.
limitintegernejHögst så många poster, 1 till 200. Standard 50.

ladda_upp_bild

  • Skriver

Sparar en bild i ett rum, på en journalpost (till exempel ett kvitto), på en pryl eller på en idé. Bara jpeg, högst 8 MB, helst skalad till 1600 px på längsta sidan. Ange exakt ett av roomId, logEntryId, applianceId och ideaId. Kräver redigeringsrätt. Svarar med photoId.

IndataTypKrävsOm
houseIdintegerjaHusets id från lista_hus.
fileNamestringjaFilens namn, till exempel kvitto.jpg.
contentBase64stringjaJpeg-filen som base64.
roomIdintegernejRummets id från ideer.
logEntryIdintegernejJournalpostens id.
applianceIdintegernejPrylens id från prylar.
ideaIdintegernejIdéns id från ideer. Idéns första bild blir omslag, och en idé rymmer högst 20 bilder.
idempotencyKeystringnejValfri nyckel, högst 64 tecken. Samma nyckel två gånger sparar inget nytt.

ladda_upp_papper

  • Skriver

Sparar ett papper i huset: köpehandlingar, ritningar, bygglov, besiktning, försäkring, energideklaration eller annat. Pdf eller bild, högst 25 MB. Kräver redigeringsrätt. Svarar med paperId.

IndataTypKrävsOm
houseIdintegerjaHusets id från lista_hus.
fileNamestringjaFilens namn med ändelse, till exempel kopekontrakt.pdf.
contentBase64stringjaFilens innehåll som base64.
kindstringjapurchase, drawings, permit, inspection, insurance, energy eller other.
datestringnejDatumet på papperet, ÅÅÅÅ-MM-DD. Utelämnat betyder i dag.
titlestringnejValfri titel. Utelämnad blir filnamnet titel.
validUntilstringnejValfritt slutdatum, ÅÅÅÅ-MM-DD, för papper som slutar gälla.
idempotencyKeystringnejValfri nyckel, högst 64 tecken. Samma nyckel två gånger sparar inget nytt.

lista_hus

  • Läser

Husen du är med i, med houseId, boendetyp och din roll. Börja här: de andra verktygen tar houseId.

ny_ide

  • Skriver

Lägger till en idé i ett rum. Kräver redigeringsrätt i huset. Hämta roomId med ideer.

IndataTypKrävsOm
houseIdintegerjaHusets id från lista_hus.
roomIdintegerjaRummets id från ideer.
titlestringjaRubriken, högst 200 tecken.
notestringnejValfri anteckning.
horizonYearintegernejValfritt årtal då det ska göras, fyra siffror.
priostringnejhog, mellan eller lag. Standard mellan.
costMinTkrintegernejValfri lägsta kostnad i tusentals kronor.
costMaxTkrintegernejValfri högsta kostnad i tusentals kronor.

ny_journalpost

  • Skriver

Skriver in något som är gjort i husets journal, i dag eller ett datum som varit. Kräver redigeringsrätt. Framtida datum går inte: det som ska göras framåt läggs in med ny_uppgift. Finns saken som uppgift, bocka av den med bocka_av i stället, så räknas nästa gång ut.

IndataTypKrävsOm
houseIdintegerjaHusets id från lista_hus.
whatstringjaVad som gjordes, högst 200 tecken.
datestringnejDatumet ÅÅÅÅ-MM-DD. Utelämnat betyder i dag.
componentstringnejValfri del av huset eller pryl det gällde.
kindstringnejunderhall eller renovering. Standard underhall.
costKrintegernejValfri kostnad i hela kronor.
isImprovementbooleannejSant om det är en värdehöjande förbättring.

ny_uppgift

  • Skriver

Lägger in något som ska göras framåt i husets underhåll, med påminnelse och plats i kalendern. Använd den när någon vill bli påmind eller planera: "lägg in att jag ska kratta löv på lördag" blir en uppgift en gång på lördagens datum, "påminn mig om att byta däck i mars" en gång på ett datum i mars, "rensa avloppet varje halvår" intervalMonths 6. Räkna relativa datum från dagens datum, som uppgifter och lista_hus skriver ut med veckodag. Är det redan gjort, använd ny_journalpost. Är det ett projekt att spara pengar till, använd ny_ide. Kräver redigeringsrätt.

IndataTypKrävsOm
houseIdintegerjaHusets id från lista_hus.
namestringjaVad som ska göras, kort, till exempel "Kratta löv i trädgården". Högst 200 tecken.
datestringnejDatumet ÅÅÅÅ-MM-DD: när den ska göras, eller första gången för en återkommande. Får inte ha varit. Krävs för en gång.
intervalMonthsintegernejUtelämnat eller 0: en gång. 1 till 240: återkommer med så många månaders mellanrum (12 är varje år).
roomIdintegernejValfritt rum, roomId från ideer.
prylIdintegernejValfri pryl det gäller, prylId från prylar.
notestringnejValfri anteckning, högst 1000 tecken.

prylar

  • Läser

Husets prylar med prylId, märke, modell, rum, köpdatum och garanti (och om den gått ut).

IndataTypKrävsOm
houseIdintegerjaHusets id från lista_hus.

sok

  • Läser

Fritextsökning i husets idéer, journal, prylar och uppladdade manualer.

IndataTypKrävsOm
houseIdintegerjaHusets id från lista_hus.
querystringjaSökorden, till exempel "filter" eller "tak".

uppgifter

  • Läser

Underhållet och de inlagda uppgifterna i ett hus, med maintId, intervall och datum. Utan from och to: sena, snart, aldrig gjorda och senare. Med from och to: allt som infaller i perioden, återkommande varv inräknade, plus det som redan är sent. Använd from och to för frågor som "vad behöver jag göra i helgen" eller "vad händer i mars".

IndataTypKrävsOm
houseIdintegerjaHusets id från lista_hus.
fromstringnejValfritt: periodens första dag, ÅÅÅÅ-MM-DD.
tostringnejValfritt: periodens sista dag, ÅÅÅÅ-MM-DD. Högst 400 dagar efter from.

Ett verktyg per operation

Varje operation i API:t är också ett verktyg, med operationId som namn. Indata är adressens parametrar, frågesträngen, body med samma fält som API:t, och ifMatch och idempotencyKey där de behövs. Svaret är API:ts json. Verktyget kör samma route som appen, så samma regler gäller.

VerktygSortGör
acceptInvite Skriver Tacka ja till en inbjudan och bli medlem i huset
acceptMaintenanceSuggestion Skriver Lägg till ett underhållsförslag i huset
addAppliance Skriver Lägg till en pryl
addContract Skriver Lägg till ett avtal. Utan slutdatum löper det tills vidare
addCraftsman Skriver Lägg till en hantverkare. Bara name krävs
addIdeaComment Skriver Kommentera en idé
addIdeaMaterial Skriver Lägg till en rad att köpa på en idé. Mängden är fri text, priset hela kronor för raden
addLogEntry Skriver Skriv en loggpost
addMeterReading Skriver Lägg in en avläsning. Utan meterId skapas mätaren av slaget kind vid första avläsningen
addRoom Skriver Lägg till ett rum
addRoomFact Skriver Lägg till en faktarad i ett rum, till exempel väggfärgen
archiveIdea Skriver Ta bort en idé. Den arkiveras i trettio dagar och kan återställas
askHouse Skriver Ställ en fråga om huset. Svaret bygger på manualer, journal och prylar
changeMemberRole Skriver Byt en medlems roll mellan redigerare och läsare. Ägaren går inte att ändra
createCalendarKey Skriver Skapa ny kalenderadress. Visas bara här, och slår ut den gamla
createIdea Skriver Lägg in en idé
createMaintenanceItem Skriver Lägg till en egen uppgift: en gång på ett datum, eller återkommande med intervall i månader
declineInvite Skriver Tacka nej till en inbjudan
deleteAppliance Skriver Tar bort prylen, dess bilder och manualer. Uppgifterna i underhållet blir kvar. Fråga i appen först
deleteContract Skriver Tar bort avtalet. Det går inte att ångra, så fråga i appen först
deleteCraftsman Skriver Tar bort hantverkaren. Journalposterna blir kvar men tappar kopplingen. Fråga i appen först
deleteIdeaMaterial Skriver Ta bort en rad. Den går inte att få tillbaka
deleteMaintenanceItem Skriver Ta bort en egen uppgift. Katalogens stängs av i husprofilen. Journalen rörs inte
deleteMeterReading Skriver Ta bort en avläsning. Var den mätarens sista tas mätaren bort med den
deletePaper Skriver Ta bort papperet, både raden och filen
deletePhoto Skriver Radera en bild
deleteRoomFact Skriver Ta bort en faktarad
dismissMaintenanceSuggestion Skriver Avvisa ett underhållsförslag
exportHouse Läser Allt som finns i huset som en zip: uppgifter, bilder, manualer, protokoll och journal. Bara ägaren
exportJournal Läser Journalen som pdf, att ge till mäklaren eller nästa ägare. Alla medlemmar
exportJournalCsv Läser Journalen som csv för Excel eller Numbers, samma fil som webben ger. Alla medlemmar
exportYearInReview Läser Husets år som pdf
getAppliance Läser En pryl med manualer och underhåll
getAskQuota Läser Hur många frågor huset har kvar den här månaden, och om AI är påslaget
getCalendarStatus Läser Finns det en kalenderadress, och sedan när
getContract Läser Ett avtal med sista uppsägningsdag, läge och årskostnad
getCraftsman Läser En hantverkare
getHouse Läser Ett hus: profil, budget och påminnelsetid
getIdea Läser En idé. Svaret bär ETag: skicka den som If-Match när du ändrar
getIdeaBudget Läser Idéernas budget: planerade idéer per år mot vad huset lagt de senaste åren, och klara idéer mot sin budget med summan av avvikelsen
getImprovements Läser Värdehöjande förbättringar: summa, per år och vilka kvitton som saknas
getInspectionContent Läser Protokollet som pdf. Stöder Range
getMaintenanceItem Läser En underhållspost
getManualContent Läser Manualen som pdf. Stöder Range
getMe Läser Vem är jag, och vilka hus är jag med i
getMeterConsumption Läser Förbrukning per kalendermånad fram till senaste avläsningen. months är 1–60, tolv om det utelämnas
getOutlook Läser Vad huset kostar de närmaste tio åren: uppskattat spann per år av uppgifter som förfaller och byggdelar och prylar som når normal livslängd, mot husets budget
getPaperContent Läser Papperets fil, pdf eller bild. Stöder Range
getPhotoContent Läser Själva bilden
getPlan Läser Husets plan, gränserna som gäller och hur mycket som är använt
getShoppingList Läser Husets inköpslista: det som inte är köpt, per idé. Klara och borttagna idéer är inte med
getToday Läser Startsidan: försenat, snart, räknare, nästa punkter och husets humör
getYearInReview Läser Husets år: avklarade uppgifter, förbättringsutgifter, mest aktiva rum och prylar, garantier och Husses replik
inviteMember Skriver Bjud in med namn eller e-post som redigerare eller läsare. Bara ägaren
likeIdea Skriver Gilla. Idempotent: att gilla två gånger ger samma svar
listActivity Läser Vad som hänt i huset, nyast först, med antal olästa
listAppliances Läser Husets prylar
listArchivedIdeas Läser Arkivet: borttagna idéer som ligger kvar i trettio dagar
listCalendarEvents Läser Allt i huset med ett datum mellan from och to (ÅÅÅÅ-MM-DD, högst 400 dagar): uppgifter, garantier, avtal, papper, idéer och det som gjorts. Utan datum: innevarande månad
listContracts Läser Husets avtal med sista uppsägningsdag, läge och årskostnad. De som snart ska sägas upp kommer först
listCraftsmen Läser Husets hantverkare, sorterade på namn, med hur många poster som pekar på var och en
listDevices Läser Mina inloggade enheter
listHouseRoomFacts Läser Alla rum med sina fakta (färger, golv, tapeter, mått), i rumslistans ordning
listHouses Läser Husen jag är med i, med min roll i vart och ett
listIdeaComments Läser Kommentarerna på en idé, äldst först
listIdeaMaterials Läser Materialet till en idé, med summan av raderna som har pris
listIdeas Läser Idéerna i huset, nyast först. Filtrera på status, rum, år och prio
listInspections Läser Husets besiktningsprotokoll, nyast först
listInvites Läser Inbjudningar som väntar på svar. Bara ägaren
listLog Läser Journalen, senast först. Filtrera med kind och year, bläddra med cursor
listMaintenance Läser Underhållet med status, nästa datum och brådskeord
listMaintenanceSuggestions Läser Punkter ur biblioteket som passar huset men saknas
listManuals Läser Husets manualer, valfritt för en pryl (?applianceId=)
listMembers Läser Vilka som bor i huset. E-post visas bara för ägaren
listMeterAnomalies Läser Perioder med ovanligt hög förbrukning per dag, för alla mätare, senast först
listMeterReadings Läser Alla avläsningar för en mätare, nyast först, med förbrukningen sedan förra
listMeters Läser Husets mätare med senaste avläsning och förbrukningen sedan den förra
listMyInvites Läser Inbjudningar till mitt konto som väntar på svar
listPapers Läser Husets papper per sort i webbens ordning, med giltighet för dem som har ett slutdatum
listRoomFacts Läser Ett rums fakta, ordnade efter typ och senast gjort först
listRooms Läser Rummen, ordnade som på webben: våning först
listSessions Läser Mina inloggningar: webbläsare och appen
listWarranties Läser Garantier som går ut inom 60 dagar, närmast först
markActivityRead Skriver Markera allt som läst för mig
markMaintenanceDone Skriver Markera som gjort, idag eller ett angivet datum, med valfri kostnad. Går att skicka om
markMaterialBought Skriver Bocka av en rad som köpt. Idempotent
removeMember Skriver Ta bort en medlem. Ägaren går inte att ta bort
restoreIdea Skriver Ta tillbaka en arkiverad idé
revokeCalendarKey Skriver Stäng av kalenderadressen
revokeDevice Skriver Återkalla en enhet. Den egna enheten fungerar som utloggning
revokeInvite Skriver Dra tillbaka en väntande inbjudan. Bara ägaren
revokeOtherSessions Skriver Logga ut överallt utom här
revokeSession Skriver Logga ut en inloggning. Den egna appen fungerar som utloggning
searchHouse Läser Sök i husets idéer, uppgifter, prylar, journalposter, papper, avtal, hantverkare, rum och rummens fakta. Varje ord i q ska finnas på raden; grupperat per sort, bästa träffen först
searchManuals Läser Fritextsökning i manualerna. Bäst träff först, med utdrag där träffen är markerad
setIdeaAssignee Skriver Välj vem i hushållet som tar idén, eller null för ingen
setIdeaCover Skriver Välj vilken av idéns bilder som är omslag. Bilden laddas upp med uploadPhoto och ideaId
setIdeaStatus Skriver Byt status. Done skriver en loggpost i journalen. If-Match är valfri här
setMaintenanceAssignee Skriver Välj vem i hushållet som tar uppgiften, eller null för ingen. Den som tar den får påminnelsen
setMaintenanceLastDone Skriver Ange när det senast gjordes, i efterhand. Skriver ingen loggpost
startPlanTrial Skriver Starta husets provperiod på Plus, 30 dagar. En gång per hus; 409 om den redan använts
unlikeIdea Skriver Sluta gilla. Idempotent
unmarkMaterialBought Skriver Ångra att en rad är köpt, så att den kommer tillbaka på inköpslistan. Idempotent
updateAppliance Skriver Ändra en pryl. Fält som utelämnas lämnas orörda; en tom sträng tömmer textfält
updateContract Skriver Ändra ett avtal. Fält som utelämnas lämnas orörda; clear-fälten tar bort ett värde
updateCraftsman Skriver Ändra en hantverkare. Fält som utelämnas lämnas orörda; en tom sträng tömmer ett textfält
updateHouse Skriver Ändra husets namn, hur många dagar före påminnelsen går och på vilket sätt, och vad huset har
updateIdea Skriver Ändra delar av en idé. If-Match krävs: 428 utan, 412 om någon hann före (med aktuell idé i current)
updateIdeaMaterial Skriver Ändra text, mängd eller pris på en rad. Utelämnade fält lämnas orörda
updateLogEntry Skriver Ändra kostnad, förbättringsmarkering, byggdel eller hantverkare
updateMaintenanceItem Skriver Flytta nästa datum, ändra intervall, och på egna uppgifter namn, anteckning, rum och pryl
updateMe Skriver Byt visningsnamn
updatePaper Skriver Ändra sort, titel, datum eller slutdatum. Filen ligger kvar
updateRoom Skriver Byt namn eller våning på ett rum. Det som utelämnas behålls
updateRoomFact Skriver Ändra en faktarad. Det som utelämnas behålls

Det som inte är verktyg

OperationVarför
deleteMeRaderar kontot och kräver en mejlad kod. Det ska en människa göra själv.
getHealthOffentlig driftkontroll utan husdata.
getMetaOffentliga uppgifter om API-versionen, inget om huset.
logOutLoggar ut den anropande enheten. Nyckeln återkallas i webben, under Koppla en AI-assistent.
redeemCodeInloggningsflödet för enheter, se requestCode.
registerCurrentDevicePush-token för en telefon. En assistent har ingen.
requestCodeInloggningsflödet för enheter. En assistent loggar in med en personlig nyckel från webben.
revokeAllDevicesLoggar ut alla enheter, nyckeln själv inräknad. Görs i webben eller appen.
uploadPaperUppladdning som multipart/form-data. Det handskrivna ladda_upp_papper tar base64 och kör samma endpoint.
uploadPhotoBinär uppladdning med bildens egen innehållstyp. Det handskrivna ladda_upp_bild tar base64 och kör samma endpoint.

Reglerna

  • Ett hus du inte är med i finns inte för Claude heller. En läsare som vill skriva får ett nej.
  • Skrivningar har samma tak som i API:t, räknat per person: två nycklar delar det.
  • Kakan från webben gäller aldrig på /mcp, så en inloggad webbläsare kan inte lockas att anropa verktygen.
  • Filer upp till 10 MB kommer som inbäddade resurser. Större filer hämtas i webben.
Sidan hakade upp sig.Ladda om🗙