_ registry / mcp + a2a streamable-http · checked 3h ago

apier-no

https://www.apier.no

Registry code: 1ec2272ac3a2d88d

api record

When you present an API key, tools/list shows only the tools that key's scopes allow. The keyless GET /api/mcp lists every discoverable tool with its required_scope, so you can see which scope a missing tool needs. A tools/call naming a tool outside your key's scopes answers exactly like an unknown tool: JSON-RPC error -32602, "Invalid params: unknown tool." Without an API key, the company tools that have a fixture mirror accept Bearer apier_sandbox_test_<suffix> (use a fresh suffix); fixture orgs are the 818, 99966 and 99977 series and 999000002 (GET /api/v1/sandbox/fixtures). Metered tools…

endpoint
https://www.apier.no/api/mcp
door code
da34439adfd6c122
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is apier-no live?
Yes — it answered the hub's last check (checked 3h ago). It answered 100% of checks over the last 30 days.
Is apier-no free to use?
Partly — some of its tools are open, others need a key or payment.
What tools does apier-no have?
20 tools: get_company_summary, get_public_obligations, get_company_history, redeem_issuance_token, get_exchange_rate, get_company_profile, get_company_context, get_company_obligations, ….
Is apier-no safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
99.6%

90 days 99.6%· all time 99.6%

latency
225ms

last good check

priced tools
0

of 20 tools

_ answered our checks, 90 days 1043 checks · signed record
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
  • live → degraded· timeout after 20000ms
  • degraded → live
_ what it is for
used for
  • look up a norwegian company by org number
  • check who can sign for a norwegian company
  • get a company's regulatory filing deadlines
  • request or revoke agent authority for a company
  • validate a regulatory action
