For AI agent builders
Company truth and signing authority for your AI agents
Data APIs tell agents about Norwegian companies. Apier gives agents machine-verifiable facts about who may sign for them, with source, history and signed receipts. Ship the integration in days instead of months.
What an agent needs before it acts
Raw registry data is open, but an autonomous agent needs more than a download before it acts for a Norwegian company: facts with a source and a time, the signing rules as the register codes them, and proof it can keep.
Before it acts, it needs to know the company is real
An agent that onboards, pays or signs for a Norwegian company first needs to know the company exists, is active and is not bankrupt or being dissolved, with the source and the time of each fact.
Before it acts, it needs to know who can sign
Brønnøysundregistrene codes signing authority (signaturrett and prokura) as combinations of roles. An agent needs those coded rules exactly as the register holds them, so it can apply them itself instead of guessing.
Before it acts, it needs facts that are current
Registers change: a board is replaced, a company goes bankrupt, accounts are filed. A cached copy or a hard-coded rule is a bug the day the register changes, so every answer carries its source and the time it was read.
Before it acts, it needs proof it can keep
An autonomous agent needs a record of what it checked and when. Signed receipts and a daily externally anchored archive let it show later exactly what the register said at the moment it acted.
One source your agent can call
Apier gives your agent sourced, timestamped facts about Norwegian companies and their signing authority uninterpreted as Brønnøysundregistrene hold it, over MCP and REST, with signed receipts. Binding government submission is not live.
Authentication, handled
Apier reads open registry data from Brønnøysund. Your agent sends one Bearer API key and needs no Maskinporten client, certificate or Altinn access.
Signing authority, as coded
The register's coded signing rules (signaturrett, prokura), uninterpreted; your agent applies them. A convenience classification comes with them, never a legal determination.
Compliance, deterministic
Obligations and deadlines derived from a versioned Rulebook, computed in Oslo time. Same input + same rule version = same answer, every time.
Audit, built in
Every response carries trust _meta and lands an immutable provenance record, so what your agent did is reconstructable from a single correlation id.
How the call flows
Four steps. Each one is a discrete API call the agent can reason about: no hidden state, no magic resolution.
- Step 01
Agent asks: who can sign?
The agent sends a company org_number to Apier. A single call returns who may sign for the company (signaturrett and prokura, coded from Brønnøysund) plus every obligation that applies, with versioned legal citations the agent can surface to its caller.
- Step 02
Apier answers from the registers
Apier reads Brønnøysund's company state and the versioned Rulebook and returns one normalised answer describing exactly what it found: who, what, when, with the source and verification date on every field. Apier does not compose, broker or submit calls to Altinn, Skatteetaten or Brønnøysund on the agent's behalf.
- Step 03Handover
Human-agent handover
When the next step is a binding action (signing, filing, approving), the agent stops. Apier tells it who in the company holds the signing authority and gives a Norwegian-language explanation of what the human must do and where; the human acts in the company's own systems. Apier issues no approval tokens for government writes and submits nothing.
- Step 04
Apier audits every read
Every answer lands in an append-only provenance log and carries a _meta block with rulebook_version, data_freshness and last_verified, so what the agent read is reconstructable from a single correlation id. Apier does not validate, submit or execute government filings: MVA submission is parked and the Altinn authorisation surfaces are withdrawn (every such route answers 410 CAPABILITY_WITHDRAWN).
Paying as an agent
Today a person tops up the prepaid balance. Apier is adding agent payment rails so an agent can top up on its own, settled by Stripe. No agent rail is switched on yet: read GET /api/v1/payments/options to see what is on. Stablecoins come first, over x402 (USDC on Base) and MPP (USDC.e on Tempo, USDC on Solana). Card payments through Shared Payment Tokens are not available to this account yet.
What the protocols are, from Stripe's own pages
- The Machine Payments Protocol (MPP) is an open standard co-authored by Tempo and Stripe, announced on 18 March 2026. Stripe names businesses using it: Browserbase (agents pay per headless browser session), PostalForm (agents pay to print and send physical mail), Prospect Butcher Co. (sandwich orders) and Parallel Web Systems (agents pay per API call for web access). MPP payments settle into the business's existing Stripe balance, in its default currency, on its standard payout schedule. Source: Stripe blog, Introducing the Machine Payments Protocol.
- Stripe supports stablecoin payments over MPP (USDC.e on Tempo, USDC on Solana) and x402 (USDC on Base), with refunds through its Refunds API. Source: Stripe docs, Machine payments.
The full contract (bounds, refunds, terms, and the flows still to come) is in the agent payments guide.
Skip the boilerplate
Your agent calls one tool. We handle the registry reads, the versioned rulebook, Oslo-time deadlines and error mapping.
The Direct Way
Direct Brønnøysund integration + your own rule table
// Just to answer "what must this company file?":
// two registry fetches, your own rule table, deadline math
// in Oslo time, retries and error mapping. Then keep the
// rules current every quarter.
// 1. Read the company from Enhetsregisteret.
const unit = await fetch(
"https://data.brreg.no/enhetsregisteret/api/enheter/999999999",
);
if (!unit.ok) {
// ...404 vs 410 (deleted), 429 backoff, retries
}
const company = await unit.json();
// 2. Read the registered roles, then normalise them yourself.
const roller = await fetch(
"https://data.brreg.no/enhetsregisteret/api/enheter/999999999/roller",
);
const roles = normaliseRoles(await roller.json());
// 3. Decide which obligations apply (and when) from your
// own rule table, and keep it current when the law changes.
const obligations = RULES.filter((r) =>
r.appliesTo(company.organisasjonsform.kode, roles),
);The Apier MCP Way
One tool call via @apier-no/mcp
// One tool call. Apier handles the registry reads,
// the versioned rulebook, Oslo-time deadlines and error
// mapping, then returns the structured obligation set.
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "get_company_obligations",
"arguments": { "org_number": "999999999" }
},
"id": 1
}Try it with your agent
The sandbox is keyless and returns production-shaped responses from synthetic data, with no signup, no government credentials and no binding writes. Wire an agent against it in minutes, then swap in a live key when you're ready.
Related pages
- Direct integration vs Apier — what building the stack yourself actually costs.
- Altinn for AI agents — the Altinn-specific deep dive.
- Norwegian government APIs for foreign companies — the access sequence when your organisation is not Norwegian.
- How do AI agents get Norwegian company facts without hallucinating?
- How does an AI agent verify a Norwegian company?
- Documentation and the Apier home page.