Utvikler-API
Altinn for AI Agents
Ikke lær agenten din norsk lov. Gi den Apiers MCP-server.
Hva er Altinn for AI-agenter?
Apier er et utviklerrettet API og en Model Context Protocol-server for AI-agenter som berører norsk regulatorisk infrastruktur — Altinn 3, Maskinporten og Brønnøysund som infrastruktur i stedet for noe agenten din bygger på nytt.
Hvorfor bør ikke agenten min bygge Altinn-integrasjonen selv?
Norsk regulatorisk infrastruktur er en lang integrasjon som endres hvert kvartal. Delene en agent enten må løse eller hoppe over:
- Autoritetskjeder. Signaturrett, prokura, daglig leder, styremedlemmer og Altinn System User-delegerings-scopes avgjør hvem som lovlig kan handle for en virksomhet — og mappingen er ikke åpenbar (prokura dekker kommersiell signering, men ikke skatteinnsending; signaturrett kan være bare i fellesskap).
- Legitimasjons-livssyklus. Virksomhetssertifikat, Maskinporten-klient og nøkkelpar, Altinn System Register-oppføring, delegering per virksomhet — på tvers av flere portaler og etater, hver med sin egen utløps- og rotasjonssyklus.
- Kvartalsvis regeldrift. MVA-kadens, revisjonsterskler og organisasjonsform-nyanser (AS vs ENK vs NUF) skifter på Stortinget-syklusen. En agent som hardkoder reglene blir foreldet stille.
Hva gjør Apiers MCP-server for agenten?
Apier eksponerer hele verktøyflaten sin over Model Context Protocol. Agenten din oppdager og kaller deterministiske verktøy — plikt-avgjørelser, fristmatematikk, handleevne-oppslag, dry-run-validering og Compliance Explainer — og hvert svar har samme form som det ville fått over REST. Under panseret gjør de samme åtte komponentene jobben:
- Auth Gateway. Maskinporten-client-assertion, token-mellomlagring og Altinn 3 System User-delegerings-flyten — én Bearer-nøkkel, rå tokens eksponeres aldri.
- Registry Engine. Kanonisk selskapstilstand avstemt på tvers av Brønnøysund, Skatteetaten, NAV og Altinn.
- Universal Rulebook. Versjonerte regulatoriske regler med legal_reference-siteringer; deterministisk evaluering, så samme inndata pluss rulebook- versjon gir byte-identisk utdata.
- Deadline Engine. MVA-terminer, A-melding-kadens, skattemelding, årsregnskap — kalendermatematikk i Europe/Oslo, DST- og helligdags-bevisst.
- MCP Server. Hvert verktøy over via Model Context Protocol på
/api/mcp, pakket som@apier-no/mcppå npm. - Intent-to-Action Parser. Handlings-forespørsler løses opp i et dry-run-rør i dag; den bindende live-innsendings-stien er gated og ennå ikke tilgjengelig. Valideringsporter kjøres før hvert oppstrøms-kall, og live innsending vil kreve en engangs-godkjenningstoken.
- AI-Agent Discovery.
llms.txt,llms-full.txt,workflows.json,/api/v1/capabilitiesog well-known- manifestene — hver maskinoppdagelses-flate fylt ut og stabil. - Compliance Explainer. Hver Apier-
error_codeløses opp til et norsk-bokmålexplanation-omslag (summary, why, fix_steps, legal_basis, handover) viaPOST /api/v1/explain.
Hvordan er agentens handlinger sporbare?
Når en agent handler, bevares den forensiske kjeden: hver API-respons SHA-256-hashes inn i en append-only provenance-logg, og hver compliance-evaluering tas vare på etter correlation_id med rulebook-versjonen som gjaldt. Når en live, gated innsending åpnes og returnerer en kvittering, lagres statens rå respons i det HMAC-signerte omslaget fra ende til ende. Hvem som autoriserte handlingen, hvilken regel som gjaldt, hva Apier returnerte, og hva staten bekreftet kan rekonstrueres fra én enkelt correlation_id — fra første kall og utover, ikke gated av tier.
Kodeeksempel
Slipp @apier-no/mcp inn i enhver MCP-kompatibel klient-konfig og Apier-verktøyflaten lyser opp. Samme avgjørelse er tilgjengelig over JSON-RPC og over ren REST.
{
"mcpServers": {
"apier": {
"command": "npx",
"args": ["-y", "@apier-no/mcp"],
"env": { "APIER_API_KEY": "apier_live_<your_key>" }
}
}
}// An MCP-compatible harness (Claude Desktop, Cursor, custom) calls the
// get_company_obligations tool over MCP JSON-RPC. Apier resolves it
// against the live Rulebook and returns the structured obligation set.
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "get_company_obligations",
"arguments": { "org_number": "991825827" }
},
"id": 1
}# The same verdict over REST, for any HTTP client.
curl -H "Authorization: Bearer apier_live_<your_key>" \
"https://www.apier.no/api/v1/company/991825827/obligations"Kildekode + issues: github.com/PowerLaunch/apier-mcp. Pakke: npmjs.com/package/@apier-no/mcp.
Hvor finner jeg API-referansen?
Hvert verktøy mapper til et dokumentert REST-endepunkt; den fullstendige referansen ligger i OpenAPI 3.1-spesifikasjonen, utviklerdokumentasjonen og MCP-integrasjonsguiden.
Hva gjør agenter med det?
- Svar på “hva må dette selskapet levere, og når?” uten at agenten lærer norsk skatterett.
- Avgjør om en gitt aktør kan ta en gitt handling før den forsøkes — handleevne over Altinn-delegeringsmodellen pluss registerrollene.
- Kjør en innsending gjennom dry-run-validering i dag; den gatede live-innsendingen — og den signerte kvitteringen du lagrer for revisjon — er gated og ennå ikke tilgjengelig.
Hvordan kommer jeg i gang?
Å koble til en agent er fire steg — de samme verktøyene er tilgjengelige over MCP og over ren REST, så du kan starte begge veier.
- Slipp
@apier-no/mcpinn i MCP-klient-konfigen din (kodebiten over), eller pek HTTP-klienten din mot REST-flaten — verktøysettet er identisk. - Prøv det mot null-auth-sandkassen først — curl sandkasse-speilet mot syntetisk org
999999999, uten nøkkel og uten sertifikat. - Provisjonér en Apier-API-nøkkel, sett
APIER_API_KEY, og gi den scopene agenten din trenger — etread:*- scope for kontekst,read:actionsfor å sende inn. - For å handle på et selskaps vegne, få det til å gi kontoen din en Altinn System User-delegering; agenten løser opp handleevne før hver gated handling.
Vanlige spørsmål
Fungerer Apier med Model Context Protocol (MCP)?
Ja. npm-pakken @apier-no/mcp faller inn i enhver MCP-kompatibel klient (Claude Desktop, Cursor, egne harnesses) via npx, og agenten din får Apier-verktøyflaten — get_company_summary, get_company_obligations, get_company_deadlines, list_acting_capacity, check_authorization, validate_action, explain_compliance_error — over den standard JSON-RPC-protokollen. Samme verktøy som REST-flaten eksponerer, ingen separat integrasjon.
Hva er forskjellen på å kalle Brønnøysund direkte og å gå gjennom Apier?
Brønnøysund returnerer rå selskapsregister-rader — NACE-koder, signaturrett, prokura, oppløst-status. Apier returnerer de samme dataene pluss plikt-avgjørelsen på tvers av etater: hvem som må levere MVA annenhver måned, hvem som trenger revisor ved årsslutt, hvis delegering snart utløper. Apier ligger på laget der regulatorisk tilstand fra Brønnøysund, Skatteetaten, NAV og Altinn 3 avstemmes til én kontekst en agent kan planlegge mot. Trenger du bare Tier 1-registerdata, er det rimelig å kalle Brønnøysund direkte; trenger agenten din å handle på de dataene, vipper integrasjonskostnaden mot Apier.
Kan agenten min sende inn skatt eller MVA på vegne av et norsk selskap?
Dry-run-validering kjører i dag via POST /api/v1/actions/execute?dry_run=true (mva_melding og a_melding). Bindende live innsending er derimot gated og ennå ikke tilgjengelig: den venter på Maskinporten-produksjonsvalidering og godkjenning av Altinn-scope, og vil i tillegg kreve en engangs-godkjenningstoken pluss en aktiv Altinn System User-delegering for virksomheten. Når den gatede live-stien åpnes, sender en vellykket innsending ut et HMAC-signert kvitteringsomslag du kan lagre for revisjon. Utførelsen er gated og deterministisk — en agent kan ikke omgå godkjenningssteget.
Hvorfor en MCP-server i stedet for å lære agenten min reglene?
Norske regulatoriske regler endres på Stortinget-syklusen — terskler, innleveringskadens og organisasjonsform-nyanser skifter hvert kvartal. En agent som hardkoder dem blir foreldet stille. Apier leverer reglene som den versjonerte Universal Rulebook og eksponerer avgjørelsene som verktøy, så agenten resonnerer over gjeldende regler den aldri måtte lære. Samme inndata pluss rulebook-versjon gir byte-identisk utdata, som er det som gjør en agents beslutninger reproduserbare og reviderbare.
Trenger jeg separate Maskinporten-legitimasjoner for hvert selskap agenten min betjener?
Nei. Apier brokerer Maskinporten sentralt. Agenten din autentiserer med én Bearer-API-nøkkel; autoritet per selskap kommer fra Altinn System User-delegeringen det selskapet gir kontoen din. Hver delegering avgrenser hvilke API-er agenten din kan kalle på det selskapets vegne, og Apier løser opp riktig token ved forespørselstidspunkt uten å returnere det rå OAuth-tokenet til koden din. Ett virksomhetssertifikat, én Maskinporten-klient, N selskaps-delegeringer.
API-ene agenten din bruker
- Altinn API — delegeringer og innsending gjennom Altinn 3.
- Maskinporten API — den brokerte maskin-til-maskin-auth-en.
- Brønnøysund (BRREG) API — selskapsoppslag og verifisering.
- Altinn System User API — delegeringen per selskap som agenten handler under.
- Skatteetaten API — MVA-melding-validering og innsending.
- Filing History API — hva et selskap allerede har sendt inn.
- Webhooks API — push-varsler når regulatorisk tilstand endres.
- Dokumentasjon og Apier-forsiden.
Kom i gang
MCP-serveren er én npx unna og sandkassen kan curl-es uten registrering; dokumentasjonen dekker verktøyflaten, scopes og den gatede utførelses-stien — dry-run i dag, med bindende live-innsending gated og ennå ikke tilgjengelig.