takes → gives
text → data
tools
17 reads1 changes data
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 20 tools
2 open2 auth-required 16 never probed 4 of 20 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • get_pricing reads open 42d ago

    Call this BEFORE metered work to check per-call cost and whether billing enforcement is live. Keyless (runs the production path under a sandbox bearer): executes WITHOUT an API key, so an agent can price a workflow before it holds any credential. Returns the machine-readable price list: every credit-metered REST endpoint with its MCP tool name and cost in whole øre (always an integer), the enforcement.live flag (while false nothing is debited and a 402 is impossible), the 402 INSUFFICIENT_CREDITS recovery-contract field list, the top-up bounds with top_up_url, and the how_to_pay_guide URL. Prices derive from the SAME configuration the 402 meter debits, so this surface cannot drift from enforcement. Input: none — call with {}. Failure modes: per-IP rate limiting and transient errors only. For the calling key's own balance, use get_credit_balance (Bearer key required) instead. Docs: https://www.apier.no/docs/guides/billing

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • get_public_deadlines reads open 42d ago

    Keyless; runs the production path under a sandbox bearer. The universal Norwegian filing calendar: the deadlines for every Norwegian business in the covered categories (MVA, A-melding, Skattemelding, Årsregnskap), which do not depend on any one organisation. One entry per obligation and period for a single Europe/Oslo calendar year: a per-period obligation_id (such as `mva-termin-4-2026`; the company tools use rule ids such as `MVA_FILING_BIMONTHLY` instead), period, deadline (Europe/Oslo), submission_window_closes, adjusted_from (the legal date before a shift, else null), legal_reference and applies_to_entity_types. The output is deterministic for a given rulebook_version. The only input is an optional `year` (2020–2100; defaults to the current Oslo year). Failure modes: VALIDATION_FAILED on year shape; a credential without `read:rulebook` can't see the tool. For a specific company's calendar, use get_company_deadlines instead. Docs: https://www.apier.no/docs/guides/norway-corporate-tax-return-deadline

    mcp-tool

    {
      "type": "object",
      "properties": {
        "year": {
          "type": "integer",
          "maximum": 2100,
          "minimum": 2020,
          "examples": [
            2026
          ],
          "description": "Europe/Oslo calendar year the calendar should cover (2020–2100). Omitted → the current Oslo year at the endpoint."
        }
      },
      "additionalProperties": false
    }
    arguments 15 lines
  • list_changes reads auth-required 42d ago

    Read Apier's cross-source change archive — created / updated / deleted events detected across the upstreams Apier polls (Brønnøysund, Norges Bank, NAV, Skatteetaten Tier-2; the Digdir and Altinn schema pollers are retired, so `digdir` and `altinn` are valid but empty filters). Filter by { source, entity_type, entity_id, change_type } and a { from }–{ to } detected_at range. Queries WITHOUT entity_id withhold personal-field rows by design (`personal_fields_withheld: true`); the org-scoped form returns everything. Keyset-paginated newest-first: pass { limit } (1–500, default 50) and carry `next_cursor` back verbatim (HMAC-signed; an edited one is CURSOR_INVALID: start over without a cursor). Failure modes: VALIDATION_FAILED, CURSOR_INVALID; a credential without `read:changes` can't see the tool (tools/list leaves it out). No sandbox mirror; returns SANDBOX_TOOL_UNAVAILABLE under a sandbox bearer. Docs: https://www.apier.no/docs/guides/webhooks

    mcp-tool

    {
      "type": "object",
      "properties": {
        "to": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
          "description": "Upper bound on detected_at; must be ≥ from."
        },
        "from": {
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
          "examples": [
            "2026-01-01T00:00:00Z"
          ],
          "description": "Lower bound on detected_at (ISO 8601 with timezone offset)."
        },
        "limit": {
          "type": "integer",
          "maximum": 500,
          "minimum": 1,
          "examples": [
            50
          ],
          "description": "Page size 1–500 (route default 50)."
        },
        "cursor": {
          "type": "string",
          "minLength": 1,
          "description": "Opaque signed cursor from a previous `next_cursor` — pass back verbatim."
        },
        "source": {
          "enum": [
            "brreg",
            "altinn",
            "digdir",
            "norges_bank",
            "nav",
            "skatteetaten",
            "lovdata"
          ],
          "type": "string",
          "description": "Filter to one upstream source (e.g. brreg / altinn / digdir / norges_bank). Omit for all sources."
        },
        "entity_id": {
          "type": "string",
          "examples": [
            "818000006"
          ],
          "maxLength": 100,
          "minLength": 1,
          "description": "Filter to one entity's change stream (e.g. a 9-digit org number)."
        },
        "change_type": {
          "enum": [
            "created",
            "updated",
            "deleted"
          ],
          "type": "string",
          "description": "Filter to created / updated / deleted events."
        },
        "entity_type": {
          "type": "string",
          "maxLength": 50,
          "minLength": 1,
          "description": "Filter to one entity type (e.g. annual_accounts, company)."
        }
      },
      "additionalProperties": false
    }
    arguments 72 lines
  • get_altinn_migration_guidance reads auth-required 42d ago

    Discover the Altinn 3 equivalent of an Altinn 2 service or role code. The 19 June 2026 Altinn 2 deprecation deadline has passed, so this serves remediation for integrations still on Altinn 2. Pass { altinn2_code } (alphanumeric, 1–10 chars, e.g. A0208) for one mapping, or omit it for the whole map. Every response carries the deprecation status computed in Europe/Oslo (deprecation_deadline, days_remaining, deadline_passed). Each entry ships a `verified` flag: gate any production migration on `verified === true`; unverified entries are hints. Deterministic static map (Digdir-sourced); no government system is contacted. Zero-auth REST twin: GET /api/v1/tools/altinn-migration. Failure modes: NOT_FOUND for a code not in the map, VALIDATION_FAILED (INVALID_CODE). Keyless: callable with no API key at all (per-IP limited); a credential without `read:digdir` can't see the tool. No sandbox mirror; a sandbox bearer runs this keyless path. Docs: https://www.apier.no/docs/guides/altinn-system-users

    mcp-tool

    {
      "type": "object",
      "properties": {
        "altinn2_code": {
          "type": "string",
          "pattern": "^[A-Za-z0-9]+$",
          "examples": [
            "A0208"
          ],
          "maxLength": 10,
          "minLength": 1,
          "description": "An Altinn 2 service or role code to resolve (alphanumeric, 1–10 chars, e.g. A0208). Omit to get the entire migration map."
        }
      },
      "additionalProperties": false
    }
    arguments 16 lines
  • get_company_summary reads unknown never probed

    A one-shot summary of obligations and deadlines for a Norwegian organisation: your FIRST call when you orient against a company. One call gives you entity_type, nace_codes, mva_registered, data_tier, obligations[] and deadlines[] (tier_2 adds filing_status), all from one version of the rules. The sandbox answers from fixtures with a different shape (no rulebook_coverage). It is not the identity from the registry: use get_company_context instead; for a drill down call get_company_obligations; to set a horizon_months call get_company_deadlines. Failure modes: NOT_FOUND, ENTITY_REMOVED, UPSTREAM_UNAVAILABLE, VALIDATION_FAILED; a credential without `read:brreg` can't see the tool. No API key? Use Bearer apier_sandbox_test_<suffix> (a fresh suffix) to get fixtures; valid orgs are the 818, 99966 and 99977 series and 999000002 (see GET /api/v1/sandbox/fixtures). Cost: 50 øre (NOK 0.50) per call, prepaid (prices: the get_pricing tool or GET /api/v1/pricing). Docs: https://www.apier.no/docs/guides/company-snapshot

    mcp-tool

    {
      "type": "object",
      "required": [
        "org_number"
      ],
      "properties": {
        "org_number": {
          "type": "string",
          "pattern": "^\\d{9}$",
          "examples": [
            "818000006"
          ],
          "description": "9-digit Norwegian organisasjonsnummer (Brønnøysund ID); MOD-11-checked up-front — a failing value is rejected as VALIDATION_FAILED, so correct the number rather than retrying it."
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • get_public_obligations reads unknown never probed

    Keyless; runs the production path under a sandbox bearer. Retrieve the universal obligation set for a Norwegian entity type — every regulatory obligation that applies by virtue of BEING that organisational form, before per-company Tier-2 data is layered on. Use it for 'what does an AS owe?' or 'what are the baseline filings for an Enkeltpersonforetak?' without naming a company. Each obligation carries tier_2_required: true means the rule engine needs commercial data to decide for a SPECIFIC company, false means it applies unconditionally. Input: { entity_type } from the closed enum AS / ENK / ANS / DA / NUF (no 'OTHER' fallback). Failure modes: VALIDATION_FAILED, UPSTREAM_UNAVAILABLE; a credential without `read:rulebook` can't see the tool. For a specific company's evaluated obligations, call get_company_obligations; for the universal calendar, use get_public_deadlines. Docs: https://www.apier.no/docs/guides/norwegian-company-obligations

    mcp-tool

    {
      "type": "object",
      "required": [
        "entity_type"
      ],
      "properties": {
        "entity_type": {
          "enum": [
            "AS",
            "ENK",
            "ANS",
            "DA",
            "NUF"
          ],
          "type": "string",
          "examples": [
            "AS"
          ],
          "description": "Norwegian organisational form (closed enum): AS / ENK / ANS / DA / NUF."
        }
      },
      "additionalProperties": false
    }
    arguments 23 lines
  • get_company_history unknown never probed

    Company history from Apier's archive of Brønnøysund observations. Mode `as_of` with `date` returns the state Apier had observed at the end of that day: every tracked field with its status, source and licence. Mode `history` with `from` and `to` (at most 366 days) returns up to 1,000 changes observed in the window, or with `view` `diff` one field-by-field comparison. The archive starts 2026-07-30 and nothing earlier is back-filled; `coverage` says what is covered. A record of what the register showed, not what was in force, never a verdict. Errors: VALIDATION_FAILED, UPSTREAM_UNAVAILABLE; a credential without `read:brreg` can't see the tool; a call returns unknown tool (-32602). No API key? Use Bearer apier_sandbox_test_<suffix> (a fresh suffix) to get fixtures; valid orgs are the 818, 99966 and 99977 series and 999000002 (see GET /api/v1/sandbox/fixtures). Cost: 50 øre (NOK 0.50) per call, prepaid (prices: the get_pricing tool or GET /api/v1/pricing). Docs: https://www.apier.no/docs/guides/company-history

    mcp-tool

    {
      "type": "object",
      "required": [
        "org_number",
        "mode"
      ],
      "properties": {
        "to": {
          "type": "string",
          "format": "date",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
          "examples": [
            "2026-10-01"
          ],
          "description": "Only with mode `history`, and required there: end of the window (YYYY-MM-DD), not after today in Europe/Oslo and at most 366 days after `from`."
        },
        "date": {
          "type": "string",
          "format": "date",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
          "examples": [
            "2026-10-01"
          ],
          "description": "Only with mode `as_of`, and required there: a calendar date (YYYY-MM-DD), not after today in Europe/Oslo. A date before the archive start is answered with the facts `not_checked`."
        },
        "from": {
          "type": "string",
          "format": "date",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
          "examples": [
            "2026-10-01"
          ],
          "description": "Only with mode `history`, and required there: start of the window (YYYY-MM-DD), not after `to`."
        },
        "mode": {
          "enum": [
            "as_of",
            "history"
          ],
          "type": "string",
          "description": "`as_of` returns the state Apier had observed at the end of `date`; `history` returns up to 1,000 changes Apier observed between `from` and `to` (`truncated` marks more) (or, with `view` `diff`, one field-by-field comparison of the two ends)."
        },
        "view": {
          "enum": [
            "events",
            "diff"
          ],
          "type": "string",
          "description": "Only with mode `history`: `events` (default) lists the changes; `diff` compares the state at the end of `from` with the state at the end of `to`."
        },
        "org_number": {
          "type": "string",
          "pattern": "^\\d{9}$",
          "examples": [
            "818000006"
          ],
          "description": "9-digit Norwegian organisasjonsnummer (Brønnøysund ID); MOD-11-checked up-front — a failing value is rejected as VALIDATION_FAILED, so correct the number rather than retrying it."
        }
      },
      "additionalProperties": false
    }
    arguments 61 lines
  • redeem_issuance_token changes data unknown never probed

    Convert an owner-issued key-issuance token into your own API key — the headless onboarding step for an agent that holds no credential yet. Keyless: the one-time token IS the credential. Minting and revocation are dashboard-only, so an agent can never self-issue authority. Redemption is strictly SINGLE-USE and atomic: on success (201) the token is consumed and the result carries {id, name, scopes, created_at, plaintext_key} — returned EXACTLY ONCE; store it immediately. Failure modes: an expired / used / revoked / unknown token yields ONE uniform ISSUANCE_TOKEN_INVALID failure (ask the owner for a fresh token, never retry); MAX_KEYS_REACHED (409) means 3 active keys — the token was NOT consumed, retry with the SAME token after the owner revokes a key. After onboarding, use get_pricing to price metered work and get_credit_balance (with your new key) for the balance. No sandbox mirror; returns SANDBOX_TOOL_UNAVAILABLE under a sandbox bearer. Docs: https://www.apier.no/docs/authentication

    mcp-tool

    {
      "type": "object",
      "required": [
        "token"
      ],
      "properties": {
        "token": {
          "type": "string",
          "examples": [
            "apr_issue_<token_from_the_account_owner>"
          ],
          "maxLength": 256,
          "minLength": 1,
          "description": "The one-time key-issuance token the account owner minted in the Apier dashboard (Agent issuance tokens) and handed to you out-of-band. Single-use: it is consumed atomically on success. Never logged by Apier."
        }
      },
      "additionalProperties": false
    }
    arguments 18 lines
  • get_exchange_rate reads unknown never probed

    Keyless; runs the production path under a sandbox bearer. Norges Bank reference exchange rate for a currency against NOK — the benchmark Norwegian tax and accounting rules accept for foreign-currency obligations. No Norwegian-company input. Input: { base, quote, date? } — ISO 4217 codes, NOK-anchored: exactly one side MUST be 'NOK'. The response is always base NOK and quote = the other currency, whatever order you sent; rate = NOK per 1 unit of quote; date = the day the rate is valid for (weekends and holidays fall back to the prior business day, so it can differ from requested_date). A pair without a NOK side is rejected client-side as UNSUPPORTED_CURRENCY_PAIR: derive cross rates from two NOK legs. Failure modes: VALIDATION_FAILED, UNSUPPORTED_CURRENCY_PAIR, INVALID_DATE, UPSTREAM_UNAVAILABLE, NO_RATE_AVAILABLE; a credential without `read:norgesbank` can't see the tool. For obligations or deadlines rather than a rate, use get_company_summary instead. Docs: https://www.apier.no/docs/mcp

    mcp-tool

    {
      "type": "object",
      "required": [
        "base",
        "quote"
      ],
      "properties": {
        "base": {
          "type": "string",
          "pattern": "^[A-Za-z]{3}$",
          "examples": [
            "EUR",
            "USD"
          ],
          "description": "Base currency — ISO 4217 three-letter code (case-insensitive). Exactly one of base/quote must be 'NOK'."
        },
        "date": {
          "type": "string",
          "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
          "examples": [
            "2026-04-10"
          ],
          "description": "Optional ISO 8601 date (YYYY-MM-DD); omit for the latest published rate. Non-business days fall back to the prior business day."
        },
        "quote": {
          "type": "string",
          "pattern": "^[A-Za-z]{3}$",
          "examples": [
            "NOK"
          ],
          "description": "Quote currency — ISO 4217 three-letter code (case-insensitive). Exactly one of base/quote must be 'NOK'."
        }
      },
      "additionalProperties": false
    }
    arguments 35 lines
  • get_company_profile reads unknown never probed

    Resolve a Norwegian organisasjonsnummer (9 digits) into a structured company profile from Brønnøysund Enhetsregisteret: display name, form of organisation, NACE codes with descriptions, addresses, the dates of registration and dissolution, the `active` / `dissolved` status enum, the MVA-registered flag, and the role codes of persons in the public register (no names); never fødselsnummer or other national IDs. The backing REST route is POST /api/v1/brreg/company-profile. For deadlines and filing status, use get_company_summary; for the signaturrett / prokura role-code summary, use get_company_context instead. No sandbox mirror; it returns SANDBOX_TOOL_UNAVAILABLE under a sandbox bearer. Failure modes: COMPANY_NOT_FOUND, VALIDATION_FAILED, ORG_NUMBER_INVALID_CHECKSUM, UPSTREAM_UNAVAILABLE; a credential without `read:brreg` can't see the tool. Cost: 50 øre (NOK 0.50) per call, prepaid (prices: the get_pricing tool or GET /api/v1/pricing). Docs: https://www.apier.no/docs/guides/norwegian-company-register-search

    mcp-tool

    {
      "type": "object",
      "required": [
        "org_number"
      ],
      "properties": {
        "org_number": {
          "type": "string",
          "pattern": "^\\d{9}$",
          "examples": [
            "818000006"
          ],
          "description": "9-digit Norwegian organisasjonsnummer (Brønnøysund Enhetsregisteret ID). Unlike the get_company_* tools, this input schema does NOT run the MOD-11 control-digit check — MOD-11 is enforced by the backing route, which returns ORG_NUMBER_INVALID_CHECKSUM (HTTP 400) when a well-formed 9-digit value fails it; correct the number rather than retrying the same one."
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • get_company_context reads unknown never probed

    Brønnøysund identity slice for a Norwegian organisation: legal name, form of organisation, NACE codes, municipality, registration_date, and the signaturrett / prokura roles (names and role codes from the public register; never fødselsnummer or other national identifiers). Identity ONLY, no verdict on obligations; add get_company_obligations or get_company_deadlines for the regulatory layer. Failure modes: NOT_FOUND, ENTITY_REMOVED, UPSTREAM_UNAVAILABLE, VALIDATION_FAILED; a credential without `read:brreg` can't see the tool (tools/list leaves it out). For an obligations verdict, use get_company_summary instead; for NACE descriptions, use get_company_profile instead. No API key? Use Bearer apier_sandbox_test_<suffix> (a fresh suffix) to get fixtures; valid orgs are the 818, 99966 and 99977 series and 999000002 (see GET /api/v1/sandbox/fixtures). Cost: 50 øre (NOK 0.50) per call, prepaid (prices: the get_pricing tool or GET /api/v1/pricing). Docs: https://www.apier.no/docs/guides/company-snapshot

    mcp-tool

    {
      "type": "object",
      "required": [
        "org_number"
      ],
      "properties": {
        "org_number": {
          "type": "string",
          "pattern": "^\\d{9}$",
          "examples": [
            "818000006"
          ],
          "description": "9-digit Norwegian organisasjonsnummer (Brønnøysund ID); MOD-11-checked up-front — a failing value is rejected as VALIDATION_FAILED, so correct the number rather than retrying it."
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • get_company_obligations reads unknown never probed

    Evaluate the Apier Rulebook for a Norwegian organisation: one entry per rule with rule_id, obligation_name, evaluation_result (applicable, not_applicable or insufficient_data), a reason, the legal_reference, frequency, data_tier_required and the bokmål description, which is inherited byte for byte (never re-translate it). Sandbox fixtures have no rulebook_coverage. Failure modes: NOT_FOUND, ENTITY_REMOVED, UPSTREAM_UNAVAILABLE, VALIDATION_FAILED; a credential without `read:brreg` can't see the tool. For the calendar alone, use get_company_deadlines instead; for the entity-type set that needs no org number or key, use get_public_obligations instead. No API key? Use Bearer apier_sandbox_test_<suffix> (a fresh suffix) to get fixtures; valid orgs are the 818, 99966 and 99977 series and 999000002 (see GET /api/v1/sandbox/fixtures). Cost: 50 øre (NOK 0.50) per call, prepaid (prices: the get_pricing tool or GET /api/v1/pricing). Docs: https://www.apier.no/docs/guides/norwegian-company-obligations

    mcp-tool

    {
      "type": "object",
      "required": [
        "org_number"
      ],
      "properties": {
        "org_number": {
          "type": "string",
          "pattern": "^\\d{9}$",
          "examples": [
            "818000006"
          ],
          "description": "9-digit Norwegian organisasjonsnummer (Brønnøysund ID); MOD-11-checked up-front — a failing value is rejected as VALIDATION_FAILED, so correct the number rather than retrying it."
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • explain_compliance_error reads unknown never probed

    Keyless. Resolve a structured Apier compliance error code into a Norwegian-bokmål Explanation envelope: summary, bokmål why, ordered fix_steps, optional documentation link + legal_basis, and an optional handover block (who / where / what / why) for errors a human must resolve (e.g. AUTH_INSUFFICIENT_ROLE, AUTH_NO_DELEGATION, SCOPE_MISSING) — agent-resolvable errors ship `handover: null`. Accepts any code from the closed EXPLAINER_ERROR_CODES catalogue. Optional flat context_org_number / context_scope / context_role / context_field / context_upstream_system strings carry placeholder values interpolated into the bokmål text; missing values fall back to 'ukjent <noun>'. Failure modes: VALIDATION_FAILED on an unknown code; a credential without `read:rulebook` can't see the tool (tools/list leaves it out). The same code and context always give the same text. For a company's live obligations rather than an error explanation, use get_company_obligations instead. Docs: https://www.apier.no/docs/guides/error-handling

    mcp-tool

    {
      "type": "object",
      "required": [
        "error_code"
      ],
      "properties": {
        "error_code": {
          "type": "string",
          "examples": [
            "VALIDATION_FAILED",
            "AUTH_NO_DELEGATION"
          ],
          "minLength": 1,
          "description": "An Apier error code from an error envelope. Full list: apier://tools/explain_compliance_error/guide"
        },
        "context_role": {
          "type": "string",
          "maxLength": 64,
          "minLength": 1,
          "description": "Role code interpolated into the explanation."
        },
        "context_field": {
          "type": "string",
          "maxLength": 64,
          "minLength": 1,
          "description": "Field name interpolated into the explanation."
        },
        "context_scope": {
          "type": "string",
          "maxLength": 64,
          "minLength": 1,
          "description": "Scope token interpolated into the bokmål explanation."
        },
        "context_org_number": {
          "type": "string",
          "pattern": "^\\d{9}$",
          "description": "Organisation the error relates to (9 digits)."
        },
        "context_upstream_system": {
          "type": "string",
          "maxLength": 64,
          "minLength": 1,
          "description": "Upstream system name interpolated into the explanation."
        }
      },
      "additionalProperties": false
    }
    arguments 47 lines
  • search_companies reads unknown never probed

    Resolve a Norwegian company NAME to its 9-digit organisasjonsnummer. Use this as your FIRST call whenever you have a company's name but NOT its org_number — every other company tool needs the number; guessing one risks the wrong company. Searches Brønnøysund's public Enhetsregisteret and returns up to ten candidates with five fields each (name, org_number, org_form, municipality, registry status). Then call get_company_summary or get_company_context with the chosen org_number. Input: { name } (2–100 chars, æ/ø/å supported). On NOT_FOUND, broaden the name and drop the legal form — never loop on the same name. Failure modes: VALIDATION_FAILED, NOT_FOUND, UPSTREAM_UNAVAILABLE; a credential without `read:brreg` can't see the tool (tools/list leaves it out). No sandbox mirror — the sandbox fixtures catalogue already lists every synthetic org. Docs: https://www.apier.no/docs/guides/norwegian-company-register-search

    mcp-tool

    {
      "type": "object",
      "required": [
        "name"
      ],
      "properties": {
        "name": {
          "type": "string",
          "examples": [
            "Nordic Widgets",
            "Equinor"
          ],
          "maxLength": 100,
          "minLength": 2,
          "description": "Company name to search for (2–100 characters, trimmed). Free-text; matched against Brønnøysund's registered `navn` field. Omit the legal form for a broader match (search `Nordic Widgets`, not `Nordic Widgets AS`) — a too-specific or misspelled name returns a NOT_FOUND you must broaden. Norwegian characters (æ/ø/å) are supported."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • get_company_accounts reads unknown never probed

    A current snapshot of a Norwegian company's annual accounts (årsregnskap) from the OPEN Regnskapsregisteret tier: `has_filed_annual_accounts` (null = unknown, never a fabricated false), `last_accounts_year` and that year's minimal `key_figures` (currency always surfaced, presentation basis, totals). No multi-year history. `null` comes only when the register answers 404 or 410 (200 with `null`, not a 404); an outage answers 503 UPSTREAM_UNAVAILABLE. Failure modes: VALIDATION_FAILED, UPSTREAM_UNAVAILABLE; a credential without `read:brreg` can't see the tool. For a go/no-go verdict, use get_company_verification; for identity, use get_company_context. No API key? Use Bearer apier_sandbox_test_<suffix> (a fresh suffix) to get fixtures; valid orgs are the 818, 99966 and 99977 series and 999000002 (see GET /api/v1/sandbox/fixtures). Cost: 50 øre (NOK 0.50) per call, prepaid (prices: the get_pricing tool or GET /api/v1/pricing). Docs: https://www.apier.no/docs/guides/norwegian-company-annual-accounts

    mcp-tool

    {
      "type": "object",
      "required": [
        "org_number"
      ],
      "properties": {
        "org_number": {
          "type": "string",
          "pattern": "^\\d{9}$",
          "examples": [
            "818000006"
          ],
          "description": "9-digit Norwegian organisasjonsnummer (Brønnøysund ID); MOD-11-checked up-front — a failing value is rejected as VALIDATION_FAILED, so correct the number rather than retrying it."
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • get_credit_balance reads unknown never probed

    Call this BEFORE a batch of metered calls to confirm the calling key's prepaid credit balance covers it, and AFTER a 402 INSUFFICIENT_CREDITS + human top-up to verify the funds landed. The balance is ALWAYS the authenticated key's own — no parameters, so reading another key's balance is structurally impossible. Returns api_key_id, balance_ore (whole øre, always an integer), currency (NOK), updated_at (null = never topped up = balance 0), and top_up_url (hand it to a human). Affordability: cost_ore from get_pricing times planned calls versus balance_ore. Free, zero side effects. Failure modes: 401 without a key (NOT keyless: use get_pricing for keyless price discovery); a credential without `read:credits` (or `read:*`) can't see the tool; CREDIT_BALANCE_UNAVAILABLE (503, retryable; a money read is never fabricated). Under a sandbox bearer it returns SANDBOX_TOOL_UNAVAILABLE. Docs: https://www.apier.no/docs/guides/agent-payments

    mcp-tool

    {
      "type": "object",
      "properties": {},
      "additionalProperties": false
    }
    arguments 5 lines
  • get_company_verification reads unknown never probed

    Fast go / no-go trust check on a Norwegian counterparty organisation. It keys ONLY off entity activity and visible signing authority. `verification_status` is `pass` (active and signing authority visible), `fail` (not active: konkurs, avvikling or oppløst) or `unknown` (not determinable; never a claimed absence). `signing_authority_summary` lists roles, not the joint rule; for that use get_company_authority. Fails with NOT_FOUND, ENTITY_REMOVED, UPSTREAM_UNAVAILABLE or VALIDATION_FAILED; a credential without `read:brreg` can't see the tool (tools/list leaves it out). For identity, call get_company_context instead. No API key? Use Bearer apier_sandbox_test_<suffix> (a fresh suffix) to get fixtures; valid orgs are the 818, 99966 and 99977 series and 999000002 (see GET /api/v1/sandbox/fixtures). Cost: 50 øre (NOK 0.50) per call, prepaid (prices: the get_pricing tool or GET /api/v1/pricing). Docs: https://www.apier.no/docs/guides/norwegian-company-register-search

    mcp-tool

    {
      "type": "object",
      "required": [
        "org_number"
      ],
      "properties": {
        "mode": {
          "enum": [
            "verdict",
            "checks"
          ],
          "type": "string",
          "description": "`verdict` (default) returns the pass / fail / unknown status. `checks` returns the check bundle from GET /api/v1/company/{org}/checks instead: every check (registration, bankruptcy and liquidation, VAT, roles, coded signing authority, annual accounts, requirements evidence) with its own check_status, source, retrieval time, freshness and licence, and no verdict. Same price."
        },
        "org_number": {
          "type": "string",
          "pattern": "^\\d{9}$",
          "examples": [
            "818000006"
          ],
          "description": "9-digit Norwegian organisasjonsnummer (Brønnøysund ID); MOD-11-checked up-front — a failing value is rejected as VALIDATION_FAILED, so correct the number rather than retrying it."
        }
      },
      "additionalProperties": false
    }
    arguments 25 lines
  • get_company_authority reads unknown never probed

    The register's coded signing rules for this company, uninterpreted. Call get_company_verification first; this ignores bankruptcy and dissolution. The class (sole, joint, by_role, prokura_only, no_authority, unknown) comes from Fullmakttjenesten and the role holders; `coded_authority` (absent in sandbox) adds coded clauses and stamps. Statutory authority only; it never answers yes or no on who may sign. Failure modes: NOT_FOUND, ENTITY_REMOVED, UPSTREAM_UNAVAILABLE, VALIDATION_FAILED; a credential without `read:brreg` can't see the tool. Altinn rights are not read (withdrawn); for roles use get_company_context, for status use get_company_verification. No API key? Use Bearer apier_sandbox_test_<suffix> (a fresh suffix) to get fixtures; valid orgs are the 818, 99966 and 99977 series and 999000002 (see GET /api/v1/sandbox/fixtures). Cost: 50 øre (NOK 0.50) per call, prepaid (prices: the get_pricing tool or GET /api/v1/pricing). Docs: https://www.apier.no/docs/guides/signature-rights-norwegian-company

    mcp-tool

    {
      "type": "object",
      "required": [
        "org_number"
      ],
      "properties": {
        "org_number": {
          "type": "string",
          "pattern": "^\\d{9}$",
          "examples": [
            "818000006"
          ],
          "description": "9-digit Norwegian organisasjonsnummer (Brønnøysund ID); MOD-11-checked up-front — a failing value is rejected as VALIDATION_FAILED, so correct the number rather than retrying it."
        }
      },
      "additionalProperties": false
    }
    arguments 17 lines
  • get_company_deadlines reads unknown never probed

    The coming filing calendar for one company, horizon_months ahead. One entry per obligation and period: obligation_id (the rule_id of get_company_obligations), period_label, due_at, adjusted_for, original_due_at and filing_status. If rulebook_coverage is `covered`, an empty list means none fall due in the window; raise horizon_months (max 60). Sandbox: fixed dates far ahead, horizon_months ignored, no rulebook_coverage; real window: a production key (generic year: use get_public_deadlines). Failure modes: NOT_FOUND, ENTITY_REMOVED, UPSTREAM_UNAVAILABLE, VALIDATION_FAILED; a credential without `read:brreg` can't see the tool. Verdict: use get_company_obligations. No API key? Use Bearer apier_sandbox_test_<suffix> (a fresh suffix) to get fixtures; valid orgs are the 818, 99966 and 99977 series and 999000002 (see GET /api/v1/sandbox/fixtures). Cost: 50 øre (NOK 0.50) per call, prepaid (prices: the get_pricing tool or GET /api/v1/pricing). Docs: https://www.apier.no/docs/guides/norway-corporate-tax-return-deadline

    mcp-tool

    {
      "type": "object",
      "required": [
        "org_number"
      ],
      "properties": {
        "org_number": {
          "type": "string",
          "pattern": "^\\d{9}$",
          "examples": [
            "818000006"
          ],
          "description": "9-digit Norwegian organisasjonsnummer (Brønnøysund ID); MOD-11-checked up-front — a failing value is rejected as VALIDATION_FAILED, so correct the number rather than retrying it."
        },
        "horizon_months": {
          "type": "integer",
          "maximum": 60,
          "minimum": 1,
          "examples": [
            12
          ],
          "description": "Look-ahead window in months (1–60). Omitted → the endpoint's default horizon (12)."
        }
      },
      "additionalProperties": false
    }
    arguments 26 lines
  • get_company_evidence_pack unknown never probed

    One signed JSON record of what Apier observed about a Norwegian company today: the check bundle, archived changes in the window (`changes_from`, at most 366 days back), your receipts, each archived record's daily anchor proof when available (else pending or proof_unavailable), coverage window and source licences. A record of observation, not a verdict, no admissibility claim. The user can save the `result` object as a .json file and open it at https://www.apier.no/evidence-pack/viewer to verify it. Errors: VALIDATION_FAILED, NOT_FOUND, ENTITY_REMOVED; a credential without `read:brreg` can't see the tool; a call returns unknown tool (-32602). No API key? Use Bearer apier_sandbox_test_<suffix> (a fresh suffix) to get fixtures; valid orgs are the 818, 99966 and 99977 series and 999000002 (see GET /api/v1/sandbox/fixtures). Cost: 50 øre (NOK 0.50) per call, prepaid (prices: the get_pricing tool or GET /api/v1/pricing). Docs: https://www.apier.no/docs/guides/evidence-pack

    mcp-tool

    {
      "type": "object",
      "required": [
        "org_number"
      ],
      "properties": {
        "org_number": {
          "type": "string",
          "pattern": "^\\d{9}$",
          "examples": [
            "818000006"
          ],
          "description": "9-digit Norwegian organisasjonsnummer (Brønnøysund ID); MOD-11-checked up-front — a failing value is rejected as VALIDATION_FAILED, so correct the number rather than retrying it."
        },
        "changes_from": {
          "type": "string",
          "format": "date",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
          "examples": [
            "2026-01-01"
          ],
          "description": "Start of the change window as a calendar date (YYYY-MM-DD). Default: today minus 366 days. Never after today and at most 366 days before it; a date before the archive start is answered as asked, with the coverage window saying what is covered."
        }
      },
      "additionalProperties": false
    }
    arguments 26 lines
_ try it over mcp through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 1ec2272ac3a2d88d.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/1ec2272ac3a2d88d/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/1ec2272ac3a2d88d/badge.svg)](https://brick.blue/agent/1ec2272ac3a2d88d?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we knowoff the mcp door
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.