Files
accounted/claude-plugin/commands/setup.md
T
Jakob Wennberg 4af7469523 feat(onboarding): minimal input: orgnr + moms period is the whole ask (#1952)
* feat(onboarding): minimal input: orgnr + moms period is the whole ask

Two fixes from the third E2E attempt (2026-08-26):

1. accounting_method is now optional in CompanySetupSchema and defaults by
   form in planCompanySetup: aktiebolag = accrual (the norm), enskild
   firma = cash (the common small-EF choice; legal under 3 MSEK, BFL 4
   kap 4 paragraf). The plan flags the default (resolved.accountingMethodDefaulted)
   and gnubok_create_company's preview carries accounting_method_defaulted
   so the readback names it and the user overrides in the same 'ja'.
   Never silent: the preview is the checkpoint. Applies to the MCP tool
   and POST /api/v1/companies (additive; response shows the resolved
   value). The lookup tool's still_to_ask no longer lists it.

2. The agent refused a real orgnr because the user said 'nytt bolag' and
   the registry showed an established company ('Stopp. Numret matchar
   inte ett nytt bolag'): lookup instructions now state that an
   established company with F-skatt/VAT is the NORMAL case (new = new to
   Accounted) and the orgnr is never second-guessed for looking
   established.

Skill + plugin (v1.2.1) updated; API skill regenerated; DECISIONS.md entry.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(onboarding): surface the kontantmetod 3-MSEK condition on the defaulted cash method

Compliance-review finding on #1952: the EF cash default carries a legal
eligibility condition (turnover normally under 3 MSEK, BFL 4 kap 4 §)
that a client not reading the onboarding skill would never see. The
create preview now carries accounting_method_note with the condition
whenever cash was defaulted, and the v1 pitfall states it for API
integrators. The registry cannot verify turnover, so the confirm-time
human check is the gate; the default itself stays (a brand-new EF has
zero turnover by definition).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Jakob Wennberg <311770904+jakobwennberg-oss@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-26 15:15:09 +02:00

3.2 KiB

description
description
Connect Accounted (create the account if needed) and set up the company from this conversation. Run once after installing the plugin.

The user just installed the Accounted plugin, or asked to get set up. Take them from "not connected" to "books are running" without sending them to the website first. Everything below happens in this conversation except the steps that legally need a human with BankID in a browser: creating the account, approving a bank consent, authorising Skatteverket.

Step 1: connect

Call accounted_get_agent_briefing.

  • If it succeeds, the user is connected and has a company: say so, summarise the company in one line (name, form, method, VAT period), and stop here. Point at /accounted:start for orientation.
  • If it fails with an authentication error, the connector is not connected yet. Tell the user: run /mcp, pick accounted, and authenticate. The browser opens Accounted's sign-in. No account yet? Create it right there ("Skapa konto"): BankID is fastest (about a minute, no e-mail confirmation); e-mail + password also works and asks for a 2FA app before consent. On the consent screen, read-only scopes are pre-ticked; leave Företag: skriv ticked so the company can be created from here. Then continue with Step 2.
  • If it fails with NO_COMPANY_YET, the account exists but has no company yet: continue with Step 2.

Step 2: set up the company

Call accounted_load_skill("onboarding") and follow it. In short: ask for the organisationsnummer first and call accounted_lookup_company; the public registry answers most of the form (name, address, F-skatt, VAT status, legal form, fiscal year), so present those as facts to confirm and ask only what still_to_ask lists (typically only the moms period; the accounting method defaults by company form and is confirmed in the preview). Then call accounted_create_company without confirm to get a preview, read the preview back in plain Swedish, and only after an explicit "ja" call it again with confirm: true.

Rules the tool enforces, so do not argue with them: a VAT-registered company needs both an organisationsnummer and a moms period; F-skatt must be stated, never assumed; an enskild firma always runs on the calendar year.

Step 3: connections

Call accounted_connect_bank and accounted_connect_skatteverket. Each returns a status and a link. The user opens the link in a browser where they are logged in to Accounted, approves with BankID, and comes back. Neither is mandatory to start: bank statements can also be imported as files, and declarations can always be downloaded and filed manually.

Step 4: hand over

Call accounted_get_agent_briefing again to confirm the company is live, then point at the flows: /accounted:bookkeep once transactions arrive, /accounted:check for a health check, /accounted:start any time for orientation.

Rules

  • Never create a company "to try things out" for a real organisation: bookkeeping duty starts the moment it exists. Use the sandbox in the web app for demos.
  • Never guess company facts. Every value in the preview came from the user or from the organisationsnummer lookup.
  • Every write in Accounted stages for the user's approval; nothing is booked on its own.