Hoppa till innehåll

Anslut en AI-assistent (MCP)

MoneyLights har en inbyggd MCP server, så en AI-assistent — Claude Desktop, Claude Code, en IDE-agent, vad som helst som pratar protokollet — kan arbeta med din organisations data på begäran.

Det är samma autentisering som REST API: en MCP-anslutning är en API-nyckel, med samma omfattningar, samma begränsningar och samma återkalla-knapp. Det finns inget separat att hantera.

Slutpunkten är https://api.moneylights.app/mcp (Streamable HTTP). En typisk klientkonfiguration:

{
"mcpServers": {
"moneylights": {
"url": "https://api.moneylights.app/mcp",
"headers": { "X-API-Key": "ml_sk_..." }
}
}
}

Med Claude Code är det en kommando:

Terminal window
claude mcp add --transport http moneylights https://api.moneylights.app/mcp \
--header "X-API-Key: ml_sk_..."

Skapa nyckeln i Inställningar → API-nycklar och ge den endast de omfattningar som assistenten behöver. Allt kräver nyckeln, inklusive att lista verktygen.

Verktygslistan beräknas utifrån dina nyckelns omfattningar, vid varje begäran. En nyckel utan en omfattning får aldrig ens veta att det motsvarande verktyget finns.

VerktygOmfattningVad det gör
get_cashflow_overviewcashflow:readMånatlig inkomst/utgift/netto, öppningsbalans, toppkategorier
get_analytics_overviewanalytics:readSammanställningar per kategori, klient, projekt och person
list_transactionstransactions:readTransaktioner, filtrerade och paginerade, varje med de dokument som är kopplade till den
list_documentsdocuments:readDokument och deras extraherade fält, varje med rörelser kopplade till den
get_document_filedocuments:readDen ursprungliga filen av ett dokument — PDF:en eller bilden som appen visar
get_pending_distributionprofitpulse:readUtestående Safe-to-Spend-fördelningar
list_vendorsvendors:readLeverantörer, med total utgift
list_clientsclients:readKlienter, med total intäkt
list_projectsprojects:readProjekt, med totalsummor och mål
upload_documentdocuments:writeLaddar upp en faktura eller kvitto i dina dokument

Båda översikterna beräknas på samma grund och säger så: varje svar bär en basis — period, valutor, de konton som omfattas (alla synliga, om inte begärt med id), och hur överföringar mellan organisationens egna konton har behandlats. Som standard är de exkluderade från inkomst och utgifter, ben för ben, precis som appens Cashflow-vy visar dem; skicka includeInternalTransfers: true till något av verktygen för den råa bankrörelsen, som basis sedan märker som sådan och som inte är jämförbar med standarden. Jämför siffror över de två verktygen endast när deras basis matchar. netCashResult är inkomst minus utgifter av bankrörelser — ett kassaflödesresultat, inte redovisningsvinst.

Vilket dokument hör ihop med vilken rörelse

Section titled “Vilket dokument hör ihop med vilken rörelse”

Båda listorna säger det, från båda sidor, på det sätt som appen visar det. Varje transaktion bär linkedDocuments och varje dokument bär linkedTransactions; varje post namnger den andra sidan och en link:

  • confirmed — dokumentet är matchat till rörelsen, vilket räknas som dokumenterat.
  • suggested — matcharen föreslår parningen; ingen har bekräftat det och rörelsen saknar fortfarande sitt dokument. Posten bär matcharens score.

En assistent kan därför inte skilja ingen faktura från en faktura som väntar på att bekräftas från redan arkiverad — och kan inte ändra något av det, eftersom denna koppling inte har något verktyg för det.

En rörelse kan bära flera bekräftade dokument. Ett dokument länkar till högst en rörelse, så en faktura som betalats i flera delar visar endast den rörelse den matchades mot. Ett dokument som fortfarande Processing har inga länkar än; None betyder ingen.

Omfattningar gäller fortfarande: den avlägsna sidan av en länk beskrivs (leverantör och nummer, eller beskrivning och belopp) endast för en nyckel som också kan läsa den resursen. Med en omfattning får du den andra sidans id, typen av länk och poängen — tillräckligt för att veta att en rörelse är dokumenterad, inte vad fakturan säger.

get_document_file tar en documentId från list_documents och returnerar den lagrade filen själv — samma PDF eller bild som appen öppnar — som en inbäddad resurs med sin MIME-typ (application/pdf, image/jpeg, …), bredvid dokumentets id, filnamn och storlek — filer upp till 10MB, samma tak som en uppladdning. Det är så en assistent kontrollerar om en skillnad kommer från fakturan, från vad som extraherades eller från rörelsen den matchades mot, utan att exportera något. Det är en läsning: inget på dokumentet, dess extraherade fält eller dess länkar ändras. Ett dokument som inte är ditt hittas helt enkelt inte.

upload_document är det enda verktyget som skriver, och det valdes för den rollen medvetet: det lägger bara till. Assistenten skickar filen (PDF eller bild, upp till 10MB) och MoneyLights kör den genom samma pipeline som en uppladdning i appen — lagrad, dess fält extraherade (leverantör, datum, nummer, belopp) och automatiskt matchad mot dina banktransaktioner.

Att skicka samma fil två gånger duplicerar aldrig dina data: den andra uppladdningen registreras som en flaggad duplikat som pekar på originalet. Allt som assistenten arkiverar är synligt — och kan raderas — i appen.

Varje annan skrivning (skapa klienter, omklassificera transaktioner, konfigurera kuvert…) stannar i appen avsiktligt: dessa åtgärder förutsätter en människa som bekräftar dem.

Servern erbjuder också färdiga startpunkter — en månatlig cashflow översyn, en leverantörsutgiftsanalys, en städning av saknade dokument — listade endast när din nyckel kan köra varje verktyg de behöver. Använd dem som de är eller redigera fritt.

  • Assistenten är begränsad av nyckeln, kontrolleras på nytt vid varje begäran. Nedgradera eller ta bort nyckelns skapare och assistenten begränsas eller stoppas vid nästa anrop.
  • Finansiella data innehåller text skriven av främlingar — betalningsreferenser, e-postade dokument. Verktygsresultat levereras inom en markerad gräns som säger till modellen att behandla dem som data, aldrig som instruktioner. Behandla det som en åtgärd, inte en garanti, och begränsa nycklar noggrant.
  • För att koppla bort en assistent, återkalla dess nyckel i Inställningar → API-nycklar. Omedelbart, alltid tillgängligt.

Ge varje assistent sin egen nyckel — en per klient betyder att du kan ta bort en utan att störa resten.