{"service":{"name":"Machine Intelligence Layer (MIL)","description":"Swedish company data for AI agents: Bolagsverket and SCB register facts per organisationsnummer, verified across sources, with history and annual reports","api_version":"0.4","environment":"production"},"resources":[{"name":"workplace_search","path":"/v1/workplaces/search","method":"GET","description":"Intelligence: companies with matching physical workplaces, ANY workplace SNI, deduplicated by organisation number; one charge per company."},{"name":"company_search","path":"/v1/companies","method":"GET","description":"Discover companies without prior knowledge of their identifier. Optional filters: name (substring), industry_code (SNI), has_signals (bool), limit. Returns summary cards with organisation_number for further lookup."},{"name":"company","path":"/api?company={organisation_number}","method":"GET","description":"Compact machine-readable company intelligence with freshness, provenance, semantic resolution and signals."},{"name":"company_clean","path":"/v1/company/{organisation_number}","method":"GET","description":"Canonical public company resource. With ?tier=basic|verified|intelligence it returns that product (see product_tiers); without tier, the unchanged v0.3 response."},{"name":"company_batch","path":"/v1/companies/batch","method":"POST","description":"Resolve up to 50 companies in one request. Every requested identifier is returned with an explicit status (resolved, not_found, invalid_organisation_number), so absence is never signalled by omission. Body: {\"organisation_numbers\": [...], \"tier\": optional basic|verified|intelligence}. Billed per company at the tier."},{"name":"company_history","path":"/v1/company/{organisation_number}/history","method":"GET","description":"What changed about a company. Optional days window (7/30/90/365) and attribute_key filter."},{"name":"company_related","path":"/v1/company/{organisation_number}/related","method":"GET","description":"Companies linked by evidence MIL holds: industry_cluster and address_cluster. Relation types MIL has no source data for return an explicit unavailable status with a reason."},{"name":"freshness","path":"/v1/freshness","method":"GET","description":"Per-source freshness status and the age distribution across the register."}],"coverage":{"final_scope":"all Swedish AFR legal entities and workplaces; national ingestion awaits owner approval","current_validation_scope":["41","42","43"],"country":"SE","domain":"Swedish companies","sources":["SCB","SCB SokPaVar","Bolagsverket"],"bolagsverket_environment":"production"},"product_tiers":{"request":{"company":"GET /v1/company/{organisation_number}?tier=basic|verified|intelligence","batch":"POST /v1/companies/batch {\"organisation_numbers\": [...], \"tier\": \"verified\"}","mcp":"get_company / batch_get_companies with argument tier","untiered":"While payment is enforced, a request without tier is served as basic. In the free preview (payment off) it returns the legacy v0.3 response."},"billing":{"unit":"company","currency":"USDC","rule":"One unit per company that resolves at the tier: 10 verified companies are 0.20 USDC, 50 intelligence companies 4.00 USDC. Not-found and invalid identifiers are never charged. The amount is quoted in the x402 402 before payment, from whether each company exists (a Basic fact), and re-checked on the paid retry.","response_fields":["meta.product_tier","meta.billable_units","meta.unit_price","meta.amount","meta.payment"],"payment_enforced":true},"basic_fair_use":{"units_per_minute":30,"unit":"company","counts":{"lookup":"1 per requested organisation number","batch":"1 per requested organisation number, found or not","search":"1 per returned company card; a page is capped to the remaining units"},"client":"API key customer when a key is sent, otherwise the client IP (hashed, not stored raw)","exceeded":"HTTP 429 rate_limit_exceeded with Retry-After","monthly_quota":null,"applies":"while payment is enforced"},"information_levels":{"basic":["company","status","sources","freshness","company search cards","basic batch"],"verified":["current","verification","discrepancies","/v1/contract/company/{organisation_number}"],"intelligence":["history","events","financials","signals","timeline","/v1/company/{organisation_number}/history","/v1/company/{organisation_number}/related","signal-based discovery (has_signals)","MCP get_company_history, find_distress_signals, find_related_companies, search_company_events"],"rule":"The information returned decides the tier, not the URL: aliases and legacy routes are priced the same."},"tiers":[{"tier":"basic","name":"Basic","question":"Which company is this?","price":{"amount":"0.00","currency":"USDC","per":"company"},"sections":["company","status","sources","freshness"],"description":"Canonical machine identity: organisation number, legal name, legal form, all registered SNI memberships, legal registration date, registered municipality/county, postal code, locality and a basic active/inactive status, with source and freshness.","excludes":["enriched current state","verification detail","financials","history","events","signals"]},{"tier":"verified","name":"Verified","question":"What do we know about this company now, and how reliable is each value?","price":{"amount":"0.02","currency":"USDC","per":"company"},"sections":["company","status","current","verification","discrepancies","sources","freshness"],"description":"Basic plus the full current state from SCB AFR v1 and Bolagsverket: VAT, F-tax and employer registration, employee and turnover size bands, workplace count, contact fields, corporate status -- each value with verification status and method, confidence, source field, provenance, freshness and any cross-source conflict.","excludes":["financials","history","events","signals","timeline"]},{"tier":"intelligence","name":"Intelligence","question":"What has changed, how is it developing, and what should a machine notice?","price":{"amount":"0.08","currency":"USDC","per":"company"},"sections":["company","status","current","verification","discrepancies","sources","freshness","history","events","financials","signals","timeline","workplaces","workplace_history","historical_classifications"],"description":"Verified plus observation history, material events, digitally filed annual reports with normalised financial facts and year-on-year trends, deterministic signals with their rules and evidence, and a timeline.","excludes":[]}],"identity_attributes":["company_activity_status","company_status_code","legal_form","legal_form_code","legal_name","legal_registration_date","locality","postal_code","registered_business_name","registered_county","registered_county_code","registered_municipality","registered_municipality_code","registered_name","sni","sni_additional","sni_all","sni_primary"]},"datasets":[{"source":"SCB","dataset":"Foretagsregistret AFR v1","source_code":"scb_afr_v1","status":"bounded_validation","role":"current legal entities, SNI2025 and workplaces"},{"source":"SCB","dataset":"Foretagsregistret (HVD bulk)","source_code":"scb_hvd_bulk","status":"legacy_until_accepted_afr_baseline","role":"population and identity"},{"source":"SCB","dataset":"SokPaVar","source_code":"scb_sokpavar","status":"legacy_until_accepted_afr_baseline","role":"registrations, size classes, workplaces, contact fields","coverage_note":"Enriches the population progressively; a company SokPaVar has not been read for returns these attributes as unknown."},{"source":"Bolagsverket","dataset":"Värdefulla datamängder /organisationer","source_code":"bolagsverket_vardefulla_datamangder","status":"active","role":"registration, legal form, status, ongoing proceedings"},{"source":"Bolagsverket","dataset":"Årsredovisningar (iXBRL): /dokumentlista, /dokument and the weekly bulk files","source_code":"bolagsverket_arsredovisningar","status":"active","role":"financial history","coverage_note":"Annual reports filed digitally as iXBRL with Bolagsverket. Reports filed on paper, and companies that file none (most sole traders), have no financial history in MIL; that is reported as unavailable, never as zero."}],"attributes":{"production":["organisation_number","legal_name","sni","legal_form","postal_code","locality","address","care_of_address"],"production_single_source":["legal_form_code","company_status_code","active_organisation","registered_municipality","registered_county","organisation_form","business_description","deregistered","deregistration_reason","liquidation_or_restructuring","advertising_restriction","registration_country","employee_count_band","turnover_band","vat_registered","vat_status","f_tax_registered","f_tax_status","employer_registered","employer_status","workplace_count","corporate_status","telephone","email","registered_names","ownership_category","email_marketing_restriction","scb_end_date","scb_register_registration_date","company_activity_status","institutional_sector","registered_county_code","telephone_marketing_restriction","sni_primary","sni_unverified","turnover_reference_year","sni_all","registered_municipality_code","marketing_restriction","sni_other_classifications","registered_business_name","registered_name","sni_additional","scb_start_date","legal_registration_date","registered_business_name_count","private_public_listing","export_import_status"],"to_verify":["visiting_address","website","historical_names","founded_date","last_modified_date","share_capital","share_count","group_membership","municipality_of_operation","sole_trader_flag"],"unavailable":["signatory_rights","auditor"],"legacy/retired":["registration_date"],"catalogue":"/v1/contract","note":"production_single_source attributes are returned with verification_status single_source: one official register states them and nothing contradicts them. to_verify attributes are named by the contract but not yet mapped from real payloads and are returned as unknown."},"unavailable_capabilities":{"board_management":"board/management data","ownership":"shareholder/ownership data","company_mortgages":"company mortgages","change_notifications":"change notifications","bankruptcy_events":"No bankruptcy event feed is connected. Bolagsverket's current list of ongoing proceedings (Konkurs, Likvidation, fusion) is ingested and reported, but a proceeding that began and ended between two MIL checks is not visible.","paper_filed_annual_reports":"Only digitally filed iXBRL annual reports are ingested.","exact_employee_count":"SCB publishes a size class, not a head count. An annual report's average number of employees is published under financials where filed."},"financials":{"concepts":[{"concept":"revenue","source_concept":"se-gen-base:Nettoomsattning","period_type":"duration","kind":"monetary"},{"concept":"operating_result","source_concept":"se-gen-base:Rorelseresultat","period_type":"duration","kind":"monetary"},{"concept":"result_after_financial_items","source_concept":"se-gen-base:ResultatEfterFinansiellaPoster","period_type":"duration","kind":"monetary"},{"concept":"profit_loss","source_concept":"se-gen-base:AretsResultat","period_type":"duration","kind":"monetary"},{"concept":"equity","source_concept":"se-gen-base:EgetKapital","period_type":"instant","kind":"monetary"},{"concept":"total_assets","source_concept":"se-gen-base:Tillgangar","period_type":"instant","kind":"monetary"},{"concept":"current_assets","source_concept":"se-gen-base:Omsattningstillgangar","period_type":"instant","kind":"monetary"},{"concept":"cash","source_concept":"se-gen-base:KassaBank","period_type":"instant","kind":"monetary"},{"concept":"long_term_liabilities","source_concept":"se-gen-base:LangfristigaSkulder","period_type":"instant","kind":"monetary"},{"concept":"short_term_liabilities","source_concept":"se-gen-base:KortfristigaSkulder","period_type":"instant","kind":"monetary"},{"concept":"average_employee_count","source_concept":"se-gen-base:MedelantaletAnstallda","period_type":"duration","kind":"count"},{"concept":"equity_ratio","source_concept":"se-gen-base:Soliditet","period_type":"instant","kind":"ratio"},{"concept":"total_liabilities","source_concept":null,"period_type":"instant","kind":"monetary","derived":"LangfristigaSkulder + KortfristigaSkulder"}],"trend_concepts":["revenue","operating_result","result_after_financial_items","profit_loss","equity","total_assets","total_liabilities"],"trend_methods":["year_over_year_absolute","year_over_year_percent","multi_year_direction"],"period_rule":"Only consecutive financial years (period ends 12 months apart, +/-45 days) are compared.","provenance_per_fact":["value","currency","unit","scale","decimals","source_concept","period_start","period_end","source_document_id","basis"],"parser":"deterministic inline-XBRL; no model extracts numbers"},"semantics":{"knowledge_states":["confirmed_absence","observed","resolved","discrepant","unavailable","unknown"],"resolution_methods":["single_source","cross_source_consensus","latest_observation_with_conflict"],"adjudication":"none. MIL does not rank sources or decide which is correct. When sources disagree the attribute is published as discrepant with every value and its provenance; resolved_value is the most recent observation, offered as a default, and the caller decides.","event_types":["legal_name_changed","address_changed","sni_changed","company_status_changed","company_became_inactive","vat_registered","vat_registration_lost","f_tax_registered","f_tax_lost","employer_registered","employer_registration_lost","employee_band_increased","employee_band_decreased","turnover_band_increased","turnover_band_decreased","workplace_count_increased","workplace_count_decreased","deregistered","liquidation_started","restructuring_started","bankruptcy_proceeding_started","merger_started","attribute_changed"],"event_bases":{"mil_observed_change":"The same source stated a different value at a later MIL check. occurred_at is null; change_window bounds it.","source_historical_fact":"The source itself dates the event (e.g. a proceeding's fromDatum). occurred_at is that date."},"event_note":"Two sources stating different values is a discrepancy, never an event. MIL claims no history from before it first observed a source.","signal_types":["employee_band_decline","stale_data"],"intelligence_signal_types":{"vat_registration_lost":{"category":"registration","rule":"SokPaVar Momsstatus changed from registered to not registered, and the current value is not registered"},"f_tax_lost":{"category":"registration","rule":"SokPaVar Fskattstatus changed from registered to not registered, and the current value is not registered"},"employer_registration_lost":{"category":"registration","rule":"SokPaVar Arbetsgivarstatus changed from registered to not registered, and the current value is not registered"},"employee_band_decline":{"category":"size","rule":"The newest employee size-band change MIL observed moved to a lower band, within the last 365 days"},"turnover_band_decline":{"category":"size","rule":"The newest turnover size-class change MIL observed moved to a lower class, within the last 365 days"},"workplace_count_decline":{"category":"size","rule":"The newest workplace-count change MIL observed was a decrease, within the last 365 days"},"multiple_material_changes_90d":{"category":"activity","rule":"Three or more material events detected in the last 90 days"},"recent_status_change":{"category":"activity","rule":"A company status, activity or deregistration event in the last 90 days"},"repeated_address_changes":{"category":"activity","rule":"Two or more address changes detected in the last 365 days"},"bankruptcy_proceeding":{"category":"distress","rule":"Bolagsverket lists an ongoing Konkurs proceeding"},"liquidation_in_progress":{"category":"distress","rule":"Bolagsverket lists an ongoing Likvidation proceeding"},"restructuring_in_progress":{"category":"distress","rule":"Bolagsverket lists an ongoing reconstruction proceeding"},"merger_in_progress":{"category":"structure","rule":"Bolagsverket lists an ongoing merger (fusion) proceeding"},"company_deregistered":{"category":"distress","rule":"Bolagsverket states a deregistration date"},"company_inactive":{"category":"distress","rule":"Bolagsverket's verksamOrganisation is NEJ"},"revenue_decline_yoy":{"category":"financial","rule":"Net revenue fell by at least 5 % between the two newest consecutive financial years"},"revenue_decline_2y":{"category":"financial","rule":"Net revenue fell by at least 5 % in each of the two newest consecutive year-on-year comparisons"},"operating_result_negative":{"category":"financial","rule":"Operating result is negative in the newest financial year"},"repeated_operating_losses":{"category":"financial","rule":"Operating result is negative in at least the two newest consecutive financial years"},"profit_negative":{"category":"financial","rule":"Result for the year is negative in the newest financial year"},"repeated_losses":{"category":"financial","rule":"Result for the year is negative in at least the two newest consecutive financial years"},"equity_decline":{"category":"financial","rule":"Equity fell by at least 5 % between the two newest consecutive financial years"},"negative_equity":{"category":"financial","rule":"Equity is negative at the end of the newest financial year"},"asset_decline":{"category":"financial","rule":"Total assets fell by at least 5 % between the two newest consecutive financial years"},"liability_growth":{"category":"financial","rule":"Total liabilities grew by at least 25 % between the two newest consecutive financial years"},"financial_reporting_gap":{"category":"financial","rule":"MIL holds a digitally filed report for the company, the newest one ended more than 19 months ago, and the company is not deregistered"}},"signal_severity_rule":"Percentage declines: <10% low, 10-30% medium, >=30% high; declines under 5% are not signalled. Other severities are fixed per rule. No composite or AI score is produced.","verification_statuses":{"verified":"Independent source systems state the same value","single_source":"One identified source system states the value; nothing contradicts it","unverified":"MIL holds a value but cannot attribute it to an identified source field","conflict":"Sources state materially different values; no value is chosen","unknown":"MIL has not established a value","unavailable":"The value would come from a source MIL has no access to","not_provided":"The sources consulted do not publish this attribute","confirmed_absence":"An identified source explicitly confirms absence","withheld":"Withheld: personal data of a natural person, not published (see /v1/privacy)"},"verification_methods":{"cross_source_consensus":"SCB and Bolagsverket state the same value","authority_consensus":"Several datasets of one authority state the same value","authoritative_source":"One official register states the value","single_dataset_not_compared":"The attribute is never compared across sources (e.g. a full list only one source publishes); the newest statement is published","conflicting_sources":"Sources disagree; candidates are listed and none is chosen","none":"No observation"},"response_statuses":["resolved","conflict","unknown","not_found","unavailable","stale"],"freshness_statuses":["fresh","recent","stale","expired","conflicting","unknown","unavailable"],"freshness_thresholds_seconds":{"fresh":86400,"recent":604800,"stale":2592000},"freshness_note":"Freshness describes age, not correctness. A value can be fresh and wrong, or stale and right; confidence covers correctness separately.","sni_classification":{"version":"SNI2007","language":"sv","resolution":"central_lookup_with_prefix_fallback","unknown_code_behaviour":"returns null rather than a guess"},"derived_attributes":{"note":"Derived views over attributes MIL already publishes, not new ingested data. Each carries derived_from in the response.","sni_primary":"The primary SNI code. Every source publishes it, so it is the SNI key two sources can corroborate each other on.","sni_all":"Every registered SNI code MIL holds. Only Bolagsverket publishes the full list, so a shorter list from another source is a coarser view, not a contradiction; this key is never compared across sources.","registered_names":"Every organisation name Bolagsverket publishes for the company, in source order, each with its source field and the source object it came from. Never compared across sources. position is provenance, not a ranking.","trade_name":"For an enskild naringsidkare (legal form 10) only, and only where the data settles which registered name is the principal one -- today that means the company has exactly one registered name. With several and no marker in the source, no trade_name is published and registered_names.principal_name_unknown_reason says why."},"legal_name_resolution":{"note":"For an enskild naringsidkare (legal form 10) the two registers put different facts under legal_name: Bolagsverket registers a protected business name, SCB's Namn is the natural person. One row is stored per company and attribute, so the published value used to be whichever ingestion run wrote last.","rule":"legal_name is the SCB value whenever SCB holds one, chosen at read time and marked selected_by: sole_trader_person_name_rule. Source preference: scb_hvd_bulk, then scb_sokpavar. With no SCB observation the stored value stands and says so.","bolagsverket_value":"Not discarded: it stays under legal_name.by_source and in registered_names.","applies_to":"Every surface that returns a company name: the company resource, both searches, batch lookup, history, related companies, the v1.0 contract envelope and every MCP tool. One resolver, so two endpoints cannot name the same company differently.","provenance_fields":"A name the rule chose carries legal_name_selected_by and legal_name_stated_by. A stored name carries neither, so their absence means no choice was made.","name_search":"The name filter on /v1/companies and /api?search= matches every name MIL holds for a company -- the resolved one and every name a source stated -- and orders and counts on the resolved name. So a sole trader is found both by the name the API publishes for it and by its Bolagsverket business name, and either way the row answers with the resolved name."},"cross_source_comparison":{"note":"Before two sources are said to disagree their values are reduced by one rule per attribute, declared in mil/api/normalization.py and installed into Postgres from the same table.","reduces":["surrounding whitespace and quotes","internal whitespace runs","letter case","Swedish legal-form suffix (aktiebolag -> ab)","date format (compared as YYYYMMDD)","the klartext label of a {kod, klartext} enum (compared on kod)","SNI shape and blank padding codes (compared on the primary code)"],"compares_only_like_concepts":"A sole trader's Bolagsverket name is compared as registered_name, never against SCB's natural-person legal_name. Two sources are only reported as disagreeing when they state the same fact.","never_compared_across_sources":["registered_names","scb_end_date","scb_register_registration_date","scb_start_date","sni_additional","sni_all","sni_other_classifications","sni_unverified"],"absent_is_not_disagreement":"A source holding no value for an attribute is not counted as a source that disagrees about it."},"signal_derivation":"deterministic_observable_facts","raw_source_payloads":"internal_only","provenance":"included","freshness":"included","deterministic_resolution":true,"event_detection":"deterministic_state_transition"},"interfaces":{"company_search":"/v1/companies","rest":"/api?company={organisation_number}","rest_v1":"/v1/company/{organisation_number}","mcp":"/api/mcp","mcp_transport":"streamable-http","mcp_protocol_version":"2025-06-18","openapi":"/api/openapi.json"},"discovery":{"llms_txt":"/llms.txt","capabilities":"/capabilities","well_known_mcp":"/.well-known/mcp.json","robots_txt":"/robots.txt","privacy_notice":"/v1/privacy","terms_of_use":"/v1/terms"},"privacy":{"notice":"/v1/privacy","terms":"/v1/terms","not_a_credit_reference_agency":true,"person_linked_companies":{"applies_to":"enskild naringsidkare (legal form 10) and any identifier shaped as a personnummer","listed_in_search":false,"lookup_by_supplied_organisation_number":true,"legal_name":"registered business name only; null and withheld when none is registered","withheld_fields":["natural person's name (also as workplace name)","telephone","email","street address","care_of_address","coordinates","turnover size class"],"signals":"not computed","documentation":"/v1/privacy"}},"deployment":{"status":"active","environment":"production","data_environment":"production","data_note":"Bolagsverket production registry data — Swedish Companies Registration Office","agent_use":"permitted","feedback":"open an issue at the repository","response_headers":{"X-MIL-Data-Environment":"production","X-MIL-API-Version":"0.4"}},"authentication":{"modes":["open","optional","required"],"current_mode_env":"MIL_AUTH_MODE","schemes":["Authorization: Bearer <api_key>","X-API-Key: <api_key>"],"public_paths":["/","/api/health","/capabilities","/openapi.json","/llms.txt","/robots.txt","/.well-known/mcp.json","/v1/privacy","/v1/terms"],"rate_limit_headers":["X-RateLimit-Limit","X-RateLimit-Remaining","Retry-After","X-Quota-Limit"],"note":"Discovery and health endpoints stay reachable without a key in every mode."},"limits":{"max_batch_size":50,"max_page_size":100,"default_page_size":20},"errors":{"contract":"Every failure returns {error: {code, message, retriable, http_status, documentation}}. Branch on code, never on message.","codes":[{"code":"authentication_required","http_status":401,"retriable":false,"message":"This endpoint requires an API key. Send it as 'Authorization: Bearer <key>' or 'X-API-Key: <key>'."},{"code":"invalid_api_key","http_status":401,"retriable":false,"message":"The supplied API key is not valid."},{"code":"revoked_api_key","http_status":401,"retriable":false,"message":"This API key has been revoked. Request a replacement key."},{"code":"expired_api_key","http_status":401,"retriable":false,"message":"This API key has expired. Rotate it to obtain a current key."},{"code":"insufficient_scope","http_status":403,"retriable":false,"message":"This API key does not carry the scope required for this endpoint."},{"code":"customer_suspended","http_status":403,"retriable":false,"message":"This customer account is not currently permitted to call the API."},{"code":"rate_limit_exceeded","http_status":429,"retriable":true,"message":"Request rate limit exceeded. Retry after the interval given in the Retry-After header."},{"code":"quota_exceeded","http_status":429,"retriable":true,"message":"The monthly request quota for this customer is exhausted. It resets at the start of the next billing period."},{"code":"invalid_organisation_number","http_status":400,"retriable":false,"message":"organisation_number must be a 10- or 12-digit Swedish identifier."},{"code":"invalid_parameter","http_status":400,"retriable":false,"message":"A request parameter was missing or malformed."},{"code":"batch_too_large","http_status":400,"retriable":false,"message":"The batch exceeds the maximum number of organisation numbers per request."},{"code":"unsupported_media_type","http_status":415,"retriable":false,"message":"This endpoint expects a JSON request body."},{"code":"company_not_found","http_status":404,"retriable":false,"message":"No company matches the supplied organisation number."},{"code":"resource_not_found","http_status":404,"retriable":false,"message":"The requested resource does not exist."},{"code":"upstream_unavailable","http_status":502,"retriable":true,"message":"A data service MIL depends on is currently unavailable. Retry shortly."},{"code":"backend_not_configured","http_status":503,"retriable":true,"message":"The MIL backend is not configured to serve this request."},{"code":"internal_error","http_status":500,"retriable":true,"message":"MIL failed to complete this request."}]},"commercial":{"payment":"x402","pricing":{"basic":{"amount":"0.00","currency":"USDC","per":"company"},"verified":{"amount":"0.02","currency":"USDC","per":"company"},"intelligence":{"amount":"0.08","currency":"USDC","per":"company"}},"stripe":{"provider":"stripe","configured":true,"mode":"live","register":"/v1/billing/register","activate":"/v1/billing/activate","usage":"/v1/billing/usage","portal":"/v1/billing/portal","topup":"/v1/billing/topup","terms":{"currency":"SEK","monthly_fee":"99.00","per_company":{"verified":"0.20","intelligence":"0.80"},"basic":"free (fair use)","vat":"Prices exclude VAT. Swedish customers are charged 25% moms; EU companies with a valid VAT number are invoiced with reverse charge; Stripe Tax decides.","invoicing":"Monthly: the fee plus the companies returned at paid tiers during the month.","plans":{"subscription":"99.00 SEK per month plus per company, invoiced monthly.","prepaid":"No monthly fee. Top up at least 100 SEK by card; each company returned at a paid tier is drawn from the credit at the same per-company price."}},"human_signup":"/signup","flow":["a person who wants a key, rather than an agent, uses the page at /signup instead of this flow","POST /v1/billing/register -> checkout_url (for a person) + registration_token (for the agent)","the person pays in Stripe Checkout","POST /v1/billing/activate {registration_token} -> api_key, shown once","call paid tiers with Authorization: Bearer <api_key>; no x402, invoiced monthly","GET /v1/billing/usage -> usage and invoices (receipt_url, pdf_url); POST /v1/billing/portal -> portal_url","prepaid instead of monthly: register with plan=prepaid and credit_sek; POST /v1/billing/topup adds credit","the same key on /api/mcp bills paid MCP tools to the account instead of x402"]},"x402":{"protocol":"x402","version":2,"status":"configured","payment_active":true,"network":"eip155:8453","network_name":"Base Mainnet","asset":"USDC","scheme":"exact","pay_to":"0xf0bB3e3Ac165db32baFAA366A21a15384489b851","status_url":"/api/payment/status","rest":"Request a paid tier; receive HTTP 402 with the PaymentRequired in the body and the PAYMENT-REQUIRED header; retry the identical request with PAYMENT-SIGNATURE. A settled answer carries PAYMENT-RESPONSE and meta.payment.","mcp":"Call the tool; a paid call without payment returns isError with the PaymentRequired as structuredContent; retry with params._meta['x402/payment']. The receipt is in _meta['x402/payment-response'].","free":["initialize","tools/list","basic tier","search","discovery documents"]}}}