{
	"meta": {
		"product": "Open APIs for Agents",
		"description": "Norwegian public APIs curated for AI agents — each entry says when to use it, how to call it, and how to verify it responds.",
		"schema_version": 1,
		"canonical_url": "https://trym.cloud/labs/open-apis/",
		"catalog_json_url": "https://trym.cloud/labs/open-apis/catalog.json",
		"generated_at": "2026-07-12T01:10:29.840Z",
		"source": {
			"name": "open-apis catalog (Håkansson Labs, private curation pipeline)",
			"commit": "c40ec06",
			"generated_at": "2026-07-11 07:20Z",
			"tracked_entries_total": 599,
			"excluded_by_status": {
				"staging": 481,
				"review_needed": 0,
				"deprecated": 0,
				"graveyard": 0
			}
		},
		"counts": {
			"entries": 118,
			"providers": 31,
			"categories": 14,
			"probeable": 118,
			"verified": 43
		},
		"license_note": "Catalog metadata is compiled from the providers' public documentation. Each API and its data remain governed by the provider's own license and terms — see license, docs_url and source_urls per entry.",
		"operator": "Built and operated by Trym Håkansson (Håkansson Labs). The underlying APIs belong to their providers."
	},
	"entries": [
		{
			"id": "arendal.grunnkart-wms",
			"name": "Grunnkart Arendal kommune (WMS)",
			"provider": "Arendal kommune",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://karttjenester.ikt-agder.no/arcgis/services/arendal/grunnkart/MapServer/WMSServer",
			"docs_url": "https://karttjenester.ikt-agder.no/arcgis/services/arendal/grunnkart/MapServer/WMSServer?request=GetCapabilities&service=WMS",
			"tags": [
				"wms",
				"basemap",
				"fkb",
				"municipal",
				"agder"
			],
			"description": "WMS map service showing the municipal base map (grunnkart) built on FKB (Felles KartdataBase) data for Arendal municipality. Hosted on ArcGIS by IKT Agder; supports WMS 1.3.0 in EPSG:25832 and returns rendered map images.",
			"when_to_use": "Use when an agent needs a rendered base map for Arendal municipality: \"kart over Arendal\", \"grunnkart Arendal\", \"FKB-data Arendal kommune\", municipal background map for southern Norway (Agder). Returns map image tiles/images, not vector features.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": "1. GET the GetCapabilities URL (`?service=WMS&request=GetCapabilities`) to read\n   the available layers (exposed as numeric ArcGIS layer ids 0,1,2,...) and the\n   supported CRS list (EPSG:25832, EPSG:4326, CRS:84).\n2. Render a map with `request=GetMap&layers=<ids>&crs=EPSG:25832&bbox=...&width=...&height=...&format=image/png`.\n3. Use EPSG:25832 (UTM 32N) for the Agder region.\n4. This is a cartographic raster service — for vector/attribute queries use a\n   WFS or the national FKB sources instead.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://karttjenester.ikt-agder.no/arcgis/services/arendal/grunnkart/MapServer/WMSServer"
			],
			"probe": {
				"method": "GET",
				"url": "https://karttjenester.ikt-agder.no/arcgis/services/arendal/grunnkart/MapServer/WMSServer?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "arendal.kommuneplan-wms",
			"name": "Kommuneplan Arendal kommune WMS",
			"provider": "Arendal kommune",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://karttjenester.ikt-agder.no/arcgis/services/arendal/Kommuneplan/MapServer/WMSServer",
			"docs_url": "https://karttjenester.ikt-agder.no/arcgis/services/arendal/Kommuneplan/MapServer/WMSServer?request=GetCapabilities&service=WMS",
			"tags": [
				"arendal",
				"kommuneplan",
				"arealplan",
				"agder",
				"municipal",
				"gov"
			],
			"description": "OGC WMS view service from Arendal municipality (served via IKT Agder) exposing the municipal master plan (kommuneplan) map data for Arendal — the legally adopted land-use plan and its associated thematic layers. Free, no authentication required.",
			"when_to_use": "Use when an agent needs Arendal's municipal master-plan map layers: \"kommuneplan Arendal\", \"arealplan Arendal kart\", \"Arendal land-use plan WMS\", \"kommuneplandata Agder\". Render the WMS layers as a planning backdrop. Covers the plan adopted 27.04.2023; for other municipalities use that municipality's own WMS instead.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://karttjenester.ikt-agder.no/arcgis/services/arendal/Kommuneplan/MapServer/WMSServer?"
			],
			"probe": {
				"method": "GET",
				"url": "https://karttjenester.ikt-agder.no/arcgis/services/arendal/Kommuneplan/MapServer/WMSServer?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "arendal.reguleringsplan-wms",
			"name": "Reguleringsplan Arendal kommune WMS",
			"provider": "Arendal kommune",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://karttjenester.ikt-agder.no/arcgis/services/arendal/reguleringsplan/MapServer/WMSServer",
			"docs_url": "https://karttjenester.ikt-agder.no/arcgis/services/arendal/reguleringsplan/MapServer/WMSServer?request=GetCapabilities&service=WMS",
			"tags": [
				"arendal",
				"reguleringsplan",
				"arealplan",
				"agder",
				"municipal",
				"gov"
			],
			"description": "OGC WMS view service from Arendal municipality (served via IKT Agder) exposing the municipality's zoning / regulation plans (reguleringsplaner) — adopted local land-use plans with arealformål, hensynssoner, juridiske linjer/punkter and plans under development. Free, no authentication required.",
			"when_to_use": "Use when an agent needs Arendal's zoning-plan map layers: \"reguleringsplan Arendal\", \"reguleringsplaner Arendal kart\", \"Arendal zoning plan WMS\", \"arealformål Arendal\". Render the WMS layers as a planning backdrop. For other municipalities use that municipality's own WMS instead.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://karttjenester.ikt-agder.no/arcgis/services/arendal/reguleringsplan/MapServer/WMSServer?"
			],
			"probe": {
				"method": "GET",
				"url": "https://karttjenester.ikt-agder.no/arcgis/services/arendal/reguleringsplan/MapServer/WMSServer?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "artsdatabanken.artskart",
			"name": "Artskart — Species Occurrence API (Artsdatabanken)",
			"provider": "Artsdatabanken",
			"provider_org_nr": "919666102",
			"category": "environment",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://artskart.artsdatabanken.no/publicapi",
			"docs_url": "https://artskart.artsdatabanken.no/publicapi/",
			"tags": [
				"biodiversity",
				"species",
				"occurrences",
				"norway",
				"government",
				"gbif",
				"darwin-core",
				"geo"
			],
			"description": "REST API providing access to species occurrence records registered in Artsdatabanken (Norwegian Biodiversity Information Centre). Contains over 23 million point records about species findings in Norway from 130 source databases and 35 Norwegian data owners, including institutions, agencies, organisations, and foreign institutions. Data follows the Darwin Core Archive format standard. No authentication required.",
			"when_to_use": "Use when an agent needs geographic species occurrence data for Norway: \"where has this species been observed?\", \"what species have been found in this municipality?\", \"list all species records within a given area\", \"hvilke arter er funnet i dette verneområdet?\", \"vis artsfunn for et fylke\", \"finn alle observasjoner av en art i Norge\". Also useful for biodiversity analysis, environmental assessments, and citizen science reporting workflows.",
			"when_not_to_use": "Do not use to submit or report new species observations — it is not possible to report findings directly to Artskart. For submitting personal observations, use Artsobservasjoner instead. Note that most species are not completely mapped and absence of records for an area does not mean the species is absent.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  -H 'Accept: application/json' \\\n  'https://artskart.artsdatabanken.no/publicapi/api/taxon/45044'",
			"agent_recipe": "1. **Explore available parameters**: the API accepts filter parameters such\n   as taxon IDs, municipality codes, county codes, and protected area IDs.\n   Use geonorge.kommuneinfo to resolve municipality names to codes before\n   querying.\n2. **Query species occurrences**: construct a GET request with relevant\n   filters (e.g. taxon id, area id, date range). Results follow Darwin Core\n   Archive format.\n3. **Pagination**: use page/pageSize parameters to page through large result\n   sets. The API may return tens of thousands of records for broad queries.\n4. **Note data quality**: species data is contributed by many institutions\n   and varies in completeness. Absence of records does not indicate species\n   absence — the area may simply be under-surveyed.\n5. **Darwin Core fields**: key fields include scientificName, decimalLatitude,\n   decimalLongitude, eventDate, datasetName, and institutionCode.\n6. No API key required. Use standard HTTP requests with a descriptive\n   User-Agent header.",
			"composes_with": [
				"geonorge.kommuneinfo",
				"geonorge.adresser"
			],
			"last_verified": "2026-05-25T07:13:55.000Z",
			"source_urls": [
				"https://artsdatabanken.no/Vilkar",
				"https://artsdatabanken.no/kart/om-artskart",
				"https://artskart.artsdatabanken.no/publicapi/"
			],
			"probe": {
				"method": "GET",
				"url": "https://artskart.artsdatabanken.no/publicapi/api/taxon/45044",
				"accept": "application/json",
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "artsdatabanken.artskart-fremmede-arter-wfs",
			"name": "Artskart fremmede arter WFS",
			"provider": "Artsdatabanken",
			"provider_org_nr": null,
			"category": "environment",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": "No authentication required. The capabilities document declares fees \"none\" and access constraints \"read online\". Public WFS 1.0 endpoint operated by Artsdatabanken (the Norwegian Biodiversity Information Centre).",
			"status": "active",
			"license": "CC-BY-4.0",
			"base_url": "https://kart.artsdatabanken.no/WMS/artskartfa.aspx",
			"docs_url": "https://artskart.artsdatabanken.no/",
			"tags": [
				"wfs",
				"environment",
				"biodiversity",
				"species",
				"alien-species",
				"fremmede-arter",
				"artsdatabanken",
				"gov",
				"norway",
				"ogc"
			],
			"description": "OGC Web Feature Service (WFS 1.0) from the Norwegian Biodiversity Information Centre publishing species occurrences of alien (invasive) species from the Artskart service. Records follow the \"Fremmede arter i Norge 2018\" alien species list and its risk categories; only observations with geographic precision better than 1000 m are included. Output as GML2 or GeoJSON; no authentication.",
			"when_to_use": "Use when mapping observations of alien/invasive species in Norway as vector features: \"fremmede arter\", \"invasive species Norway\", \"Fremmedartslista 2018\", \"svartelista arter\", \"funn av fremmede arter SE / HI\". Returns feature types per risk category (e.g. SE Presisjon / HI Presisjon and *_punkt layers) as GML2 or GeoJSON. Records carry the alien-species status (SE Svært høy risiko, HI Høy risiko); only finds with geo-precision better than 1 km are present. For all species occurrences (not just alien) use the base Artskart entry instead.",
			"when_not_to_use": null,
			"sample_request": "curl -sSL \\\n  'https://kart.artsdatabanken.no/WMS/artskartfa.aspx?service=WFS&version=1.0.0&request=GetFeature&typeName=SE_punkt&maxFeatures=2'",
			"agent_recipe": "1. Issue a GetCapabilities request to list the feature types:\n   GET https://kart.artsdatabanken.no/WMS/artskartfa.aspx?version=1.0.0&service=WFS&REQUEST=GetCapabilities\n   Feature types are grouped by risk category — e.g. \"SE Presisjon\",\n   \"HI Presisjon\", and point layers SE_punkt, HI_punkt, PH_punkt, LO_punkt,\n   NK_punkt.\n2. Issue a GetFeature request for the desired category/layer (WFS 1.0 uses\n   typeName, singular):\n     ?service=WFS&version=1.0.0&request=GetFeature&typeName=SE_punkt\n3. Request GeoJSON via the appropriate outputFormat, or parse the default GML2.\n4. Each record carries the alien-species risk status; only observations with\n   geographic precision better than 1000 m are included.",
			"composes_with": [],
			"last_verified": "2026-05-31T12:00:00.000Z",
			"source_urls": [
				"https://kart.artsdatabanken.no/WMS/artskartfa.aspx?version=1.0.0&service=WFS&REQUEST=GetCapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.artsdatabanken.no/WMS/artskartfa.aspx?version=1.0.0&service=WFS&REQUEST=GetCapabilities",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "artsdatabanken.artskart-rodlistearter-wfs",
			"name": "Artskart Rødlistearter WFS",
			"provider": "Artsdatabanken",
			"provider_org_nr": null,
			"category": "environment",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://kart.artsdatabanken.no/WMS/artskart.aspx",
			"docs_url": "https://kart.artsdatabanken.no/WMS/artskart.aspx?version=1.0.0&service=WFS&REQUEST=GetCapabilities",
			"tags": [
				"artsdatabanken",
				"biodiversity",
				"species",
				"redlist",
				"occurrences",
				"geo",
				"gov"
			],
			"description": "OGC WFS 1.0.0 download service from Artsdatabanken (the Norwegian Biodiversity Information Centre) publishing occurrence points of red-listed species from the Artskart service. Feature types are grouped by Norwegian Red List category (RE, CR, EN, VU, NT, DD), each indicating how high a species' risk of extinction is if current conditions persist. Output is GML2 or GeoJSON in EPSG:25833; no authentication required.",
			"when_to_use": "Use when an agent needs geographic occurrence data for threatened / red-listed species in Norway as downloadable features: \"rødlistearter på kart\", \"truede arter WFS\", \"red-listed species occurrences Norway\", \"hvor er kritisk truede arter funnet?\", \"vis sårbare arter i et område\". Feature types cover the categories RE (Regionalt utdødd), CR (Kritisk truet), EN (Sterkt truet), VU (Sårbar), NT (Nær truet) and DD (Datamangel). For the full species occurrence REST API use artsdatabanken.artskart.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.artsdatabanken.no/WMS/artskart.aspx?version=1.0.0&service=WFS&REQUEST=GetCapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.artsdatabanken.no/WMS/artskart.aspx?version=1.0.0&service=WFS&REQUEST=GetCapabilities",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "artsdatabanken.artskart-rodlistearter-wms",
			"name": "Artskart Rødlistearter WMS",
			"provider": "Artsdatabanken",
			"provider_org_nr": null,
			"category": "environment",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://kart.artsdatabanken.no/WMS/artskart.aspx",
			"docs_url": "https://kart.artsdatabanken.no/WMS/artskart.aspx?request=GetCapabilities&service=WMS",
			"tags": [
				"artsdatabanken",
				"biodiversity",
				"species",
				"redlist",
				"wms",
				"geo",
				"gov"
			],
			"description": "OGC WMS map service from Artsdatabanken (the Norwegian Biodiversity Information Centre) rendering occurrence maps of red-listed species from the Artskart service. Layers are grouped by Norwegian Red List category (RE, CR, EN, VU, NT, DD), each expressing how high a species' risk of extinction is if current conditions persist. GetMap returns map images (PNG and other formats); no authentication required.",
			"when_to_use": "Use when an agent needs rendered map tiles/images of threatened or red-listed species in Norway: \"rødlistearter på kart\", \"truede arter WMS\", \"vis kart over sårbare arter\", \"red-listed species map Norway\", \"kartlag for kritisk truede arter\". Layers cover the categories RE (Regionalt utdødd), CR (Kritisk truet), EN (Sterkt truet), VU (Sårbar), NT (Nær truet) and DD (Datamangel). For downloadable feature geometry instead of images use artsdatabanken.artskart-rodlistearter-wfs.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": "1. Fetch GetCapabilities to discover the available red-list category layers\n   (RE, CR, EN, VU, NT, DD) and supported coordinate reference systems:\n   GET https://kart.artsdatabanken.no/WMS/artskart.aspx?request=GetCapabilities&service=WMS\n2. Issue a GetMap request with BBOX, WIDTH, HEIGHT, CRS, LAYERS and FORMAT\n   (e.g. image/png) to render the chosen categories over a basemap.\n3. No authentication is required; the service is free to read online.\n4. For downloadable vector features (occurrence points) rather than rendered\n   images, use the WFS variant artsdatabanken.artskart-rodlistearter-wfs.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.artsdatabanken.no/WMS/artskart.aspx?request=GetCapabilities&service=WMS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.artsdatabanken.no/WMS/artskart.aspx?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "artsdatabanken.bioklimatiske-soner-seksjoner-wms",
			"name": "Bioklimatiske soner og -seksjoner WMS",
			"provider": "Artsdatabanken",
			"provider_org_nr": null,
			"category": "environment",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://kart.artsdatabanken.no/WMS/lkm.aspx",
			"docs_url": null,
			"tags": [
				"artsdatabanken",
				"nina",
				"vegetation",
				"bioclimate",
				"wms"
			],
			"description": "WMS map service publishing modelled bioclimatic zones and sections for Norway — raster maps showing the broad distribution of vegetation along climatic gradients (zones driven mainly by temperature, running south-to-north and lowland-to-alpine). Exposes the layers soner2017 and seksjoner2017; produced by NINA, served by Artsdatabanken. Returns rendered map images; open data, no authentication.",
			"when_to_use": "Use when an agent needs a bioclimatic zonation map layer for Norway: \"bioklimatiske soner\", \"bioklimatiske seksjoner\", \"vegetasjonssoner kart Norge\", \"bioclimatic zones Norway WMS\", overlaying boreal/alpine zones on an ecology or habitat map. Issue a GetMap request for the soner2017 or seksjoner2017 layer.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.artsdatabanken.no/WMS/lkm.aspx?https://kart.artsdatabanken.no/wms/lkm.aspx?VERSION=1.3.0&TRANSPARENT=true&LAYERS=seksjoner2017&request=GetCapabilities&service=WMS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.artsdatabanken.no/wms/lkm.aspx?VERSION=1.3.0&SERVICE=WMS&REQUEST=GetCapabilities",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "artsdatabanken.naturtyper-landskap-wfs",
			"name": "Naturtyper i Norge - Landskap WFS",
			"provider": "Artsdatabanken",
			"provider_org_nr": null,
			"category": "environment",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://wms.artsdatabanken.no/?map=/maps/mapfiles/la.map",
			"docs_url": "https://wms.artsdatabanken.no/?map=/maps/mapfiles/la.map&request=GetCapabilities&service=WMS&version=1.1.1",
			"tags": [
				"artsdatabanken",
				"nin",
				"landskap",
				"naturtyper",
				"norway",
				"gov"
			],
			"description": "OGC service from Artsdatabanken publishing the \"Naturtyper i Norge\" landscape dataset (NiN Landskap) — a system describing landscape-scale variation aligned with the European Landscape Convention and the Nature Diversity Act, part of Artsdatabanken's Natur i Norge (NiN) type system. Served from the la.map endpoint (NiN Landskap 2.2). Free, read-only.",
			"when_to_use": "Use when an agent needs NiN landscape-type map data for Norway: \"NiN landskap\", \"naturtyper landskap Norge\", \"Natur i Norge landskap WMS/WFS\", \"landskapstyper kart\". Provides landscape-type layers (LA-*) as map images/features. For species occurrences or red-list/alien species use the Artskart entries instead.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wms.artsdatabanken.no/?map=/maps/mapfiles/la.map&?&request=GetCapabilities&service=WMS&version1.1.1"
			],
			"probe": {
				"method": "GET",
				"url": "https://wms.artsdatabanken.no/?map=/maps/mapfiles/la.map&request=GetCapabilities&service=WMS&version=1.1.1",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "avinor.lufthavn-stoy-wfs",
			"name": "Støysoner Avinors lufthavner (WFS)",
			"provider": "Avinor AS",
			"provider_org_nr": "985198292",
			"category": "aviation",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.stoylufthavn",
			"docs_url": "https://kartkatalog.geonorge.no/metadata/stoysoner-avinors-lufthavner/1489f7f8-40c8-4dc4-83b6-bcf277b56506",
			"tags": [
				"noise",
				"geo",
				"gml",
				"airport",
				"nlod",
				"avinor",
				"wfs"
			],
			"description": "WFS 2.0.0 service providing noise zone polygons around Avinor's Norwegian airports. Returns GML features (app:Støy and app:Støygrense) covering approach-path noise zones and ground-level noise zones, computed per Norwegian guideline T-1442. No authentication required; output is GML only (no JSON).",
			"when_to_use": "Use when a GIS or spatial analysis workflow needs airport noise zone polygons in Norway: \"støysoner rundt Gardermoen\", \"noise impact near Oslo Airport\", \"hvilke eiendommer ligger i støysone ved Flesland\", \"flystøy kart Avinor\". Suitable for map rendering, spatial intersection with property or population data, and noise exposure calculations under Norwegian planning regulations.",
			"when_not_to_use": "Do not use for detailed cadastral analysis — the noise calculations are not designed for combination with fine-grained map data. Outputs are GML only; if your pipeline requires JSON or GeoJSON, this service is not suitable. Not a real-time noise measurement service — zones are pre-computed and updated periodically.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://wfs.geonorge.no/skwms1/wfs.stoylufthavn?service=WFS&version=2.0.0&request=GetFeature&typeNames=app:St%C3%B8y&count=10&outputFormat=application/gml%2Bxml;%20version=3.2'",
			"agent_recipe": "1. Call GetCapabilities to confirm the service is up and enumerate feature types\n   (app:Støy for noise zone polygons, app:Støygrense for boundary lines).\n2. Use GetFeature with a BBOX filter to retrieve noise zones near a specific airport:\n   add &BBOX=<minLon>,<minLat>,<maxLon>,<maxLat>,urn:ogc:def:crs:EPSG::4258\n   and &typeNames=app:Støy to the request.\n3. Parse the GML 3.2.1 response. Key attributes per feature:\n   - app:støysonekategori (zone category, e.g. \"R\" or \"Y\" per T-1442 red/yellow zones)\n   - app:støykilde (noise source type, \"F\" = aviation)\n   - app:støykildenavn (airport ICAO/name, e.g. \"ENSS\")\n   - app:beregnetÅr (year noise model was computed)\n   - app:område (GML Polygon geometry)\n4. Reproject to EPSG:4326 if needed by adding &srsName=urn:ogc:def:crs:EPSG::4326.\n5. If the user asked about a specific airport by name, first resolve its bounding box\n   from external knowledge or a geocoding service (no airport-lookup endpoint here).\n6. Output is GML only — transform to GeoJSON in client code if required.",
			"composes_with": [],
			"last_verified": "2026-05-24T07:25:00.000Z",
			"source_urls": [
				"https://data.norge.no/nlod/no/2.0",
				"https://register.geonorge.no/det-offentlige-kartgrunnlaget/stoysoner-avinors-lufthavner/1489f7f8-40c8-4dc4-83b6-bcf277b56506",
				"https://wfs.geonorge.no/skwms1/wfs.stoylufthavn?service=WFS&version=2.0.0&request=GetCapabilities",
				"https://wfs.geonorge.no/skwms1/wfs.stoylufthavn?service=WFS&version=2.0.0&request=GetFeature&typeNames=app:St%C3%B8y&count=1&outputFormat=application/gml%2Bxml;%20version=3.2"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.stoylufthavn?service=WFS&version=2.0.0&request=GetCapabilities",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "avinor.stoysoner-lufthavn-wms",
			"name": "Støysoner Avinors lufthavner (WMS)",
			"provider": "Avinor AS",
			"provider_org_nr": "985198292",
			"category": "aviation",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://wms.geonorge.no/skwms1/wms.stoylufthavn",
			"docs_url": "https://kartkatalog.geonorge.no/metadata/uuid/7dc3bb2a-8929-49d5-a465-9af965fb556a",
			"tags": [
				"noise",
				"geo",
				"airport",
				"avinor",
				"wms",
				"nlod"
			],
			"description": "WMS 1.3.0 service rendering aircraft noise zones around Avinor's Norwegian airports as map images. Covers approach-path and ground-level noise zones computed under Norwegian guideline T-1442, served via the geonorge infrastructure with image/png and image/jpeg output across Norway. No authentication required.",
			"when_to_use": "Use when a map needs rendered airport noise-zone overlays in Norway: \"vis støysoner rundt Gardermoen på kart\", \"aircraft noise zone map layer\", \"flystøy WMS-lag\", \"støysoner Avinor lufthavner kartlag\". Best for visual map rendering and tile compositing. If you need the noise-zone polygons as vector features (GML) for spatial analysis, use avinor.lufthavn-stoy-wfs instead.",
			"when_not_to_use": "Not a feature service — output is rendered raster tiles, not queryable geometry. Do not use for spatial intersection with property or population data; use the vector service avinor.lufthavn-stoy-wfs (GML) for that. Not a real-time noise measurement service — zones are pre-computed and updated periodically.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://wms.geonorge.no/skwms1/wms.stoylufthavn?service=WMS&version=1.3.0&request=GetCapabilities'",
			"agent_recipe": "1. Call GetCapabilities to confirm the service is up and enumerate layers\n   (stoylufthavn is the noise-zone layer; default style available).\n2. Render tiles with GetMap, e.g. add &request=GetMap&layers=stoylufthavn&styles=\n   &crs=EPSG:4326&bbox=<minLat>,<minLon>,<maxLat>,<maxLon>&width=512&height=512\n   &format=image/png. The layer's advertised bounding box covers mainland Norway\n   (lat ~58.2-78.3, lon ~4.9-31.1).\n3. Composite the returned image over a base map as a noise-zone overlay.\n4. Pick a CRS the layer advertises in GetCapabilities (e.g. EPSG:4326, EPSG:25833).\n5. For noise-zone polygons as vector data (GML) — needed for spatial intersection\n   with property or population data — use avinor.lufthavn-stoy-wfs instead.",
			"composes_with": [
				"avinor.lufthavn-stoy-wfs"
			],
			"last_verified": "2026-05-31T12:00:00.000Z",
			"source_urls": [
				"https://wms.geonorge.no/skwms1/wms.stoylufthavn?service=wms&request=getcapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://wms.geonorge.no/skwms1/wms.stoylufthavn?service=WMS&version=1.3.0&request=GetCapabilities",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "banenor.banenettverk-wfs",
			"name": "Jernbane - Banenettverk (WFS)",
			"provider": "Bane NOR SF",
			"provider_org_nr": null,
			"category": "transport",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.banenettverk",
			"docs_url": null,
			"tags": [
				"jernbane",
				"railway",
				"banenor",
				"geonorge",
				"gov"
			],
			"description": "OGC WFS feature service exposing the Norwegian railway network (Banenettverk) as reference lines for railway sections that form part of the state's railway infrastructure, with geolocated line geometry and nodes in a topological network. Feature types include track links, kilometre points and station nodes; served via Geonorge as WFS 2.0.0/1.1.0 with GML output.",
			"when_to_use": "Use when an agent needs vector geometry for the Norwegian railway network: \"jernbane banenettverk WFS\", \"railway track centreline Norway\", \"kilometrering jernbane linjegeometri\", \"stasjonsnoder topologisk jernbanenett\". The network uses Jernbaneverket's linear referencing model (kilometrering). Returns GML feature data, not rendered map tiles.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wfs.geonorge.no/skwms1/wfs.banenettverk?request=GetCapabilities&service=WFS"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.banenettverk?request=GetCapabilities&service=WFS",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "banenor.stoysoner-jernbanenett-wfs",
			"name": "Støysoner for Bane NORs jernbanenett (WFS)",
			"provider": "Bane NOR SF",
			"provider_org_nr": null,
			"category": "transport",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.stoysonerjernbanenett",
			"docs_url": null,
			"tags": [
				"jernbane",
				"railway",
				"stoy",
				"banenor",
				"geonorge"
			],
			"description": "OGC WFS feature service exposing noise-zone maps (støysonekart) for Bane NOR's Norwegian railway network, computed according to the planning guideline \"Retningslinje for behandling av støy i arealplanlegging (T-1442)\". The maps show calculated red (Lden>65dB) and yellow (Lden>55dB) noise zones as vector features; served via Geonorge as WFS with GML output.",
			"when_to_use": "Use when an agent needs railway noise-zone vector geometry for spatial planning along Norwegian railways: \"støysoner jernbane WFS\", \"railway noise zone Norway\", \"Lden 55 dB gul sone jernbane\", \"T-1442 støysonekart Bane NOR arealplanlegging\". Returns GML feature data (red and yellow zones), not rendered map tiles.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wfs.geonorge.no/skwms1/wfs.stoysonerjernbanenett?service=WFS&request=GetCapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.stoysonerjernbanenett?service=WFS&request=GetCapabilities",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "barentswatch.bolgevarsel-kryssende-bolger",
			"name": "Bølgevarsel - Kryssende bølger WMS",
			"provider": "Barentswatch",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://geo.barentswatch.no/geoserver/bw/ows",
			"docs_url": null,
			"tags": [
				"waves",
				"forecast",
				"geoserver",
				"gov"
			],
			"description": "Norwegian WMS view service from BarentsWatch rendering wave-height isolines for crossing-waves (kryssende bølger) over the areas covered by the BarentsWatch wave forecast. Served as WMS via GeoServer (PNG output); open, no authentication.",
			"when_to_use": "Use when an agent needs rendered map layers of crossing-wave height forecasts in Norwegian coastal waters: \"kryssende bølger\", \"bølgevarsel kart\", \"wave height isolines Norway\", \"BarentsWatch bølgehøyde WMS\". For the full forecast presentation, see the BarentsWatch.no wave forecast.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://geo.barentswatch.no/geoserver/bw/ows?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://geo.barentswatch.no/geoserver/bw/ows?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "barentswatch.fiskeriaktivitet-passive-redskaper",
			"name": "Fiskeriaktivitet (passive redskaper)",
			"provider": "Barentswatch",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "CC-BY-4.0",
			"base_url": "https://geo.barentswatch.no/geoserver/bw/ows",
			"docs_url": "https://geo.barentswatch.no/geoserver/bw/ows?service=wms&request=getcapabilities",
			"tags": [
				"barentswatch",
				"fisheries",
				"fiskinfo",
				"wms",
				"map"
			],
			"description": "BarentsWatch WMS map service giving a historical overview of stationary (passive) fishing gear from the FiskInfo service. Shows longlines, gillnets, Danish purse seines and crab/lobster pots set in selected months and reported to the Coast Guard, with data from late 2014 onward, updated continuously.",
			"when_to_use": "User wants a historical map of passive fishing gear in Norwegian waters: \"vis faststående bruk\", \"hvor har det stått garn og teiner\", \"fiskeriaktivitet passive redskaper kart\", \"longline/gillnet activity overlay\", \"BarentsWatch FiskInfo history\". Render as a WMS overlay; data goes back to late 2014.",
			"when_not_to_use": "Do not use for real-time vessel tracking or active-gear (trawl) positions — this is a historical, monthly view of stationary gear only. Do not use when you need queryable vector features rather than rendered map images.",
			"sample_request": null,
			"agent_recipe": "1. This is a GeoServer OGC WMS 1.3.0 endpoint on the `bw` workspace. Discover\n   layers via `?service=WMS&version=1.3.0&request=GetCapabilities`. The fishery\n   activity layers are fisheryactivity (group) and the per-gear sublayers\n   fisheryactivity_wms_longline (liner), fisheryactivity_wms_nets (garn),\n   fisheryactivity_wms_danpurseine (snurpenot) and fisheryactivity_wms_crabpot\n   (teiner).\n2. Render with GetMap: pass `layers=`, `crs=EPSG:25833` (or another advertised\n   CRS), a `bbox` in that CRS (axis order easting,northing for 1.3.0),\n   `width`/`height`, and `format=image/png`. Prefer a specific per-gear sublayer;\n   the combined `fisheryactivity` group can fail to render without extra params.\n3. Filter by month using the WMS `TIME` dimension where supported; data is a\n   monthly historical view back to late 2014.\n4. GeoServer can also emit PDF, SVG, KML and GeoTIFF via the `format` parameter.",
			"composes_with": [],
			"last_verified": "2026-05-31T12:00:00.000Z",
			"source_urls": [
				"https://geo.barentswatch.no/geoserver/bw/ows?service=wms&request=getcapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://geo.barentswatch.no/geoserver/bw/ows?service=WMS&version=1.3.0&request=GetMap&layers=fisheryactivity_wms_longline&styles=&crs=EPSG:25833&bbox=400000,7400000,600000,7600000&width=256&height=256&format=image/png",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "barentswatch.fiskinfo",
			"name": "BarentsWatch FiskInfo",
			"provider": "Barentswatch",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "other",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://www.barentswatch.no/fiskinfo/",
			"docs_url": "https://www.barentswatch.no/fiskinfo/",
			"tags": [
				"fisheries",
				"barentswatch",
				"marine",
				"gov"
			],
			"description": "BarentsWatch FiskInfo is a data service from BarentsWatch that publishes and redistributes Norwegian public marine and fisheries data in formats tailored to fishers' onboard systems (chart plotters), supporting resource-aware fishing and regulatory compliance. Delivered through the FiskInfo web portal; open public data.",
			"when_to_use": "Use when an agent needs Norwegian fisheries operational data packaged for chart plotters and fishing-vessel systems: \"FiskInfo data\", \"fiskeridata til kartplotter\", \"BarentsWatch fiske last ned data\", \"marine fisheries layers for chart plotter Norway\". Access the FiskInfo portal to view or download the redistributed datasets.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://data.norge.no/data-services/d34b6b71-ce72-3ec1-b4b4-956a582fd78e"
			],
			"probe": {
				"method": "GET",
				"url": "https://www.barentswatch.no/fiskinfo/",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "bfd.kirkebygg-forenklet-wfs",
			"name": "Kirkebygg forenklet WFS",
			"provider": "Barne- og familiedepartementet",
			"provider_org_nr": null,
			"category": "culture",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": "No authentication required. Public WFS endpoint with no API key or User-Agent restriction. Access constraints and fees are not explicitly declared in the capabilities document (fields absent). Service provider is Kartverket (Norwegian Mapping Authority).",
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.kirkebyggenkel",
			"docs_url": "https://kartkatalog.geonorge.no/metadata/588a568e-8381-3c17-9dee-7246ab7533c5",
			"tags": [
				"wfs",
				"churches",
				"kirkebygg",
				"buildings",
				"gov",
				"norway",
				"ogc"
			],
			"description": "OGC Web Feature Service (WFS 2.0) delivering the \"Kirkebygg - forenklet\" dataset as GML: church buildings in Norway derived from the Kirkebyggdatabasen, covering churches under the church law and buildings consecrated for church use (chapels), with a selection of attributes. Hosted by Kartverket via Geonorge; no authentication required.",
			"when_to_use": "Use when listing, mapping or querying church buildings and chapels in Norway: \"kirker i Norge\", \"kirkebygg i en kommune\", \"vis kapeller på kart\", \"church locations Norway\", \"list consecrated church buildings\". Returns point features (feature type app:Kirkebygg) as GML; supports BBOX and attribute filtering. For place-name resolution, compose with a geocoding entry first.",
			"when_not_to_use": null,
			"sample_request": "curl -sSL \\\n  'https://wfs.geonorge.no/skwms1/wfs.kirkebyggenkel?service=WFS&version=2.0.0&request=GetFeature&typeNames=app:Kirkebygg&count=2'",
			"agent_recipe": "1. Issue a GetCapabilities request to confirm the feature type and CRS:\n   GET https://wfs.geonorge.no/skwms1/wfs.kirkebyggenkel?request=GetCapabilities&service=WFS\n   Feature type: app:Kirkebygg. Default CRS EPSG:4258 (lat/lon, numerically\n   identical to WGS-84).\n2. Issue a GetFeature request, optionally constrained by BBOX or an OGC/CQL\n   filter:\n     ?service=WFS&version=2.0.0&request=GetFeature\n     &typeNames=app:Kirkebygg\n     &BBOX=10.6,59.8,10.9,59.95,urn:ogc:def:crs:EPSG::4258\n     &count=100\n3. Parse the GML response. Each feature is a church building / chapel with a\n   point geometry and a selection of attributes from the Kirkebyggdatabasen.\n4. If the user supplies a place name, resolve it to a BBOX via a geocoding\n   entry first, then filter. Dataset content was 2095 church buildings as of\n   2019-09-01 — treat counts as approximate, not a live register.",
			"composes_with": [],
			"last_verified": "2026-05-31T12:00:00.000Z",
			"source_urls": [
				"https://wfs.geonorge.no/skwms1/wfs.kirkebyggenkel?request=GetCapabilities&service=WFS"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.kirkebyggenkel?request=GetCapabilities&service=WFS",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "bfd.kirkebygg-forenklet-wms",
			"name": "Kirkebygg - forenklet WMS",
			"provider": "Barne- og familiedepartementet",
			"provider_org_nr": null,
			"category": "culture",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": "No authentication required. Public WMS endpoint hosted by Kartverket via Geonorge. The capabilities document declares fees as \"Norge digital\" and access constraints as \"Copyright Statens kartverk 2020\", but no API key or User-Agent restriction applies.",
			"status": "active",
			"license": null,
			"base_url": "https://wms.geonorge.no/skwms1/wms.kirkebyggforenklet",
			"docs_url": "https://wms.geonorge.no/skwms1/wms.kirkebyggforenklet?request=GetCapabilities&service=WMS",
			"tags": [
				"geonorge",
				"churches",
				"kirkebygg",
				"wms",
				"gov",
				"norway"
			],
			"description": "OGC Web Map Service (WMS), hosted by Kartverket via Geonorge, rendering the \"Kirkebygg - forenklet\" dataset as map images: church buildings in Norway derived from the Kirkebyggdatabasen, covering churches under the church law and consecrated buildings (chapels), with a selection of attributes. Content was 2095 church buildings as of 2019-09-01. Open access, no authentication.",
			"when_to_use": "Use when rendering church buildings and chapels in Norway as a map layer: \"kirker på kart\", \"kirkebygg WMS\", \"vis kapeller\", \"church buildings map Norway\". Render the kirkebyggforenklet layer via the WMS GetMap operation. To query individual church features and attributes as data, use the separate Kirkebygg - forenklet WFS instead.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wms.geonorge.no/skwms1/wms.kirkebyggforenklet?request=GetCapabilities&service=WMS"
			],
			"probe": {
				"method": "GET",
				"url": "https://wms.geonorge.no/skwms1/wms.kirkebyggforenklet?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "bodo.bydeler",
			"name": "Bydeler Bodø kommune",
			"provider": "Bodø kommune",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://services-eu1.arcgis.com/bUDP8dxTEFYEUa8w/arcgis/rest/services/Bydeler_Bodo_kommune/OGCFeatureServer",
			"docs_url": "https://services-eu1.arcgis.com/bUDP8dxTEFYEUa8w/arcgis/rest/services/Bydeler_Bodo_kommune/OGCFeatureServer/api",
			"tags": [
				"ogcapi",
				"kommune",
				"bodo",
				"boundaries",
				"arcgis"
			],
			"description": "OGC API Features service exposing the boundaries of the seven city districts (bydeler) of Bodø municipality. Returns district polygons as GeoJSON over a standard OGC API Features REST interface; no authentication required.",
			"when_to_use": "Use when an agent needs the official city-district (bydel) boundaries of Bodø: \"hvilken bydel ligger denne adressen i\", \"grenser for Rønvika/Sentrum/Tverlandet\", \"map of Bodø districts\", point-in-polygon lookups for Bodø neighbourhoods.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": "1. GET the landing page with `?f=json` to discover links, or go straight to\n   `/collections?f=json` to list the available feature collections.\n2. Pick the bydeler collection id, then request\n   `/collections/{collectionId}/items?f=json` to retrieve the district polygons\n   as GeoJSON features.\n3. For \"which district is this point in\", run a point-in-polygon test client-side\n   against the returned geometries, or pass a `bbox=` query parameter to narrow results.\n4. This is municipal reference geometry and changes rarely — cache the collection.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://services-eu1.arcgis.com/bUDP8dxTEFYEUa8w/arcgis/rest/services/Bydeler_Bodo_kommune/OGCFeatureServer"
			],
			"probe": {
				"method": "GET",
				"url": "https://services-eu1.arcgis.com/bUDP8dxTEFYEUa8w/arcgis/rest/services/Bydeler_Bodo_kommune/OGCFeatureServer/collections?f=json",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "brreg.enhetsregister",
			"name": "Enhetsregisteret API",
			"provider": "Brønnøysundregistrene",
			"provider_org_nr": "974760673",
			"category": "business",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://data.brreg.no/enhetsregisteret/api/",
			"docs_url": "https://data.brreg.no/enhetsregisteret/api/docs/index.html",
			"tags": [
				"brreg",
				"business",
				"registry",
				"gov",
				"norway",
				"nlod",
				"orgnr",
				"company"
			],
			"description": "Open REST API from Brønnøysundregistrene giving access to the Norwegian Central Coordinating Register for Legal Entities (Enhetsregisteret). Provides search and lookup of Norwegian organisations by organisation number or name, including legal form, address, industry code, employee count, and registration status. No authentication required.",
			"when_to_use": "Use when a user needs to look up a Norwegian organisation by organisation number (orgnr) or name: \"finn organisasjonsnummer for Equinor\", \"hva er adressen til orgnr 974760673\", \"er dette selskapet konkurs\", \"look up Norwegian company details\", \"sjekk om en enhet er registrert i MVA-registeret\". Also use to search for sub-units (underenheter) or to download bulk entity data.",
			"when_not_to_use": "Do not use the open API for role lookups that must include birth numbers (fødselsnummer). Those endpoints (/autorisert-api/) are secured with Maskinporten and require a dedicated scope — they are not part of the unauthenticated API covered here.",
			"sample_request": "curl -sSL \\\n  'https://data.brreg.no/enhetsregisteret/api/enheter/974760673'",
			"agent_recipe": "1. To look up an organisation by organisation number (9-digit orgnr), call:\n   GET /enheter/{orgnr}\n   e.g. /enheter/974760673\n   The response contains name, address, legal form, industry code, employee count,\n   and status flags (konkurs, underAvvikling, etc.).\n2. To search by name or other criteria, call:\n   GET /enheter?navn=<name>&size=<n>&page=<p>\n   Paginate using the `page` and `size` query parameters. The response includes\n   `page.totalElements` and `page.totalPages` for iteration.\n3. To look up sub-units (branches) of a parent organisation, call:\n   GET /underenheter?overordnetEnhet={orgnr}\n4. To track changes since a given date, call:\n   GET /oppdateringer/enheter?dato=<YYYY-MM-DD>\n5. For bulk downloads of all entities, use:\n   GET /enheter/lastned (JSON), /enheter/lastned/csv, or /enheter/lastned/regneark (xlsx).\n   These endpoints return large files — use HEAD first to check Content-Length.\n6. The API returns Norwegian field names. Key fields:\n   - organisasjonsnummer: 9-digit identifier\n   - navn: entity name\n   - organisasjonsform.kode: legal form code (AS, ENK, etc.)\n   - konkurs / underAvvikling: boolean bankruptcy/wind-up flags\n   - registrertIMvaregisteret: VAT-registered boolean\n7. No rate-limit headers are documented; cache aggressively and avoid redundant lookups.",
			"composes_with": [],
			"last_verified": "2026-05-06T07:09:47.000Z",
			"source_urls": [
				"https://data.brreg.no/enhetsregisteret/api/docs/index.html",
				"https://data.brreg.no/enhetsregisteret/api/enheter/974760673",
				"https://data.brreg.no/enhetsregisteret/api/enheter?navn=Brreg&size=2"
			],
			"probe": {
				"method": "GET",
				"url": "https://data.brreg.no/enhetsregisteret/api/enheter/974760673",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "brreg.kompensasjonsordning-naeringsliv",
			"name": "Kompensasjonsordning for næringslivet — Innsyn i tilskudd",
			"provider": "Brønnøysundregistrene",
			"provider_org_nr": "974760673",
			"category": "business",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No API key, no registration. All data endpoints (GET /api/tilskudd/statistikk, GET /api/tilskudd/tilskuddsperioder, POST /api/tilskudd/filter) return HTTP 200 with JSON and no auth challenge. The search endpoint requires Content-Type: application/json and uses Norwegian JSON field names (felt/verdi/rekkefolge); the English key/value shape returns HTTP 400.",
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://data.brreg.no/kompensasjonsordning/api",
			"docs_url": "https://www.brreg.no/bruke-data-fra-bronnoysundregistrene/datasett-og-api/",
			"tags": [
				"brreg",
				"business",
				"finance",
				"grants",
				"subsidy",
				"covid",
				"transparency",
				"gov",
				"norway",
				"nlod"
			],
			"description": "Open REST API from Brønnøysundregistrene giving public insight (innsyn) into grants paid out under the Norwegian COVID-19 business-compensation scheme (\"Kompensasjonsordning for næringslivet etter august 2020\"). Each grant record exposes the recipient's organisation name and organisation number, county and municipality, grant amount, grant period, and the calculation basis (compensation for unavoidable fixed costs vs. lost inventory). No authentication required.",
			"when_to_use": "Use when a user asks who received support from the Norwegian business COVID-19 compensation scheme, or how much: \"hvor mye kompensasjon fikk Scandic Hotels\", \"hvilke bedrifter fikk koronastøtte i Oslo\", \"kompensasjonsordning for næringslivet tildelinger\", \"COVID grants to Norwegian businesses\", \"list koronastøtte per fylke\". Query the POST /api/tilskudd/filter endpoint to search grants by period, county, municipality, recipient name, or org number; use /api/tilskudd/statistikk for scheme-wide totals.",
			"when_not_to_use": "Do not use this API for the separate entry-quarantine compensation scheme (Kompensasjonsordning for utgifter til innreisekarantene) — that is a different dataset served under its own path, https://data.brreg.no/kompensasjonsordning/innreise/innsyn/. Do not use it to look up full company master data (address, industry code, bankruptcy status): it only returns grant-level fields, so resolve the recipient's organisasjonsnummer via brreg.enhetsregister for that. This is historical COVID-era data, not a live feed of new payments.",
			"sample_request": "# Scheme-wide totals (no auth, no body):\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://data.brreg.no/kompensasjonsordning/api/tilskudd/statistikk'\n\n# Search individual grants (POST, JSON body, Norwegian field names):\ncurl -sSL -X POST \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  -H 'Content-Type: application/json' \\\n  'https://data.brreg.no/kompensasjonsordning/api/tilskudd/filter' \\\n  -d '{\"sorteringer\":[{\"felt\":\"TILSKUDDSBELOP\",\"rekkefolge\":\"DESC\"}],\"filter\":[{\"felt\":\"TILSKUDDSPERIODE\",\"verdi\":\"november-desember2020\"}],\"sidestorrelse\":3}'",
			"agent_recipe": "1. For scheme-wide totals, call:\n   GET /api/tilskudd/statistikk\n   Returns {hittilTildelt, antallTildelinger, antallStottedeForetak,\n   sistOppdatert, ...}. Monetary values are strings (NOK). No auth, no body.\n2. To discover the valid grant periods (needed as filter values), call:\n   GET /api/tilskudd/tilskuddsperioder\n   Returns a JSON array of period ids, e.g. \"november-desember2020\",\n   \"mars-april2021\", \"desember2021\", \"januar2022\".\n3. To search individual grants, POST to /api/tilskudd/filter with\n   Content-Type: application/json. The body uses NORWEGIAN field names:\n     {\n       \"sorteringer\": [{\"felt\":\"<SORT>\",\"rekkefolge\":\"ASC|DESC\"}],\n       \"filter\":      [{\"felt\":\"<FILTER>\",\"verdi\":\"<value>\"}],\n       \"sidestorrelse\": <pageSize>,\n       \"sokFra\": <cursor from a previous response, optional>\n     }\n   Sort fields: TILSKUDDSBELOP, TILDELINGSDATO, TILSKUDDSNUMMER, TILSKUDDSPERIODE.\n   Filter fields: TILSKUDDSPERIODE, TILSKUDDSMOTTAKER_FYLKENUMMER,\n   TILSKUDDSMOTTAKER_KOMMUNENUMMER, TILSKUDDSMOTTAKER_ORGNAVN,\n   TILSKUDDSMOTTAKER_ORGNR. Using the English key/value/retning names returns HTTP 400.\n4. Parse the search response: {totaltAntallTilskudd, tilskudd:[...], sokFra:[...]}.\n   Each grant has tilskuddsmottaker.rolleinnehaver.navn / .organisasjonsnummer,\n   fylke, kommune, tilskuddsbelop (string NOK), tilskuddsperiode, and\n   tildeling.{kompensasjonFasteUunngaeligeKostnader, kompensasjonTaptVarelager}.\n5. Pagination is cursor-based, not page numbers: pass the sokFra array from the\n   previous response back in the next request body to fetch the following page.\n6. To enrich a recipient with full company data (address, industry code,\n   bankruptcy status), take its organisasjonsnummer and look it up via\n   brreg.enhetsregister (GET /enheter/{orgnr}).\n7. No rate-limit headers are documented; this is a static historical dataset,\n   so cache aggressively. Send the project User-Agent on every request.",
			"composes_with": [
				"brreg.enhetsregister"
			],
			"last_verified": "2026-07-01T09:21:30.000Z",
			"source_urls": [
				"https://data.brreg.no/kompensasjonsordning/api/tilskudd/filter",
				"https://data.brreg.no/kompensasjonsordning/api/tilskudd/statistikk",
				"https://data.brreg.no/kompensasjonsordning/api/tilskudd/tilskuddsperioder",
				"https://dataservice-catalog.fellesdatakatalog.digdir.no/data-services/60128a94df652267de6178d7",
				"https://www.brreg.no/bruke-data-fra-bronnoysundregistrene/datasett-og-api/"
			],
			"probe": {
				"method": "GET",
				"url": "https://data.brreg.no/kompensasjonsordning/api/tilskudd/statistikk",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "brreg.nokkeltall-arsregnskap",
			"name": "Nøkkeltall fra årsregnskapet",
			"provider": "Brønnøysundregistrene",
			"provider_org_nr": "974760673",
			"category": "business",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "The open part requires no authentication. The closed part (almost all figures from the last three years, including group accounts) is restricted to public authorities.",
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://data.brreg.no/regnskapsregisteret/regnskap/",
			"docs_url": "https://data.brreg.no/regnskapsregisteret/api/swagger-ui/index.html",
			"tags": [
				"brreg",
				"accounting",
				"financials",
				"company",
				"norway",
				"opendata"
			],
			"description": "REST API from the Brønnøysund Register Centre serving accounting figures from submitted annual financial statements for Norwegian companies that follow the ordinary balance-sheet layout under the Accounting Act. Updated five days a week. Has an open part (key figures from the latest annual accounts, available to everyone) and a closed part (almost all figures from the last three years, including group accounts, restricted to public authorities). Originally built for R&D, no authentication for the open part.",
			"when_to_use": "User asks for a Norwegian company's financial key figures or annual-accounts data by organization number: \"regnskapstall for orgnr 923609016\", \"nøkkeltall fra årsregnskapet til Equinor\", \"fetch the latest annual accounts for a Norwegian company\", \"egenkapital og gjeld for et selskap\", \"revenue and equity from a company's annual report\". Resolve a company name to an org number first via brreg.enhetsregister.",
			"when_not_to_use": "Not for banks or insurance companies — their figures are not available here. Not for company status (bankruptcy, deregistration) — use brreg.enhetsregister instead. The closed part (full three-year and group figures) is restricted to public authorities and not openly accessible. This is a temporary R&D API and may be replaced by a permanent one.",
			"sample_request": "# Open part: fetch annual accounting figures for a company by org number\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  -H 'Accept: application/json' \\\n  'https://data.brreg.no/regnskapsregisteret/regnskap/923609016'",
			"agent_recipe": "1. If the user gave a company name (not an org number), first call\n   `brreg.enhetsregister` to resolve it to a 9-digit organisasjonsnummer.\n2. GET `https://data.brreg.no/regnskapsregisteret/regnskap/{orgnr}` with an\n   `Accept: application/json` header. The response is a JSON array — one element per\n   submitted annual account (most recent years first).\n3. Each element has `regnskapsperiode` (fraDato/tilDato), `valuta`, and nested\n   `egenkapitalGjeld` (equity and liabilities) and `resultatregnskapResultat`\n   (income statement) objects with summed figures.\n4. Banks and insurance companies are absent — handle an empty array gracefully.\n5. Companies with no submitted accounts return HTTP 404; treat as \"no data\" rather\n   than an error.",
			"composes_with": [
				"brreg.enhetsregister"
			],
			"last_verified": null,
			"source_urls": [
				"https://dataservice-catalog.fellesdatakatalog.digdir.no/data-services/5f461df34e59ff37b6caea17"
			],
			"probe": {
				"method": "GET",
				"url": "https://data.brreg.no/regnskapsregisteret/regnskap/923609016",
				"accept": "application/json",
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "bufdir.kommunemonitor",
			"name": "Bufdir Kommunemonitor API",
			"provider": "Barne-, ungdoms- og familiedirektoratet",
			"provider_org_nr": "986128433",
			"category": "statistics",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://statistikk.bufdir.no/api/",
			"docs_url": "https://www.bufdir.no/kommunemonitor/",
			"tags": [
				"barnevern",
				"kommunemonitor",
				"norway",
				"municipalities",
				"child-welfare",
				"historical",
				"gov"
			],
			"description": "Open REST API from Bufdir (Norwegian Directorate for Children, Youth and Family Affairs) that exposes child welfare (barnevern) and child poverty indicators for Norwegian municipalities, districts, and counties. Returns JSON datasets covering indicators from 2015 onwards with support for filtering by indicator, year, municipality, district, and county. No authentication required.",
			"when_to_use": "Use when you need child welfare or child poverty statistics for Norwegian municipalities: \"barnevern statistikk for kommune\", \"kommunemonitor barnevern\", \"indicators for municipality\", \"child welfare indicators Norway\", \"sammenligne kommuner barnevern\", \"fattigdom barn i kommunen\". Also use when building dashboards or comparisons across Norwegian municipalities on child welfare services.",
			"when_not_to_use": null,
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://statistikk.bufdir.no/api/indicators'",
			"agent_recipe": "1. Call GET https://statistikk.bufdir.no/api/indicators to list all available\n   indicators with their id, title, type, and units.\n2. To look up municipal/county units, call the units endpoint (if available)\n   to get unit ids for a named municipality.\n3. Filter the data endpoint with query parameters such as ?indicator=<id>&municipality=<id>&year=<year>\n   to retrieve specific indicator data.\n4. The response is paginated — check meta.pagination.pageCount and iterate\n   pages using a page query parameter if needed.\n5. All timestamps are UTC. Data covers 2015 onwards.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://dataservice-catalog.fellesdatakatalog.digdir.no/data-services/6593ff6262c1e74d12c69264",
				"https://statistikk.bufdir.no/api/indicators"
			],
			"probe": {
				"method": "GET",
				"url": "https://statistikk.bufdir.no/api/indicators",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "dfs.skyteanlegg-wfs",
			"name": "Skyteanlegg DFS WFS",
			"provider": "Det frivillige Skyttervesen",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.skytebaner_dfs",
			"docs_url": "https://kartkatalog.geonorge.no/",
			"tags": [
				"geonorge",
				"dfs",
				"skyting",
				"vector",
				"norway"
			],
			"description": "WFS service delivering the \"Skyteanlegg DFS\" dataset: shooting ranges and shooting lanes from the register of Det Frivillige Skyttervesen (the Norwegian voluntary shooting organisation). Served as OGC WFS 2.0.0 via Geonorge with Skyteanlegg and Skytebane feature types.",
			"when_to_use": "User needs the locations of DFS shooting ranges/lanes as vector features: \"skyteanlegg DFS\", \"skytebaner kart\", \"shooting ranges Norway\", \"hvor ligger skytebanen\". Use the WFS when you need queryable geometry/attributes rather than a rendered map image.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": "1. Call GetCapabilities at the base_url to list FeatureTypes (app:Skyteanlegg, app:Skytebane).\n2. Issue a GetFeature request with the chosen typeName and an output format (GML or\n   application/json) to fetch range/lane geometry and attributes.\n3. For a rendered map image instead of vector features, use the matching DFS WMS entry.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wfs.geonorge.no/skwms1/wfs.skytebaner_dfs?Service=WFS&Request=GetCapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.skytebaner_dfs?Service=WFS&Request=GetCapabilities",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "dfs.skyteanlegg-wms",
			"name": "Skyteanlegg DFS WMS",
			"provider": "Det frivillige Skyttervesen",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://wms.geonorge.no/skwms1/wms.skytebaner_dfs",
			"docs_url": null,
			"tags": [
				"geonorge",
				"wms",
				"dfs",
				"skytebaner",
				"norway"
			],
			"description": "WMS map service exposing shooting ranges and shooting facilities (skyteanlegg og skytebaner) from the register of the Norwegian Voluntary Marksmanship Organisation (Det Frivillige Skyttervesen). Served via Geonorge as standard OGC WMS 1.3.0 raster tiles; open data, no API key.",
			"when_to_use": "Use when the user needs the location of shooting ranges or shooting facilities in Norway on a map: \"hvor er skytebanene\", \"vis skyteanlegg DFS\", \"skytebaner i nærheten\", \"DFS shooting ranges map layer\", or to overlay marksmanship-club facilities in a GIS/web map.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wms.geonorge.no/skwms1/wms.skytebaner_dfs?service=wms&version=1.3.0&request=getcapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://wms.geonorge.no/skwms1/wms.skytebaner_dfs?service=wms&version=1.3.0&request=GetCapabilities",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "dibk.planleggingigangsatt-ogc",
			"name": "Planområde for planlegging igangsatt – OGC API-Features (DiBK)",
			"provider": "Direktoratet for byggkvalitet",
			"provider_org_nr": "974760223",
			"category": "property",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No API key required. Open OGC API - Features service over HTTPS; returns JSON by default and GeoJSON from the collection /items endpoints (f=json). Send the project User-Agent on every request.",
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://plandata.ft.dibk.no/services/rest/planleggingigangsatt",
			"docs_url": "https://plandata.ft.dibk.no/services/rest/planleggingigangsatt/?f=html",
			"tags": [
				"dibk",
				"arealplan",
				"planlegging",
				"regulering",
				"pbl",
				"planomrade",
				"ogc-api-features",
				"geojson",
				"nlod"
			],
			"description": "OGC API - Features service from the Norwegian Building Authority (DiBK) exposing land-use planning that has been initiated (\"planlegging igangsatt\") under the Planning and Building Act (plan- og bygningsloven). Serves two RESTful JSON / GeoJSON feature collections: `arealplan` (Arealplan — the plan data object for initiated planning) and `planomrade` (Planområde — geometric areas plus metadata derived from notices of regulation start, ~3662 features), each queryable by bounding box. Open, no API key.",
			"when_to_use": "Agent needs to know where land-use planning has just been started in Norway, at a point or over an area: \"er det varslet planoppstart her\", \"planlegging igangsatt i området\", \"varsel om oppstart av regulering\", \"nye reguleringsplaner under arbeid\", \"planned regulation starting near this coordinate\". Query the `planomrade` collection's /items endpoint with a bbox to get the plan areas and their metadata (plannavn, plantype, nasjonalArealplanId, kunngjøringsdatoVarselOmPlanoppstart, forslagsstillertype).",
			"when_not_to_use": "Don't use this for adopted / legally binding zoning plans (vedtatte reguleringsplaner) — this dataset only covers planning that has been *initiated* (varsel om planoppstart), so a feature here means a plan process has started, not that a plan is in force. Don't look up a single address or cadastre directly: resolve it to coordinates / a bbox first (geonorge.adresser, geonorge.eiendom), then query the `planomrade` /items endpoint by bbox and read the `plantype` / `plannavn` of the matching plan areas.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://plandata.ft.dibk.no/services/rest/planleggingigangsatt/collections/planomrade/items?limit=10&f=json'",
			"agent_recipe": "1. This is an OGC API - Features service. Start at the landing document\n   (base_url?f=json), then GET /collections?f=json to list the 2 feature\n   collections: `arealplan` (Arealplan — the plan data object for initiated\n   planning) and `planomrade` (Planområde — geometric areas plus metadata\n   from notices of regulation start).\n2. To fetch plan areas over a region, GET\n   /collections/planomrade/items?bbox=minLon,minLat,maxLon,maxLat&f=json\n   (CRS84 / lon,lat order). Use `limit` and the `next` link for paging\n   (the full collection holds ~3662 features).\n3. The response is GeoJSON: iterate `features[]`; geometry is the plan area's\n   polygon and `properties` carry plannavn, plantype, nasjonalArealplanId\n   (planid + kommunenummer), kunngjøringsdatoVarselOmPlanoppstart,\n   forslagsstillertype and lovreferanse, plus a `linkArealplan` link.\n4. To go from a property or address to a bbox, resolve it first via\n   geonorge.adresser (address) or geonorge.eiendom (cadastre), then query the\n   planomrade collection with the resulting bounding box.\n5. Other output formats (f=csv, f=html, f=jsonld) and several CRS (EPSG:25832,\n   25833, 25835, 4258, 4326, 3857) are available via the `f` and `crs`\n   parameters; storage CRS for planomrade is EPSG:25833.",
			"composes_with": [
				"geonorge.adresser",
				"geonorge.eiendom"
			],
			"last_verified": null,
			"source_urls": [
				"https://data.norge.no/api/data-services/e780be5e-11f8-383e-9985-9303b5f9847a",
				"https://plandata.ft.dibk.no/services/rest/planleggingigangsatt/collections/planomrade/items?limit=1&f=json",
				"https://plandata.ft.dibk.no/services/rest/planleggingigangsatt/collections?f=json",
				"https://plandata.ft.dibk.no/services/rest/planleggingigangsatt?f=json"
			],
			"probe": {
				"method": "GET",
				"url": "https://plandata.ft.dibk.no/services/rest/planleggingigangsatt/collections?f=json",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "dibk.reguleringsplaner-wms",
			"name": "Reguleringsplaner (landsdekkende) – WMS (DiBK)",
			"provider": "Direktoratet for byggkvalitet",
			"provider_org_nr": "974760223",
			"category": "property",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": "No authentication or API key required — GetCapabilities returns 200 over HTTPS. The FDK record lists the data under the Norge digitalt-lisens (kartverket.no/.../norge-digitalt-lisens); no SPDX/NLOD code is asserted by the source, so usage terms follow that Norge digitalt licence. Send the project User-Agent on every request.",
			"status": "active",
			"license": "proprietary",
			"base_url": "https://nap.ft.dibk.no/services/wms/reguleringsplaner",
			"docs_url": "https://nap.ft.dibk.no/services/wms/reguleringsplaner/?service=WMS&request=GetCapabilities",
			"tags": [
				"wms",
				"reguleringsplan",
				"arealplan",
				"zoning",
				"land-use",
				"pbl",
				"dibk",
				"planning"
			],
			"description": "Nationwide WMS map service (WMS 1.3.0) serving a landsdekkende kopi of municipal zoning plans (reguleringsplaner) from DiBK's national plan register. A reguleringsplan is a land-use plan map with binding provisions governing use and protection of defined areas, and the basis for which building works may be carried out. Renders map images (image/png and more); layers include Arealformål, Hensynssoner, Bestemmelsesområder and Juridisk linje under Vertikalnivå 1. Open, no API key.",
			"when_to_use": "Use when an agent needs a rendered map of zoning / land-use plans anywhere in Norway: \"reguleringsplan her\", \"arealformål for dette området\", \"vis reguleringsplankart\", \"land-use / zoning plan map\", \"planformål på denne eiendommen\". The service exposes plan layers such as Arealformål (land-use purpose), Hensynssoner and Bestemmelsesområder, and returns map images via WMS GetMap.",
			"when_not_to_use": "This is a cartographic raster WMS — it returns rendered map images, not queryable vector features or plan attribute records. Don't use it to read per-plan attributes, provisions text or plan IDs programmatically; for vector plan data use an OGC API - Features / WFS plan service (e.g. dibk.planleggingigangsatt-ogc for plans under preparation). To go from an address or property to a map extent, resolve coordinates first (geonorge.adresser / geonorge.eiendom) and pass a bbox to GetMap.",
			"sample_request": null,
			"agent_recipe": "1. GET the GetCapabilities URL (`?service=WMS&request=GetCapabilities`) to read\n   the available layers (e.g. `arealformal_vn1` \"Arealformål\", `hensynssoner_vn1`\n   \"Hensynssoner\", `bestemmelsesomrader_vn1` \"Bestemmelsesområder\",\n   `rpjuridisklinje_vn1`) grouped under `vertikalniva_1` \"Vertikalnivå 1\", and\n   the supported CRS list.\n2. Render a map with\n   `request=GetMap&version=1.3.0&layers=<names>&crs=EPSG:25833&bbox=...&width=...&height=...&format=image/png`.\n   image/png is supported (also gif, jpeg, geotiff, svg). The layer-native CRS\n   is EPSG:25833 (UTM 33N); EPSG:25832, EPSG:3857 and CRS:84 are also offered.\n3. This is a nationwide copy of municipal zoning plans; pick a bbox over the\n   area of interest. To turn an address or property into a bbox, resolve it\n   first via geonorge.adresser (address) or geonorge.eiendom (cadastre).\n4. This is a cartographic raster service — for vector/attribute access to plan\n   data use an OGC API - Features / WFS plan service instead.",
			"composes_with": [
				"geonorge.eiendom",
				"geonorge.adresser",
				"dibk.planleggingigangsatt-ogc"
			],
			"last_verified": null,
			"source_urls": [
				"https://data.norge.no/api/data-services/e70c2d0a-ff62-36b6-b0d1-5f4180e5385a",
				"https://nap.ft.dibk.no/services/wms/reguleringsplaner/?service=WMS&request=GetCapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://nap.ft.dibk.no/services/wms/reguleringsplaner/?service=WMS&request=GetCapabilities",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "dibk.sgregister",
			"name": "SGregister – Sentral Godkjenning REST API",
			"provider": "Direktoratet for byggkvalitet (DiBK)",
			"provider_org_nr": "974760223",
			"category": "business",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No API key or authentication required. The API is publicly accessible. Use Accept header to select API version: \"Accept: application/vnd.sgpub.v2\" (version 2 is recommended — \"Vi anbefaler å se bort fra versjon 1 av spesifikasjonen, og heller integrere mot versjon 2.\"). Responses are available in both JSON (.json suffix) and XML (.xml suffix).",
			"status": "active",
			"license": null,
			"base_url": "https://sgregister.dibk.no/api/",
			"docs_url": "https://sgregister.dibk.no/apidocs/index.html",
			"tags": [
				"construction",
				"certification",
				"dibk",
				"norway",
				"building",
				"approval"
			],
			"description": "REST API from the Norwegian Directorate for Building Quality (DiBK) that exposes the national register of construction firms with central approval (\"sentral godkjenning\"). For each organisation number the API returns current approval status, approval period, and the specific function/subject-area/grade combinations the firm is approved for. No authentication is required.",
			"when_to_use": "Use when verifying whether a Norwegian construction firm holds a valid central approval before assigning it as a responsible party in a building application. Trigger phrases: \"er dette foretaket sentralt godkjent?\", \"sjekk sentral godkjenning for org.nr X\", \"finn godkjente foretak\", \"has central approval\", \"lookup construction firm approval Norway\". Also useful when listing approved firms for a given function/subject area.",
			"when_not_to_use": "Not designed for real-time per-request lookups at high volume. The integration guide recommends an overnight batch job to download the full register for offline use. Do not use for general company data (address, ownership) — this register only contains firms with central approval.",
			"sample_request": "curl -sSL \\\n  -H 'Accept: application/vnd.sgpub.v2' \\\n  'https://sgregister.dibk.no/api/enterprises/913455991.json'",
			"agent_recipe": "1. Obtain the Norwegian organisation number (9 digits) for the firm to check.\n   If you only have a firm name, look it up via the Brreg Enhetsregisteret first.\n2. Call GET https://sgregister.dibk.no/api/enterprises/{org_nr}.json\n   with header `Accept: application/vnd.sgpub.v2+json`.\n3. The response wraps the payload under a top-level key (`enterprise` on the\n   current live API, `dibk-sgdata` in the harvested sample — both contain the\n   same children). Below \"<root>\" refers to that wrapper.\n4. Check `<root>.status.approved` (boolean). If true, the firm is currently\n   approved. Also check `<root>.status.approval_period_to` for the expiry date.\n5. Inspect `<root>.valid_approval_areas[]` for the list of approved\n   function+subject_area+grade combinations (e.g. \"Prosjekterende\" / \"Konstruksjonssikkerhet\" / grade 3).\n6. A 404 response means the org number is not in the SGregister (no central approval,\n   or the number is wrong). A 200 with `approved: false` means a past or revoked approval.\n7. The approval certificate PDF URL is in `<root>.status.approval_certificate`.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://dibk.atlassian.net/wiki/spaces/FB/pages/2239299585/Integrasjon+mot+Sentral+Godkjenning+-+SGregister",
				"https://sgregister.dibk.no/api/enterprises/913455991.json",
				"https://www.dibk.no/sentral-godkjenning"
			],
			"probe": {
				"method": "GET",
				"url": "https://sgregister.dibk.no/api/enterprises/913455991.json",
				"accept": "application/vnd.sgpub.v2",
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "digdir.begrepshoster",
			"name": "Felles datakatalogs begrepshøster (Concept Harvester)",
			"provider": "Digitaliseringsdirektoratet",
			"provider_org_nr": "991825827",
			"category": "other",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "Open access, no authentication. Concepts are published under the Norwegian Licence for Open Government Data (NLOD 2.0); access rights are marked PUBLIC in the FDK record. Use HTTP content negotiation (Accept: text/turtle, application/ld+json or application/rdf+xml) to choose the RDF serialization.",
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://concepts.fellesdatakatalog.digdir.no",
			"docs_url": null,
			"tags": [
				"digdir",
				"concepts",
				"skos",
				"fellesdatakatalog",
				"rdf",
				"nlod"
			],
			"description": "REST API from Digitaliseringsdirektoratet that exposes the harvested concept collections behind Norway's National Data Catalog (data.norge.no). Serves concepts (terms, definitions, relations) as RDF — Turtle, JSON-LD or RDF/XML — conforming to SKOS-AP-NO v2.0. Open data under NLOD 2.0, no authentication.",
			"when_to_use": "Use when an agent needs Norwegian public-sector concept definitions and terminology as machine-readable SKOS RDF: \"hent begrepsdefinisjon fra felles datakatalog\", \"slå opp et begrep og dets definisjon\", \"list concepts in a collection\", \"fetch term relations as JSON-LD/Turtle\". Useful for grounding domain vocabulary and linking datasets to standardized concepts.",
			"when_not_to_use": null,
			"sample_request": "# Fetch a concept collection as JSON-LD (replace {id} with a known collection id).\ncurl -sSL \\\n  -H 'Accept: application/ld+json' \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://concepts.fellesdatakatalog.digdir.no/collections/{id}'",
			"agent_recipe": "1. Determine the concept collection id or concept id you need (collections are\n   keyed by publisher; ids appear in data.norge.no concept pages).\n2. Choose an RDF serialization via the Accept header: text/turtle,\n   application/ld+json, or application/rdf+xml.\n3. GET /collections/{id} for a whole collection, or /concepts/{id} for a\n   single concept.\n4. Parse the SKOS-AP-NO v2.0 RDF: prefLabel, definition, altLabel and\n   concept relations (broader/narrower/related).\n5. Consult the OpenAPI spec in `openapi_spec_url` for exact path templates,\n   parameters and the available server environments (prod/staging/demo).",
			"composes_with": [],
			"last_verified": "2026-05-31T12:00:00.000Z",
			"source_urls": [
				"https://dataservice-catalog.fellesdatakatalog.digdir.no/data-services/6682afbd42440f0801f5fcb3"
			],
			"probe": {
				"method": "GET",
				"url": "https://raw.githubusercontent.com/Informasjonsforvaltning/fdk-concept-harvester/main/src/main/resources/specification/specification.yaml",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "digdir.data-norge-sparql",
			"name": "SPARQL-endepunkt til katalogene på Data.norge.no",
			"provider": "Digitaliseringsdirektoratet (Digdir)",
			"provider_org_nr": "991825827",
			"category": "other",
			"api_style": "other",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://sparql.fellesdatakatalog.digdir.no/",
			"docs_url": "https://data.norge.no/nb/sparql",
			"tags": [
				"sparql",
				"rdf",
				"linked-data",
				"gov",
				"registry",
				"fdk",
				"open-data"
			],
			"description": "SPARQL endpoint for the Norwegian national data catalog (Data.norge.no), operated by Digitaliseringsdirektoratet (Digdir). Allows structured queries over datasets, concepts, APIs, and information models published by 125+ Norwegian public organisations. Returns results in W3C SPARQL Results JSON format. No authentication required.",
			"when_to_use": "Use when an agent needs to query or explore Norwegian public sector open data by structured graph queries: \"hvilke datasett finnes om eiendom\", \"list all APIs published by Kartverket\", \"find all DCAT datasets tagged environment\", \"get concepts related to 'begrep'\". Ideal for federated discovery across 125+ organisations in a single query.",
			"when_not_to_use": null,
			"sample_request": "curl -sSL \\\n  -H 'Accept: application/sparql-results+json' \\\n  'https://sparql.fellesdatakatalog.digdir.no/?query=SELECT+%2A+WHERE+%7B+%3Fs+%3Fp+%3Fo+%7D+LIMIT+5&format=json'",
			"agent_recipe": "1. Construct a SPARQL SELECT query using DCAT/SKOS/ADMS vocabularies appropriate\n   to the user's information need. For dataset discovery, try:\n     SELECT ?title ?publisher WHERE {\n       ?ds a dcat:Dataset ;\n           dct:title ?title ;\n           dct:publisher ?pub .\n       ?pub foaf:name ?publisher .\n       FILTER(lang(?title) = \"nb\")\n     } LIMIT 20\n2. URL-encode the query string and issue a GET request to\n   https://sparql.fellesdatakatalog.digdir.no/?query=<encoded>&format=json\n   with header Accept: application/sparql-results+json.\n3. Parse the W3C SPARQL Results JSON: response.results.bindings is a list of\n   result rows; each variable from the SELECT clause is a key, with .value\n   holding the string value.\n4. Return results to the user in human-readable form. For Norwegian content,\n   prefer ?title with lang=\"nb\" over \"nn\" or \"en\" unless the user specifies.\n5. Common prefixes: PREFIX dcat: <http://www.w3.org/ns/dcat#>\n                     PREFIX dct: <http://purl.org/dc/terms/>\n                     PREFIX foaf: <http://xmlns.com/foaf/0.1/>",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://data.norge.no/nb/sparql",
				"https://dataservice-catalog.fellesdatakatalog.digdir.no/data-services/63297099e619404040efd07b"
			],
			"probe": {
				"method": "GET",
				"url": "https://sparql.fellesdatakatalog.digdir.no/?query=SELECT+%2A+WHERE+%7B+%3Fs+%3Fp+%3Fo+%7D+LIMIT+1&format=json",
				"accept": "application/sparql-results+json",
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "digdir.organisasjonskatalog",
			"name": "Felles datakatalogs organisasjonskatalog (Organization Catalog)",
			"provider": "Digitaliseringsdirektoratet",
			"provider_org_nr": "991825827",
			"category": "business",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "Open access, no authentication. Public data published under the Norwegian Licence for Open Government Data (NLOD 2.0); access rights are marked PUBLIC in the FDK record.",
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://organization-catalog.fellesdatakatalog.digdir.no",
			"docs_url": "https://informasjonsforvaltning.github.io/",
			"tags": [
				"digdir",
				"organization",
				"fellesdatakatalog",
				"registry",
				"gov",
				"nlod"
			],
			"description": "REST API from Digitaliseringsdirektoratet that exposes the organization catalogue underpinning Norway's National Data Catalog (Felles datakatalog / data.norge.no). Returns normalized public-sector organization records (organization number, name, org type, orgPath hierarchy, sector and industry codes) keyed on the Brønnøysund organisasjonsnummer. Open data under NLOD 2.0, no authentication.",
			"when_to_use": "Use when an agent needs to resolve or enrich a Norwegian public-sector organization by its organisasjonsnummer: \"hent organisasjonsnavn for orgnr\", \"hva er orgPath for denne etaten?\", \"slå opp offentlig virksomhet i felles datakatalog\", \"look up an agency's hierarchy/sector code\". It backs the publisher metadata shown across data.norge.no.",
			"when_not_to_use": null,
			"sample_request": "curl -sSL \\\n  -H 'Accept: application/json' \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://organization-catalog.fellesdatakatalog.digdir.no/organizations/991825827'",
			"agent_recipe": "1. Take the 9-digit Norwegian organisasjonsnummer you want to resolve.\n2. GET /organizations/{orgnr} (e.g. .../organizations/991825827) with\n   `Accept: application/json`.\n3. Parse the response: `organizationId`, `name`/`prefLabel`, `orgType`,\n   `orgPath` (the /SECTOR/parent/child hierarchy), `sectorCode`,\n   `industryCode`, and `norwegianRegistry` (link back to brreg.no).\n4. To traverse a sub-tree, use GET /organizations/orgpath/{org} with an\n   orgPath segment.\n5. For full legal-entity detail beyond this catalogue, follow the\n   `norwegianRegistry` link into the Brønnøysund Enhetsregister.\n6. Validate paths and response schema against the OpenAPI spec referenced in\n   `openapi_spec_url`.",
			"composes_with": [],
			"last_verified": "2026-05-31T12:00:00.000Z",
			"source_urls": [
				"https://dataservice-catalog.fellesdatakatalog.digdir.no/data-services/6682567042440f0801f5fcaf"
			],
			"probe": {
				"method": "GET",
				"url": "https://organization-catalog.fellesdatakatalog.digdir.no/organizations/991825827",
				"accept": "application/json",
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "dirmin.bergrettigheter-wms",
			"name": "Bergrettigheter WMS",
			"provider": "Direktoratet for mineralforvaltning",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://kart.dirmin.no/dirmin/services/Bergrettigheter/MapServer/WmsServer",
			"docs_url": null,
			"tags": [
				"mining",
				"wms",
				"gov",
				"dirmin"
			],
			"description": "WMS view service from the Directorate of Mining (Direktoratet for mineralforvaltning) showing areas covered by mining rights for the state's minerals under the Norwegian Minerals Act §7 — both exploration (UND) and extraction (UTV) rights, with overlapping polygons where several rights cover the same area. Served as WMS 1.3.0; open data, no authentication.",
			"when_to_use": "Use when an agent needs mining-rights areas in Norway rendered as a map overlay: \"bergrettigheter kart\", \"mineralrettigheter WMS\", \"mining claims Norway map\", \"undersøkelses- og utvinningsrett kartlag\". Issue a GetMap request for the Bergrettigheter layer.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://dataservice-catalog.fellesdatakatalog.digdir.no/data-services/c5994122-922b-30ce-b474-c6086269c5dd"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.dirmin.no/dirmin/services/Bergrettigheter/MapServer/WmsServer?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "dmf.mineraluttak-wms",
			"name": "Mineraluttak WMS",
			"provider": "Direktoratet for mineralforvaltning",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": "No authentication required. Standard OGC WMS service hosted on ArcGIS MapServer.",
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://kart.dirmin.no/dirmin/services/UttaksregisterDMF/MapServer/WmsServer",
			"docs_url": "https://kart.dirmin.no/dirmin/services/UttaksregisterDMF/MapServer/WmsServer?request=GetCapabilities&service=WMS",
			"tags": [
				"minerals",
				"mining",
				"extraction",
				"wms",
				"geonorge"
			],
			"description": "OGC WMS map service from the Norwegian Directorate of Mining (DMF) showing the last-known activity status of registered mineral extraction sites in Norway, grouped by product type (construction aggregates, industrial minerals, metallic ore and natural stone). Returns map images (WMS_SRVC); no authentication.",
			"when_to_use": "User needs a map layer of mineral extraction sites in Norway by product group: \"vis mineraluttak på kart\", \"kart over pukkverk og grustak\", \"DMF mineral extraction WMS layer\", \"industrimineraler og naturstein kartlag\", \"mineraluttak aktivitetsstatus\". Render as a WMS overlay in a GIS or map client.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": "1. Fetch GetCapabilities (?service=WMS&request=GetCapabilities) to discover the\n   available layer names, supported CRS, and image formats.\n2. Issue a GetMap request with BBOX, WIDTH, HEIGHT, CRS, LAYERS and FORMAT to\n   render the mineral-extraction sites as a map image overlay.\n3. Use GetFeatureInfo (advertised in GetCapabilities — text/plain, text/html,\n   application/json) to inspect an individual extraction site.\n4. To submit corrections/feedback on registrations, use the \"KONTAKT OSS\" form\n   at https://minit.dirmin.no/kart (per the service provider's note).",
			"composes_with": [],
			"last_verified": "2026-05-31T12:00:00.000Z",
			"source_urls": [
				"https://kart.dirmin.no/dirmin/services/UttaksregisterDMF/MapServer/WmsServer?request=GetCapabilities&service=WMS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.dirmin.no/dirmin/services/UttaksregisterDMF/MapServer/WmsServer?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "dsb.brannalarmsentraler",
			"name": "Brannalarmsentraler WFS (110-sentraler og distrikter)",
			"provider": "Direktoratet for samfunnssikkerhet og beredskap",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.brannalarmsentraler",
			"docs_url": null,
			"tags": [
				"brannvesen",
				"110-sentral",
				"emergency",
				"fire",
				"wfs",
				"ogc",
				"gov",
				"dsb",
				"geonorge"
			],
			"description": "OGC WFS 2.0.0 service exposing the locations and district boundaries of Norwegian fire alarm centres (\"110-sentraler\"). Data origin is DSB (Direktoratet for samfunnssikkerhet og beredskap); the WFS is hosted by Kartverket (Norwegian Mapping Authority) at wfs.geonorge.no. Three feature types are available: Sentral110 (centre point locations), Distrikt110 (district polygons), and DistriktGrense110 (district boundary lines). No authentication required.",
			"when_to_use": "Use when an agent needs to identify the responsible 110-sentral (fire alarm centre) for a given Norwegian coordinate, municipality, or address; to list all Norwegian emergency fire dispatch centres with their geographic coverage; or to support emergency planning and spatial analysis of service boundaries. Typical triggers: \"hvilken 110-sentral dekker denne adressen\", \"brannalarmsentraler kart\", \"finn 110-sentral for koordinat\", \"emergency dispatch boundaries Norway\", \"brannvesen distrikter\".",
			"when_not_to_use": "This service provides static geometric data only — the dataset shows localization of fire alarm centres and their districts (\"Sentralene er stedfestet til bygning\"). It does not expose real-time alarm status, active incident feeds, or live dispatch information. Do not use for operational emergency alerting or real-time incident monitoring. For general Norwegian administrative boundaries (kommuner, fylker), use kartverket.admin-enheter instead.",
			"sample_request": "# GetCapabilities\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://wfs.geonorge.no/skwms1/wfs.brannalarmsentraler?service=WFS&request=GetCapabilities&version=2.0.0'\n\n# GetFeature — fetch 2 fire alarm centres (Sentral110)\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://wfs.geonorge.no/skwms1/wfs.brannalarmsentraler?service=WFS&request=GetFeature&version=2.0.0&typeName=app:Sentral110&count=2'",
			"agent_recipe": "1. **Discover feature types** — issue a GetCapabilities request to confirm\n   the three available types: app:Distrikt110, app:DistriktGrense110,\n   app:Sentral110.\n   GET https://wfs.geonorge.no/skwms1/wfs.brannalarmsentraler?service=WFS&request=GetCapabilities&version=2.0.0\n\n2. **List all 110-centres** — fetch all Sentral110 features to get names,\n   point locations, and municipality of each fire alarm centre:\n   GET https://wfs.geonorge.no/skwms1/wfs.brannalarmsentraler?service=WFS&request=GetFeature&version=2.0.0&typeName=app:Sentral110\n   Each feature returns app:navn (name), app:lokalisering (municipality),\n   app:posisjon (GML Point in EPSG:4258), and app:opphav (data origin = DSB).\n\n3. **Find the district for a coordinate** — use a WFS spatial filter with\n   INTERSECTS or WITHIN to find which Distrikt110 polygon contains a given\n   point (lon, lat in EPSG:4258). Example POST body (KVP alternative):\n   GET ...?service=WFS&request=GetFeature&version=2.0.0&typeName=app:Distrikt110&CQL_FILTER=INTERSECTS(område,POINT(10.75%2059.91))\n   Note: KVP CQL_FILTER support depends on the server; prefer OGC XML POST\n   filter for production use.\n\n4. **Fetch district boundaries** — DistriktGrense110 provides the boundary\n   lines (curves) rather than filled polygons (Distrikt110 provides the\n   filled surface). Use DistriktGrense110 for cartographic rendering of\n   boundaries without fill.\n\n5. **Compose with admin-enheter** — to map a municipality (kommunenummer)\n   to its responsible 110-sentral, first look up the municipality geometry\n   via kartverket.admin-enheter, then perform a spatial intersection against\n   Distrikt110 features.\n\n6. **CRS** — default CRS is EPSG:4258 (ETRS89 geographic lat/lon). Request\n   EPSG:4326 or EPSG:25832/25833 via the srsName parameter if needed.\n   Example: &srsName=urn:ogc:def:crs:EPSG::4326",
			"composes_with": [],
			"last_verified": "2026-05-22T07:13:21.000Z",
			"source_urls": [
				"https://wfs.geonorge.no/skwms1/wfs.brannalarmsentraler?service=WFS&request=DescribeFeatureType&version=2.0.0&typeName=app:Sentral110",
				"https://wfs.geonorge.no/skwms1/wfs.brannalarmsentraler?service=WFS&request=GetCapabilities&version=2.0.0",
				"https://wfs.geonorge.no/skwms1/wfs.brannalarmsentraler?service=WFS&request=GetFeature&version=2.0.0&typeName=app:Sentral110&count=2"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.brannalarmsentraler?service=WFS&request=GetCapabilities&version=2.0.0",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "dsb.brannalarmsentraler-wfs",
			"name": "Brannalarmsentraler WFS",
			"provider": "Direktoratet for samfunnssikkerhet og beredskap",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.brannalarmsentraler?",
			"docs_url": null,
			"tags": [
				"dsb",
				"wfs",
				"geonorge",
				"emergency",
				"norway"
			],
			"description": "WFS (GML 3.2.1) service exposing the locations of Norway's fire alarm central stations (\"110-sentralene\") and their districts, as feature types Sentral110, Distrikt110 and DistriktGrense110. Served via Geonorge; open, no authentication.",
			"when_to_use": "User asks for the location or districts of Norwegian fire alarm centrals / 110-centrals: \"hvor ligger 110-sentralene\", \"brannalarmsentraler i Norge\", \"110-distrikter kart\", \"fire alarm central locations Norway\", or wants the raw GML/WFS features for GIS analysis.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wfs.geonorge.no/skwms1/wfs.brannalarmsentraler?service=wfs&request=getcapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.brannalarmsentraler?service=WFS&request=GetCapabilities",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "dsb.brannstasjoner-wfs",
			"name": "Brannstasjoner WFS",
			"provider": "Direktoratet for samfunnssikkerhet og beredskap",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-1.0",
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.brannstasjoner",
			"docs_url": "https://wfs.geonorge.no/skwms1/wfs.brannstasjoner?request=GetCapabilities&service=WFS",
			"tags": [
				"dsb",
				"wfs",
				"geonorge",
				"emergency",
				"fire",
				"norway"
			],
			"description": "WFS (GML 3.2.1) service from DSB exposing the locations of every fire station and fire-service depot in Norway as the feature type `app:Brannstasjon`. Attribute data is based on annual reporting from the country's fire services to DSB; positional quality varies. Served via Geonorge; open, no authentication.",
			"when_to_use": "Use to fetch the locations of Norwegian fire stations and depots for mapping, response-planning or coverage analysis: \"brannstasjoner i Norge\", \"fire station locations Norway WFS\", \"hvor ligger brannstasjonene\", \"brannvesenets depoter\". Call GetCapabilities, then GetFeature on `app:Brannstasjon` (optionally with a BBOX) to retrieve station features as GML.",
			"when_not_to_use": null,
			"sample_request": "curl -H 'User-Agent: your-app/1.0 (+https://your-site.example)' 'https://wfs.geonorge.no/skwms1/wfs.brannstasjoner?service=WFS&request=GetFeature&version=2.0.0&typeNames=app:Brannstasjon&count=10'",
			"agent_recipe": "1. GET the GetCapabilities URL (`?service=WFS&request=GetCapabilities`) to confirm\n   the feature type (`app:Brannstasjon`), supported CRS (default EPSG:4258) and the\n   GML 3.2.1 output format.\n2. Issue `REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=app:Brannstasjon` with an\n   optional `BBOX=` and `SRSNAME=` to retrieve fire-station features. The Geonorge\n   WFS 2.0 server reports `numberReturned=\"0\"` by schema-compat convention even when\n   features are present — count the returned `wfs:member` elements instead.\n3. Parse the returned GML; positional quality is variable and attributes come from\n   annual fire-service reporting, so treat as reference rather than authoritative\n   dispatch data.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wfs.geonorge.no/skwms1/wfs.brannstasjoner?request=GetCapabilities&service=WFS"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.brannstasjoner?service=WFS&request=GetCapabilities",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "dsb.dsb-wfs",
			"name": "DSBs WFS-tjenester",
			"provider": "Direktoratet for samfunnssikkerhet og beredskap",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": "No authentication. The WFS GetCapabilities declares Fees \"none\" and AccessConstraints \"none\". Output is GML only.",
			"status": "active",
			"license": null,
			"base_url": "https://ogc.dsb.no/wfs.ashx",
			"docs_url": "https://ogc.dsb.no/wfs.ashx?SERVICE=WFS&REQUEST=GetCapabilities",
			"tags": [
				"dsb",
				"emergency",
				"fire",
				"civil-protection",
				"tilfluktsrom",
				"wfs",
				"gov"
			],
			"description": "OGC WFS download service from DSB (the Norwegian Directorate for Civil Protection) bundling several civil-protection themes as feature types: fire stations (two variants), 110 emergency-call centres and their districts, inter-municipal fire brigades, Civil Defence district offices and districts, and public bomb shelters (tilfluktsrom). Output is GML. No authentication; GetCapabilities declares Fees \"none\".",
			"when_to_use": "Use when an agent needs Norwegian civil-protection and emergency infrastructure geometry: \"brannstasjoner WFS\", \"110-sentraler\", \"offentlige tilfluktsrom\", \"public bomb shelters Norway\", \"sivilforsvarsdistrikter\", or \"interkommunale brannvesen\". Pick the relevant feature type (layer_NNN) via DescribeFeatureType, then GetFeature. Consult the matching downloadable-dataset metadata for theme details.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://ogc.dsb.no/wfs.ashx?SERVICE=WFS&REQUEST=GetCapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://ogc.dsb.no/wfs.ashx?SERVICE=WFS&REQUEST=GetCapabilities",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "dsb.dsb-wms",
			"name": "DSBs WMS-tjenester",
			"provider": "Direktoratet for samfunnssikkerhet og beredskap",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": "No authentication. The WMS GetCapabilities declares Fees \"none\" and AccessConstraints \"none\". Output formats include PNG, JPEG, PDF, SVG, TIFF, KML/KMZ and JSON.",
			"status": "active",
			"license": null,
			"base_url": "https://ogc.dsb.no/wms.ashx",
			"docs_url": "https://ogc.dsb.no/wms.ashx?SERVICE=WMS&REQUEST=GetCapabilities&version=1.3.0",
			"tags": [
				"dsb",
				"emergency",
				"fire",
				"civil-protection",
				"tilfluktsrom",
				"wms",
				"gov"
			],
			"description": "OGC WMS map service from DSB (the Norwegian Directorate for Civil Protection) bundling several civil-protection themes as rendered map layers: fire stations (two variants), 110 emergency-call centres and their districts, inter-municipal fire brigades, Civil Defence district offices and districts, and public bomb shelters (offentlige tilfluktsrom). Returns rendered tiles (PNG/JPEG/etc.); no authentication, GetCapabilities declares Fees \"none\".",
			"when_to_use": "Use when an agent needs a visual map layer of Norwegian civil-protection and emergency infrastructure: \"brannstasjoner kart\", \"110-sentraler WMS\", \"offentlige tilfluktsrom\", \"public bomb shelters Norway map\", \"sivilforsvarsdistrikter\", or \"interkommunale brannvesen\". Pick the relevant layer (layer_NNN) from GetCapabilities, then GetMap. For the downloadable feature geometry use the DSB WFS entry instead. Consult the matching downloadable-dataset metadata for theme details.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://ogc.dsb.no/wms.ashx?SERVICE=WMS&REQUEST=GetCapabilities&version=1.3.0"
			],
			"probe": {
				"method": "GET",
				"url": "https://ogc.dsb.no/wms.ashx?SERVICE=WMS&REQUEST=GetCapabilities&version=1.3.0",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "dsb.iksbrannvesen-wfs",
			"name": "Interkommunale brannvesen WFS",
			"provider": "Direktoratet for samfunnssikkerhet og beredskap",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-1.0",
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.iksbrannvesen",
			"docs_url": "https://wfs.geonorge.no/skwms1/wfs.iksbrannvesen?request=GetCapabilities&service=WFS",
			"tags": [
				"dsb",
				"wfs",
				"geonorge",
				"emergency",
				"fire",
				"norway"
			],
			"description": "WFS (GML 3.2.1) service from DSB exposing the area boundaries of Norway's inter-municipal fire services (\"interkommunale brannvesen\") as the feature type `app:IKSBrannvesenGrense`. The boundaries follow municipal borders. Served via Geonorge; open, no authentication.",
			"when_to_use": "Use to determine which inter-municipal fire service covers a given area, or to map fire-service jurisdictions: \"interkommunale brannvesen grenser\", \"hvilket brannvesen dekker kommunen\", \"inter-municipal fire service areas Norway WFS\", \"brannvesen ansvarsområde\". Call GetCapabilities, then GetFeature on `app:IKSBrannvesenGrense` to retrieve the boundary polygons as GML.",
			"when_not_to_use": null,
			"sample_request": "curl -H 'User-Agent: your-app/1.0 (+https://your-site.example)' 'https://wfs.geonorge.no/skwms1/wfs.iksbrannvesen?service=WFS&request=GetFeature&version=2.0.0&typeNames=app:IKSBrannvesenGrense&count=10'",
			"agent_recipe": "1. GET the GetCapabilities URL (`?service=WFS&request=GetCapabilities`) to confirm\n   the feature type (`app:IKSBrannvesenGrense`), supported CRS (default EPSG:4258)\n   and the GML 3.2.1 output format.\n2. Issue `REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=app:IKSBrannvesenGrense` to\n   retrieve the inter-municipal fire-service boundary polygons. The Geonorge WFS 2.0\n   server reports `numberReturned=\"0\"` by schema-compat convention even when features\n   are present — count the returned `wfs:member` elements instead.\n3. Parse the returned GML polygons; boundaries follow municipal borders, so a point\n   can be matched to its inter-municipal fire service by point-in-polygon test.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wfs.geonorge.no/skwms1/wfs.iksbrannvesen?request=GetCapabilities&service=WFS"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.iksbrannvesen?service=WFS&request=GetCapabilities",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "dsb.natur-vannskader-forsikring",
			"name": "Natur- og vannskader fra forsikringsselskap",
			"provider": "Direktoratet for samfunnssikkerhet og beredskap",
			"provider_org_nr": "974760983",
			"category": "finance",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No API key or authentication required for the open dataset. The API root path (/) returns HTTP 403, but the OpenAPI spec (/openapi.json) and the open dataset path (/api/v1/datasets/finance_norway_open/...) are reachable unauthenticated. The dataset license is INSPIRE \"noConditionsApply\" (open, no conditions). Send the project User-Agent on every request.",
			"status": "active",
			"license": null,
			"base_url": "https://data-api.dsb.no",
			"docs_url": "https://data-api.dsb.no/docs",
			"tags": [
				"dsb",
				"forsikring",
				"insurance",
				"naturskade",
				"vannskade",
				"claims",
				"finance",
				"statistics",
				"json"
			],
			"description": "Open insurance-claims data from Finance Norway (Finans Norge), served as JSON through the DSB data API: natural-damage and water-damage claims with compensation payouts (erstatningsutbetaling), aggregated per municipality and per year. Each row carries the year, municipality number/name, damage type (e.g. Vannskade, Naturskade), claim count and total compensation amount. Useful for natural-hazard and insurance-loss analysis at the municipality level. Free, no authentication required.",
			"when_to_use": "Agent needs municipality-level counts or compensation payouts for natural- or water-damage insurance claims in Norway over time: \"naturskade erstatning per kommune\", \"vannskader forsikring statistikk\", \"insurance claims natural damage Norway\", \"how much was paid out for storm/flood damage in this municipality\", \"erstatningsutbetaling per kommune og år\". Returns one row per municipality, year and damage type.",
			"when_not_to_use": "Not for real-time natural-hazard alerts or forecasts — use MET/NVE warning services instead. Not for per-property or per-person claims: the data is aggregated to municipality, year and damage type, contains no personal data, and groups with fewer than 5 claims are withheld, so a missing combination may mean either no claims or too few to publish.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://data-api.dsb.no/api/v1/datasets/finance_norway_open/claims_per_municipality_and_year'",
			"agent_recipe": "1. This is a plain REST/JSON API (the DSB data API). GET\n   /api/v1/datasets/finance_norway_open/claims_per_municipality_and_year with the\n   project User-Agent. No auth header is needed. JSON is the default; use the\n   Accept header to request another format.\n2. The response is a JSON array. Each element is an object with: Year (calendar\n   year), MunicipalityNumber (4-digit kommunenummer, leading zeros) and\n   MunicipalityName, TypeCode/TypeDescription (NP = Naturskader - Norsk\n   Naturskadepool, AB = Avbruddstap/boutgifter, VA = Vannskade),\n   NaskCode/NaskDescription (event type for natural damages, only set when\n   TypeCode = NP: e.g. Storm, Flom, Skred, Stormflo, Jordskjelv), ClaimCount\n   (number of claims in the group) and TotalCompensationAmount (estimated total\n   damage cost net of deductible).\n3. Aggregate or filter client-side: sum TotalCompensationAmount or ClaimCount by\n   MunicipalityNumber, by Year, or by TypeCode. Groups with fewer than 5 claims\n   are omitted, so absence of a combination is not the same as zero — treat it as\n   \"no claims or too few to publish\".\n4. To enrich municipality numbers with official names, geometry or current\n   municipality structure, resolve MunicipalityNumber via kartverket.admin-enheter.\n5. This entry is scoped to the open Finance Norway insurance claims dataset. The\n   same DSB data API also hosts other datasets (e.g. fire incidents, hazardous /\n   explosive facilities) under different paths — see /openapi.json for the full\n   list.",
			"composes_with": [
				"kartverket.admin-enheter"
			],
			"last_verified": null,
			"source_urls": [
				"https://data-api.dsb.no/api/v1/datasets/finance_norway_open/claims_per_municipality_and_year",
				"https://data-api.dsb.no/docs#/",
				"https://data-api.dsb.no/openapi.json"
			],
			"probe": {
				"method": "GET",
				"url": "https://data-api.dsb.no/api/v1/datasets/finance_norway_open/claims_per_municipality_and_year",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "dsb.nodnett-dekning-handholdt-wms",
			"name": "Nødnett-dekning håndholdt WMS",
			"provider": "Direktoratet for samfunnssikkerhet og beredskap",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://ogc.dsb.no/wms.ashx",
			"docs_url": "https://ogc.dsb.no/wms.ashx?SERVICE=WMS&REQUEST=GetCapabilities&version=1.3.0",
			"tags": [
				"nodnett",
				"coverage",
				"emergency",
				"gov"
			],
			"description": "WMS view service from the Norwegian Directorate for Civil Protection (DSB) rendering the theoretically computed Nødnett (national emergency communications network) coverage area for a handheld radio terminal as map images. Open and free, no authentication; served from the DSB MapServer endpoint (layer_444).",
			"when_to_use": "Use when an agent needs a map layer of handheld Nødnett radio coverage in Norway: \"nødnett dekning kart\", \"nødnett-dekning håndholdt\", \"emergency network handheld coverage Norway WMS\", \"radioterminal dekningsområde\". Returns rendered WMS images; for vehicle-mounted coverage use the kjøretøymontert layer.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://ogc.dsb.no/wms.ashx?SERVICE=WMS&REQUEST=GetCapabilities&version=1.3.0&LAYERS=layer_444"
			],
			"probe": {
				"method": "GET",
				"url": "https://ogc.dsb.no/wms.ashx?SERVICE=WMS&REQUEST=GetCapabilities&version=1.3.0&LAYERS=layer_444",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "dsb.nodnett-dekning-kjoretoymontert-wms",
			"name": "Nødnett-dekning kjøretøymontert WMS",
			"provider": "Direktoratet for samfunnssikkerhet og beredskap",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://ogc.dsb.no/wms.ashx",
			"docs_url": "https://ogc.dsb.no/wms.ashx?SERVICE=WMS&REQUEST=GetCapabilities&version=1.3.0",
			"tags": [
				"nodnett",
				"coverage",
				"emergency",
				"gov"
			],
			"description": "WMS view service from the Norwegian Directorate for Civil Protection (DSB) rendering the theoretically computed Nødnett (national emergency communications network) coverage area for a vehicle-mounted radio terminal as map images. Open and free, no authentication; served from the DSB map server (layer_443).",
			"when_to_use": "Use when an agent needs a map layer of Nødnett radio coverage in Norway: \"nødnett dekning kart\", \"nødnett-dekning kjøretøymontert\", \"emergency network coverage Norway WMS\", \"radioterminal dekningsområde\". Returns rendered WMS images; for handheld-terminal coverage use the corresponding håndholdt layer.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://ogc.dsb.no/wms.ashx?SERVICE=WMS&REQUEST=GetCapabilities&version=1.3.0&LAYERS=layer_443"
			],
			"probe": {
				"method": "GET",
				"url": "https://ogc.dsb.no/wms.ashx?SERVICE=WMS&REQUEST=GetCapabilities&version=1.3.0&LAYERS=layer_443",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "dsb.sivilforsvarsdistrikter-wfs",
			"name": "Sivilforsvarsdistrikter WFS",
			"provider": "Direktoratet for samfunnssikkerhet og beredskap",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-1.0",
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.sivilforsvarsdistrikter",
			"docs_url": "https://wfs.geonorge.no/skwms1/wfs.sivilforsvarsdistrikter?request=GetCapabilities&service=WFS",
			"tags": [
				"dsb",
				"wfs",
				"geonorge",
				"emergency",
				"sivilforsvar",
				"norway"
			],
			"description": "WFS (GML 3.2.1) service exposing the district structure of the Norwegian Civil Defence (Sivilforsvaret), a state reinforcement resource that is part of DSB, organised into 20 districts. It serves three feature types: `app:Sivilforsvarsdistrikt` (district area surfaces / polygons), `app:SivilforsvarDistriktsgrense` (district boundary lines) and `app:SivilforsvarLokalisering` (district-office point locations). District divisions follow municipal borders. Served via Geonorge; open, no authentication.",
			"when_to_use": "Use to map the Norwegian Civil Defence district structure, find which Sivilforsvar district covers a location, or locate district offices: \"sivilforsvarsdistrikter Norge\", \"civil defence districts Norway WFS\", \"Sivilforsvaret distriktsinndeling\", \"hvilket sivilforsvarsdistrikt dekker stedet\". After GetCapabilities, request `app:Sivilforsvarsdistrikt` for the district area polygons (for point-in-polygon lookup), `app:SivilforsvarLokalisering` for the district-office points, or `app:SivilforsvarDistriktsgrense` for the boundary lines.",
			"when_not_to_use": null,
			"sample_request": "curl -H 'User-Agent: your-app/1.0 (+https://your-site.example)' 'https://wfs.geonorge.no/skwms1/wfs.sivilforsvarsdistrikter?service=WFS&request=GetFeature&version=2.0.0&typeNames=app:Sivilforsvarsdistrikt&count=10'",
			"agent_recipe": "1. GET the GetCapabilities URL (`?service=WFS&request=GetCapabilities`) to confirm\n   the three feature types — `app:Sivilforsvarsdistrikt` (område, gml:Surface\n   polygons), `app:SivilforsvarDistriktsgrense` (grense, gml:Curve boundary lines)\n   and `app:SivilforsvarLokalisering` (posisjon, gml:Point office locations) — the\n   default CRS (EPSG:4258) and the GML 3.2.1 output format.\n2. To find which civil-defence district contains a point, GetFeature on\n   `app:Sivilforsvarsdistrikt` (the district area polygons) and run a\n   point-in-polygon test; district areas follow municipal borders.\n3. GetFeature on `app:SivilforsvarLokalisering` for the district-office point\n   locations, or `app:SivilforsvarDistriktsgrense` for the boundary lines.\n4. The Geonorge WFS 2.0 server reports `numberReturned=\"0\"` by schema-compat\n   convention even when features are present — count the returned `wfs:member`\n   elements instead.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wfs.geonorge.no/skwms1/wfs.sivilforsvarsdistrikter?request=GetCapabilities&service=WFS"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.sivilforsvarsdistrikter?service=WFS&request=GetCapabilities",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "dsb.tilfluktsrom-offentlige-wfs",
			"name": "Offentlige tilfluktsrom WFS",
			"provider": "Direktoratet for samfunnssikkerhet og beredskap",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-1.0",
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.tilfluktsrom_offentlige",
			"docs_url": "https://wfs.geonorge.no/skwms1/wfs.tilfluktsrom_offentlige?request=GetCapabilities&service=WFS",
			"tags": [
				"dsb",
				"wfs",
				"geonorge",
				"emergency",
				"shelter",
				"norway"
			],
			"description": "WFS (GML 3.2.1) service from DSB exposing the locations of Norway's public emergency shelters (\"offentlige tilfluktsrom\") as the feature type `app:Tilfluktsrom`. Public shelters are permanent protective rooms intended to shelter the population during acts of war, built in towns, larger settlements and residential areas. Served via Geonorge; open, no authentication.",
			"when_to_use": "Use to fetch the locations of Norway's public emergency shelters for preparedness, mapping or citizen-facing queries: \"hvor er nærmeste tilfluktsrom\", \"offentlige tilfluktsrom i Norge\", \"public bomb shelters Norway WFS\", \"tilfluktsrom kart\". Call GetCapabilities, then GetFeature on `app:Tilfluktsrom` (optionally with a BBOX) to retrieve shelter point features as GML.",
			"when_not_to_use": null,
			"sample_request": "curl -H 'User-Agent: your-app/1.0 (+https://your-site.example)' 'https://wfs.geonorge.no/skwms1/wfs.tilfluktsrom_offentlige?service=WFS&request=GetFeature&version=2.0.0&typeNames=app:Tilfluktsrom&count=10'",
			"agent_recipe": "1. GET the GetCapabilities URL (`?service=WFS&request=GetCapabilities`) to confirm\n   the feature type (`app:Tilfluktsrom`), supported CRS (default EPSG:4258) and the\n   GML 3.2.1 output format.\n2. Issue `REQUEST=GetFeature&VERSION=2.0.0&TYPENAMES=app:Tilfluktsrom` with an\n   optional `BBOX=` and `SRSNAME=` to retrieve public-shelter features. Note the\n   Geonorge WFS 2.0 server reports `numberReturned=\"0\"` by schema-compat convention\n   even when features are present — count the returned `wfs:member` elements instead.\n3. Parse the returned GML for shelter locations (`app:posisjon`/geometry and shelter\n   attributes). These are public shelters only; private shelters are not included.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wfs.geonorge.no/skwms1/wfs.tilfluktsrom_offentlige?request=GetCapabilities&service=WFS"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.tilfluktsrom_offentlige?service=WFS&request=GetCapabilities",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fhi.statistikk",
			"name": "FHI Statistikk Åpent API",
			"provider": "Folkehelseinstituttet",
			"provider_org_nr": "983744516",
			"category": "health",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://statistikk-data.fhi.no/api/",
			"docs_url": "https://statistikk.fhi.no/api/",
			"tags": [
				"fhi",
				"health",
				"statistics",
				"norway",
				"government",
				"open-data"
			],
			"description": "Open REST API from the Norwegian Institute of Public Health (FHI) providing access to official public health statistics for Norway. No authentication required.",
			"when_to_use": "Use when an agent needs FHI public health statistics data: \"statistikk fra folkehelseinstituttet\", \"helse- og sykdomsdata for Norge\", \"FHI data\", \"public health indicators Norway\", \"helsestatistikk\". Also relevant for querying disease incidence, vaccination coverage, or mortality statistics published by FHI.",
			"when_not_to_use": null,
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://statistikk.fhi.no/api/'",
			"agent_recipe": "1. Browse the API documentation at https://statistikk.fhi.no/api/ to discover\n   available endpoints and statistical datasets.\n2. Use the base URL https://statistikk-data.fhi.no/api/ for data requests\n   (no API key or authentication header required).\n3. Results are aggregated public health statistics — suitable for population-\n   level queries. Never expect patient-level or individual data.\n4. For resolving municipal or geographic codes in responses, chain with\n   ssb.klass to look up official code meanings.\n5. For comparing FHI health data against broader SSB demographic data, chain\n   with ssb.pxwebapi.",
			"composes_with": [
				"ssb.klass",
				"ssb.pxwebapi"
			],
			"last_verified": "2026-05-26T00:00:00.000Z",
			"source_urls": [
				"https://dataservice-catalog.fellesdatakatalog.digdir.no/data-services/63529a8f5b1f9c0ea5ea89b5",
				"https://statistikk.fhi.no/api/"
			],
			"probe": {
				"method": "GET",
				"url": "https://statistikk.fhi.no/api/",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "finanstilsynet.registry",
			"name": "API for Finanstilsynet's registry (Virksomhetsregisteret)",
			"provider": "Finanstilsynet",
			"provider_org_nr": "840747972",
			"category": "finance",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No API key or authentication required. The lookup endpoints (/licence-types, /county-numbers, /country-codes) and the legal-entity GET endpoints return 200 JSON with no key or token (verified 2026-06-17). Send the project User-Agent on every request. Paged endpoints return a maximum of 300 pages of 50 results. A v2 of the spec exists and is recommended by the provider for new consumers; this entry documents the v1 server.",
			"status": "active",
			"license": "proprietary",
			"base_url": "https://api.finanstilsynet.no/registry/v1",
			"docs_url": "https://api.finanstilsynet.no/registry/index.html",
			"tags": [
				"finanstilsynet",
				"finance",
				"licences",
				"registry",
				"virksomhetsregisteret",
				"legal-entities",
				"regulatory",
				"gov"
			],
			"description": "REST API to Finanstilsynet's registry (Virksomhetsregisteret) — the register of legal entities (persons or companies) that hold licences to operate in the Norwegian financial market, or licences approved by Finanstilsynet and used abroad. Each legal entity carries its name, Finanstilsynet id, organisation number, LEI code, registered addresses and a list of active licences (banks, insurers, auditors, payment institutions, investment firms, agents/branches, etc.). Lookup endpoints expose the licence types, county numbers and country codes used in the register. Open, keyless, JSON.",
			"when_to_use": "Use to check whether a Norwegian person or company is authorised by Finanstilsynet and what licences they hold: \"har dette selskapet konsesjon\", \"is this firm licensed in Norway\", \"finn meglere/regnskapsførere/revisorer med tillatelse\", \"which entities hold a payment-services licence\", \"look up a bank/forsikringsselskap in Virksomhetsregisteret\", \"list licence holders in a county\". Search free-text with GET /legal-entities/search?query=, fetch full records by id with GET /legal-entities?ids=, or filter by licence type with GET /legal-entities/filter; resolve the licenceTypes / countyNumbers / countryCodes codes via the matching lookup endpoints.",
			"when_not_to_use": "Don't treat this as a general company register — it only lists entities that Finanstilsynet supervises/licenses, so a missing org number means \"not licensed here\", not \"does not exist\"; for general company data (organisasjonsnummer, address, NACE, status) use brreg.enhetsregister instead. Don't rely on the lookup endpoints for an authoritative reference list: county-numbers and country-codes only return values for which at least one legal entity is currently registered. Don't page indefinitely on broad queries — search/filter return at most 300 pages of 50 results, so not all hits are guaranteed for very broad terms (narrow with countyNumbers, countryCodes or entityType).",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://api.finanstilsynet.no/registry/v1/legal-entities?ids=98973'",
			"agent_recipe": "1. To find an entity, GET /legal-entities/search?query=<name-or-id> (the\n   `query` param is required). The response is a paged envelope\n   {page, total, hitsReturned, legalEntities[]}; page size is 50 and `page`\n   goes up to 300, so use `total` to decide whether to page and narrow broad\n   queries with countyNumbers, countryCodes or entityType (Company|Person).\n2. To fetch full records once you have ids, GET /legal-entities?ids=<id>\n   (repeat `ids` for several; up to 10000). Each LegalEntity has\n   legalEntityId, finanstilsynetId (format FT00000000), organisationNumber\n   (Norwegian companies only), leiCode, name, addresses, and `licences[]`.\n3. Each licence carries its licenceType (code + Norwegian/English name),\n   supervisoryAuthority, registeredDate, serviceProviderType\n   (Licensed|Branch|Agent|SoleProprietorship), services and any\n   borderCrossingActivity — use these to see exactly what an entity is\n   authorised to do and in which countries.\n4. To list everyone with a given licence, GET\n   /legal-entities/filter?licenceTypes=<code> (paged like search). Resolve\n   valid codes first via GET /licence-types; resolve countyNumbers via GET\n   /county-numbers and countryCodes via GET /country-codes.\n5. To enrich a Norwegian company with general registry data (address, NACE,\n   status, roles), take its `organisationNumber` and look it up in\n   brreg.enhetsregister.\n6. No auth/key is needed, but send the project User-Agent. Lookup tables only\n   return values that are actually in use (a county/country with no registered\n   entity is omitted).",
			"composes_with": [
				"brreg.enhetsregister"
			],
			"last_verified": null,
			"source_urls": [
				"https://api.finanstilsynet.no/registry/swagger/v1/swagger.json",
				"https://api.finanstilsynet.no/registry/v1/county-numbers",
				"https://api.finanstilsynet.no/registry/v1/legal-entities?ids=98973",
				"https://data.norge.no/api/data-services/71714342-89e3-3f0b-9ffd-94cd5952f287"
			],
			"probe": {
				"method": "GET",
				"url": "https://api.finanstilsynet.no/registry/v1/county-numbers",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "finanstilsynet.shortsalregister",
			"name": "Short Sale Register API (SSR)",
			"provider": "Finanstilsynet",
			"provider_org_nr": null,
			"category": "finance",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No API key or authentication required. The API is fully public. Attribution to Finanstilsynet is appropriate; Terms and Conditions are at https://ssr.finanstilsynet.no/Home/Terms. No explicit open-data license found in the harvested artifacts.",
			"status": "active",
			"license": "proprietary",
			"base_url": "https://ssr.finanstilsynet.no",
			"docs_url": "https://ssr.finanstilsynet.no/api/v2/",
			"tags": [
				"finanstilsynet",
				"finance",
				"short-selling",
				"regulatory",
				"norway"
			],
			"description": "API for the public Short Sale Register operated by Finanstilsynet (The Financial Supervisory Authority of Norway). Returns public net short positions for instruments where Finanstilsynet is the Relevant Competent Authority (RCA), covering shares, sovereign bonds, and credit default swaps. Historical data covers the past two years. No authentication required.",
			"when_to_use": "Use when you need public short-selling data for Norwegian or Nordic instruments regulated by Finanstilsynet: \"korte posisjoner i aksjer\", \"short positions in Norwegian stocks\", \"who is shorting [company/ISIN]\", \"net short positions above 0.5%\", \"short-selling history for an instrument\". Data is updated every business day at 15:30 CET.",
			"when_not_to_use": "Do not use for instruments where Finanstilsynet is NOT the home authority — the register only covers instruments with Finanstilsynet as RCA. Do not use for positions below 0.5% threshold (they are not included). Do not use for data older than two years — only shortings active within the past two years are delivered.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://ssr.finanstilsynet.no/api/v2/instruments'",
			"agent_recipe": "1. Call GET /api/v2/instruments to retrieve all publicly shorted instruments.\n2. Each element has `isin` (International Securities Identification Number),\n   `issuerName`, and `events` (list of AggregatedShortEvent).\n3. Each event has `date`, `shortPercent` (total), `shares` (total), and\n   `activePositions` (individual position holders with their own date, shortPercent,\n   shares, and positionHolder name).\n4. Only positions >= 0.5% of total shares are included. Data is updated every\n   business day at 15:30 CET.\n5. For company details on an issuer, look up the ISIN issuer via brreg.enhetsregister\n   if you need Norwegian org number or company metadata.\n6. For bulk download, prefer GET /api/v2/instruments/export-json (same JSON shape,\n   browser-download headers) or /api/v2/instruments/export-csv for spreadsheet use.\n7. Historical data only covers the past two years — do not expect older records.",
			"composes_with": [
				"brreg.enhetsregister"
			],
			"last_verified": "2026-05-28T07:18:00.000Z",
			"source_urls": [
				"https://ssr.finanstilsynet.no/",
				"https://ssr.finanstilsynet.no/api/v2/instruments/export-json",
				"https://ssr.finanstilsynet.no/api/v2/openapi.json"
			],
			"probe": {
				"method": "GET",
				"url": "https://ssr.finanstilsynet.no/api/v2/instruments",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fiskeridir.akvakultur-lokaliteter",
			"name": "Akvakultur lokaliteter",
			"provider": "Fiskeridirektoratet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://gis.fiskeridir.no/server/services/fiskeridirWMS_akva/MapServer/WMSServer",
			"docs_url": null,
			"tags": [
				"fiskeridir",
				"aquaculture",
				"wms",
				"geo",
				"norway"
			],
			"description": "WMS map service from the Norwegian Directorate of Fisheries covering aquaculture management data, including approved aquaculture sites (locality midpoints), environmental reports, production areas, positioning data and disease data. Served as OGC WMS 1.3.0 with PNG/JPEG/TIFF/SVG output.",
			"when_to_use": "When an agent needs to display or query Norwegian aquaculture sites on a map: \"vis oppdrettsanlegg på kart\", \"akvakulturlokaliteter WMS\", \"hvor er det fiskeoppdrett langs kysten\", \"aquaculture site locations Norway\". Use as a WMS layer source (GetMap / GetFeatureInfo).",
			"when_not_to_use": "Not a JSON/REST feature API — it returns rendered map tiles, not structured records. For tabular site attributes use the Directorate of Fisheries open data feeds instead. Point markers show only the approximate locality midpoint.",
			"sample_request": "# Discover layers and capabilities\ncurl -sSL 'https://gis.fiskeridir.no/server/services/fiskeridirWMS_akva/MapServer/WMSServer?request=GetCapabilities&service=WMS'",
			"agent_recipe": "1. Call GetCapabilities (`?service=WMS&request=GetCapabilities`) to list available\n   layers (e.g. havbruk_til_havs, akvakultur_stedfesting, akvakultur_miljotilstand)\n   and supported CRS (EPSG:4326, EPSG:25833, EPSG:3857, ...).\n2. To render a map, issue GetMap with `service=WMS&version=1.3.0&request=GetMap`,\n   a `layers=` value, `crs=`, `bbox=`, `width`/`height`, and `format=image/png`.\n3. For attribute lookups at a pixel, use GetFeatureInfo on a queryable layer.\n4. This is a base map layer — overlay it on a basemap in a WMS-capable client.",
			"composes_with": [],
			"last_verified": "2026-05-31T12:00:00.000Z",
			"source_urls": [
				"https://gis.fiskeridir.no/server/services/fiskeridirWMS_akva/MapServer/WMSServer"
			],
			"probe": {
				"method": "GET",
				"url": "https://gis.fiskeridir.no/server/services/fiskeridirWMS_akva/MapServer/WMSServer?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fiskeridir.akvakultur-lokaliteter-wfs",
			"name": "Akvakultur - lokaliteter WFS",
			"provider": "Fiskeridirektoratet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.akvakulturlokaliteter",
			"docs_url": null,
			"tags": [
				"fiskeridir",
				"aquaculture",
				"wfs",
				"geonorge",
				"gov"
			],
			"description": "WFS feature service for Norwegian aquaculture sites, exposing the approximate midpoint of every aquaculture locality in Norway plus the sea areas (polygons) licensed for aquaculture activity, with attributes such as permit status, species, production type, capacity and purpose. Hosted on Geonorge; OGC WFS 2.0.0 returning GML 3.2.",
			"when_to_use": "Use when an agent needs vector geometry/attributes of Norwegian aquaculture sites: \"akvakulturlokaliteter WFS\", \"oppdrettsanlegg posisjon og status\", \"aquaculture site polygons Norway\", \"fiskeoppdrett kapasitet og fiskeart\", \"hent akvakulturflate\" via WFS GetFeature.",
			"when_not_to_use": "Not a rendered map service — for map tiles use the Fiskeridirektoratet aquaculture WMS instead. Point features are only the approximate locality midpoint, not exact installation positions.",
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wfs.geonorge.no/skwms1/wfs.akvakulturlokaliteter?service=wfs&request=getcapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.akvakulturlokaliteter?service=wfs&request=getcapabilities",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "fiskeridir.akvakultur-operasjonell",
			"name": "Operasjonelle akvakulturrettigheter – åpent API (Fiskeridirektoratet)",
			"provider": "Fiskeridirektoratet",
			"provider_org_nr": "971203420",
			"category": "maritime",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No API key required. Open REST API over HTTPS returning JSON; described by an OpenAPI 3.1 definition at /v3/api-docs (Swagger UI at /swagger-ui/index.html). Send the project User-Agent on every request.",
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://api.fiskeridir.no/aqua-operations-public",
			"docs_url": "https://api.fiskeridir.no/aqua-operations-public/swagger-ui/index.html",
			"tags": [
				"fiskeridirektoratet",
				"akvakultur",
				"aquaculture",
				"samdrift",
				"biomasse",
				"openapi",
				"rest",
				"nlod"
			],
			"description": "Fiskeridirektoratet's open REST API for operational aquaculture rights, sharing joint-operation and biomass-cap data (\"Samdrift og Biomassetak\") per aquaculture site. The single data operation, GET `/api/v1/joint-ops/{site-nr}`, returns the operators participating in a joint operation at a given Lokalitetsnummer (locality number) and the validity period, with an optional `at-date` to read the state on a specific day. OpenAPI 3.1, open, no API key.",
			"when_to_use": "Agent needs operational aquaculture-rights data for a specific Norwegian fish-farming site: \"samdrift på denne lokaliteten\", \"biomassetak for lokalitet\", \"hvem deltar i samdriften her\", \"operatører i samdrift\", \"joint operations for this aquaculture site\", \"operasjonelle akvakulturrettigheter\". You must already know the Lokalitetsnummer (locality number); call GET /api/v1/joint-ops/{site-nr}.",
			"when_not_to_use": "Don't use this to look up a site by name, coordinates or operator — there is no search or list endpoint; the only operation requires a known Lokalitetsnummer. Resolve the locality number first via fiskeridir.akvakulturregister (the aquaculture licence register), then query here. Not a source for the farm's geometry, species or licence details either — use fiskeridir.akvakulturregister for that.",
			"sample_request": "# site-nr is the aquaculture Lokalitetsnummer (locality number); obtain one\n# from fiskeridir.akvakulturregister. Replace {site-nr} with the real number.\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://api.fiskeridir.no/aqua-operations-public/api/v1/joint-ops/{site-nr}'",
			"agent_recipe": "1. This is a plain REST API described by OpenAPI 3.1. There is exactly one\n   data operation: GET /api/v1/joint-ops/{site-nr}, where `site-nr` is the\n   aquaculture Lokalitetsnummer (locality number).\n2. You must already have a locality number. There is no search/list endpoint\n   here — obtain a Lokalitetsnummer first from fiskeridir.akvakulturregister\n   (the aquaculture licence register), then call this API with it.\n3. GET\n   https://api.fiskeridir.no/aqua-operations-public/api/v1/joint-ops/<site-nr>\n   to read the joint operation (\"samdrift\") at that site. Add the optional\n   `at-date=YYYY-MM-DD` query param to read the state on a specific day; when\n   omitted, today's date is used.\n4. The JSON response (PublicJointOpsResponse) carries `siteNr`, the `operators`\n   array (each with `legalEntityNr` = organisasjonsnummer and `name`), and the\n   `validFrom`/`validTo` validity dates of the joint operation.\n5. Send the project User-Agent on every request. To inspect the full contract,\n   fetch the OpenAPI definition at /v3/api-docs or open the Swagger UI at\n   /swagger-ui/index.html.",
			"composes_with": [
				"fiskeridir.akvakulturregister"
			],
			"last_verified": null,
			"source_urls": [
				"https://api.fiskeridir.no/aqua-operations-public/v3/api-docs",
				"https://data.norge.no/api/data-services/3ad8c19c-6591-3217-be54-77b616d77f3e"
			],
			"probe": {
				"method": "GET",
				"url": "https://api.fiskeridir.no/aqua-operations-public/v3/api-docs",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fiskeridir.akvakulturregister",
			"name": "Akvakulturregisteret — public API for Norway's aquaculture (fish-farm) register",
			"provider": "Fiskeridirektoratet",
			"provider_org_nr": "971203420",
			"category": "maritime",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://api.fiskeridir.no/pub-aqua/api/v1/",
			"docs_url": "https://api.fiskeridir.no/pub-aqua/api/swagger-ui/index.html",
			"tags": [
				"aquaculture",
				"fishfarming",
				"sites",
				"licenses",
				"register",
				"norway",
				"gov",
				"nlod"
			],
			"description": "Open REST API from the Norwegian Directorate of Fisheries exposing the public Aquaculture Register (Akvakulturregisteret): fish-farm sites (lokaliteter), aquaculture licences (tillatelser), legal entities (operators), geographic areas, and the fish-species code list. Each site record includes coordinates, capacity, water and placement type, production area, municipality and county, plus the active and obsolete licence connections. No authentication required; bulk CSV/XLSX dumps are also offered.",
			"when_to_use": "Use when an agent needs Norwegian aquaculture / fish-farming register data: \"list akvakultur-lokaliteter i kommune 4626\", \"finn oppdrettslokaliteter for laks (Salmon)\", \"hvilke tillatelser har organisasjonsnummer 123456789 i Akvakulturregisteret\", \"show fish-farm sites near these coordinates\", \"look up aquaculture site by lokalitetsnummer 10029\", \"list all licences (tillatelser) in production area 3\", or \"get the official fish-species code list\". Also use to download the full register as a CSV or XLSX dump.",
			"when_not_to_use": null,
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  -H 'Accept: application/json' \\\n  'https://api.fiskeridir.no/pub-aqua/api/v1/sites?range=0-2'",
			"agent_recipe": "1. **List aquaculture sites**: GET /api/v1/sites to retrieve fish-farm\n   localities (lokaliteter). Each record has siteNr (lokalitetsnummer), name,\n   latitude/longitude, capacity, placement and water type, the production area,\n   municipality/county, and `connections` (active licences) plus\n   `obsoleteConnections`.\n2. **Page with `range`**: the `range` query parameter is a 0-indexed,\n   inclusive slice in the format `0-4` (e.g. `?range=0-99` returns the first\n   100). There is no page/per_page parameter — use `range` to walk the dataset.\n3. **Filter sites**: narrow with query parameters, e.g.\n   - `nr=<lokalitetsnummer>` — exact site number\n   - `name=<string>` — site name\n   - `municipality-code=<4 digits>` / `county-code=<2 digits>` — location\n   - `production-area-code=<max 2 digits>` — production area\n   - `species-type=Salmon` — classified species type\n   - `legal-entity-nr=<9 digits>` — operator organisation number\n4. **Licences**: GET /api/v1/licenses (filterable by `license-nr`,\n   `legal-entity-nr`, `species-type`, `municipality-code`, `range`, …) and\n   GET /api/v1/licenses/{license-nr} for a single permit, with sub-resources\n   for capacity-history, decisions, liens, site-connections, and transfers.\n5. **Operators / legal entities**: GET /api/v1/entities (filter by `entity-nr`\n   = 9-digit org number, `name`, `zip-code`, `county-code`, `range`) and\n   GET /api/v1/entities/{entity-nr-id}/sites for an operator's sites. The\n   9-digit organisation numbers cross-reference with brreg.enhetsregister for\n   full company details.\n6. **Reference data**: GET /api/v1/fish-codes returns the species code list\n   (code, latinName, nbNoName, enGbName, faoAlpha3Code); GET /api/v1/areas\n   lists geographic/production areas.\n7. **Bulk export**: for whole-register snapshots use the dump endpoints under\n   /api/v1/dump/ (new-legacy-csv, new-legacy-csv-file, xlsx-file) instead of\n   paging /sites.\n8. No authentication required (the OpenAPI spec declares no security schemes).\n   No documented rate limits — cache responses; register data changes\n   infrequently. Municipality and county codes follow the standard Norwegian\n   SSB codes — resolve names with geonorge.kommuneinfo when needed.",
			"composes_with": [
				"brreg.enhetsregister",
				"geonorge.kommuneinfo"
			],
			"last_verified": "2026-05-31T07:22:00.000Z",
			"source_urls": [
				"https://api.fiskeridir.no/pub-aqua/api/api-docs/api",
				"https://api.fiskeridir.no/pub-aqua/api/terms",
				"https://api.fiskeridir.no/pub-aqua/api/v1/fish-codes",
				"https://api.fiskeridir.no/pub-aqua/api/v1/sites?range=0-2",
				"https://www.fiskeridir.no/Tall-og-analyse/Lisens-for-bruk-av-Fiskeridirektoratets-data"
			],
			"probe": {
				"method": "GET",
				"url": "https://api.fiskeridir.no/pub-aqua/api/v1/fish-codes",
				"accept": "application/json",
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fiskeridir.akvasoknader",
			"name": "Offentlig API for akvakultursøknader",
			"provider": "Fiskeridirektoratet",
			"provider_org_nr": "971203420",
			"category": "maritime",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No authentication required. Data is published under Fiskeridirektoratet's own data licence (info.license.name = \"Lisens for bruk av Fiskeridirektoratets data\", URL https://www.fiskeridir.no/Tall-og-analyse/Lisens-for-bruk-av-Fiskeridirektoratets-data), not a standard CC/NLOD identifier — hence license=proprietary in this entry pending an upstream confirmation that the terms map to NLOD-2.0.",
			"status": "active",
			"license": "proprietary",
			"base_url": "https://api.fiskeridir.no/aqua-portal-api-public",
			"docs_url": "https://api.fiskeridir.no/aqua-portal-api-public/swagger-ui/index.html",
			"tags": [
				"aquaculture",
				"norway",
				"gov",
				"fiskeridir",
				"permits"
			],
			"description": "Public REST API from Fiskeridirektoratet that exposes all aquaculture applications (akvakultursøknader) with associated decisions, statements, and submission data. The API is open and requires no authentication. Note: the API may be changed without prior notice.",
			"when_to_use": "Use when an agent needs to look up aquaculture permit applications in Norway: \"finn akvakultursøknader\", \"status på søknad SP-2024-000123\", \"søknader fra organisasjon 858000742\", \"alle innvilgede søknader om ny lokalitet\", \"hent evaluering for akvakultursøknad\". Supports filtering by creation date and applicant organisation number, and pagination.",
			"when_not_to_use": "Do not rely on schema stability: the API spec explicitly warns it may be changed without prior notice. Pin to a snapshot of the OpenAPI document if downstream tooling depends on a fixed shape.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://api.fiskeridir.no/aqua-portal-api-public/api/v1/applications?limit=5'",
			"agent_recipe": "1. To list applications, GET /api/v1/applications with optional query params:\n   - createdAfter (ISO-8601 UTC, e.g. 2024-02-01T17:00:00.000Z)\n   - applicantOrganisationNumber (9-digit org nr)\n   - page (zero-based), size, sort (e.g. created,desc)\n2. Each application has an applicationNo in the form SP-YYYY-LOPENR.\n   Use GET /api/v1/application/{applicationNo} to fetch full details.\n3. To get all submissions for a given application (which may have had\n   multiple revisions), call GET /api/v1/application/{applicationNo}/submissions.\n4. Fetch detailed submission content (area polygon, species, production data)\n   via GET /api/v1/application/{applicationNo}/submission/{submissionId}/data.\n5. To check the outcome of case processing, call\n   GET /api/v1/evaluation/{aquaApplicationNo} — returns GRANTED or DENIED\n   plus individual authority decisions and statements.\n6. The API is public and requires no authentication. Include a descriptive\n   User-Agent header as a courtesy.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://api.fiskeridir.no/aqua-portal-api-public/api/v1/applications?limit=5",
				"https://api.fiskeridir.no/aqua-portal-api-public/v3/api-docs"
			],
			"probe": {
				"method": "GET",
				"url": "https://api.fiskeridir.no/aqua-portal-api-public/api/v1/applications?limit=5",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fiskeridir.aqua-research-project",
			"name": "Offentlig API for akvakulturforskning",
			"provider": "Fiskeridirektoratet",
			"provider_org_nr": null,
			"category": "research",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://api.fiskeridir.no/aqua-research-project-api-public",
			"docs_url": "https://api.fiskeridir.no/aqua-research-project-api-public/v3/api-docs",
			"tags": [
				"fiskeridir",
				"aquaculture",
				"research",
				"fisheries",
				"rest"
			],
			"description": "Public REST API from the Norwegian Directorate of Fisheries exposing aquaculture research projects carried out by holders of research licences, plus associated research reports and downloadable report files. Returns JSON over HAL; no API key required. Note: the API may change without prior notice.",
			"when_to_use": "User wants data on Norwegian aquaculture research projects or reports: \"akvakulturforskning API\", \"forskningsprosjekter oppdrett\", \"research projects salmon lice / fish health\", \"last ned forskningsrapport fiskeoppdrett\", \"aquaculture research licences Norway\". Filter by category (FEED, FISH_HEALTH, SALMON_LICE, GENETICS, WELFARE, …) or createdAfter date.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": "1. GET /api/v1/research-projects to search projects. Optional query params:\n   createdAfter (date-time) and categories[] (FEED, NUTRITION, FISH_HEALTH, BREED,\n   GENETICS, TECHNOLOGY, OPERATIONS, ECOLOGY, WELFARE, OTHER, PHARMACEUTICAL,\n   SALMON_LICE).\n2. GET /api/v1/research-project/{projectNumber} for a single project's detail.\n3. GET /api/v1/research-report-file/{reportNumber}/{fileId} to download a report\n   file (application/octet-stream).\n4. Responses are HAL+JSON; follow embedded links. Treat the schema as unstable —\n   the provider warns the API may change without notice.",
			"composes_with": [],
			"last_verified": "2026-05-31T12:00:00.000Z",
			"source_urls": [
				"https://api.fiskeridir.no/aqua-research-project-api-public"
			],
			"probe": {
				"method": "GET",
				"url": "https://api.fiskeridir.no/aqua-research-project-api-public/api/v1/research-projects",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fiskeridir.conversion-factor",
			"name": "Omregningsfaktor havressurs",
			"provider": "Fiskeridirektoratet",
			"provider_org_nr": "971203420",
			"category": "maritime",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://api.fiskeridir.no/conversion-factor-api",
			"docs_url": "https://api.fiskeridir.no/conversion-factor-api/swagger-ui/index.html",
			"tags": [
				"fisheries",
				"conversion",
				"havressurs",
				"gov",
				"nlod"
			],
			"description": "Public REST API from the Norwegian Directorate of Fisheries that returns conversion factors for marine resources — the multipliers used to convert landed (product) weight to round (live) weight for catch reporting. Covers species, product condition, and preservation method combinations with validity periods. No authentication required.",
			"when_to_use": "Use when converting catch weight between landing weight and round weight in fisheries data processing: \"omregningsfaktor for torsk\", \"conversion factor for cod fillet\", \"round weight from landed weight\", \"which factor applies to this species and condition combination\". Also use for validating or cross-checking reported catch quantities against Norwegian fisheries regulations.",
			"when_not_to_use": "Not suitable for aquaculture conversion factors — this API covers wild catch (havressurs) only. Do not use for species or condition codes you cannot resolve — consult the Fiskeridirektoratet code list at https://www.fiskeridir.no/yrkesfiske/rapportering-ved-landing/kodeliste first. For real-time landing data, use a separate landings API.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://api.fiskeridir.no/conversion-factor-api/api/v1/conversionfactors/search?fish=0211'",
			"agent_recipe": "1. Identify the species code (fish), product condition code (condition), and\n   preservation method code (preservation) for the catch of interest. Codes\n   are numeric strings defined in the Fiskeridirektoratet code list at\n   https://www.fiskeridir.no/yrkesfiske/rapportering-ved-landing/kodeliste.\n2. Call GET /api/v1/conversionfactors/search with the relevant query parameters.\n   All parameters are optional; omit any you do not want to filter on.\n   - fish (string): species code, e.g. \"0211\" for mackerel\n   - condition (integer): product condition code, e.g. 110 (rund/whole)\n   - preservation (integer): preservation method code, e.g. 99 (fersk/fresh)\n   - time (datetime): restrict to factors valid at this point in time\n   - modifiedAfter (datetime): fetch only factors changed after this time\n3. The response is a JSON array of ConversionFactor objects with fields:\n   fish, condition, preservation, validityPeriodStart, validityPeriodEnd,\n   modifiedTime, and factor (the numeric multiplier).\n4. Select the record whose validityPeriodStart–validityPeriodEnd range\n   covers the landing date. Multiply the landed (product) weight by `factor`\n   to obtain round (live) weight.\n5. If multiple records match (overlapping periods are uncommon but possible),\n   pick the one with the latest modifiedTime.",
			"composes_with": [],
			"last_verified": "2026-05-12T09:15:00.000Z",
			"source_urls": [
				"https://api.fiskeridir.no/conversion-factor-api/api/v1/conversionfactors/search?limit=5",
				"https://api.fiskeridir.no/conversion-factor-api/swagger/api",
				"https://data.norge.no/data-services/d5a39821-5cb4-3733-b2e6-bb78204507b7"
			],
			"probe": {
				"method": "GET",
				"url": "https://api.fiskeridir.no/conversion-factor-api/api/v1/conversionfactors/search?fish=0211",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fiskeridir.kjoperregisteret",
			"name": "Kjøperregisteret",
			"provider": "Fiskeridirektoratet",
			"provider_org_nr": "971203420",
			"category": "maritime",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No authentication required (OpenAPI declares no security schemes). All endpoints are prefixed with `/buyer-api/`. Usage is governed by Fiskeridirektoratet's own data-use terms (\"FDIR-lisens for databruk\") at https://www.fiskeridir.no/Tall-og-analyse/Lisens-for-bruk-av-Fiskeridirektoratets-data — the OpenAPI `termsOfService` field additionally points to https://data.norge.no/nlod/no/ (NLOD).",
			"status": "active",
			"license": "proprietary",
			"base_url": "https://api.fiskeridir.no",
			"docs_url": "https://api.fiskeridir.no/buyer-api/swagger-ui/",
			"tags": [
				"fishing",
				"buyers",
				"fish-landing",
				"norway",
				"registry",
				"gov"
			],
			"description": "Open REST API from the Norwegian Directorate of Fisheries that returns approved fish buyers and purchase locations (kjøpssteder) from the Kjøperregisteret. Provides searchable, paginated lists of active buyer locations with details including location type, organisation number, address, geographic coordinates, and food-safety approval numbers. No authentication required.",
			"when_to_use": "User asks about approved fish buyers or landing sites in Norway: \"hvilke kjøpere er godkjent i Tromsø\", \"finn kjøpssteder for fisk i en bestemt kommune\", \"list active fish buyer locations\", \"search for a fish buyer by organisation number\", \"what location types are registered in Kjøperregisteret\". Use to look up active registered purchase locations with their address, coordinates, organisation number, and food-safety approval numbers from Mattilsynet.",
			"when_not_to_use": "Do not use when you need historical or deregistered buyer data — the API returns only active locations. Do not use for vessel or owner data; use Fartøyregisteret instead. Do not use when looking up aquaculture sites; those are in Akvakulturregisteret.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://api.fiskeridir.no/buyer-api/v1/locations?per_page=5'",
			"agent_recipe": "1. To list all active buyer locations, call GET /buyer-api/v1/locations.\n   Default page size is 100, max 1000 via `per_page`. Use `page` for pagination.\n   Check the `x-totalcount` response header for the total number of active locations.\n2. Filter by organisation number: `legal_entity_id=<orgnr>` (the location itself),\n   `parent_legal_entity_id=<orgnr>` (the immediate parent), or\n   `main_legal_entity_id=<orgnr>` (the top-level owning entity).\n3. Filter by location type with `location_type=<type>`. Supported values:\n   - ORDINARY_FACILITY_T: stationary facility (fiskebruk, restaurant, fish shop)\n   - DOCK_SALESPERSON_T: kai-seller (quay-side direct-to-consumer)\n   - TRADER_T: trader buying for export from neutral cold stores\n   - VESSEL_T: vessel acting as buyer\n   - VEHICLE_T: mobile purchase station\n   - NET_PEN_T: net-pen (merd) buying cleaner fish registered in Akvakulturregisteret\n   - LEGAL_ENTITY: legal entity without active buying activity\n4. Full-text search across multiple fields: `query=<term>`.\n5. Sort with `sort_by` (LOCATION_ID | CREATED | UPDATED) and `sort_asc=true/false`.\n6. To look up a single location by its nine-digit location ID:\n   GET /buyer-api/v1/locations/{locationId}\n7. `legalEntityId` values are Norwegian organisation numbers usable with\n   brreg.enhetsregister for company detail lookups.\n8. `approvalNumbers` is a comma-separated list of Mattilsynet food-safety\n   approval numbers when applicable.\n9. No rate limiting is documented, but always set a descriptive User-Agent.",
			"composes_with": [],
			"last_verified": "2026-05-11T07:12:39.000Z",
			"source_urls": [
				"https://api.fiskeridir.no/buyer-api/openapi.json",
				"https://api.fiskeridir.no/buyer-api/swagger-ui/",
				"https://api.fiskeridir.no/buyer-api/v1/locations?size=2"
			],
			"probe": {
				"method": "GET",
				"url": "https://api.fiskeridir.no/buyer-api/v1/locations?per_page=1",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fiskeridir.korallrev-forbudsomrader-wfs",
			"name": "Korallrev - forbudsområder WFS",
			"provider": "Fiskeridirektoratet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.korallrevforbudsomrader",
			"docs_url": "https://wfs.geonorge.no/skwms1/wfs.korallrevforbudsomrader?service=wfs&request=getcapabilities",
			"tags": [
				"korallrev",
				"fiskeridir",
				"fisheries",
				"wfs",
				"gov"
			],
			"description": "OGC WFS feature service (served via Geonorge) exposing the Norwegian Directorate of Fisheries' \"coral reef no-fishing zones\" dataset as GML. It delineates the areas where fishing in the vicinity is prohibited under the fishing regulations (§66), in order to protect coral reefs. Feature types include Korallrev and KorallrevGrense; open access, no key.",
			"when_to_use": "Use when an agent needs Norwegian coral-reef fishing-ban zones as WFS features: \"korallrev forbudsområder\", \"hvor er det forbudt å fiske ved korallrev\", \"coral reef protection zones Norway WFS\", \"hent korallrevgrenser som GML\". Issue a GetFeature request for the app:Korallrev or app:KorallrevGrense feature type.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wfs.geonorge.no/skwms1/wfs.korallrevforbudsomrader?service=wfs&request=getcapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.korallrevforbudsomrader?service=wfs&request=getcapabilities",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "fiskeridir.kystnaere-fiskeridata-wms",
			"name": "Kystnære fiskeridata WMS",
			"provider": "Fiskeridirektoratet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://gis.fiskeridir.no/server/services/fiskeridirWMS_fiskeri/MapServer/WMSServer",
			"docs_url": "https://www.fiskeridir.no/Yrkesfiske/Kart-og-statistikk",
			"tags": [
				"fisheries",
				"geo",
				"wms",
				"marine",
				"norway"
			],
			"description": "WMS map service from the Norwegian Directorate of Fisheries exposing coastal fisheries data: spawning and fishing grounds, marine resource distribution, harvesting areas and vulnerable habitats. Rendered raster layers via OGC WMS, no authentication required.",
			"when_to_use": "User wants a map layer of Norwegian coastal fisheries: \"gytefelt og fiskefelt i kart\", \"spawning grounds along the Norwegian coast\", \"kart over høsteområder for marine ressurser\", \"vulnerable marine habitats WMS\", \"vis fiskeridata på kart\". Use this WMS for visual map tiles; for vector feature geometry use fiskeridir.wfs-fiskeri instead.",
			"when_not_to_use": null,
			"sample_request": "curl -sSL \\\n  'https://gis.fiskeridir.no/server/services/fiskeridirWMS_fiskeri/MapServer/WMSServer?service=WMS&request=GetCapabilities'",
			"agent_recipe": "1. Fetch GetCapabilities to enumerate available layers (e.g. gyteomraader,\n   fiskeplasser, fiskerireguleringer, verneomraader, tapte_redskap_<year>).\n2. Issue a GetMap request with the chosen layer name(s), a BBOX, CRS\n   (EPSG:25833 or EPSG:3857), WIDTH/HEIGHT and FORMAT=image/png.\n3. For vector geometry or attribute-level analysis, switch to the WFS entry\n   fiskeridir.wfs-fiskeri.",
			"composes_with": [
				"fiskeridir.wfs-fiskeri"
			],
			"last_verified": null,
			"source_urls": [
				"https://dataservice-catalog.fellesdatakatalog.digdir.no/data-services/de1dd290-2b00-3785-bc8a-13b0e8f87e05"
			],
			"probe": {
				"method": "GET",
				"url": "https://gis.fiskeridir.no/server/services/fiskeridirWMS_fiskeri/MapServer/WMSServer?service=WMS&request=GetCapabilities",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fiskeridir.nytek",
			"name": "Offentlig API for NYTEK-data",
			"provider": "Fiskeridirektoratet",
			"provider_org_nr": "971203420",
			"category": "maritime",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://api.fiskeridir.no/nytek-public",
			"docs_url": "https://api.fiskeridir.no/nytek-public/swagger-ui/index.html",
			"tags": [
				"aquaculture",
				"certificates",
				"gov",
				"nytek",
				"fiskeridir"
			],
			"description": "Public REST API from the Norwegian Directorate of Fisheries that exposes NYTEK23 installation certificates for aquaculture facilities. Each certificate documents the technical compliance of a fish farm's physical installation (enclosures, floaters, mooring systems) against Norwegian standard NS9415.",
			"when_to_use": "Use when you need to look up the NYTEK certificate status of an aquaculture site in Norway: \"er lokalitet 12345 NYTEK-sertifisert?\", \"hent siste anleggssertifikat for oppdrettslokalitet\", \"list NYTEK-sertifikater utstedt etter dato X\", \"what is the certificate status for fish farm site number N\". The site number (lokalitetsnummer) is a five-digit identifier from Fiskeridirektoratets register.",
			"when_not_to_use": "Do not use to look up aquaculture licenses, biomass limits, or fish health data — those are separate registers. The page size is capped at 20 records; for bulk exports iterate with the `page` parameter. File downloads via `/api/v3/files/{uuid}` return raw binary (application/octet-stream) and are only useful once you already have a file UUID from a certificate response.",
			"sample_request": "# Search all issued certificates (first page, 1 result)\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://api.fiskeridir.no/nytek-public/api/v3/certificates?status=ISSUED&size=1'\n\n# Get the latest certificate for a specific site\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://api.fiskeridir.no/nytek-public/api/v3/certificates/12345'",
			"agent_recipe": "1. To check a specific site: call GET /api/v3/certificates/{site-nr} with the\n   five-digit site number. Returns `InstallationCertificateResponse` with a\n   `status` field (`ISSUED` or `REVOKED`) and full certificate details.\n2. To search across all sites: call GET /api/v3/certificates with optional\n   query params: `site-nr` (int), `status` (ISSUED|REVOKED), `time` (ISO-8601\n   datetime, default \"now\"), `valid-from-time`, `page` (0-based), `size` (max 20).\n3. Paginate by incrementing `page` until `page >= totalPages` in the response.\n4. To download an attached document (certificate PDF, inspection report, etc.)\n   extract the `uuid` from a `File` object and call GET /api/v3/files/{uuid}.\n   The response is application/octet-stream.\n5. Key certificate fields: `siteNr`, `siteName`, `issueDate`, `expiryDate`,\n   `issueParagraph`, `licenseHolder.orgNr`, `accreditedInspectionBody.orgNr`.\n6. Status validity window: check `status.validFrom` / `status.validUntil` on\n   the `StatusResponse` to confirm the certificate is active at a given moment.",
			"composes_with": [],
			"last_verified": "2026-05-12T09:13:00.000Z",
			"source_urls": [
				"https://api.fiskeridir.no/nytek-public",
				"https://api.fiskeridir.no/nytek-public/api/v3/certificates",
				"https://api.fiskeridir.no/nytek-public/v3/api-docs"
			],
			"probe": {
				"method": "GET",
				"url": "https://api.fiskeridir.no/nytek-public/api/v3/certificates?size=1",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fiskeridir.tare-hostefelt-wfs",
			"name": "Fiskeridirektoratet Tare - høstefelt WFS",
			"provider": "Fiskeridirektoratet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.tarehostefelt",
			"docs_url": null,
			"tags": [
				"fiskeridir",
				"kelp",
				"gml",
				"geonorge",
				"gov"
			],
			"description": "OGC WFS feature service from the Norwegian Directorate of Fisheries (Fiskeridirektoratet) exposing the \"Tare - høstefelt\" dataset: delimited fields where kelp may be harvested by trawl within defined time periods, including closed areas where harvesting is forbidden and reference areas requiring special permission. Serves GML; supports WFS 2.0.0 and 1.1.0; no authentication.",
			"when_to_use": "Use when an agent needs vector data on Norwegian kelp/seaweed harvesting fields: \"tarehøstefelt\", \"hvor kan man høste tare\", \"kelp harvesting areas Norway\", \"stengte taretrålfelt\", \"tare-felt som GML/WFS\". Returns feature geometries for the harvest fields and their boundaries.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wfs.geonorge.no/skwms1/wfs.tarehostefelt?service=WFS&request=GetCapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.tarehostefelt?service=WFS&request=GetCapabilities",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "fiskeridir.vessel-api",
			"name": "Fiskeridirektoratet — Offentlig API for fartøyregisteret",
			"provider": "Fiskeridirektoratet",
			"provider_org_nr": "971203420",
			"category": "maritime",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://api.fiskeridir.no/vessel-api/",
			"docs_url": "https://api.fiskeridir.no/vessel-api/",
			"tags": [
				"fishing",
				"vessels",
				"register",
				"norway",
				"government",
				"nlod",
				"merkeregisteret"
			],
			"description": "Open REST API from the Norwegian Directorate of Fisheries providing vessel and owner information from the official fishing vessel register (Merkeregisteret). Returns details such as name, registration mark, radio call sign, IMO number, dimensions, engine power, build year, and current owners. No authentication required.",
			"when_to_use": "Use when an agent needs to look up Norwegian fishing vessels by name, registration mark, radio call sign, or municipality: \"finn fartøy med registreringsmerke F 0071A\", \"list fishing vessels in municipality 5601\", \"what is the owner of vessel JOHANNA?\", \"show vessels longer than 20 metres\", \"lookup vessel by IMO number\". Also use to enumerate all active registered fishing vessels in Norway.",
			"when_not_to_use": null,
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  -H 'Accept: application/json' \\\n  'https://api.fiskeridir.no/vessel-api/api/v1/vessels?per_page=5&sort_by=NAME&sort_asc=true'",
			"agent_recipe": "1. **List active vessels**: GET /vessel-api/api/v1/vessels to retrieve a\n   paginated list of all active registered fishing vessels. Default page\n   size is 30; max is 200 (per_page parameter). The response header\n   `x-totalcount` gives the total number of vessels.\n2. **Filter by criteria**: use query parameters to narrow results:\n   - `name=<string>` — filter by vessel name\n   - `registration_mark=<string>` — exact registration mark (e.g. F 0071A)\n   - `radio_call_sign=<string>` — exact radio call sign\n   - `municipality_code=<string>` — Norwegian municipality code\n   - `length_gte=<number>` / `length_lte=<number>` — length range in metres\n   - `query=<string>` — cross-field free-text search\n3. **Sort results**: use `sort_by` (ID, NAME, REGISTRATIONMARK, RADIOCALLSIGN)\n   and `sort_asc=true/false`. Default sort is by ID descending.\n4. **Fetch a specific vessel**: GET /vessel-api/api/v1/vessels/{id} using\n   the vessel's unique numeric ID to get full details including owners.\n5. **Pagination**: use `page` (1-based) and `per_page` parameters. The\n   `link` response header contains first/prev/next/last page URLs.\n6. **Owner lookup**: each vessel's `owners` array contains id, entityType\n   (COMPANY or PERSON), name, postalCode, and city. For company owners,\n   the id is an organisation number — cross-reference with brreg.enhetsregister\n   for full company details.\n7. No authentication required. No documented rate limits — use standard\n   HTTP caching; vessel register data changes infrequently.",
			"composes_with": [
				"brreg.enhetsregister"
			],
			"last_verified": "2026-05-25T07:12:28.000Z",
			"source_urls": [
				"https://api.fiskeridir.no/vessel-api/",
				"https://api.fiskeridir.no/vessel-api/api/openapi",
				"https://api.fiskeridir.no/vessel-api/api/v1/vessels?limit=1",
				"https://dataservice-catalog.fellesdatakatalog.digdir.no/data-services/"
			],
			"probe": {
				"method": "GET",
				"url": "https://api.fiskeridir.no/vessel-api/api/v1/vessels?per_page=1",
				"accept": "application/json",
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fiskeridir.wfs-fiskeri",
			"name": "Fiskeridirektoratets WFS - fiskeri",
			"provider": "Fiskeridirektoratet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://gis.fiskeridir.no/server/services/FiskeridirWFS_fiskeri/MapServer/WFSServer",
			"docs_url": null,
			"tags": [
				"fiskeridir",
				"fisheries",
				"wfs",
				"marine",
				"gov"
			],
			"description": "ArcGIS-backed WFS from the Norwegian Directorate of Fisheries exposing dozens of fisheries-management datasets, including spawning areas, fishing grounds, coastal fisheries data, fishery regulations and protected areas. Feature types are served in GML and GeoJSON; open access.",
			"when_to_use": "Use when an agent needs Norwegian fisheries-management geodata as WFS features: \"gyteområder kart\", \"fiskeplasser WFS\", \"fiskerireguleringer Norge\", \"spawning areas Norway GeoJSON\", \"nasjonale laksefjorder\", marine protected-area and fishing-ground extraction.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://gis.fiskeridir.no/server/services/FiskeridirWFS_fiskeri/MapServer/WFSServer?SERVICE=WFS&REQUEST=GetCapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://gis.fiskeridir.no/server/services/FiskeridirWFS_fiskeri/MapServer/WFSServer?SERVICE=WFS&REQUEST=GetCapabilities",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "fiskeridirektoratet.fjordlinjer-kysttorskregulering-wfs",
			"name": "Fjordlinjer - Kysttorskregulering WFS",
			"provider": "Fiskeridirektoratet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.fjordlinjer",
			"docs_url": "https://kartkatalog.geonorge.no/",
			"tags": [
				"geonorge",
				"fiskeri",
				"kysttorsk",
				"regulation",
				"norway"
			],
			"description": "WFS service from the Norwegian Directorate of Fisheries delivering the \"Fjordlinjer - Kysttorskregulering\" dataset: fjord boundary lines marking areas where fishing with bottom-touching towed gear is prohibited as part of the coastal-cod regulation. Served as OGC WFS 2.0.0 via Geonorge with Fjordlinjer (line) and FjordlinjerPunkt (point) feature types.",
			"when_to_use": "User needs the fjord-line boundaries for coastal-cod fishing regulation: \"fjordlinjer kysttorsk\", \"hvor er fjordlinjen\", \"coastal cod fishing boundary\", \"fiskeforbud fjord bunnredskap\". Use to map where vessels of 15 m or more may not fish cod with conventional gear.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": "1. Call GetCapabilities at the base_url to list FeatureTypes (app:Fjordlinjer, app:FjordlinjerPunkt).\n2. Issue a GetFeature request with the chosen typeName and an output format (GML or\n   application/json) to fetch the fjord boundary geometry.\n3. Use the lines to test whether a position lies inside (shoreward of) a fjord line for\n   coastal-cod gear restrictions.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wfs.geonorge.no/skwms1/wfs.fjordlinjer?service=wfs&request=getcapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.fjordlinjer?service=wfs&request=getcapabilities",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fiskeridirektoratet.miljoundersokelser",
			"name": "Offentlig API for miljøundersøkelser",
			"provider": "Fiskeridirektoratet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://api.fiskeridir.no/envreportreg-public",
			"docs_url": "https://api.fiskeridir.no/envreportreg-public/swagger-ui.html",
			"tags": [
				"fisheries",
				"aquaculture",
				"environment",
				"openapi",
				"gov"
			],
			"description": "Public REST API from the Norwegian Directorate of Fisheries (Fiskeridirektoratet) for retrieving environmental survey reports (miljøundersøkelser) tied to aquaculture sites. Lets you search reports and fetch a report, its PDF, and attachments by id (v1 and v2 endpoints). Returns JSON, documented with OpenAPI, no authentication.",
			"when_to_use": "Use when an agent needs environmental survey data for Norwegian aquaculture/fisheries: \"miljøundersøkelser oppdrett\", \"Fiskeridirektoratet environmental surveys API\", \"hent miljørapport for lokalitet\", \"search environmental reports Norway\". Returns structured JSON reports plus downloadable PDFs and attachments.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": "1. Read the OpenAPI spec at `/v3/api-docs` (or the Swagger UI at\n   `/swagger-ui.html`) to discover the current schema; both v1 and v2 report\n   endpoints are available.\n2. Find reports with `GET /api/v2/report/search` (query parameters per the spec).\n3. Fetch a single report with `GET /api/v2/report/{report_id}`; retrieve the PDF via\n   `GET /api/v2/report/{report_id}/pdf` and files via\n   `GET /api/v2/report/{report_id}/attachment/{attachment_id}`.\n4. No authentication is required; send a descriptive User-Agent header and cache\n   report bodies between runs.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://api.fiskeridir.no/envreportreg-public/"
			],
			"probe": {
				"method": "GET",
				"url": "https://api.fiskeridir.no/envreportreg-public/v3/api-docs",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fla.hallingkart-wms",
			"name": "Hallingkart WMS",
			"provider": "Flå kommune",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://wms.gisline.no/wms-hallingdal/",
			"docs_url": null,
			"tags": [
				"hallingdal",
				"municipal",
				"basemap",
				"fkb",
				"gisline"
			],
			"description": "WMS map service for the six Hallingdal municipalities (Flå, Nes, Gol, Ål, Hemsedal, Hol) operated as the joint \"GIS i Hallingdal\" cooperation. Serves the most up-to-date FKB base maps, cadastre, zoning plans, terrain and utility layers as rendered map images (PNG/JPEG/GIF).",
			"when_to_use": "User needs map imagery or base map layers for the Hallingdal region: \"kart over Hallingdal\", \"FKB-data for Gol\", \"reguleringsplan Hemsedal\", \"terrengkart Hol\", \"WMS for Hallingdalskommunene\". Use when rendered map tiles (not raw vector features) are wanted for the six municipalities.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wms.gisline.no/wms-hallingdal/?request=GetCapabilities&service=WMS"
			],
			"probe": {
				"method": "GET",
				"url": "https://wms.gisline.no/wms-hallingdal/?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "forsvarsbygg.skyte-ovingsfelt-land-wfs",
			"name": "Forsvarets skyte- og øvingsfelt land WFS",
			"provider": "Forsvarsbygg",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.forsvarets_skyteogovingsfelt",
			"docs_url": "https://wfs.geonorge.no/skwms1/wfs.forsvarets_skyteogovingsfelt?service=WFS&request=GetCapabilities",
			"tags": [
				"wfs",
				"military",
				"geonorge",
				"gov",
				"boundaries"
			],
			"description": "WFS feature service exposing the polygon extent of the Norwegian Armed Forces' land-based shooting and training ranges (skyte- og øvingsfelt), delimited by land the Armed Forces own or lease plus acquired rights of use, including restricted danger zones (safety zones). Hosted on the Geonorge platform and served as GML. Open geodata, no auth.",
			"when_to_use": "Use to fetch the boundaries of military land training/shooting ranges in Norway as vector features: \"forsvarets skytefelt grenser\", \"military training area polygons Norway WFS\", \"skyte- og øvingsfelt land\", \"klausulerte fareområder forsvaret\". Request feature types SkyteOgØvingsfelt (range areas) and Skytefeltgrense (range boundaries) via GetFeature.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": "1. GET the GetCapabilities URL (`?SERVICE=WFS&REQUEST=GetCapabilities`) — the service\n   advertises WFS 2.0.0 (also 1.1.0) and feature types SkyteOgØvingsfelt and\n   Skytefeltgrense.\n2. Fetch features with\n   `REQUEST=GetFeature&TYPENAMES=SkyteOgØvingsfelt&SRSNAME=EPSG:25833&COUNT=10`\n   (use TYPENAME for WFS 1.1.0). Output is GML.\n3. Add `BBOX=minx,miny,maxx,maxy,EPSG:25833` to restrict to an area of interest.\n4. The dataset does NOT describe temporary danger/restriction areas; for those, use\n   the relevant active firing-notice source instead.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wfs.geonorge.no/skwms1/wfs.forsvarets_skyteogovingsfelt?service=WFS&request=GetCapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.forsvarets_skyteogovingsfelt?service=WFS&request=GetCapabilities",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "forsvarsbygg.skyte-ovingsfelt-sjo-wfs",
			"name": "Forsvarets skyte- og øvingsfelt i sjø (WFS)",
			"provider": "Forsvarsbygg",
			"provider_org_nr": "975950662",
			"category": "maritime",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-1.0",
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.ovingsfeltsjo",
			"docs_url": "https://register.geonorge.no/det-offentlige-kartgrunnlaget/forsvarets-skyte-og-ovingsfelt-i-sjo/b7f89a26-75af-4ab8-9c78-8b232cfb4e5c",
			"tags": [
				"forsvaret",
				"skytefelt",
				"sjø",
				"geo",
				"nlod",
				"geonorge",
				"restricted-areas"
			],
			"description": "WFS 2.0.0 service delivering the geographic boundaries of the Norwegian Armed Forces' maritime shooting and exercise ranges (skyte- og øvingsfelt i sjø). Returns GML 3.2 feature data for two feature types: SkytefeltSjø (field polygons) and Skytefeltgrense (boundary lines). No authentication required; open data under NLOD 1.0.",
			"when_to_use": "Use when an agent needs geographic boundaries of Norwegian military maritime exercise areas: \"forsvarets skytefelt i sjø\", \"military exercise zones at sea\", \"skyte- og øvingsfelt\", \"defence restricted sea areas Norway\", or when building a nautical chart layer that must mark Norwegian military exercise ranges. Supports spatial filtering (BBOX, Intersects) and multiple CRS including EPSG:4326 and EPSG:4258.",
			"when_not_to_use": "Do not use when JSON output is required — the service only supports GML 3.2.1 (text/xml; subtype=gml/3.2.1 and application/gml+xml; version=3.2). Not suitable for aviation danger/restriction area queries: the dataset covers surface geographic boundaries only and explicitly does not describe airspace restriction areas, which may differ from the surface representation. Use dedicated aviation authority sources (NOTAM/NOTAMN) for airspace data.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://wfs.geonorge.no/skwms1/wfs.ovingsfeltsjo?service=WFS&version=2.0.0&request=GetFeature&typeNames=app:SkytefeltSj%C3%B8&count=5&outputFormat=application/gml%2Bxml;%20version=3.2'",
			"agent_recipe": "1. Call GetCapabilities to confirm service is live and discover supported CRS:\n   GET ?service=WFS&version=2.0.0&request=GetCapabilities\n2. Fetch all SkytefeltSjø polygons (feature type app:SkytefeltSjø):\n   GET ?service=WFS&version=2.0.0&request=GetFeature&typeNames=app:SkytefeltSj%C3%B8&outputFormat=application/gml%2Bxml;%20version=3.2\n3. Optionally filter by bounding box using the BBOX spatial operator:\n   Add &BBOX=<minLon>,<minLat>,<maxLon>,<maxLat>,urn:ogc:def:crs:EPSG::4326 to the GetFeature request.\n4. Parse the GML 3.2.1 response — each app:SkytefeltSjø element has:\n   - app:skytefeltNavn (field name, e.g. \"Rauøy I\")\n   - app:område (gml:Polygon geometry in the requested CRS)\n   - app:datafangstdato (data capture date)\n5. For boundary lines use feature type app:Skytefeltgrense.\n6. Default CRS is EPSG:4258 (ETRS89). Use srsName=urn:ogc:def:crs:EPSG::4326 for WGS84.\n7. Responses are GML only — parse with an XML/GML library; JSON is not supported.",
			"composes_with": [],
			"last_verified": "2026-05-24T07:25:00.000Z",
			"source_urls": [
				"https://data.norge.no/nlod/no/1.0",
				"https://register.geonorge.no/det-offentlige-kartgrunnlaget/forsvarets-skyte-og-ovingsfelt-i-sjo/b7f89a26-75af-4ab8-9c78-8b232cfb4e5c",
				"https://wfs.geonorge.no/skwms1/wfs.ovingsfeltsjo?service=WFS&version=2.0.0&request=GetCapabilities",
				"https://wfs.geonorge.no/skwms1/wfs.ovingsfeltsjo?service=WFS&version=2.0.0&request=GetFeature&typeNames=app:SkytefeltSj%C3%B8&count=1&outputFormat=application/gml%2Bxml;%20version=3.2"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.ovingsfeltsjo?service=WFS&version=2.0.0&request=GetCapabilities",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "forsvarsbygg.stoysoner-flyplasser-wfs",
			"name": "Støysoner for Forsvarets flyplasser WFS",
			"provider": "Forsvarsbygg",
			"provider_org_nr": null,
			"category": "environment",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.stoysonerforsvaretsflyplasser",
			"docs_url": "https://wfs.geonorge.no/skwms1/wfs.stoysonerforsvaretsflyplasser?service=WFS&request=GetCapabilities",
			"tags": [
				"forsvaret",
				"forsvarsbygg",
				"stoy",
				"flyplass",
				"geo",
				"nlod",
				"geonorge"
			],
			"description": "WFS service published via Geonorge on behalf of Forsvarsbygg delivering noise zones around the Norwegian Armed Forces' airfields (Støysoner for Forsvarets flyplasser). Returns GML 3.2 feature data (feature types Støy and Støygrense) for use in land-use planning. No authentication; open data under NLOD.",
			"when_to_use": "Use when an agent needs aircraft-noise-zone polygons around Norwegian military airfields for planning: \"støysoner forsvarets flyplasser\", \"military airfield noise zones Norway\", \"flystøy forsvaret\", or when building a land-use planning map layer that must show noise zones around defence airfields. Supports spatial filtering (BBOX) and multiple CRS via WFS 2.0.0.",
			"when_not_to_use": "Do not use when JSON output is required — the service only supports GML 3.2 (application/gml+xml; version=3.2 and text/xml; subtype=gml/3.2.1). For a rendered map image rather than raw features, use a WMS source instead. This dataset covers airfield noise zones only; for shooting/exercise range noise use forsvarsbygg.stoysoner-skyte-ovingsfelt-wfs.",
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wfs.geonorge.no/skwms1/wfs.stoysonerforsvaretsflyplasser?service=WFS&request=GetCapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.stoysonerforsvaretsflyplasser?service=WFS&version=2.0.0&request=GetCapabilities",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "forsvarsbygg.stoysoner-flyplasser-wms",
			"name": "Støysoner for Forsvarets flyplasser WMS",
			"provider": "Forsvarsbygg",
			"provider_org_nr": null,
			"category": "environment",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://wms.geonorge.no/skwms1/wms.stoysonerforsvaretsflyplasser",
			"docs_url": "https://wms.geonorge.no/skwms1/wms.stoysonerforsvaretsflyplasser?service=WMS&request=GetCapabilities",
			"tags": [
				"geonorge",
				"noise",
				"defence",
				"aviation",
				"planning"
			],
			"description": "WMS that renders map images of noise zones (støysoner) around the Norwegian Armed Forces' airfields. Exposes the noise-zone area and boundary layers as PNG/JPEG tiles. OGC WMS 1.3.0, served via Geonorge under Norge digital.",
			"when_to_use": "User wants a map overlay of aircraft noise zones near military airfields: \"vis støysoner for Forsvarets flyplasser\", \"military airfield noise zones map\", \"rød/gul støysone rundt militær flyplass\", \"noise contours WMS\". Use as a rendered background/overlay layer in a map viewer.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": "1. GET the GetCapabilities URL to list layers — stoysonerforsvaretsflyplasser\n   (combined), _omraade (zone areas) and _grenser (zone boundaries).\n2. Issue a GetMap request with the chosen LAYERS, a CRS (e.g. EPSG:25833),\n   BBOX, WIDTH/HEIGHT and FORMAT=image/png to render a tile/overlay.\n3. Composite over a base map; use GetFeatureInfo on queryable layers for\n   point inspection. For downloadable geometry, switch to the WFS service.",
			"composes_with": [],
			"last_verified": "2026-05-31T12:00:00.000Z",
			"source_urls": [
				"https://wms.geonorge.no/skwms1/wms.stoysonerforsvaretsflyplasser?service=WMS&request=GetCapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://wms.geonorge.no/skwms1/wms.stoysonerforsvaretsflyplasser?service=WMS&request=GetCapabilities",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "forsvarsbygg.stoysoner-skyte-ovingsfelt-wfs",
			"name": "Støysoner for Forsvarets skyte- og øvingsfelt WFS",
			"provider": "Forsvarsbygg",
			"provider_org_nr": null,
			"category": "environment",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://wfs.geonorge.no/skwms1/wfs.stoy_skytebane",
			"docs_url": "https://wfs.geonorge.no/skwms1/wfs.stoy_skytebane?service=WFS&request=GetCapabilities",
			"tags": [
				"forsvaret",
				"forsvarsbygg",
				"stoy",
				"t-1442",
				"geo",
				"nlod",
				"geonorge"
			],
			"description": "WFS service published via Geonorge on behalf of Forsvarsbygg delivering noise zones around the Norwegian Armed Forces' shooting and exercise ranges. The zones are mainly calculated according to the T-1442 guideline for noise in land-use planning. Returns GML 3.2 feature data (feature types Støy and Støygrense). No authentication; open data under NLOD.",
			"when_to_use": "Use when an agent needs noise-zone polygons around Norwegian military shooting/exercise ranges for planning: \"støysoner skytefelt\", \"T-1442 støysoner forsvaret\", \"military shooting range noise zones Norway\", or when building a land-use planning map layer that must show red/yellow noise zones around defence ranges. Supports spatial filtering (BBOX) and multiple CRS via WFS 2.0.0.",
			"when_not_to_use": "Do not use when JSON output is required — the service only supports GML 3.2 (application/gml+xml; version=3.2 and text/xml; subtype=gml/3.2.1). For a rendered map image rather than raw features, use a WMS source instead.",
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://wfs.geonorge.no/skwms1/wfs.stoy_skytebane?service=WFS&request=GetCapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://wfs.geonorge.no/skwms1/wfs.stoy_skytebane?service=WFS&version=2.0.0&request=GetCapabilities",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "fredrikstad.byjord",
			"name": "Byjord – Fredrikstad kommune (ArcGIS REST)",
			"provider": "Fredrikstad kommune",
			"provider_org_nr": "940039541",
			"category": "environment",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "Keyless ArcGIS REST; no API key required. Open Esri ArcGIS REST MapServer over HTTPS; layer metadata and the /6/query endpoint return JSON (f=json) or GeoJSON (f=geojson). The FDK record declares INSPIRE \"noConditionsApply\". Send the project User-Agent on every request.",
			"status": "active",
			"license": null,
			"base_url": "https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/6",
			"docs_url": "https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/6",
			"tags": [
				"arcgis-rest",
				"byjord",
				"urban-soil",
				"environment",
				"fredrikstad",
				"municipal",
				"miljodata"
			],
			"description": "Esri ArcGIS REST MapServer layer from Fredrikstad municipality delineating designated urban-soil (\"Byjord\") areas as polygon features — topsoil in the built-up zone that may be diffusely contaminated. It is layer 6 of the municipality's \"Miljødata\" environment MapServer; beyond geometry each polygon carries only an integer `ID` and a `LOKALITET` string, so the value is the area outline queryable by location. Query features as JSON or GeoJSON; no API key.",
			"when_to_use": "Agent needs to know whether a location falls inside a designated urban-soil (byjord) area in Fredrikstad, as structured polygon features: \"byjord Fredrikstad\", \"ligger eiendommen i byjordsområde\", \"urban soil zone here\", \"byjord aktsomhetsområde\", \"is this address in the byjord area\". Query layer 6 of the Miljødata MapServer (`/MapServer/6/query`) with a where clause or a geometry/bbox and request f=json (or f=geojson). The layer is part of the municipality's environmental dataset, described as \"Miljødata i Fredrikstad kommune.\"",
			"when_not_to_use": "Don't expect contamination measurements or risk classes from this layer — it only outlines byjord areas (attributes are just `ID` and `LOKALITET`); for measured concentrations use the Tungmetaller i jord or Tilstandsklasser layers instead. Don't query it for a street address directly — resolve the address/property to a coordinate first (geonorge.adresser, geonorge.eiendom), then query layer 6 by geometry. Coverage is limited to Fredrikstad municipality. The Miljødata MapServer also exposes other themes as separate layers (Fremmede arter, Brenseltank, Punktforurensning, Slamspredning, Deponier, …) — pick the layer that matches the theme.",
			"sample_request": "# Query layer 6 (Byjord) — first 10 polygon features as JSON, all fields\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/6/query?where=1%3D1&outFields=*&resultRecordCount=10&f=json'",
			"agent_recipe": "1. **Inspect the service** — GET `.../Miljodata/MapServer?f=json`. The root is the\n   \"Miljødata i Fredrikstad kommune.\" MapServer; the urban-soil data is layer 6,\n   `Byjord` (esriGeometryPolygon). Other themes are separate layers\n   (0 Fremmede arter, 1 Brenseltank, 2 Tungmetaller i jord, 3 Punktforurensning,\n   5 Slamspredning, 7 Deponier, …).\n2. **Read the schema** — GET `.../MapServer/6?f=json` to list fields. Beyond\n   geometry there are only `ID` (integer) and `LOKALITET` (string); there are no\n   measurement columns on this layer.\n3. **Query features** — GET `.../MapServer/6/query` with `where=1=1`, `outFields=*`,\n   and `f=json` (or `f=geojson`) to pull the byjord polygons.\n4. **Query by location** — pass `geometry=<x>,<y>` (or an envelope), `geometryType`\n   and `inSR`, plus a `spatialRel` (e.g. esriSpatialRelIntersects), to test whether a\n   coordinate falls inside a byjord area. To start from an address or cadastre,\n   resolve it via geonorge.adresser / geonorge.eiendom first, then query by geometry.\n5. **Spatial reference & paging** — geometry is delivered in EPSG:25832\n   (ETRS89 / UTM 32N) by default; pass `outSR=4326` for WGS 84. The service caps\n   output at maxRecordCount (2000) features per request (responses set\n   `exceededTransferLimit`); use `resultOffset`/`resultRecordCount` to page.",
			"composes_with": [
				"geonorge.adresser",
				"geonorge.eiendom"
			],
			"last_verified": null,
			"source_urls": [
				"https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/6/query?where=1=1&outFields=*&resultRecordCount=2&f=json",
				"https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/6?f=json",
				"https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer?f=json",
				"https://data.norge.no/api/data-services/5b2a08d7-2885-39dd-a512-a7336948124d"
			],
			"probe": {
				"method": "GET",
				"url": "https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/6?f=json",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fredrikstad.deponier",
			"name": "Deponier – Fredrikstad kommune (ArcGIS REST)",
			"provider": "Fredrikstad kommune",
			"provider_org_nr": "940039541",
			"category": "environment",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No API key required — keyless Esri ArcGIS REST MapServer over HTTPS; layer metadata and the /<layer>/query endpoint return JSON (f=json) or GeoJSON (f=geojson). The FDK record declares the INSPIRE licence \"noConditionsApply\". Send the project User-Agent on every request.",
			"status": "active",
			"license": null,
			"base_url": "https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/7",
			"docs_url": "https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/7",
			"tags": [
				"arcgis-rest",
				"deponier",
				"landfill",
				"waste",
				"environment",
				"fredrikstad",
				"municipal",
				"miljodata"
			],
			"description": "Esri ArcGIS REST MapServer layer from Fredrikstad municipality delineating landfill / waste-deposit areas (\"Deponier\") as polygon features. It is layer 7 of the municipality's \"Miljødata\" environment MapServer; each polygon carries only a numeric `ID` and a `NAVN` (site name, e.g. \"Ålekilene\") on top of its geometry — the value is the queryable footprint, not measured values. Query features as JSON or GeoJSON; no API key.",
			"when_to_use": "Agent needs the location/extent of former or registered landfills in Fredrikstad as structured polygon features: \"deponi Fredrikstad\", \"gammelt deponi her\", \"avfallsdeponi i nærheten\", \"former landfill at this address?\", \"waste deposit area footprint\". Query layer 7 of the Miljødata MapServer (`/MapServer/7/query`) with a where clause or a geometry/bbox and request f=json (or f=geojson). The layer is part of the municipality's environmental dataset, described as \"Miljødata i Fredrikstad kommune.\"",
			"when_not_to_use": "Don't use this to check whether a street address sits on a former landfill directly — resolve the address/property to a coordinate first (geonorge.adresser, geonorge.eiendom), then query layer 7 by geometry. Coverage is limited to Fredrikstad municipality, and the polygons carry only `ID` and `NAVN` — there are no hazard classes, capacities, dates, or measured contamination values here, so don't infer any. The Miljødata MapServer also exposes other themes as separate layers (Fremmede arter, Brenseltank, Tungmetaller i jord, Punktforurensning, Tilstandsklasser, Byjord, …) — pick the layer that matches the theme rather than reading deposit footprints off this one.",
			"sample_request": "# Query layer 7 (Deponier) — first 10 polygon features as JSON, all fields\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/7/query?where=1%3D1&outFields=*&resultRecordCount=10&f=json'",
			"agent_recipe": "1. **Inspect the service** — GET `.../Miljodata/MapServer?f=json`. The root is the\n   \"Miljødata i Fredrikstad kommune.\" MapServer; the landfill data is layer 7,\n   `Deponier` (esriGeometryPolygon). Other themes are separate layers\n   (0 Fremmede arter, 1 Brenseltank, 2 Tungmetaller i jord, 3 Punktforurensning,\n   4 Tilstandsklasser, 6 Byjord, …).\n2. **Read the schema** — GET `.../MapServer/7?f=json` to list fields. Beyond the\n   geometry the polygons carry only `ID` (integer) and `NAVN` (the site name, e.g.\n   \"Ålekilene\"); there are no hazard, capacity, or measured-value fields.\n3. **Query features** — GET `.../MapServer/7/query` with `where=1=1` (or a name\n   filter such as `where=NAVN='Ålekilene'`), `outFields=*`, and `f=json` (or\n   `f=geojson`).\n4. **Query by location** — pass `geometry=<x>,<y>` (or an envelope), `geometryType`\n   and `inSR`, plus a `spatialRel` (e.g. `esriSpatialRelIntersects`), to find the\n   deposit polygons that cover a coordinate — the \"is there a former landfill here?\"\n   check. To start from an address or cadastre, resolve it via geonorge.adresser /\n   geonorge.eiendom first, then query by geometry.\n5. **Spatial reference & paging** — geometry is delivered in EPSG:25832\n   (ETRS89 / UTM 32N) by default; pass `outSR=4326` for WGS 84. The service caps\n   output at maxRecordCount (2000) features per request (responses set\n   `exceededTransferLimit`); use `resultOffset`/`resultRecordCount` to page.",
			"composes_with": [
				"geonorge.adresser",
				"geonorge.eiendom"
			],
			"last_verified": null,
			"source_urls": [
				"https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/7/query?where=1=1&outFields=*&resultRecordCount=2&f=json",
				"https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/7?f=json",
				"https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer?f=json",
				"https://data.norge.no/api/data-services/cdcf4473-9981-3581-8acf-1e2ceb04019a"
			],
			"probe": {
				"method": "GET",
				"url": "https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/7?f=json",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fredrikstad.fremmede-arter",
			"name": "Fremmede arter – Fredrikstad kommune (ArcGIS REST)",
			"provider": "Fredrikstad kommune",
			"provider_org_nr": "940039541",
			"category": "environment",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No API key required — keyless Esri ArcGIS REST. Layer metadata and the /<layer>/query endpoint return JSON (f=json) or GeoJSON (f=geojson). The FDK record declares the INSPIRE licence \"noConditionsApply\". Send the project User-Agent on every request.",
			"status": "active",
			"license": null,
			"base_url": "https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/0",
			"docs_url": "https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/0",
			"tags": [
				"arcgis-rest",
				"fremmede-arter",
				"invasive-species",
				"alien-species",
				"environment",
				"fredrikstad",
				"municipal",
				"miljodata"
			],
			"description": "Esri ArcGIS REST MapServer layer from Fredrikstad municipality serving recorded observations of alien/invasive species (\"Fremmede arter\") as point features. It is layer 0 of the municipality's \"Miljødata\" environment MapServer; beyond geometry each point carries a `TYPE` species code (the layer's renderer maps it to alien-species names such as Kjempebjørnekjeks and Parkslirekne), an undecoded integer `STATUS` code, and a `LOKALITET` place-name string (e.g. \"Årum\"). Query features as JSON or GeoJSON; no API key.",
			"when_to_use": "Agent needs recorded alien/invasive-species observation points in Fredrikstad as structured features: \"fremmede arter Fredrikstad\", \"svartelista arter i kommunen\", \"invasive species observations here\", \"registrerte fremmedartsfunn Fredrikstad\", \"alien species points near a coordinate\". Query layer 0 of the Miljødata MapServer (`/MapServer/0/query`) with a where clause or a geometry/bbox and request f=json (or f=geojson). The layer is part of the municipality's environmental dataset, described as \"Miljødata i Fredrikstad kommune.\"",
			"when_not_to_use": "Don't treat this as the national authority on alien species — that is Artsdatabanken / Artskart; this is only the Fredrikstad-municipal view, and coverage is limited to Fredrikstad municipality. Don't read `TYPE` as a bare number — decode it via the layer's `drawingInfo` renderer/legend, which maps it to alien-species names (e.g. 1 = Kjempebjørnekjeks, 3 = Parkslirekne; the \"…, ikke gjenfunnet\" codes mean the species was not refound); the `TYPE` attribute has no coded-value domain, so a feature query returns the bare integer. `STATUS` has no published legend — treat it as an undecoded integer. Don't query a street address directly — resolve the address/property to a coordinate first (geonorge.adresser, geonorge.eiendom), then query layer 0 by geometry. The Miljødata MapServer also exposes other themes as separate layers (Brenseltank, Tungmetaller i jord, Punktforurensning, Tilstandsklasser, Deponier, …) — pick the layer that matches the theme.",
			"sample_request": "# Query layer 0 (Fremmede arter) — first 10 point features as JSON, all fields, in WGS84\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/0/query?where=1%3D1&outFields=*&resultRecordCount=10&outSR=4326&f=json'",
			"agent_recipe": "1. **Inspect the service** — GET `.../Miljodata/MapServer?f=json`. The root is the\n   \"Miljødata i Fredrikstad kommune.\" MapServer; the alien-species data is layer 0,\n   `Fremmede arter` (esriGeometryPoint). Other themes are separate layers\n   (1 Brenseltank, 2 Tungmetaller i jord, 3 Punktforurensning, 4 Tilstandsklasser,\n   7 Deponier, …).\n2. **Read the schema and TYPE legend** — GET `.../MapServer/0?f=json` to list the fields\n   (`TYPE`, `STATUS`, `LOKALITET` beyond geometry) and the `drawingInfo` renderer. The\n   renderer decodes `TYPE` into alien-species names: 1 = Kjempebjørnekjeks, 2 =\n   Kjempebjørnekjeks (ikke gjenfunnet), 3 = Parkslirekne, 4 = Parkslirekne (ikke\n   gjenfunnet), 5 = Rynkerose, 6 = Kanadagullris, 7 = Kjempespringfrø, 8 = Annet. The\n   `TYPE` attribute has no coded-value domain, so `outFields=*` returns the bare integer —\n   use the renderer/legend to map it. `STATUS` has no published legend; treat it as an\n   opaque integer code.\n3. **Query features** — GET `.../MapServer/0/query` with `where=1=1` (or an attribute\n   filter such as `where=LOKALITET='Årum'`), `outFields=*`, and `f=json` (or `f=geojson`).\n4. **Query by location** — pass `geometry=<x>,<y>` (or an envelope), `geometryType`\n   and `inSR`, plus a `spatialRel`, to fetch the points near a coordinate. To start\n   from an address or cadastre, resolve it via geonorge.adresser / geonorge.eiendom\n   first, then query by geometry.\n5. **Spatial reference & paging** — geometry is delivered in EPSG:25832\n   (ETRS89 / UTM 32N) by default; pass `outSR=4326` for WGS 84. The service caps\n   output at maxRecordCount (2000) features per request (responses set\n   `exceededTransferLimit`); use `resultOffset`/`resultRecordCount` to page.",
			"composes_with": [
				"geonorge.adresser",
				"geonorge.eiendom"
			],
			"last_verified": null,
			"source_urls": [
				"https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/0/query?where=1=1&outFields=*&resultRecordCount=3&f=json",
				"https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/0?f=json",
				"https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer?f=json",
				"https://data.norge.no/api/data-services/01479b10-d65c-3483-99b0-f8b8a323df79"
			],
			"probe": {
				"method": "GET",
				"url": "https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/0?f=json",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fredrikstad.punktforurensning",
			"name": "Punktforurensning – Fredrikstad kommune (ArcGIS REST)",
			"provider": "Fredrikstad kommune",
			"provider_org_nr": "940039541",
			"category": "environment",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No API key required — keyless Esri ArcGIS REST. Open MapServer over HTTPS; layer metadata and the /<layer>/query endpoint return JSON (f=json) or GeoJSON (f=geojson). The FDK record declares INSPIRE \"noConditionsApply\". Send the project User-Agent on every request.",
			"status": "active",
			"license": null,
			"base_url": "https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/3",
			"docs_url": "https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/3",
			"tags": [
				"arcgis-rest",
				"punktforurensning",
				"point-pollution",
				"contaminated-sites",
				"environment",
				"fredrikstad",
				"municipal",
				"miljodata"
			],
			"description": "Esri ArcGIS REST Feature Layer from Fredrikstad municipality serving known point-pollution / contaminated sites (\"Punktforurensning\") as point features. It is layer 3 of the municipality's \"Miljødata\" environment MapServer; each point is a named site with only thin attributes beyond geometry — an integer `ID` and a `NAVN` (site name, e.g. \"Narnte\"). Query features as JSON or GeoJSON; no API key.",
			"when_to_use": "Agent needs the locations of known point-pollution / contaminated sites in Fredrikstad as structured point features: \"punktforurensning Fredrikstad\", \"forurenset grunn punkt Fredrikstad\", \"miljødata forurensningspunkter Fredrikstad\", \"contaminated site points here\", \"point pollution near this address\". Query layer 3 of the Miljødata MapServer (`/MapServer/3/query`) with a where clause or a geometry/bbox and request f=json (or f=geojson). The layer is part of the municipality's environmental dataset, described as \"Miljødata i Fredrikstad kommune.\"",
			"when_not_to_use": "Don't use this to look up point pollution for a street address directly — resolve the address/property to a coordinate first (geonorge.adresser, geonorge.eiendom), then query layer 3 by geometry. This is the Fredrikstad-municipal view; the national authority for contaminated sites is Miljødirektoratet's Grunnforurensning database, so use that for cross-municipal or authoritative contaminated-land data. Coverage is limited to Fredrikstad municipality. The layer carries only a site `ID` and `NAVN` (name) — it does not expose contamination type, levels or status, so don't infer those from it. The Miljødata MapServer also exposes other themes as separate layers (Fremmede arter, Brenseltank, Tungmetaller i jord, Tilstandsklasser, Deponier, …) — pick the layer that matches the theme.",
			"sample_request": "# Query layer 3 (Punktforurensning) — first 10 point features as JSON, all fields\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/3/query?where=1%3D1&outFields=*&resultRecordCount=10&f=json'",
			"agent_recipe": "1. **Inspect the service** — GET `.../Miljodata/MapServer?f=json`. The root is the\n   \"Miljødata i Fredrikstad kommune.\" MapServer; the point-pollution data is layer 3,\n   `Punktforurensning` (esriGeometryPoint). Other themes are separate layers\n   (0 Fremmede arter, 1 Brenseltank, 2 Tungmetaller i jord, 4 Tilstandsklasser,\n   7 Deponier, …).\n2. **Read the schema** — GET `.../MapServer/3?f=json` to list fields. Beyond geometry\n   the layer is thin: `ID` (integer) and `NAVN` (the site name, displayField). There\n   is no contamination-type, level or status field — treat each point as a named site\n   marker only.\n3. **Query features** — GET `.../MapServer/3/query` with `where=1=1` (or a name filter\n   such as `where=NAVN LIKE '%bruk%'`), `outFields=*`, and `f=json` (or `f=geojson`).\n4. **Query by location** — pass `geometry=<x>,<y>` (or an envelope), `geometryType`\n   and `inSR`, plus a `spatialRel`, to fetch the points near a coordinate. To start\n   from an address or cadastre, resolve it via geonorge.adresser / geonorge.eiendom\n   first, then query by geometry.\n5. **Spatial reference & paging** — geometry is delivered in EPSG:25832\n   (ETRS89 / UTM 32N) by default; pass `outSR=4326` for WGS 84. The service caps\n   output at maxRecordCount (2000) features per request (responses set\n   `exceededTransferLimit`); use `resultOffset`/`resultRecordCount` to page.",
			"composes_with": [
				"geonorge.adresser",
				"geonorge.eiendom"
			],
			"last_verified": null,
			"source_urls": [
				"https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/3/query?where=1=1&outFields=*&resultRecordCount=2&f=json",
				"https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/3?f=json",
				"https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer?f=json",
				"https://data.norge.no/api/data-services/337bff13-67ef-3ea6-859d-f772494bd840"
			],
			"probe": {
				"method": "GET",
				"url": "https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/3?f=json",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fredrikstad.slamspredning",
			"name": "Slamspredning – Fredrikstad kommune (ArcGIS REST)",
			"provider": "Fredrikstad kommune",
			"provider_org_nr": "940039541",
			"category": "environment",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No API key required (keyless ArcGIS REST). Open Esri ArcGIS REST MapServer over HTTPS; layer metadata and the /<layer>/query endpoint return JSON (f=json) or GeoJSON (f=geojson). The FDK record declares the INSPIRE license \"noConditionsApply\" (no license field is asserted in this catalog entry). Send the project User-Agent on every request.",
			"status": "active",
			"license": null,
			"base_url": "https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/5",
			"docs_url": "https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/5",
			"tags": [
				"arcgis-rest",
				"slamspredning",
				"sewage-sludge",
				"environment",
				"fredrikstad",
				"municipal",
				"miljodata"
			],
			"description": "Esri ArcGIS REST MapServer layer from Fredrikstad municipality serving sewage-sludge spreading areas (\"Slamspredning\") as polygon features — the zones where treated sludge has been applied (typically on agricultural land). It is layer 5 of the municipality's \"Miljødata\" environment MapServer; beyond geometry each polygon carries `SPREDNINGSÅR` (spreading year, e.g. \"2008\"), `OPPDATERINGSDATO` (update date, returned as epoch milliseconds in REST JSON) and `SAKSNUMMER` (case number, often null). Query features as JSON or GeoJSON; no API key.",
			"when_to_use": "Agent needs the delineated sewage-sludge spreading areas in Fredrikstad as structured polygon features: \"slamspredning Fredrikstad\", \"hvor er det spredt slam\", \"areal for slamspredning\", \"sludge spreading areas here\", \"miljødata slam landbruksareal\". Query layer 5 of the Miljødata MapServer (`/MapServer/5/query`) with a where clause (e.g. on `SPREDNINGSÅR`) or a geometry/bbox and request f=json (or f=geojson). The layer is part of the municipality's environmental dataset, described as \"Miljødata i Fredrikstad kommune.\"",
			"when_not_to_use": "Don't use this to read sludge-spreading status for a street address directly — resolve the address/property to a coordinate first (geonorge.adresser, geonorge.eiendom), then query layer 5 by geometry. Coverage is limited to Fredrikstad municipality and these are historical spreading polygons keyed by `SPREDNINGSÅR`, not a live feed; `OPPDATERINGSDATO` is delivered as epoch milliseconds (convert before display) and `SAKSNUMMER` may be null. The Miljødata MapServer also exposes other themes as separate layers (Fremmede arter, Brenseltank, Tungmetaller i jord, Punktforurensning, Byjord, Deponier, …) — pick the layer that matches the theme. The service is described as \"Miljødata i Fredrikstad kommune.\"",
			"sample_request": "# Query layer 5 (Slamspredning) — first 10 polygon features as JSON, all fields\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/5/query?where=1%3D1&outFields=*&resultRecordCount=10&f=json'",
			"agent_recipe": "1. **Inspect the service** — GET `.../Miljodata/MapServer?f=json`. The root is the\n   \"Miljødata i Fredrikstad kommune.\" MapServer; the sludge-spreading data is layer 5,\n   `Slamspredning` (esriGeometryPolygon). Other themes are separate layers\n   (0 Fremmede arter, 1 Brenseltank, 2 Tungmetaller i jord, 3 Punktforurensning,\n   6 Byjord, 7 Deponier, …).\n2. **Read the schema** — GET `.../MapServer/5?f=json` to list fields. Beyond geometry\n   the layer carries `SPREDNINGSÅR` (spreading year, string e.g. \"2008\"),\n   `OPPDATERINGSDATO` (esriFieldTypeDate) and `SAKSNUMMER` (case number, string).\n3. **Query features** — GET `.../MapServer/5/query` with `where=1=1` (or an attribute\n   filter such as `where=SPREDNINGSÅR='2008'`), `outFields=*`, and `f=json`\n   (or `f=geojson`).\n4. **Query by location** — pass `geometry=<x>,<y>` (or an envelope), `geometryType`\n   and `inSR`, plus a `spatialRel`, to fetch the polygons at a coordinate. To start\n   from an address or cadastre, resolve it via geonorge.adresser / geonorge.eiendom\n   first, then query by geometry.\n5. **Field decoding** — `OPPDATERINGSDATO` comes back as epoch milliseconds in REST\n   JSON (e.g. 1282780800000); convert to a date before display. `SAKSNUMMER` is\n   frequently null. Don't assume any element/measurement fields on this layer.\n6. **Spatial reference & paging** — geometry is delivered in EPSG:25832\n   (ETRS89 / UTM 32N) by default; pass `outSR=4326` for WGS 84. The service caps\n   output at maxRecordCount (2000) features per request (responses set\n   `exceededTransferLimit`); use `resultOffset`/`resultRecordCount` to page.",
			"composes_with": [
				"geonorge.adresser",
				"geonorge.eiendom"
			],
			"last_verified": null,
			"source_urls": [
				"https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/5/query?where=1=1&outFields=*&resultRecordCount=2&f=json",
				"https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/5?f=json",
				"https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer?f=json",
				"https://data.norge.no/api/data-services/76533788-20b4-3680-bc6e-dab1c68334bf"
			],
			"probe": {
				"method": "GET",
				"url": "https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/5?f=json",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "fredrikstad.tungmetaller-jord",
			"name": "Tungmetaller i jord – Fredrikstad kommune (ArcGIS REST)",
			"provider": "Fredrikstad kommune",
			"provider_org_nr": "940039541",
			"category": "environment",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No API key required. Open Esri ArcGIS REST MapServer over HTTPS; layer metadata and the /<layer>/query endpoint return JSON (f=json) or GeoJSON (f=geojson). Send the project User-Agent on every request.",
			"status": "active",
			"license": null,
			"base_url": "https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer",
			"docs_url": "https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/2",
			"tags": [
				"arcgis-rest",
				"tungmetaller",
				"heavy-metals",
				"soil",
				"environment",
				"fredrikstad",
				"municipal",
				"miljodata"
			],
			"description": "Esri ArcGIS REST MapServer from Fredrikstad municipality serving measured heavy-metal concentrations in soil (\"Tungmetaller i jord\") as point features. It is layer 2 of the municipality's \"Miljødata\" environment MapServer; each point carries measured concentrations of chemical elements in dedicated fields (AG, AS_, BA, CD, CR, CU, FE, HG, MN, MG, PB, ZN, …) plus a sampling YEAR. Query features as JSON or GeoJSON; no API key.",
			"when_to_use": "Agent needs measured heavy-metal / contamination levels in soil in Fredrikstad as structured point features: \"tungmetaller i jord Fredrikstad\", \"blyverdier (PB) i jordprøve\", \"miljødata forurenset jord Fredrikstad\", \"heavy metals in soil here\", \"soil contamination sample points\". Query layer 2 of the Miljødata MapServer (`/MapServer/2/query`) with a where clause or a geometry/bbox and request f=json (or f=geojson). The layer is part of the municipality's environmental dataset, described as \"Miljødata i Fredrikstad kommune.\"",
			"when_not_to_use": "Don't use this to read soil contamination for a street address directly — resolve the address/property to a coordinate first (geonorge.adresser, geonorge.eiendom), then query layer 2 by geometry. Coverage is limited to Fredrikstad municipality and these are historical sample points (e.g. YEAR 1999), not a live monitoring feed. The Miljødata MapServer also exposes other themes as separate layers (Fremmede arter, Brenseltank, Punktforurensning, Tilstandsklasser, Deponier, …) — pick the layer that matches the theme rather than reading every element field off this one.",
			"sample_request": "# Query layer 2 (Tungmetaller i jord) — first 10 point features as JSON, all fields\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/2/query?where=1%3D1&outFields=*&resultRecordCount=10&f=json'",
			"agent_recipe": "1. **Inspect the service** — GET `.../Miljodata/MapServer?f=json`. The root is the\n   \"Miljødata i Fredrikstad kommune.\" MapServer; the heavy-metals data is layer 2,\n   `Tungmetaller i jord` (esriGeometryPoint). Other themes are separate layers\n   (0 Fremmede arter, 1 Brenseltank, 3 Punktforurensning, 4 Tilstandsklasser,\n   7 Deponier, …).\n2. **Read the schema** — GET `.../MapServer/2?f=json` to list fields. Element columns\n   hold measured concentrations (AG, AS_, BA, CD, CR, CU, FE, HG, MN, MG, PB, ZN, …)\n   and `YEAR` is the sampling year.\n3. **Query features** — GET `.../MapServer/2/query` with `where=1=1` (or an attribute\n   filter such as `where=PB>100`), `outFields=*`, and `f=json` (or `f=geojson`).\n4. **Query by location** — pass `geometry=<x>,<y>` (or an envelope), `geometryType`\n   and `inSR`, plus a `spatialRel`, to fetch the points near a coordinate. To start\n   from an address or cadastre, resolve it via geonorge.adresser / geonorge.eiendom\n   first, then query by geometry.\n5. **Spatial reference & paging** — geometry is delivered in EPSG:25832\n   (ETRS89 / UTM 32N) by default; pass `outSR=4326` for WGS 84. The service caps\n   output at maxRecordCount (2000) features per request (responses set\n   `exceededTransferLimit`); use `resultOffset`/`resultRecordCount` to page.",
			"composes_with": [
				"geonorge.adresser",
				"geonorge.eiendom"
			],
			"last_verified": null,
			"source_urls": [
				"https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/2/query?where=1=1&outFields=*&resultRecordCount=2&f=json",
				"https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/2?f=json",
				"https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer?f=json",
				"https://data.norge.no/api/data-services/fd773d71-8d57-39e5-aede-b7e10430ef2a"
			],
			"probe": {
				"method": "GET",
				"url": "https://arcgis.fredrikstad.kommune.no/server/rest/services/MiljoLandbruk/Miljodata/MapServer/2?f=json",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "geonorge.adresser",
			"name": "Åpent adresse-API fra Kartverket",
			"provider": "Statens kartverk",
			"provider_org_nr": "971040238",
			"category": "geo",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No API key or login required. The OpenAPI description states \"innlogging/autorisasjon for\" is not necessary to use the API.",
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://ws.geonorge.no/adresser/v1/",
			"docs_url": "https://ws.geonorge.no/adresser/v1/",
			"tags": [
				"address",
				"geocoding",
				"norway",
				"cadastre",
				"kartverket",
				"nlod",
				"gov"
			],
			"description": "Open address search API from Kartverket (Statens kartverk) providing lookup of Norwegian addresses in the cadastre (matrikkelen). Supports free-text search, fuzzy matching, and geographic point search. No authentication required.",
			"when_to_use": "Use when the user provides a Norwegian street address or asks to geocode one: \"finn koordinater for Storgata 10\", \"hva er adressen til Karl Johans gate 10\", \"address lookup in Norway\", \"where is Munkegata 1 Trondheim\", \"search for addresses near a point\", \"reverse geocode Norwegian coordinates\". Combine with met.locationforecast to get weather at an address.",
			"when_not_to_use": "Do not use for datasets larger than 10,000 rows — the API returns only the first 10,000 results; download bulk files from geonorge.no instead. Not suitable for place name or municipality lookups outside the address register — use geonorge.stedsnavn for place names.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://ws.geonorge.no/adresser/v1/sok?sok=Karl%20Johans%20gate%2010&treffPerSide=1'",
			"agent_recipe": "1. For free-text address search, call GET /sok?sok=<query>&treffPerSide=5.\n   Append municipality name or number (&kommunenavn=Oslo) to narrow results.\n2. For point-based reverse lookup, call GET /punktsok?lat=<lat>&lon=<lon>&radius=<meters>.\n   Results are sorted by distance from the point; response includes meterDistanseTilPunkt.\n3. Each result's representasjonspunkt contains lat/lon in EPSG:4258.\n   Pass these directly to met.locationforecast for a weather forecast at that address.\n4. The API returns up to 10,000 results maximum. For bulk downloads use geonorge.no.\n5. Use &fuzzy=true on /sok for typo-tolerant search (incompatible with wildcard *).\n6. Breaking changes are announced at least 3 months in advance on geonorge.no.",
			"composes_with": [
				"met.locationforecast",
				"geonorge.stedsnavn"
			],
			"last_verified": "2026-05-05T22:39:00.000Z",
			"source_urls": [
				"https://ws.geonorge.no/adresser/v1/openapi.json"
			],
			"probe": {
				"method": "GET",
				"url": "https://ws.geonorge.no/adresser/v1/sok?sok=Karl%20Johans%20gate%2010&treffPerSide=1",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "geonorge.eiendom",
			"name": "Åpent eiendoms-API for lokalisering",
			"provider": "Statens kartverk",
			"provider_org_nr": "971040238",
			"category": "property",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "Det er ikke nødvendig med innlogging/autorisasjon for å bruke APIet.",
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://api.kartverket.no/eiendom/v1",
			"docs_url": "https://ws.geonorge.no/eiendom/v1/",
			"tags": [
				"geo",
				"matrikkel",
				"eiendom",
				"kartverk",
				"norway",
				"geocoding"
			],
			"description": "Open REST API from Kartverket for geocoding and localising properties (eiendommer) in Norway. Look up which cadastral units (matrikkelenheter) lie near a coordinate, or find the position of a known matrikkelnummer. No authentication required.",
			"when_to_use": "Use when an agent needs to answer: \"which property is at this coordinate?\", \"find eiendom by coordinate\", \"geokod adresse til eiendom\", \"matrikkelnummer for posisjon\", \"what cadastral unit is at this lat/lng\", or \"finn representasjonspunkt for matrikkelnummer\". Covers both coordinate-to-property and property-to-coordinate directions.",
			"when_not_to_use": "Do not use for radius searches larger than 3 000 m — the API enforces a hard ceiling. Do not use to retrieve boundary quality or exact boundary lines for a property; the API does not deliver type of boundary or quality information about boundaries. For full cadastral boundary downloads use geonorge.no (Matrikkelen-Eiendomskart Teig). For authoritative boundary data from Matrikkelen, use MatrikkelAPI instead.",
			"sample_request": "curl -sSL 'https://ws.geonorge.no/eiendom/v1/punkt?nord=6614167&ost=261109&koordsys=25833&radius=100&treffPerSide=5'",
			"agent_recipe": "## Coordinate → nearest properties (`/punkt`)\n1. Obtain a coordinate (nord/ost) in a known EPSG/SRID system (e.g. 4258 for WGS-84,\n   25833 for UTM zone 33N). If the user gave a place name, geocode it first.\n2. GET `/punkt?nord=<nord>&ost=<ost>&koordsys=<srid>&radius=<m>&treffPerSide=<n>`\n   - `radius` defaults to 100 m, maximum 3 000 m.\n   - `treffPerSide` defaults to 10, maximum 500.\n3. Response: `{ \"eiendom\": [...], \"metadata\": { \"totaltAntallTreff\": N } }`.\n   Each item includes `matrikkelnummertekst`, `kommunenummer`, `gardsnummer`,\n   `bruksnummer`, `meterFraPunkt`, and `representasjonspunkt` (with coordinates).\n4. Use `side` parameter to paginate if `totaltAntallTreff > treffPerSide`.\n\n## Matrikkelnummer → position or boundary (`/geokoding`)\n1. Supply `?matrikkelnummer=<knr>-<gnr>/<bnr>` OR individual\n   `?kommunenummer=<knr>&gardsnummer=<gnr>&bruksnummer=<bnr>`.\n2. Add `&omrade=true` to get the full polygon boundary in addition to the\n   representative point.\n3. Response is a GeoJSON FeatureCollection. Each feature carries properties\n   identical to the `/punkt` schema.\n\n## Coordinate → property polygons (`/punkt/omrader`)\n1. Same parameters as `/punkt`, but returns a GeoJSON FeatureCollection of\n   polygon geometries (teiger) instead of point representations.\n2. Use `maksTreff` (default 50, max 500) to control result count.\n\n## Coordinate system notes\n- `koordsys` is the SRID of the *input* coordinates.\n- `utkoordsys` controls the *output* CRS (default 4258 ≈ WGS-84).\n- Use `filtrer` to request only needed fields and reduce payload size.\n\n## Data freshness\n- Property data has approximately one day's delay from Matrikkelen.\n- The cadastral map may be incomplete or imprecise (`nøyaktighetsklasseteig`\n  gives a traffic-light quality indicator: Grønt/Gult/Rødt).\n\n## Migration note\n- Canonical base URL is `https://api.kartverket.no/eiendom/v1` (since Dec 2023).\n- `https://ws.geonorge.no/eiendom/v1` is a proxy that remains available.",
			"composes_with": [
				"met.locationforecast"
			],
			"last_verified": "2026-05-09T07:11:14.000Z",
			"source_urls": [
				"https://dataservices.fellesdatakatalog.digdir.no/dataservices/c94bfdf4-66ca-3057-8398-c083b84ec393",
				"https://ws.geonorge.no/eiendom/v1/",
				"https://ws.geonorge.no/eiendom/v1/openapi.json",
				"https://ws.geonorge.no/eiendom/v1/punkt?nord=6614167&ost=261109&koordsys=25833&radius=100&treffPerSide=5"
			],
			"probe": {
				"method": "GET",
				"url": "https://ws.geonorge.no/eiendom/v1/punkt?nord=6614167&ost=261109&koordsys=25833&radius=100&treffPerSide=5",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "geonorge.hoydedata",
			"name": "Høydedata API",
			"provider": "Statens kartverk",
			"provider_org_nr": "971040238",
			"category": "geo",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "Det er ikke nødvendig med innlogging/autorisasjon for å bruke API-et. No API key or registration required.",
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://ws.geonorge.no/hoydedata/v1/",
			"docs_url": "https://ws.geonorge.no/hoydedata/v1/",
			"tags": [
				"elevation",
				"depth",
				"terrain",
				"norway",
				"nlod",
				"kartverket"
			],
			"description": "Open REST API from Kartverket that returns the elevation (terrain height) or water depth in metres for any coordinate in Norway. Covers land terrain, lakes, and coastal/sea depths in a single unified endpoint. No authentication required.",
			"when_to_use": "Use when an agent needs the elevation or depth at a specific Norwegian coordinate: \"høyde over havet i Oslo\", \"where is sea depth at this point\", \"elevation at lat=59.91 lon=10.75\", \"terrenghøyde for koordinat\". The canonical chain is: geocode a place name via geonorge.stedsnavn or geonorge.adresser, then call this API with the resolved coordinates to get elevation.",
			"when_not_to_use": "Do not use the depth values returned by this API for navigation — the API itself warns the depths are not suitable for that purpose. For bulk dataset downloads, use hoydedata.no or geonorge.no directly rather than this API.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://ws.geonorge.no/hoydedata/v1/punkt?koordsys=4258&nord=59.91&ost=10.75'",
			"agent_recipe": "1. If the user gave a place name (not coordinates), call geonorge.stedsnavn or\n   geonorge.adresser to resolve to lat/lon (EPSG:4258 / WGS-84 decimal degrees).\n2. Call GET /punkt?koordsys=4258&nord=<lat>&ost=<lon> with the resolved coordinates.\n3. Parse the response: `punkter[0].z` is elevation in metres above sea level (positive)\n   or depth below sea level (negative). `punkter[0].terreng` describes the terrain type\n   (land, lake, sea). `punkter[0].datakilde` identifies the data source used.\n4. For multiple points in one request, use the `punkter=[[lon1,lat1],[lon2,lat2]]`\n   query parameter (max 50 points per request, order is east/lon first).\n5. The API selects the best available data source automatically — prefer /punkt over\n   /datakilder/{datakilde}/punkt unless a specific source is required.",
			"composes_with": [
				"geonorge.adresser",
				"geonorge.stedsnavn"
			],
			"last_verified": "2026-05-05T20:45:15.000Z",
			"source_urls": [
				"https://ws.geonorge.no/hoydedata/v1/openapi.json",
				"https://ws.geonorge.no/hoydedata/v1/punkt?koordsys=4258&nord=59.91&ost=10.75"
			],
			"probe": {
				"method": "GET",
				"url": "https://ws.geonorge.no/hoydedata/v1/punkt?koordsys=4258&nord=59.91&ost=10.75",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "geonorge.kommuneinfo",
			"name": "Administrative enheter API (kommune/fylke)",
			"provider": "Statens kartverk",
			"provider_org_nr": "971040238",
			"category": "geo",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://ws.geonorge.no/kommuneinfo/v1/",
			"docs_url": "https://ws.geonorge.no/kommuneinfo/v1/",
			"tags": [
				"kommune",
				"fylke",
				"administrative-enheter",
				"norway",
				"gov",
				"nlod",
				"geo"
			],
			"description": "REST API from Kartverket (Statens kartverk) that provides data about Norwegian administrative units — specifically municipalities (kommuner) and counties (fylker). Returns names, numbers, bounding areas, and representative points. No authentication required. Data is also downloadable in bulk from Geonorge.",
			"when_to_use": "Use when the agent needs to resolve a Norwegian municipality or county by name or number: \"hvilken kommune er dette?\", \"finn kommunenummer for Oslo\", \"list alle kommuner i Norge\", \"which municipality contains coordinates lat=59.91, lon=10.75\", \"kommunenavn for kommunenummer 0301\". Also use to reverse-geocode a WGS-84 point to its kommune/fylke via the /punkt endpoint.",
			"when_not_to_use": null,
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://ws.geonorge.no/kommuneinfo/v1/kommuner/0301'",
			"agent_recipe": "1. To look up a municipality by number, call GET /kommuner/{kommunenummer} with the\n   4-digit zero-padded number (e.g. 0301 for Oslo).\n2. To list all municipalities, call GET /kommuner — returns kommunenummer and kommunenavn\n   for all Norwegian kommuner.\n3. To reverse-geocode a coordinate to its kommune/fylke, call GET /punkt with query\n   params nord (latitude), ost (longitude), and koordsys=4258 for WGS-84.\n   Example: /punkt?nord=59.91&ost=10.75&koordsys=4258\n4. If the user provided a place name instead of coordinates, first call geonorge.stedsnavn\n   to resolve to lat/lon, then use /punkt.\n5. The preferred endpoint has moved to https://api.kartverket.no/kommuneinfo/v1 —\n   ws.geonorge.no proxies to it, so both work. Consider updating to the new base URL.\n6. Response fields: kommunenummer (4-digit string), kommunenavn, fylkesnummer, fylkesnavn,\n   samiskForvaltningsomrade (boolean), avgrensningsboks (bounding box coordinates).",
			"composes_with": [
				"geonorge.adresser",
				"geonorge.stedsnavn"
			],
			"last_verified": "2026-05-05T22:45:00.000Z",
			"source_urls": [
				"https://ws.geonorge.no/kommuneinfo/v1/openapi.json"
			],
			"probe": {
				"method": "GET",
				"url": "https://ws.geonorge.no/kommuneinfo/v1/kommuner/0301",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "geonorge.stedsnavn",
			"name": "Kartverkets åpne API for søk etter stedsnavn",
			"provider": "Statens kartverk",
			"provider_org_nr": "971040238",
			"category": "geo",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "Det er ikke nødvendig med innlogging/autorisasjon for å bruke APIet.",
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://ws.geonorge.no/stedsnavn/v1/",
			"docs_url": "https://ws.geonorge.no/stedsnavn/v1/",
			"tags": [
				"geonorge",
				"kartverket",
				"geocoding",
				"place-names",
				"norway",
				"nlod"
			],
			"description": "Norwegian place-name search API from Kartverket (Statens kartverk). Search for place names by text, retrieve all spellings and statuses for a place, or find places near a geographic point. Returns coordinates (lat/lon) for each match. No authentication required.",
			"when_to_use": "Use when the user provides a Norwegian place name and you need coordinates: \"hvor er Tromsø\", \"finn koordinater for Lillehammer\", \"hva er lat/lon for Hardangervidda\", \"search for place Bergen\", \"stedsnavn Oslo\". Also use for reverse-geocoding nearby places from a known coordinate. Typical first step before calling met.locationforecast.",
			"when_not_to_use": "Do not use for full address lookups (street + house number) — use a dedicated address API instead. Note the API returns at most 5000 results per query, so exhaustive enumeration of all Norwegian place names is not feasible. For high-volume geocoding of street addresses, prefer Kartverket's address API.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://ws.geonorge.no/stedsnavn/v1/navn?sok=oslo&treffPerSide=1'",
			"agent_recipe": "1. Call GET /navn?sok=<place name>&treffPerSide=5 with the user's place name.\n   Use wildcard (*) at the end for partial matches, e.g. sok=Oslo*.\n2. From the response, read navn[0].representasjonspunkt — it has fields\n   `nord` (latitude) and `øst` (longitude) in EPSG:4258 (WGS84-compatible).\n3. Pass those coordinates to met.locationforecast or another geo API.\n4. If multiple results are returned, prefer the one with navneobjekttype\n   matching the user's intent (e.g. \"By\" for a city, \"Fylke\" for a county).\n5. For proximity search (nearest places to a known point), use GET /punkt\n   with ?nord=<lat>&ost=<lon>&koordsys=4258&radius=1000.\n6. Results are sorted by place category (county before brook) then by match\n   quality — the first result is usually the best match.\n7. The API is open (no key, no auth). Include a descriptive User-Agent header.",
			"composes_with": [
				"met.locationforecast"
			],
			"last_verified": "2026-05-05T20:38:40.000Z",
			"source_urls": [
				"https://ws.geonorge.no/stedsnavn/v1/navn?sok=oslo&treffPerSide=2",
				"https://ws.geonorge.no/stedsnavn/v1/openapi.json"
			],
			"probe": {
				"method": "GET",
				"url": "https://ws.geonorge.no/stedsnavn/v1/navn?sok=oslo&treffPerSide=1",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "geovekst.fkb-gronnstruktur-wms",
			"name": "FKB-Grønnstruktur WMS",
			"provider": "Geovekst",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": "No API key or User-Agent restriction on the WMS endpoint. The FDK record declares the \"Norge digitalt\"-lisens (free for registered Norge digitalt participants and open public use; attribution required). Endpoint hosted by NIBIO (Norsk institutt for bioøkonomi) on behalf of the Geovekst cooperation.",
			"status": "active",
			"license": "proprietary",
			"base_url": "https://wms.nibio.no/cgi-bin/gronnstruktur",
			"docs_url": "https://kartkatalog.geonorge.no/Metadata/uuid/48ec2648-3cef-4817-a28f-aeaf00cfdc8f",
			"tags": [
				"wms",
				"vegetation",
				"landcover",
				"fkb",
				"geovekst",
				"gov",
				"norway",
				"ogc"
			],
			"description": "OGC Web Map Service (WMS 1.3.0) rendering the FKB-Grønnstruktur dataset, which combines remote-sensing and FKB data to show vegetation cover split into three layer categories — ground, shrub and tree — plus grey non-vegetated areas such as buildings and infrastructure. Hosted by NIBIO on behalf of the Geovekst cooperation; no API key required.",
			"when_to_use": "Use when rendering or querying vegetation-structure and land-cover maps for a Norwegian area: \"grønnstruktur kart\", \"vegetasjonsdekke Norge\", \"vis tre- og busksjikt for et område\", \"land cover map for Norwegian municipality\", \"vegetation layers ground/shrub/tree\". Returns raster map tiles via GetMap; distinguishes ground, shrub and tree layers from grey built-up surfaces.",
			"when_not_to_use": null,
			"sample_request": "curl -sSL \\\n  'https://wms.nibio.no/cgi-bin/gronnstruktur?service=WMS&version=1.3.0&request=GetMap&layers=arealtype&styles=&format=image/png&transparent=true&width=512&height=512&crs=EPSG:25833&bbox=-100000,6450000,1200000,8000000'",
			"agent_recipe": "1. Issue a GetCapabilities request to discover available layers:\n   GET https://wms.nibio.no/cgi-bin/gronnstruktur?REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.3.0\n   Layers: arealtype (land-cover / vegetation type), sjikthoyder (layer heights).\n2. Build a GetMap request with the desired layer, CRS (EPSG:25833 recommended\n   for Norway, EPSG:3857 for web maps), bounding box and image dimensions.\n   Supported output formats include image/png, image/jpeg and image/tiff.\n3. If the user supplies a place name rather than a bounding box, resolve it to\n   coordinates first via a geocoding entry, then compute a bounding box.\n4. Return the rendered tile to the user's mapping application. Note the dataset\n   mixes remote-sensing and FKB inputs, so precision of the green-structure\n   attributes is lower than in traditional FKB mapping.",
			"composes_with": [],
			"last_verified": "2026-05-31T12:00:00.000Z",
			"source_urls": [
				"https://wms.nibio.no/cgi-bin/gronnstruktur?REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.3.0"
			],
			"probe": {
				"method": "GET",
				"url": "https://wms.nibio.no/cgi-bin/gronnstruktur?REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.3.0",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "helsedir.kodeverk",
			"name": "Nasjonale helsefaglige kodeverk (HAPI)",
			"provider": "Helsedirektoratet",
			"provider_org_nr": "983544622",
			"category": "health",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No API key required. Content is freely available under NLOD. Callers must attribute Helsedirektoratet as source and must not present content as their own.",
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://utvikler.helsedirektoratet.no",
			"docs_url": "https://www.helsedirektoratet.no/om-oss/apne-data-api/om-api-tjenesten",
			"tags": [
				"kodeverk",
				"terminologi",
				"helsefaglig",
				"nlod",
				"gov",
				"guidelines",
				"atc",
				"legemidler"
			],
			"description": "Open content API from Helsedirektoratet (HAPI) providing access to national health terminology, code systems, and clinical content from helsedirektoratet.no. Covers national guidelines, drug registers (ATC), healthcare quality indicators, and reuse-ready health content in JSON, Markdown, and HTML formats. No authentication required; licensed under NLOD.",
			"when_to_use": "Use when an agent needs Norwegian national health content, clinical terminology, or healthcare code systems: \"hva er ATC-koden for ibuprofen?\", \"finn nasjonale faglige retningslinjer for diabetes\", \"kodeverk og terminologi i helse- og omsorgssektoren\", \"national guidelines for antibiotic use\", \"pakkeforløp lungekreft innhold\", \"helserefusjonsdata for EPJ\". Also useful for embedding Helsedirektoratet clinical content in EHR systems, mobile health apps, or clinical decision support tools.",
			"when_not_to_use": "Do not alter the clinical content — the terms of use forbid changing the professional content in ways that alter its meaning. Do not use for services that could be mistaken for official Helsedirektoratet publications without clearly attributing the source. The API does not accept write operations; it is read-only. For patient-level health data or population health statistics use the appropriate Norsk helseregister or FHI APIs instead.",
			"sample_request": "# Fetch API documentation (HTML)\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://www.helsedirektoratet.no/om-oss/apne-data-api/om-api-tjenesten'\n\n# Explore FinnKode terminology browser\n# https://finnkode.helsedirektoratet.no/\n\n# Full API access via developer portal\n# https://utvikler.helsedirektoratet.no",
			"agent_recipe": "1. **Find the endpoint**: The full API catalogue is at https://utvikler.helsedirektoratet.no.\n   Browse the developer portal to identify which dataset endpoint you need\n   (content, drugs/ATC, quality indicators, reimbursement data, etc.).\n2. **Fetch content**: Most endpoints return JSON with embedded semantic HTML.\n   Parse the JSON envelope to extract the content fields you need.\n3. **Attribute the source**: Always mark content from this API as sourced from\n   Helsedirektoratet, as required by the NLOD terms. Attribution must be\n   clearly visible to end users and be the same size as surrounding text.\n4. **Do not modify clinical content**: The professional/clinical meaning of\n   content must not be altered. You may translate, excerpt, or reformat, but\n   not change what the content recommends clinically.\n5. **Terminology lookups**: For code/terminology searches, use the FinnKode\n   frontend at https://finnkode.helsedirektoratet.no/ or the corresponding\n   API endpoint. The service covers Norwegian national health code systems\n   including ICD, ICPC, ATC, SNOMED, and others.\n6. **Rate limits**: Not explicitly documented. Use standard HTTP caching\n   (respect Cache-Control / ETag headers). Content changes infrequently —\n   cache aggressively.",
			"composes_with": [],
			"last_verified": "2026-05-26T00:00:00.000Z",
			"source_urls": [
				"https://finnkode.helsedirektoratet.no/",
				"https://www.helsedirektoratet.no/om-oss/apne-data-api",
				"https://www.helsedirektoratet.no/om-oss/apne-data-api/om-api-tjenesten"
			],
			"probe": {
				"method": "GET",
				"url": "https://www.helsedirektoratet.no/om-oss/apne-data-api/om-api-tjenesten",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "hi.antracen-sediment-wms",
			"name": "Organiske miljøgifter i marine sedimenter - Antracen-nivåer WMS",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "environment",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://kart.hi.no/mareano/mareano_kjemi/antracen/ows",
			"docs_url": "https://kart.hi.no/mareano/mareano_kjemi/antracen/ows?request=GetCapabilities&service=WMS",
			"tags": [
				"mareano",
				"sediment",
				"pah",
				"seabed",
				"gov"
			],
			"description": "WMS map service from the Institute of Marine Research (Havforskningsinstituttet) showing anthracene (a PAH) concentrations in µg/kg dry weight from surface-sediment samples collected on annual MAREANO surveys since 2006. Returns rendered map tiles, not raw feature data.",
			"when_to_use": "Use when an agent needs a visual map layer of anthracene / organic-pollutant contamination levels in Norwegian marine surface sediments: \"antracen i havbunnssedimenter\", \"MAREANO miljøgifter kart\", \"PAH levels Barents Sea seabed\", overlaying sediment chemistry on a map.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/mareano/mareano_kjemi/antracen/ows?request=GetCapabilities&service=WMS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/mareano/mareano_kjemi/antracen/ows?service=WMS&request=GetCapabilities",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "hi.artsutbredelse-fisk-bergnebb-wms",
			"name": "Artsutbredelse Fisk - Bergnebb WMS",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://kart.hi.no/data/utbredelseskart/bergnebb/ows",
			"docs_url": null,
			"tags": [
				"hi",
				"marine",
				"species",
				"distribution",
				"ogc"
			],
			"description": "WMS map service from the Institute of Marine Research (Havforskningsinstituttet) showing the geographic distribution of the goldsinny wrasse (Bergnebb, Ctenolabrus rupestris) along the Norwegian coast. Served as standard OGC WMS 1.3.0 image tiles (PNG/JPEG) for any GIS or map client; no authentication, no fees.",
			"when_to_use": "Use when the user wants a map layer of goldsinny wrasse / bergnebb distribution in Norwegian coastal waters: \"vis utbredelse av bergnebb\", \"where does Ctenolabrus rupestris occur\", \"leppefisk-kart Skagerrak\", \"wrasse distribution map for a GIS\". Returns rendered map images, not raw feature geometries.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/data/utbredelseskart/bergnebb/ows?request=GetCapabilities&service=WMS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/data/utbredelseskart/bergnebb/ows?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "hi.artsutbredelse-fisk-ogc",
			"name": "Artsutbredelse Fisk OGC API - Features",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": "971349077",
			"category": "environment",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No API key required. Open OGC API - Features service over HTTPS; returns JSON by default and GeoJSON from the collection /items endpoints (f=json). Send the project User-Agent on every request.",
			"status": "active",
			"license": "CC-BY-4.0",
			"base_url": "https://kart.hi.no/data/utbredelseskart/ogc/features/v1",
			"docs_url": "https://kart.hi.no/data/utbredelseskart/ogc/features/v1/api?f=html",
			"tags": [
				"hi",
				"havforskningsinstituttet",
				"artsutbredelse",
				"species-distribution",
				"fish",
				"marine",
				"biodiversity",
				"ogc-api-features",
				"geojson",
				"cc-by"
			],
			"description": "Havforskningsinstituttet's species-distribution maps for Norwegian waters, served as an OGC API - Features RESTful JSON/GeoJSON service. Contains generalized distribution maps for ~84 marine species — fish, marine mammals and other marine species — based on the responsible scientist's interpretation of distribution over the last 30 years. One feature collection per species (e.g. Blaakveite = Greenland halibut, Brisling = sprat, Breiflabb = monkfish). Bbox-queryable, open, no API key.",
			"when_to_use": "Agent needs the mapped distribution area for a marine species in Norwegian waters: \"hvor finnes blåkveite\", \"utbredelse av brisling\", \"where does Greenland halibut live\", \"kart over breiflabb\", \"marine species distribution Norway\". List collections (one per species) at /collections, then query a species collection's /items endpoint with a bbox to fetch the GeoJSON distribution polygons for an area.",
			"when_not_to_use": "Not point observations, survey hauls or real-time tracking — these are generalized maps split into per-species theme layers, reflecting the responsible scientist's interpretation, not raw sightings. Not abundance, stock-assessment or quota figures (use Havforskningsinstituttet's advisory products for that). Many spawning-area layers are time-limited; check the feature attribute table for validity rather than assuming the geometry is current.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://kart.hi.no/data/utbredelseskart/ogc/features/v1/collections/Blaakveite/items?bbox=4,62,12,71&limit=5&f=json'",
			"agent_recipe": "1. This is an OGC API - Features service. Start at the landing document\n   (base_url?f=json), then GET /collections?f=json to list the feature\n   collections. There is one collection per marine species (~84 total): the\n   collection `id` is an ASCII species slug (e.g. `Blaakveite`, `Brisling`,\n   `Breiflabb`) and `title` is the Norwegian species name (e.g. `Blåkveite`).\n   Collection `description` often includes the English/Latin name (e.g.\n   \"Distribution map for Greenland halibut\").\n2. To find the species you want, scan the collections list and match on\n   `title`/`description` (Norwegian, English and Latin names appear there),\n   then use that collection's `id` in the path.\n3. To fetch the distribution over an area, GET\n   /collections/{id}/items?bbox=minLon,minLat,maxLon,maxLat&f=json\n   (CRS84 / lon,lat order). Use `limit` and follow the `next` link for paging.\n4. The response is GeoJSON: iterate `features[]`; geometry carries the\n   distribution area for that species and `properties` carry attributes such\n   as the validity period — spawning-area layers are often time-limited, so\n   read the attributes rather than assuming the polygon is current.\n5. To go from a property or address to a bbox, resolve it first via\n   geonorge.eiendom (cadastre) or geonorge.adresser, then query the species\n   collection with the resulting bounding box.",
			"composes_with": [
				"geonorge.eiendom",
				"geonorge.adresser"
			],
			"last_verified": null,
			"source_urls": [
				"https://data.norge.no/api/data-services/9bd4f365-237d-3ef8-990b-74718fa00637",
				"https://kart.hi.no/data/utbredelseskart/ogc/features/v1/collections/Blaakveite/items?limit=1&f=json",
				"https://kart.hi.no/data/utbredelseskart/ogc/features/v1/collections?f=json",
				"https://kart.hi.no/data/utbredelseskart/ogc/features/v1/conformance?f=json",
				"https://kart.hi.no/data/utbredelseskart/ogc/features/v1?f=json"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/data/utbredelseskart/ogc/features/v1/collections?f=json",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "hi.artsutbredelse-sjopattedyr-wfs",
			"name": "Artsutbredelse Sjøpattedyr WFS",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "CC-BY-4.0",
			"base_url": "https://kart.hi.no/data/utbredelseskart/wms/ows",
			"docs_url": "https://kart.hi.no/data/utbredelseskart/wms/ows?request=GetCapabilities&service=WFS",
			"tags": [
				"wfs",
				"marine-mammals",
				"distribution",
				"species",
				"gov"
			],
			"description": "WFS service from the Institute of Marine Research exposing generalized distribution maps for marine species in Norwegian waters, split across three sea areas (Barents Sea, Norwegian Sea, North Sea/Skagerrak) and into per-species theme layers. For marine mammals these include distribution and whelping/moulting areas. Served as GML/GeoJSON over WFS 2.0.0; open.",
			"when_to_use": "Use when an agent needs vector distribution data for Norwegian marine mammals: \"utbredelseskart sjøpattedyr\", \"marine mammal distribution WFS\", \"kaste- og hårfellingsområder\", \"sjøpattedyr utbredelse havområder\". Returns geospatial features per species; for a rendered map use the corresponding WMS layer instead.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": "1. GET the GetCapabilities URL (`?service=WFS&request=GetCapabilities`) to list the\n   feature types — marine mammals appear under names such as\n   `utbredelseskart:utbredelse_sjopattedyr`, `utbredelseskart:Finnhval` and\n   `utbredelseskart:Nise`.\n2. Request features with\n   `request=GetFeature&typeNames=utbredelseskart:utbredelse_sjopattedyr&outputFormat=application/json&count=10`\n   to get GeoJSON polygons (GML, KML and Shapefile are also supported).\n3. Restrict with a `bbox=` parameter to a sea area (Barents Sea, Norwegian Sea or North\n   Sea/Skagerrak) before bulk extraction.\n4. Distribution maps are generalized reference data with a defined validity area per\n   species — cache between runs.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/data/utbredelseskart/wms/ows?request=GetCapabilities&service=WFS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/data/utbredelseskart/wms/ows?request=GetCapabilities&service=WFS",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "hi.artsutbredelse-wms",
			"name": "Artsutbredelse WMS",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://kart.hi.no/data/utbredelseskart/wms/ows",
			"docs_url": null,
			"tags": [
				"hi",
				"marine",
				"species",
				"distribution",
				"gov"
			],
			"description": "WMS map service from the Institute of Marine Research (Havforskningsinstituttet) serving generalized distribution maps for fish, marine mammals and other marine species in Norwegian sea areas. Layers cover distribution, spawning, moulting and harvesting areas per species. Open access, no fees.",
			"when_to_use": "Use to render marine species distribution as map layers: \"artsutbredelse kart\", \"gyteområder fisk WMS\", \"utbredelse sjøpattedyr\", \"marine species distribution Norway\", \"spawning areas WMS\". Pick a per-species layer (e.g. Blaakveite, Brisling, Finnhval) and call GetMap over a bounding box.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/data/utbredelseskart/wms/ows?request=GetCapabilities&service=WMS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/data/utbredelseskart/wms/ows?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "hi.bde209-marine-sedimenter-wfs",
			"name": "BDE-209 i marine sedimenter (WFS)",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "environment",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://kart.hi.no/mareano/mareano_kjemi/bde209/wfs",
			"docs_url": "https://kart.hi.no/mareano/mareano_kjemi/bde209/ows?request=GetCapabilities&service=WFS",
			"tags": [
				"wfs",
				"mareano",
				"sediment",
				"contaminants",
				"pbde"
			],
			"description": "WFS service exposing measured concentrations of the fully brominated congener BDE-209 (decabromodiphenyl ether, µg/kg dry weight) in surface-sediment samples collected on the annual MAREANO seabed-mapping cruises since 2006. Served as GML/GeoJSON over WFS 2.0.0 from the Institute of Marine Research.",
			"when_to_use": "Use when an agent needs seabed contaminant data for BDE-209 (a PBDE / brominated flame retardant) in Norwegian marine sediments: \"miljøgifter i marine sedimenter\", \"PBDE on the seabed\", \"BDE-209 konsentrasjon havbunn\", MAREANO chemistry layers for environmental assessment. Returns geospatial sample-point features.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": "1. GET the GetCapabilities URL (`?service=WFS&request=GetCapabilities`) to confirm\n   the feature type `mareano_kjemi:bde209` and supported output formats.\n2. Request features with\n   `request=GetFeature&typeNames=mareano_kjemi:bde209&outputFormat=application/json&count=10`\n   to get GeoJSON sample points with concentration attributes.\n3. Restrict with a `bbox=` parameter (the data covers MAREANO areas plus the\n   coastal pilot \"Marine Grunnkart i Kystsonen\" 2020-21) before bulk extraction.\n4. Parse concentrations as µg/kg dry weight. This is survey reference data updated\n   per cruise season — cache between runs.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/mareano/mareano_kjemi/bde209/ows?request=GetCapabilities&service=WFS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/mareano/mareano_kjemi/bde209/ows?request=GetCapabilities&service=WFS",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "hi.benzoapyren-marine-sedimenter-wfs",
			"name": "Benzo[a]pyren i marine sedimenter (WFS)",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "environment",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://kart.hi.no/mareano/mareano_kjemi/benzoapyren/wfs",
			"docs_url": "https://kart.hi.no/mareano/mareano_kjemi/benzoapyren/ows?request=GetCapabilities&service=WFS",
			"tags": [
				"wfs",
				"mareano",
				"sediment",
				"contaminants",
				"pah"
			],
			"description": "WFS service exposing measured benzo[a]pyrene concentrations (µg/kg dry weight) in surface-sediment samples collected on the annual MAREANO seabed-mapping cruises since 2006. Served as GML/GeoJSON over WFS 2.0.0 from the Institute of Marine Research.",
			"when_to_use": "Use when an agent needs seabed contaminant data for benzo[a]pyrene (a PAH) in Norwegian marine sediments: \"miljøgifter i marine sedimenter\", \"PAH on the seabed\", \"benzo[a]pyren konsentrasjon havbunn\", MAREANO chemistry layers for environmental assessment. Returns geospatial sample-point features.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": "1. GET the GetCapabilities URL (`?service=WFS&request=GetCapabilities`) to confirm\n   the feature type `mareano_kjemi:benzoapyren` and supported output formats.\n2. Request features with\n   `request=GetFeature&typeNames=mareano_kjemi:benzoapyren&outputFormat=application/json&count=10`\n   to get GeoJSON sample points with concentration attributes.\n3. Restrict with a `bbox=` parameter (the data covers MAREANO areas incl. the\n   Barents Sea 2003-04 and coastal pilot 2020-21) before bulk extraction.\n4. Parse concentrations as µg/kg dry weight. This is survey reference data updated\n   per cruise season — cache between runs.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/mareano/mareano_kjemi/benzoapyren/ows?request=GetCapabilities&service=WFS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/mareano/mareano_kjemi/benzoapyren/ows?request=GetCapabilities&service=WFS",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "hi.biomangfold-ti-paa-topp-stasjon-wfs",
			"name": "Biomangfold Arter ti på topp per stasjon WFS",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "CC-BY-4.0",
			"base_url": "https://kart.hi.no/mareano/mareano_biologi/topp_10_arter/ows",
			"docs_url": "https://kart.hi.no/mareano/mareano_biologi/topp_10_arter/ows?request=GetCapabilities&service=WFS",
			"tags": [
				"wfs",
				"mareano",
				"biodiversity",
				"species",
				"gov"
			],
			"description": "WFS service from the MAREANO programme exposing the ten most abundant species (\"ti på topp\") recorded per sampling station in Norwegian waters. Single feature type served as GML, GeoJSON, KML, Shapefile and CSV over WFS 2.0.0 (default CRS EPSG:4326); open.",
			"when_to_use": "Use when an agent needs per-station biodiversity data for Norwegian marine waters: \"biomangfold ti på topp\", \"top 10 species per station\", \"MAREANO arter stasjon WFS\", \"mest tallrike arter per stasjon\". Returns geospatial point features per station; for a rendered map use the corresponding WMS layer instead.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": "1. GET the GetCapabilities URL (`?service=WFS&request=GetCapabilities`) to confirm the\n   feature type — the layer is exposed as `mareano_biologi:topp_10_arter`.\n2. Request features with\n   `request=GetFeature&typeNames=mareano_biologi:topp_10_arter&outputFormat=application/json&count=10`\n   to get GeoJSON (GML, KML, Shapefile and CSV are also supported); default CRS is EPSG:4326.\n3. Restrict with a `bbox=` parameter to a sea area before bulk extraction.\n4. Each feature represents the ten most abundant species at a MAREANO sampling\n   station — cache between runs.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/mareano/mareano_biologi/topp_10_arter/ows?request=GetCapabilities&service=WFS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/mareano/mareano_biologi/topp_10_arter/ows?request=GetCapabilities&service=WFS",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "hi.biomangfold-ti-paa-topp-stasjon-wms",
			"name": "MAREANO Biomangfold - Arter ti på topp (pr stasjon) WMS",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://kart.hi.no/mareano/mareano_biologi/topp_10_arter/ows",
			"docs_url": null,
			"tags": [
				"hi",
				"mareano",
				"biodiversity",
				"seabed",
				"species",
				"marine",
				"gov"
			],
			"description": "OGC WMS 1.3.0 view service from the Institute of Marine Research (Havforskningsinstituttet) rendering MAREANO seabed-biodiversity data: the ten most abundant species (\"ti på topp\") observed per sampling station in mapped Norwegian sea areas. Output is map imagery (PNG/JPEG); fees and access constraints are none, so no authentication is required.",
			"when_to_use": "Use when an agent needs a rendered map layer of the top-ten most abundant seabed species per MAREANO station: \"ti på topp arter kart\", \"MAREANO biomangfold WMS\", \"top ten species per station\", \"mest tallrike arter havbunn\". For machine-readable feature geometries/attributes of the same dataset, use the WFS sibling (hi.biomangfold-ti-paa-topp-stasjon-wfs) instead.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/mareano/mareano_biologi/topp_10_arter/ows?request=GetCapabilities&service=WMS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/mareano/mareano_biologi/topp_10_arter/ows?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "hi.biotoper-observerte-ogc",
			"name": "Marine bentiske biotoper - observerte forekomster OGC API - Features",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": "971349077",
			"category": "environment",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No API key required. Open OGC API - Features service over HTTPS; returns JSON by default and GeoJSON from the collection /items endpoints (f=json). Send the project User-Agent on every request. Note: this pygeoapi instance hosts 100+ MAREANO collections; this entry concerns the single collection `mareano_sb:Biotoper_observerte_forekomster_for_modellering_2026_wgs84`.",
			"status": "active",
			"license": "CC-BY-4.0",
			"base_url": "https://kart.hi.no/mareano/ogc/features/v1",
			"docs_url": "https://kart.hi.no/mareano/ogc/features/v1/api?f=html",
			"tags": [
				"hi",
				"havforskningsinstituttet",
				"mareano",
				"biotoper",
				"benthic",
				"marine-biology",
				"biodiversity",
				"ogc-api-features",
				"geojson",
				"marine"
			],
			"description": "OGC API - Features service from Havforskningsinstituttet (Institute of Marine Research) serving MAREANO observed benthic biotope occurrences as GeoJSON point features — one point per 200 m video line, classified into biotopes from species observations along the line and quality-controlled in the field and re-analysed onshore. This entry covers the single collection `mareano_sb:Biotoper_observerte_forekomster_for_modellering_2026_wgs84`, the quality-assured \"for modellering\" point set used as training data for modelled biotope maps (rarer biotopes excluded). Point properties include SampID, BIOTOPE, depth and coordinates. RESTful JSON/GeoJSON, bbox-queryable, open, no API key.",
			"when_to_use": "Agent needs observed marine benthic biotope points in an area for habitat / biodiversity analysis or as a reference/training layer: \"marine biotoper her\", \"observerte biotopforekomster\", \"MAREANO biotope observations\", \"bentiske habitater i dette området\", \"benthic biotope points for modelling\". Query the collection's /items endpoint with a bbox to fetch the classified observation points covering an area.",
			"when_not_to_use": "Not a continuous modelled biotope map and not a complete biotope inventory: this is the quality-assured \"for modellering\" point set, from which rarer biotopes have been deliberately excluded, so absence of a biotope here does not mean absence on the seabed. For full-coverage predicted distributions use the modelled MAREANO biotope map products instead of these observation points.",
			"sample_request": "# List collections (large response — 100+ MAREANO collections)\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://kart.hi.no/mareano/ogc/features/v1/collections?f=json'\n\n# Observed biotope points over an area (CRS84 lon,lat bbox)\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://kart.hi.no/mareano/ogc/features/v1/collections/mareano_sb:Biotoper_observerte_forekomster_for_modellering_2026_wgs84/items?bbox=10,68,18,72&limit=10&f=json'",
			"agent_recipe": "1. This is an OGC API - Features service (pygeoapi). The dataset for this entry\n   is the single collection\n   `mareano_sb:Biotoper_observerte_forekomster_for_modellering_2026_wgs84`.\n   The instance hosts 100+ other MAREANO collections at /collections, but for\n   observed benthic biotope points use this collection directly.\n2. To fetch observation points over an area, GET\n   /collections/mareano_sb:Biotoper_observerte_forekomster_for_modellering_2026_wgs84/items?bbox=minLon,minLat,maxLon,maxLat&f=json\n   (CRS84 / lon,lat order). Use `limit` and follow the `next` link for paging;\n   the response carries `numberMatched` / `numberReturned` (numberMatched ~5917).\n3. The response is GeoJSON: iterate `features[]`; geometry is the observation\n   Point and `properties` carry `SampID`, `BIOTOPE` (biotope class), `Beskriv`\n   (description), `Longitude`, `Latitude` and `Depth`.\n4. These are quality-assured observation points used as training data for\n   modelled biotope maps — rarer biotopes are excluded. Treat as reference /\n   ground-truth, not as a continuous coverage map.\n5. To go from a property or address to a bbox, resolve it first via\n   geonorge.eiendom (cadastre), then query the collection with the resulting\n   bounding box.",
			"composes_with": [
				"hi.gytefelt-kystbestand-ogc",
				"geonorge.eiendom"
			],
			"last_verified": null,
			"source_urls": [
				"https://data.norge.no/api/data-services/6f132a7a-18d1-3943-abfc-efe31a0a0b82",
				"https://kart.hi.no/mareano/ogc/features/v1/collections/mareano_sb:Biotoper_observerte_forekomster_for_modellering_2026_wgs84/items?limit=1&f=json",
				"https://kart.hi.no/mareano/ogc/features/v1/collections/mareano_sb:Biotoper_observerte_forekomster_for_modellering_2026_wgs84?f=json",
				"https://kart.hi.no/mareano/ogc/features/v1/collections?f=json"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/mareano/ogc/features/v1/collections/mareano_sb:Biotoper_observerte_forekomster_for_modellering_2026_wgs84/items?limit=1&f=json",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "hi.blotbunnskorallskog-wms",
			"name": "Bløtbunnskorallskog WMS",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://kart.hi.no/mareano/mareano_biologi/polygon_blotbunnskorallskog/ows",
			"docs_url": "https://kart.hi.no/mareano/mareano_biologi/polygon_blotbunnskorallskog/ows?request=GetCapabilities&service=WMS",
			"tags": [
				"hi",
				"mareano",
				"marine",
				"habitat",
				"corals",
				"gov"
			],
			"description": "WMS map service from the Institute of Marine Research (MAREANO) showing the modelled distribution, as polygons, of the vulnerable habitat type soft-bottom coral forest (Bløtbunnskorallskog) — dense stands of the horn corals Radicipes gracilis and Isidella lofotensis on sandy soft bottom in Norwegian waters. Open access, no fees.",
			"when_to_use": "Use to map predicted soft-bottom coral forest habitat on the Norwegian seafloor: \"bløtbunnskorallskog kart\", \"MAREANO naturtyper\", \"soft-bottom coral forest habitat map\", \"Radicipes gracilis utbredelse\", seabed nature-type mapping for marine spatial planning. Render the layer via the WMS GetMap operation.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/mareano/mareano_biologi/polygon_blotbunnskorallskog/ows?request=GetCapabilities&service=WMS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/mareano/mareano_biologi/polygon_blotbunnskorallskog/ows?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "hi.bolgehoyde-wms",
			"name": "Vannmasser Bølgehøyde WMS",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://kart.hi.no/mareano/magik/bolgehoyde_gjennomsnitt/ows",
			"docs_url": null,
			"tags": [],
			"description": "WMS map service from the Institute of Marine Research showing modelled significant wave height (the mean of the highest one-third of waves) as part of the \"Marine Grunnkart i Kystsonen\" (marine base maps for the coastal zone) project. Free, no authentication. Coverage is currently limited to the new Stavanger municipality and the Ålesund/Giske area in Sunnmøre.",
			"when_to_use": "User wants a rendered map of modelled significant wave height in the Norwegian coastal zone: \"bølgehøyde kart kystsonen\", \"signifikant bølgehøyde Stavanger\", \"wave height map Ålesund coast\", \"marine grunnkart bølger\". Returns map image tiles via WMS GetMap. Note the limited geographic coverage.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/mareano/magik/bolgehoyde_gjennomsnitt/ows?request=GetCapabilities&service=WMS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/mareano/magik/bolgehoyde_gjennomsnitt/ows?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "hi.bunnstrom-retning-hastighet-gjennomsnitt-wfs",
			"name": "Bunnstrøm retning og hastighet gjennomsnitt WFS",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "CC-BY-4.0",
			"base_url": "https://kart.hi.no/mareano/magik/Bunnstromretning_og_hastighet_gjennomsnitt/ows",
			"docs_url": "https://kart.hi.no/mareano/magik/Bunnstromretning_og_hastighet_gjennomsnitt/ows?request=GetCapabilities&service=WFS",
			"tags": [
				"wfs",
				"bottom-current",
				"mareano",
				"oceanography",
				"gov"
			],
			"description": "WFS service from the Institute of Marine Research exposing average near-bottom ocean current data, part of the \"Marine Grunnkart i Kystsonen\" pilot project. Current direction is given in degrees (0-360) and speed in metres per second, derived from a two-year three-dimensional hydrodynamic (ROMS) simulation. Covers three pilot areas. Served as GML/GeoJSON over WFS 2.0.0; open, no authentication.",
			"when_to_use": "Use when an agent needs vector data for average sea-bottom currents in Norwegian coastal pilot areas: \"bunnstrøm retning og hastighet\", \"near-bottom current WFS\", \"strømhastighet havbunn\", \"bottom current direction Stavanger/Ålesund/Kvenangen\". Returns geospatial features; for a rendered map use a WMS layer instead.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": "1. GET the GetCapabilities URL (`?service=WFS&request=GetCapabilities`) to list\n   the feature types — the current layer is published as\n   `magik:Bunnstromretning_og_hastighet_gjennomsnitt`.\n2. Request features with\n   `request=GetFeature&typeNames=magik:Bunnstromretning_og_hastighet_gjennomsnitt&outputFormat=application/json&count=10`\n   to get GeoJSON (GML, KML, Shapefile and CSV are also supported).\n3. Restrict with a `bbox=` parameter to one of the pilot areas (Stavanger,\n   Ålesund/Giske, Kvenangen) before bulk extraction. Geometry is in UTM33.\n4. Each feature carries current direction in degrees (0-360) and speed in m/s;\n   this is static modelled reference data, so cache between runs.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/mareano/magik/Bunnstromretning_og_hastighet_gjennomsnitt/ows?request=GetCapabilities&service=WFS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/mareano/magik/Bunnstromretning_og_hastighet_gjennomsnitt/ows?request=GetCapabilities&service=WFS",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "hi.ddt-marine-sedimenter-wfs",
			"name": "Sum DDT-nivåer i marine sedimenter (WFS)",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "environment",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://kart.hi.no/mareano/mareano_kjemi/ddt/ows",
			"docs_url": "https://kart.hi.no/mareano/mareano_kjemi/ddt/ows?request=GetCapabilities&service=WFS",
			"tags": [
				"wfs",
				"mareano",
				"sediment",
				"contaminants",
				"pesticides"
			],
			"description": "WFS service exposing summed concentrations (µg/kg dry weight) of the pesticides p,p'-DDT, p,p'-DDE and p,p'-DDD in surface-sediment samples collected on the annual MAREANO seabed-mapping cruises since 2006, plus Barents Sea monitoring data from 2003-04. Served as GML/GeoJSON over WFS 2.0.0 from the Institute of Marine Research; feature type mareano_kjemi:ddt.",
			"when_to_use": "Use when an agent needs seabed contaminant data for DDT-group pesticides in Norwegian marine sediments: \"DDT i marine sedimenter\", \"pesticides on the seabed\", \"sum DDT konsentrasjon havbunn\", MAREANO chemistry layers for environmental assessment. Returns geospatial sample-point features.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": "1. GET the GetCapabilities URL (`?service=WFS&request=GetCapabilities`) to confirm\n   the feature type `mareano_kjemi:ddt` and supported output formats.\n2. Request features with\n   `request=GetFeature&typeNames=mareano_kjemi:ddt&outputFormat=application/json&count=10`\n   to get GeoJSON sample points with summed-DDT concentration attributes.\n3. Restrict with a `bbox=` parameter before bulk extraction (default CRS EPSG:4326).\n4. Parse concentrations as µg/kg dry weight. This is survey reference data updated\n   per cruise season — cache between runs.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/mareano/mareano_kjemi/ddt/ows?request=GetCapabilities&service=WFS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/mareano/mareano_kjemi/ddt/ows?request=GetCapabilities&service=WFS",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "hi.ddt-marine-sedimenter-wms",
			"name": "Organiske miljøgifter i marine sedimenter - Sum DDT-nivåer (WMS)",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "environment",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://kart.hi.no/mareano/mareano_kjemi/ddt/ows",
			"docs_url": null,
			"tags": [
				"mareano",
				"sediment",
				"miljogifter",
				"marine",
				"geo"
			],
			"description": "OGC WMS map service rendering summed concentrations of the DDT-group pesticides (p,p'-DDT, p,p'-DDE, p,p'-DDD, in µg/kg dry weight) measured in surface-sediment samples collected on the annual MAREANO seabed-mapping cruises (running since 2006), plus Barents Sea monitoring data from 2003–04. Served by the Institute of Marine Research as rendered map layers, not vector features.",
			"when_to_use": "Use to display DDT pesticide contamination levels in Norwegian/Barents Sea marine sediments on a map: \"DDT i marine sedimenter WMS\", \"MAREANO sediment contamination map\", \"organiske miljøgifter sjøbunn kart\", \"pesticide concentration seabed Norway\". Returns rendered WMS map tiles from MAREANO sediment samples. For vector feature data use the corresponding WFS entry instead.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/mareano/mareano_kjemi/ddt/ows?request=GetCapabilities&service=WMS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/mareano/mareano_kjemi/ddt/ows?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "hi.dekloran-marine-sedimenter-wfs",
			"name": "Organiske miljøgifter i marine sedimenter - Dekloran-nivåer WFS",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "environment",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "CC-BY-4.0",
			"base_url": "https://kart.hi.no/mareano/mareano_kjemi/dekloran/ows",
			"docs_url": "https://kart.hi.no/mareano/mareano_kjemi/dekloran/ows?request=GetCapabilities&service=WFS",
			"tags": [
				"wfs",
				"mareano",
				"sediment",
				"contaminants",
				"gov"
			],
			"description": "WFS feature service from the Institute of Marine Research exposing concentrations of Dechlorane (µg/kg dry weight) in surface-sediment samples collected on the annual MAREANO seabed-mapping cruises since 2006. Dechloranes are persistent halogenated flame retardants tracked as emerging marine contaminants; serves GeoJSON, GML and CSV.",
			"when_to_use": "Use when the user needs spatial feature data on Dechlorane (flame-retardant) contaminant levels in Norwegian marine sediments: \"dekloran i marine sedimenter\", \"Dechlorane seabed Norway\", \"flammehemmer havbunn WFS\", \"nye miljøgifter MAREANO\", extracting POP concentrations on the Norwegian continental shelf as features.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": "1. GET the GetCapabilities URL (`?service=WFS&request=GetCapabilities`) to enumerate\n   the available feature types and supported output formats (GeoJSON, GML, CSV).\n2. Fetch features with `request=GetFeature&typeNames={type}&outputFormat=application/json&srsName=EPSG:4326`,\n   optionally constrained by `bbox={minx,miny,maxx,maxy,EPSG:4326}`.\n3. Read the Dechlorane concentration (µg/kg dry weight) from each feature's properties.\n4. This is survey reference data updated per cruise season — cache responses between runs.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/mareano/mareano_kjemi/dekloran/ows?request=GetCapabilities&service=WFS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/mareano/mareano_kjemi/dekloran/ows?request=GetCapabilities&service=WFS",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "hi.dekloran-marine-sedimenter-wms",
			"name": "Dekloran-nivåer i marine sedimenter (WMS)",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "environment",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://kart.hi.no/mareano/mareano_kjemi/dekloran/ows",
			"docs_url": "https://kart.hi.no/mareano/mareano_kjemi/dekloran/ows?request=GetCapabilities&service=WMS",
			"tags": [
				"wms",
				"mareano",
				"sediment",
				"contaminants",
				"gov"
			],
			"description": "WMS map service from the Institute of Marine Research showing concentrations of Dechlorane (µg/kg dry weight) in surface-sediment samples collected on the annual MAREANO seabed-mapping cruises since 2006. Dechloranes are persistent halogenated flame retardants tracked as emerging marine contaminants. Open access, no auth.",
			"when_to_use": "Use when an agent needs a rendered map layer of Dechlorane (flame-retardant) contaminant levels in Norwegian marine sediments: \"dekloran i marine sedimenter\", \"Dechlorane seabed Norway\", \"flammehemmer havbunn kart\", MAREANO chemistry layers. Call GetMap on the layer over a bounding box.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": "1. GET the GetCapabilities URL (`?service=WMS&request=GetCapabilities`) to enumerate\n   the available layers and supported CRS (CRS:84 / EPSG:4326 / EPSG:25833).\n2. Render with `request=GetMap&layers={layer}&styles=&crs=EPSG:4326&bbox={minLat,minLon,maxLat,maxLon}&width=800&height=600&format=image/png`.\n3. Use `request=GetFeatureInfo` to read the Dechlorane concentration (µg/kg dry weight)\n   at a clicked pixel.\n4. This is survey reference data updated per cruise season — cache map tiles between runs.",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/mareano/mareano_kjemi/dekloran/ows?request=GetCapabilities&service=WMS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/mareano/mareano_kjemi/dekloran/ows?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "hi.fenantren-marine-sedimenter-wfs",
			"name": "Organiske miljøgifter i marine sedimenter - Fenantren-nivåer (WFS)",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wfs",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://kart.hi.no/mareano/mareano_kjemi/fenantren/ows",
			"docs_url": null,
			"tags": [
				"mareano",
				"pah",
				"sediment",
				"hi",
				"environment"
			],
			"description": "OGC WFS feature service exposing phenanthrene concentrations (µg/kg dry weight, a polycyclic aromatic hydrocarbon / PAH) in surface-sediment samples collected on the Norwegian MAREANO seabed-mapping cruises, served by the Institute of Marine Research. Covers data from 2006 onward plus Barents Sea monitoring 2003-2004. WFS 2.0.0, GML output, open access.",
			"when_to_use": "Use when an agent needs vector point data of phenanthrene / PAH contamination in marine seabed sediments from MAREANO surveys: \"fenantren i sedimenter WFS\", \"PAH-nivåer havbunn Barentshavet data\", \"MAREANO miljøgift målepunkter\", \"phenanthrene seabed sediment measurements\". Phenanthrene is one of the polycyclic aromatic hydrocarbons (PAH). Returns feature data, not rendered map tiles.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/mareano/mareano_kjemi/fenantren/ows?request=GetCapabilities&service=WFS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/mareano/mareano_kjemi/fenantren/ows?request=GetCapabilities&service=WFS",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "hi.fenantren-marine-sedimenter-wms",
			"name": "Organiske miljøgifter i marine sedimenter - Fenantren-nivåer (WMS)",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://kart.hi.no/mareano/mareano_kjemi/fenantren/ows",
			"docs_url": null,
			"tags": [],
			"description": "OGC WMS map service showing phenanthrene concentrations (a polycyclic aromatic hydrocarbon, PAH) in surface-sediment samples from the Norwegian MAREANO seabed mapping programme, served by the Institute of Marine Research. WMS 1.3.0, PNG/JPEG/GeoTIFF output, open access.",
			"when_to_use": "User wants to map phenanthrene / PAH contamination in marine seabed sediments from MAREANO surveys: \"fenantren i sedimenter kart\", \"PAH-nivåer havbunn Barentshavet\", \"MAREANO miljøgift WMS-lag\", \"phenanthrene seabed contamination map\". Survey data span from 2006 onward (plus 2003-2004 Barents Sea monitoring). Returns map tiles, not point measurements.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/mareano/mareano_kjemi/fenantren/ows?request=GetCapabilities&service=WMS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/mareano/mareano_kjemi/fenantren/ows?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "hi.fraraadning-ogc",
			"name": "Rådgivningskart for seismiske og elektromagnetiske undersøkelser – OGC API-Features",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": "971349077",
			"category": "maritime",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No API key required. Open OGC API - Features service over HTTPS; returns JSON by default and GeoJSON from the collection /items endpoints (f=json). Send the project User-Agent on every request.",
			"status": "active",
			"license": "CC-BY-4.0",
			"base_url": "https://kart.hi.no/data/fraraadning/ogc/features/v1",
			"docs_url": "https://kart.hi.no/data/fraraadning/ogc/features/v1/api?f=html",
			"tags": [
				"hi",
				"havforskningsinstituttet",
				"fraraadning",
				"seismikk",
				"elektromagnetisk",
				"gyting",
				"marine",
				"ogc-api-features",
				"geojson",
				"cc-by"
			],
			"description": "Havforskningsinstituttet's advisory maps (\"rådgivningskart\") for seismic and electromagnetic surveys on the Norwegian continental shelf, served as an OGC API - Features RESTful JSON/GeoJSON service. HI issues official advice to the Norwegian Offshore Directorate (Sokkeldirektoratet) defining areas and time periods where seismic / electromagnetic surveys are advised against, to protect concentrated fish spawning, spawning migration and whale feeding. One feature collection per advisory year (Raadgivning_2022, _2024, _2025, _2026) plus an included-areas-per-species layer. Bbox-queryable, open, no API key.",
			"when_to_use": "Agent needs to know where and when seismic or electromagnetic surveys are advised against off Norway: \"kan vi skyte seismikk her\", \"frarådingskart seismikk\", \"rådgivningskart for seismiske undersøkelser\", \"når frarådes seismikk i dette gyteområdet\", \"seismic survey advisory area Norway\", \"no-seismic period\". List the per-year collections at /collections, then query a year collection's /items endpoint (e.g. Raadgivning_2026) with a bbox to fetch the GeoJSON advisory polygons; each feature's `lagtittel`, `gyldig_fra` and `gyldig_til` describe the advice and its validity window.",
			"when_not_to_use": "Don't fetch /items without a bbox or limit — feature geometries are extremely high-resolution (a single Raadgivning_2026 feature is one MultiPolygon with ~601,626 coordinate pairs, ~23 MB), so always constrain with bbox and/or limit. Don't assume a polygon is current: the advice is year- and period-specific, so select the recent collection (e.g. Raadgivning_2026) and read each feature's `gyldig_fra`/`gyldig_til`. This is advisory survey-timing guidance, not a permit, not real-time vessel/survey tracking, and not raw spawning observations — for the underlying species distribution use hi.artsutbredelse-fisk-ogc.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://kart.hi.no/data/fraraadning/ogc/features/v1/collections/Raadgivning_2026/items?bbox=2,57,12,65&limit=5&f=json'",
			"agent_recipe": "1. This is an OGC API - Features service. Start at the landing document\n   (base_url?f=json), then GET /collections?f=json to list the feature\n   collections. There is one collection per advisory year — `Raadgivning_2022`,\n   `Raadgivning_2024`, `Raadgivning_2025`, `Raadgivning_2026` — plus\n   `omraader_inkludert_i_raadgivningskart_2025` (the areas, per species, that\n   went into the 2025 advice). Prefer the most recent year (e.g.\n   `Raadgivning_2026`).\n2. WARNING — the geometries are extremely high-resolution: a single feature can\n   be tens of MB (one Raadgivning_2026 feature is ~601,626 coordinate pairs,\n   ~23 MB). Never call /items unbounded. Always constrain with\n   `bbox=minLon,minLat,maxLon,maxLat` (CRS84 / lon,lat order) and/or `limit`,\n   and page via the `next` link.\n3. GET /collections/{year}/items?bbox=...&limit=...&f=json. The response is\n   GeoJSON: iterate `features[]`; geometry is the advisory area (MultiPolygon)\n   and `properties` carry `lagnavn`, `lagtittel` (human-readable advice, e.g.\n   \"Seismiske undersøkelser frarådes mellom 1. og 15. januar 2026\"),\n   `areal_type`, `gyldig_fra`, `gyldig_til` (validity window), `oppdatert`,\n   `referanse` and `metadata_url`.\n4. To decide whether surveys are advised against at a location/time, filter the\n   matching features by `gyldig_fra`/`gyldig_til` and read `lagtittel`; the\n   advice is year- and period-specific, so do not treat a polygon as\n   permanently in force.\n5. To go from a property or address to a bbox, resolve it first via\n   geonorge.eiendom (cadastre) or geonorge.adresser, then query the year\n   collection with the resulting bounding box. For the underlying species\n   spawning distribution behind the advice, see hi.artsutbredelse-fisk-ogc.",
			"composes_with": [
				"hi.artsutbredelse-fisk-ogc",
				"geonorge.eiendom",
				"geonorge.adresser"
			],
			"last_verified": null,
			"source_urls": [
				"https://data.norge.no/api/data-services/6624dd30-c9e4-3de7-906b-f94634d0aee2",
				"https://kart.hi.no/data/fraraadning/ogc/features/v1/collections/Raadgivning_2026/items?limit=1&f=json",
				"https://kart.hi.no/data/fraraadning/ogc/features/v1/collections/Raadgivning_2026?f=json",
				"https://kart.hi.no/data/fraraadning/ogc/features/v1/collections?f=json",
				"https://kart.hi.no/data/fraraadning/ogc/features/v1?f=json"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/data/fraraadning/ogc/features/v1/collections?f=json",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "hi.glassvampsamfunn-wms",
			"name": "MAREANO Glassvampsamfunn WMS",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "maritime",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://kart.hi.no/mareano/mareano_biologi/polygon_glassvampbestander/ows",
			"docs_url": null,
			"tags": [
				"hi",
				"mareano",
				"sponge",
				"habitat",
				"seabed",
				"marine",
				"gov"
			],
			"description": "OGC WMS 1.3.0 view service from the Institute of Marine Research (Havforskningsinstituttet) rendering MAREANO data: the modelled distribution (as polygons) of the vulnerable seabed habitat glass-sponge communities (Glassvampsamfunn / Svampspikelbunn), one of the seven key sponge-, sea-pen- and coral-defined habitats mapped on the Norwegian seabed. Output is map imagery (PNG/JPEG); fees and access constraints are none, so no authentication is required.",
			"when_to_use": "Use when an agent needs a rendered map layer of vulnerable glass-sponge seabed habitat in Norwegian waters: \"glassvampsamfunn kart\", \"svampspikelbunn WMS\", \"MAREANO sårbar naturtype\", \"glass sponge community distribution\". Part of the MAREANO vulnerable-habitat family (Hardbunnskorallskog, Svampspikelbunn, Sjøfjærbunn, Umbellula, Glassvampsamfunn, Svampskog). For machine-readable feature geometries use the corresponding WFS service instead.",
			"when_not_to_use": null,
			"sample_request": null,
			"agent_recipe": null,
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/mareano/mareano_biologi/polygon_glassvampbestander/ows?request=GetCapabilities&service=WMS"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/mareano/mareano_biologi/polygon_glassvampbestander/ows?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": []
			}
		},
		{
			"id": "hi.gytefelt-kystbestand-ogc",
			"name": "Gytefelt for hvitting, hyse, lyr og sei OGC API - Features",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": "971349077",
			"category": "environment",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "No API key required. Open OGC API - Features service over HTTPS; returns JSON by default and GeoJSON from the collection /items endpoints (f=json). Send the project User-Agent on every request.",
			"status": "active",
			"license": "CC-BY-4.0",
			"base_url": "https://kart.hi.no/data/kystbestandskartlegging/ogc/features/v1",
			"docs_url": "https://kart.hi.no/data/kystbestandskartlegging/ogc/features/v1/api?f=html",
			"tags": [
				"hi",
				"havforskningsinstituttet",
				"gytefelt",
				"spawning-grounds",
				"fish",
				"marine",
				"coastal-cod",
				"ogc-api-features",
				"geojson"
			],
			"description": "OGC API - Features service from Havforskningsinstituttet (Institute of Marine Research) serving mapped spawning grounds (\"gytefelt\") for coastal-cod–type species along the Norwegian coast: whiting, haddock, pollack and saithe. Six GeoJSON feature collections — Gytefelt_hvitting (whiting), Gytefelt_hyse (haddock), Gytefelt_lyr (pollack), Gytefelt_sei (saithe), the combined Gytefelt_sei_hyse_lyr_hvitting, and the coverage/validity layer kysttorsk_gyldighet_4326. Spawning grounds were mapped as a marine nature type under the national programme for mapping marine nature types. RESTful JSON/GeoJSON, bbox-queryable, open, no API key.",
			"when_to_use": "Agent needs the locations of fish spawning grounds (where fish gather to reproduce and where eggs and larvae stay just after spawning) for whiting, haddock, pollack or saithe along the Norwegian coast: \"gytefelt sei\", \"gytefelt hyse i dette området\", \"spawning grounds for haddock\", \"hvor gyter hvitting og lyr\", \"marine nature type gytefelt\", \"er det gytefelt her\" for impact assessment. Query a species collection's /items endpoint with a bbox to fetch the spawning-ground polygons covering an area.",
			"when_not_to_use": "Not a fishing-regulation, aquaculture-licensing or formal impact-assessment decision tool on its own: it returns mapped spawning-ground features and their value classification, not legal restrictions. Active spawning grounds are valuable for each species and interventions can degrade reproductive success to varying degrees, but assessing actual impact requires the relevant sector/management products, not this dataset alone. For the underlying coastal-cod (\"torsk\") spawning grounds, use the dedicated kysttorsk gytefelt dataset rather than these whiting/haddock/pollack/saithe layers.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://kart.hi.no/data/kystbestandskartlegging/ogc/features/v1/collections/Gytefelt_hvitting/items?bbox=4,62,6,64&limit=5&f=json'",
			"agent_recipe": "1. This is an OGC API - Features service. Start at the landing document\n   (base_url?f=json), then GET /collections?f=json to list the feature\n   collections. There are six: `Gytefelt_hvitting` (whiting), `Gytefelt_hyse`\n   (haddock), `Gytefelt_lyr` (pollack), `Gytefelt_sei` (saithe), the combined\n   `Gytefelt_sei_hyse_lyr_hvitting`, and `kysttorsk_gyldighet_4326` (the\n   \"Gytefelt torsk MB dekningskart\" coverage/validity layer showing where the\n   mapping is considered valid).\n2. To fetch spawning grounds over an area, GET\n   /collections/{collectionId}/items?bbox=minLon,minLat,maxLon,maxLat&f=json\n   (CRS84 / lon,lat order). Use `limit` and follow the `next` link for paging;\n   the response carries `numberMatched` / `numberReturned`.\n3. The response is GeoJSON: iterate `features[]`; geometry is the spawning-ground\n   polygon and `properties` carry the species and value classification. The\n   spawning grounds are based on field sampling and genetic analysis of newly\n   spawned eggs, also accounting for ocean currents and dispersal models.\n4. Pick the collection by species, or use `Gytefelt_sei_hyse_lyr_hvitting` to get\n   all four species at once. Where these grounds overlap a coastal-cod\n   (\"kysttorsk\") spawning ground, consult the separate kysttorsk gytefelt dataset.\n5. To go from a property or address to a bbox, resolve it first via\n   geonorge.eiendom (cadastre) or geonorge.adresser, then query the collection\n   with the resulting bounding box.\n6. The service supports CQL2 / filter (see /conformance and the queryables\n   endpoint) for attribute filtering beyond bbox.",
			"composes_with": [
				"geonorge.eiendom",
				"geonorge.adresser"
			],
			"last_verified": null,
			"source_urls": [
				"https://data.norge.no/api/data-services/7668801d-4cb9-38a6-9359-af306fdea54f",
				"https://kart.hi.no/data/kystbestandskartlegging/ogc/features/v1/collections/Gytefelt_hvitting/items?limit=1&f=json",
				"https://kart.hi.no/data/kystbestandskartlegging/ogc/features/v1/collections?f=json",
				"https://kart.hi.no/data/kystbestandskartlegging/ogc/features/v1/conformance?f=json",
				"https://kart.hi.no/data/kystbestandskartlegging/ogc/features/v1?f=json"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/data/kystbestandskartlegging/ogc/features/v1/collections?f=json",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "hi.mareano-videostasjoner",
			"name": "Mareano videostasjoner OGC API Features",
			"provider": "Havforskningsinstituttet",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://kart.hi.no/mareano/ogc/features/v1",
			"docs_url": "https://kart.hi.no/mareano/ogc/features/v1/openapi?f=text%2Fhtml",
			"tags": [
				"mareano",
				"ogc-features",
				"seabed",
				"norway",
				"marine",
				"geojson",
				"hi"
			],
			"description": "OGC API Features endpoint from the Institute of Marine Research (HI) exposing MAREANO seabed survey video stations as GeoJSON point features. The collection \"Videostasjoner per år\" contains 3 754 georeferenced stations spanning Norwegian waters from the North Sea to the Barents Sea, with attributes for cruise number, bottom depth, station type, and associated sampling methods. No authentication required.",
			"when_to_use": "Use when you need georeferenced MAREANO video station locations: \"MAREANO videostasjoner\", \"seabed survey stations Norway\", \"dybde og bunntype fra MAREANO\", \"where has HI conducted video surveys\", \"marine survey points Norwegian shelf\". Query by bounding box or CQL2 filters to retrieve stations in a given area or year range.",
			"when_not_to_use": null,
			"sample_request": "curl -sSL \\\n  'https://kart.hi.no/mareano/ogc/features/v1/collections/mareano_stasjoner:videostasjoner_aarlig/items?f=json&limit=3'",
			"agent_recipe": "1. To list all available MAREANO collections, GET\n   https://kart.hi.no/mareano/ogc/features/v1/collections?f=json\n   and inspect $.collections[*].id and $.collections[*].title.\n2. To retrieve video station features, GET\n   https://kart.hi.no/mareano/ogc/features/v1/collections/mareano_stasjoner:videostasjoner_aarlig/items?f=json\n   Use `limit` (max typically 10 000) and `startIndex` for pagination.\n   The response includes `totalFeatures` and `numberReturned`.\n3. Spatial filtering: append `bbox=<minLon,minLat,maxLon,maxLat>` to restrict\n   results to an area of interest.\n4. Each feature has properties: RefStation, CruiseNo_V, BottomDepth, Location,\n   StationType, Latitude, Longitude, Y_Video (year of video), date_shape.\n5. The CRS is EPSG:4326 (WGS84). Coordinates are [lon, lat] in the GeoJSON geometry.\n6. For CQL2 filtering (e.g. year range), use the queryables endpoint:\n   https://kart.hi.no/mareano/ogc/features/v1/collections/mareano_stasjoner:videostasjoner_aarlig/queryables?f=application/schema+json",
			"composes_with": [],
			"last_verified": null,
			"source_urls": [
				"https://kart.hi.no/mareano/ogc/features/v1/collections/mareano_stasjoner:videostasjoner_aarlig/items?f=json&limit=3",
				"https://kart.hi.no/mareano/ogc/features/v1/collections/mareano_stasjoner:videostasjoner_aarlig?f=json",
				"https://kart.hi.no/mareano/ogc/features/v1/collections?f=json",
				"https://kart.hi.no/mareano/ogc/features/v1?f=json"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.hi.no/mareano/ogc/features/v1/collections?f=json",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "kartverket.admin-enheter",
			"name": "Administrative enheter API",
			"provider": "Statens kartverk",
			"provider_org_nr": "971040238",
			"category": "geo",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "Det er ikke nødvendig med innlogging/autorisasjon for å bruke APIet. No API key or authentication required.",
			"status": "active",
			"license": "NLOD-2.0",
			"base_url": "https://api.kartverket.no/kommuneinfo/v1",
			"docs_url": "https://ws.geonorge.no/kommuneinfo/v1/",
			"tags": [
				"norway",
				"municipalities",
				"counties",
				"administrative",
				"gov",
				"nlod"
			],
			"description": "Open REST API from Kartverket (the Norwegian Mapping Authority) that delivers information about Norwegian administrative divisions — counties (fylker) and municipalities (kommuner). Returns names, numbers, boundary polygons, and bounding boxes. No authentication required.",
			"when_to_use": "Use when a user asks for Norwegian county or municipality names, numbers, or geographic boundaries: \"hva er kommunenummeret til Bergen\", \"list alle fylker\", \"which municipality is at lat=59.9 lon=10.7\", \"nabokommuner til Oslo\", \"kommuner i Vestland\". Also use to identify which administrative unit a coordinate falls in, or to validate/resolve a municipality name or number before passing it to other APIs.",
			"when_not_to_use": "Do not use to download the full dataset for bulk processing — download the dataset files from Geonorge instead. For address-level lookups or geocoding street addresses, use a dedicated address API rather than this administrative boundary API.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://ws.geonorge.no/kommuneinfo/v1/fylker'",
			"agent_recipe": "1. To list all counties: GET /fylker — returns array of {fylkesnavn, fylkesnummer}.\n2. To list all municipalities: GET /kommuner — returns array of {kommunenavn, kommunenummer, kommunenavnNorsk}.\n3. To look up a municipality by name: GET /sok?knavn=Bergen — supports wildcard (*).\n4. To get full details for a municipality (boundaries, county, Sami admin area):\n   GET /kommuner/{kommunenummer} using the 4-digit zero-padded kommunenummer (e.g. 0301).\n5. To identify which municipality and county a coordinate falls in:\n   GET /punkt?nord={lat}&ost={lon}&koordsys=4258\n6. To get county with all its municipalities: GET /fylker/{fylkesnummer}.\n7. The preferred base URL is https://api.kartverket.no/kommuneinfo/v1 — the\n   ws.geonorge.no endpoint proxies to it but Kartverket recommends migrating.\n8. No rate limit is published; be a good citizen and avoid hammering the endpoint.\n   The full dataset can be downloaded from Geonorge if bulk access is needed.",
			"composes_with": [
				"met.locationforecast"
			],
			"last_verified": "2026-05-19T07:13:38.000Z",
			"source_urls": [
				"https://dataservice-catalog.fellesdatakatalog.digdir.no/data-services/5f461df34e59ff37b6caea14",
				"https://ws.geonorge.no/kommuneinfo/v1/",
				"https://ws.geonorge.no/kommuneinfo/v1/openapi.json"
			],
			"probe": {
				"method": "GET",
				"url": "https://ws.geonorge.no/kommuneinfo/v1/fylker",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "kartverket.norges-grunnkart-wms",
			"name": "Norges grunnkart WMS",
			"provider": "Kartverket — Statens kartverk",
			"provider_org_nr": null,
			"category": "geo",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": "No API key required. AccessConstraints: \"Copyright Statens kartverk 2007\". Fees: \"Norge digital\" (free for registered Norge digital participants and open public use). Attribution to Kartverket is required.",
			"status": "active",
			"license": "proprietary",
			"base_url": "https://wms.geonorge.no/skwms1/wms.norges_grunnkart",
			"docs_url": "https://kartkatalog.geonorge.no/metadata/norges-grunnkart/dd6a25e0-cb56-4e2b-9af4-43b132d4d3bc",
			"tags": [
				"basemap",
				"topographic",
				"raster",
				"wms",
				"gov",
				"norway",
				"ogc"
			],
			"description": "WMS service delivering Norway's official topographic base map (Norges grunnkart) as raster tiles, covering scales from 1:500 to 1:10M. Layers include terrain, land cover, roads, buildings, and place names drawn from the national cartographic datasets (FKB, N50, N250, N500, N1000, N2000, N5000). Free to use under the Norge digital agreement; no API key required.",
			"when_to_use": "Use when rendering a Norwegian topographic background map in a web or desktop GIS application: \"vis kart over Norge\", \"topografisk bakgrunnskart for Oslo-området\", \"base map for spatial visualization\", \"show Norway on a map\". Suitable for overview and regional scales from 1:500 up to 1:10M. Supports many CRS projections including EPSG:25833 (UTM 33N), EPSG:4326, and EPSG:3857 (Web Mercator).",
			"when_not_to_use": null,
			"sample_request": "curl -sSL \\\n  'https://wms.geonorge.no/skwms1/wms.norges_grunnkart?service=WMS&version=1.3.0&request=GetMap&layers=N5000Arealdekkeflate&styles=&format=image/png&transparent=true&width=512&height=512&crs=EPSG:25833&bbox=-100000,6450000,1200000,8000000'",
			"agent_recipe": "1. Issue a GetCapabilities request to discover available layers:\n   GET https://wms.geonorge.no/skwms1/wms.norges_grunnkart?service=WMS&request=GetCapabilities\n2. Parse the `<Layer>` elements to find the relevant named layer (e.g. `Norges_grunnkart`\n   for the composite map, or scale-specific layers like `N50Arealdekkeflate`).\n3. Build a GetMap request with the desired layer, CRS (EPSG:25833 recommended for Norway),\n   bounding box, and image dimensions (max 8192x8192).\n4. Return the image URL or binary PNG to the user's mapping application.\n5. If the user provides a place name rather than a bounding box, resolve it to coordinates\n   first (e.g. via a geocoding service), then compute a bounding box around the target area.\n6. Credit \"© Kartverket\" in any displayed map.",
			"composes_with": [
				"met.locationforecast"
			],
			"last_verified": "2026-05-18T00:00:00.000Z",
			"source_urls": [
				"https://kartkatalog.geonorge.no/metadata/norges-grunnkart/dd6a25e0-cb56-4e2b-9af4-43b132d4d3bc",
				"https://wms.geonorge.no/skwms1/wms.norges_grunnkart?service=WMS&request=GetCapabilities"
			],
			"probe": {
				"method": "GET",
				"url": "https://wms.geonorge.no/skwms1/wms.norges_grunnkart?service=WMS&request=GetCapabilities",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "kartverket.topografisk-cache",
			"name": "Topografisk norgeskart cache (WMTS)",
			"provider": "Kartverket",
			"provider_org_nr": "971040238",
			"category": "geo",
			"api_style": "wmts",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": "CC-BY-4.0",
			"base_url": "https://cache.kartverket.no/v1/wmts/",
			"docs_url": "https://kartverket.no/api-og-data",
			"tags": [
				"kartverket",
				"wmts",
				"maps",
				"topographic",
				"tiles",
				"norway"
			],
			"description": "Free, no-authentication WMTS tile service from Kartverket (Statens kartverk) serving topographic raster map tiles of Norway. Provides four layers — topographic colour (topo), topographic raster (toporaster), greyscale topographic (topograatone), and nautical raster (sjokartraster) — delivered as 256x256 PNG tiles across four TileMatrixSets (utm32n, utm33n, utm35n, webmercator). Licensed CC BY 4.0.",
			"when_to_use": "Use when an agent needs to render or reference topographic map tiles of Norway: \"vis kart over Oslo\", \"topografisk bakgrunnskart for Norge\", \"show a map of Trondheim\", \"nautical chart tiles for Oslofjord\", \"embed Norwegian map tiles in an application\". Pair with geonorge.adresser or geonorge.stedsnavn to resolve a place name to coordinates before selecting the correct tile.",
			"when_not_to_use": "Do not copy or repurpose tile data at zoom levels 12-20 without additional permission from rights holders — this data comes from the Geovekst collaboration and Kartverket does not hold all rights. For vector map data or feature lookups, use a WFS or REST endpoint instead. Do not use for real-time data (elevation, place names) — use geonorge.hoydedata or geonorge.stedsnavn for those.",
			"sample_request": "# 1. Fetch capabilities to discover layers and tile matrix sets\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://cache.kartverket.no/v1/wmts/1.0.0/WMTSCapabilities.xml'\n\n# 2. Fetch a specific tile (topo layer, webmercator, zoom 5, tile 0/0)\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://cache.kartverket.no/v1/wmts/1.0.0/topo/default/webmercator/5/0/0.png' \\\n  -o tile.png",
			"agent_recipe": "1. **Discover available layers**: GET `https://cache.kartverket.no/v1/wmts/1.0.0/WMTSCapabilities.xml`\n   and parse `<Layer><ows:Identifier>` elements. Available layers: `topo` (colour),\n   `toporaster` (raster), `topograatone` (greyscale), `sjokartraster` (nautical).\n2. **Choose a TileMatrixSet**: `webmercator` is compatible with most web mapping\n   libraries (Leaflet, OpenLayers). Use `utm33n` for Norwegian projection (EPSG:25833).\n3. **Resolve place name to coordinates** (if needed): call `geonorge.adresser` or\n   `geonorge.stedsnavn` to get a lat/lon, then convert to tile indices (z/x/y) using\n   standard slippy-map tile math for webmercator, or UTM coordinates for UTM sets.\n4. **Request a tile**: `GET https://cache.kartverket.no/v1/wmts/1.0.0/{layer}/default/{TileMatrixSet}/{z}/{y}/{x}.png`\n   — note the order is `{TileMatrix}/{TileRow}/{TileCol}` (z/y/x), not z/x/y.\n5. **Attribution**: display `© Kartverket` on all map renders as required by CC BY 4.0.\n6. **Rate limits**: no explicit limit published, but cache tiles locally — avoid\n   re-fetching unchanged tiles.",
			"composes_with": [
				"geonorge.adresser",
				"geonorge.stedsnavn"
			],
			"last_verified": "2026-05-23T00:00:00.000Z",
			"source_urls": [
				"https://cache.kartverket.no/v1/wmts/1.0.0/WMTSCapabilities.xml",
				"https://kartverket.no/api-og-data",
				"https://www.kartverket.no/api-og-data/vilkar-for-bruk"
			],
			"probe": {
				"method": "GET",
				"url": "https://cache.kartverket.no/v1/wmts/1.0.0/WMTSCapabilities.xml",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "kartverket.valgdata",
			"name": "Kartverket Valgdata REST-API",
			"provider": "Statens kartverk",
			"provider_org_nr": "971040238",
			"category": "geo",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://api.kartverket.no/valgdata/v1/",
			"docs_url": "https://api.kartverket.no/valgdata/v1/",
			"tags": [
				"kartverket",
				"valgdata",
				"election",
				"norway",
				"government",
				"geojson"
			],
			"description": "REST API from the Norwegian Mapping Authority (Kartverket) that provides endpoints for electoral division data relevant to Norwegian elections: voting districts (stemmekretser), municipalities, and counties, with or without coastline contour. As of the 2025 election, counting districts (tellekretser) have been discontinued — only stemmekretser are served. Responses are available as GeoJSON.",
			"when_to_use": "Use when an application needs Norwegian electoral district geometry: \"stemmekrets grenser\", \"valgkrets kart\", \"electoral district boundaries Norway\", \"hvilken stemmekrets tilhører jeg\", or when building election-night dashboards that need geographic division data per municipality or county.",
			"when_not_to_use": "Do not use for tellekretser (counting districts) — these were discontinued from the 2025 election onwards. Do not use for live election results (vote counts); this API provides geographic division data only, not voting outcome statistics.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://api.kartverket.no/valgdata/v1/'",
			"agent_recipe": "1. GET https://api.kartverket.no/valgdata/v1/ — the root redirects (302) to\n   the Swagger UI. Follow the redirect to discover available endpoints.\n2. The API serves stemmekretser (voting districts), kommuner (municipalities),\n   and fylker (counties) as GeoJSON, both with and without coastline contour.\n3. Representation points are served as separate files.\n4. The API distinguishes between current divisions and future changes — check\n   endpoint parameters for date-based filtering.\n5. Note: tellekretser (counting districts) were discontinued from election 2025;\n   do not request them.\n6. No API key required. Include a descriptive User-Agent header.\n7. For place-name-to-coordinate resolution before querying spatial endpoints,\n   cross-reference Kartverket's stedsnavn or adresse APIs.",
			"composes_with": [],
			"last_verified": "2026-05-06T09:10:00.000Z",
			"source_urls": [
				"https://api.kartverket.no/valgdata/v1/",
				"https://data.norge.no/data-services/fbbe2083-f7a7-35da-b18d-8c091a65fdbe",
				"https://www.kartverket.no/api-og-data/"
			],
			"probe": {
				"method": "GET",
				"url": "https://api.kartverket.no/valgdata/v1/",
				"accept": null,
				"expect_status": [
					200,
					301,
					302
				]
			}
		},
		{
			"id": "kartverket.vannstand",
			"name": "Kartverket Water Level API (Vannstand)",
			"provider": "Statens kartverk",
			"provider_org_nr": "971040238",
			"category": "maritime",
			"api_style": "rest",
			"auth_type": "none",
			"auth_details": "The API is open for everybody, free of charge. No API key or User-Agent header required. Avoid excessive polling; cache static data locally.",
			"status": "active",
			"license": "CC-BY-4.0",
			"base_url": "https://vannstand.kartverket.no/tideapi.php",
			"docs_url": "https://vannstand.kartverket.no/tideapi_en.html",
			"tags": [
				"tidal",
				"waterlevel",
				"maritime",
				"coastal",
				"historical",
				"realtime",
				"xml",
				"gov"
			],
			"description": "Norwegian Hydrographic Service API for water level and tidal data at any Norwegian coastal coordinate. Returns observed measurements, tide predictions, high/low tide tables, and station reference levels in XML (or PDF/text). Free and open to all.",
			"when_to_use": "Use when the user needs tidal or water-level data along the Norwegian coast: \"tidevann i Stavanger\", \"water level predictions for Bergen\", \"high and low tide times\", \"observed sea level at a coordinate\", \"vannstand nå\", \"flo og fjære tidspunkt\". Supply lat/lon and a time window; supports both historical observations (datatype=obs) and predictions (datatype=pre).",
			"when_not_to_use": "Do not poll excessively — the API handles about 20 requests per second shared across all users; cache static data locally. Not suitable for inland freshwater bodies or locations outside the Norwegian coast (lat 45–80, lon -15–35). For meteorological weather forecasts, use met.locationforecast instead.",
			"sample_request": "curl -sSL \\\n  'https://vannstand.kartverket.no/tideapi.php?lat=58.974339&lon=5.730121&fromtime=2026-05-13T00:00&totime=2026-05-13T06:00&datatype=obs&refcode=cd&file=&lang=en&interval=60&dst=0&tzone=&tide_request=locationdata'",
			"agent_recipe": "1. Resolve a place name to lat/lon if needed (use geocoding — see met.locationforecast\n   composes_with notes; Kartverket address API can also resolve Norwegian place names).\n2. Choose datatype: \"obs\" for observed measurements (near-real-time), \"pre\" for\n   tide predictions, \"tab\" for high/low tide extremes, or \"all\" for both.\n3. Choose refcode: \"cd\" (chart datum, default), \"msl\" (mean sea level), or \"nn2000\".\n4. Build the URL:\n     GET https://vannstand.kartverket.no/tideapi.php\n       ?lat=<latitude>&lon=<longitude>\n       &fromtime=<YYYY-MM-DDTHH:MM>&totime=<YYYY-MM-DDTHH:MM>\n       &datatype=<obs|pre|tab|all>\n       &refcode=<cd|msl|nn2000>\n       &file=           (empty = XML response)\n       &lang=en\n       &interval=<10|60>\n       &dst=0&tzone=\n       &tide_request=locationdata\n5. Parse the XML response: <locationdata> contains <location> attributes (name, code,\n   lat, lon) and <data type=\"...\"> elements with <waterlevel value=\"...\" time=\"...\"/>.\n6. Times in the response include timezone offsets — convert to Europe/Oslo for display.\n7. Cache station-level and static reference data locally; only poll time-series data\n   as needed.",
			"composes_with": [
				"met.locationforecast"
			],
			"last_verified": "2026-05-13T07:11:44.000Z",
			"source_urls": [
				"https://kartverket.no/api-og-data/vilkar-for-bruk",
				"https://vannstand.kartverket.no/tideapi.php?lat=58.974339&lon=5.730121&fromtime=2026-05-13T00:00&totime=2026-05-13T06:00&datatype=obs&refcode=cd&place=&file=&lang=nb&interval=10&dst=0&tzone=&tide_request=locationdata",
				"https://vannstand.kartverket.no/tideapi_en.html",
				"https://vannstand.kartverket.no/tideapi_no.html"
			],
			"probe": {
				"method": "GET",
				"url": "https://vannstand.kartverket.no/tideapi.php?lat=58.974339&lon=5.730121&fromtime=2026-05-13T00:00&totime=2026-05-13T06:00&datatype=obs&refcode=cd&place=&file=&lang=en&interval=60&dst=0&tzone=&tide_request=locationdata",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "kystverket.tss",
			"name": "TSS - Trafikkseparasjonssystemet (Kystverket WMS)",
			"provider": "Kystverket",
			"provider_org_nr": "874783242",
			"category": "maritime",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": null,
			"status": "active",
			"license": null,
			"base_url": "https://services.kystverket.no/wms.ashx",
			"docs_url": "https://kystinfo.no/",
			"tags": [
				"tss",
				"traffic-separation",
				"shipping",
				"maritime",
				"imo",
				"wms",
				"geo"
			],
			"description": "OGC WMS service from Kystverket (Norwegian Coastal Administration) exposing maritime chart layers including Traffic Separation Scheme (TSS) data, shipping lanes, pilot boarding fields, speed restrictions, and other sea traffic regulation layers along the Norwegian coast. Served by MapServer 7.4.0; no authentication required; Fees and AccessConstraints are both none.",
			"when_to_use": "Use when an agent needs to render or query Traffic Separation Scheme boundaries, IMO-recommended sailing routes, pilot boarding fields (losbordingsfelt), speed restrictions at sea (fartsrestriksjoner sjø), ISPS harbour facilities, or other Kystverket sea-traffic regulation layers on a map. Typical triggers: \"vis TSS\", \"trafikkseparasjonssystem\", \"losbordingsfelt kart\", \"fartsrestriksjoner sjø\", \"ISPS havneanlegg\".",
			"when_not_to_use": "Do not use for vector/feature attribute queries at scale — this is a raster WMS; use WFS or a dedicated feature service for bulk data extraction. Maximum image size is 6000×6000 pixels; do not request larger images. For real-time vessel positions use AIS sources, not this service.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://services.kystverket.no/wms.ashx?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&LAYERS=layer_99&CRS=EPSG:3857&BBOX=600000,8000000,700000,8100000&WIDTH=400&HEIGHT=400&FORMAT=image/png'",
			"agent_recipe": "1. **Discover layers** — fetch GetCapabilities to confirm available layer names:\n   `GET https://services.kystverket.no/wms.ashx?request=GetCapabilities&service=WMS`\n   As of 2026-05-21 the service advertises 21 layers in 4 groups:\n   - group_1 (Beredskap): layer_25, layer_493, layer_34, layer_26\n   - group_2 (Sjøtrafikk og havner): layer_99, layer_59, layer_29, layer_420,\n     layer_888, layer_889, layer_890, layer_547, layer_593, layer_755,\n     layer_759, layer_760, layer_761\n   - group_3 (Eiendom): layer_503\n   - group_4 (Farled og sjømerker): layer_552, layer_554, layer_495\n   Sea-traffic-relevant layers include layer_99 (Innseilingskorridorer - Losplikt)\n   and layer_29 (Losbordingsfelt).\n   NOTE: layer_141 and layer_113 are NOT in this capabilities document.\n\n2. **Issue GetMap** — construct a GetMap request with a BBOX in EPSG:3857\n   (or EPSG:4326). Pick the desired layer. Maximum image size is 6000×6000.\n   Example (layer_99, Norwegian coast area):\n   `LAYERS=layer_99&CRS=EPSG:3857&BBOX=600000,8000000,700000,8100000&WIDTH=400&HEIGHT=400&FORMAT=image/png`\n\n3. **GetFeatureInfo** — to retrieve attributes at a clicked pixel, issue\n   GetFeatureInfo with `REQUEST=GetFeatureInfo`, `QUERY_LAYERS=<layer>`,\n   `INFO_FORMAT=text/html` (or application/vnd.ogc.gml), plus the map\n   parameters and `I`/`J` pixel coordinates. Response format depends on\n   the layer's underlying dataset.\n\n4. **Combine layers** — multiple layers can be requested in one GetMap call by\n   comma-separating them in the LAYERS parameter (e.g. `LAYERS=layer_99,layer_29`).\n\n5. **No auth, no rate limit advertised** — Fees and AccessConstraints are both\n   \"none\" per the service capabilities. Use a descriptive User-Agent header as\n   a matter of courtesy.",
			"composes_with": [],
			"last_verified": "2026-05-21T07:29:11.000Z",
			"source_urls": [
				"https://kystinfo.no/",
				"https://kystinfo.no/sjotrafikkforskrift",
				"https://services.kystverket.no/wms.ashx?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&LAYERS=layer_141&CRS=EPSG:3857&BBOX=600000,8000000,700000,8100000&WIDTH=400&HEIGHT=400&FORMAT=image/png",
				"https://services.kystverket.no/wms.ashx?request=GetCapabilities&service=WMS",
				"https://www.kystverket.no/"
			],
			"probe": {
				"method": "GET",
				"url": "https://services.kystverket.no/wms.ashx?request=GetCapabilities&service=WMS",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "mattilsynet.dyrehold-wms",
			"name": "Mattilsynet Dyrehold og Drikkevann WMS",
			"provider": "Mattilsynet",
			"provider_org_nr": null,
			"category": "environment",
			"api_style": "wms",
			"auth_type": "none",
			"auth_details": "No authentication required. The GetCapabilities response declares Fees: None and AccessConstraints: none.",
			"status": "active",
			"license": null,
			"base_url": "https://kart.mattilsynet.no/wmscache/service",
			"docs_url": null,
			"tags": [
				"mattilsynet",
				"dyrehold",
				"animal-husbandry",
				"drikkevann",
				"drinking-water",
				"wms",
				"geo",
				"gov",
				"norway"
			],
			"description": "OGC WMS 1.3.0 service from Mattilsynet (Norwegian Food Safety Authority) providing map layers for animal husbandry holdings and drinking-water sources across Norway. Covers production-animal farms, poultry holdings, apiaries, drinking-water lakes and wells, groundwater sources, and caution zones. No authentication required; fees and access constraints are explicitly waived.",
			"when_to_use": "Use when an agent needs to visualise or overlay Mattilsynet-regulated geographic data for Norway: \"vis dyrehold i Norge\", \"show animal farms on a map\", \"poultry holding locations\", \"apiary map\", \"drikkevann innsjøer\", \"drinking water wells\", \"groundwater sources\", \"varsomhetsområder for innsjøer\". Available layers: - Mattilsynet_Dyrehold_Produksjonsdyr — production-animal holdings - Mattilsynet_Dyrehold_Fjoerfehold — poultry holdings - Mattilsynet_Bigaardsplasser — apiaries (bee yards) - Mattilsynet_Innsjoer_Drikkevann_201804010 — drinking-water lakes (snapshot 10.04.2018) - Mattilsynet_Drikkevann_Bronn — drinking-water wells - Mattilsynet_Vann_Drikkevannsformaal_20180410 — water extraction for drinking purposes (10.04.2018) - Mattilsynet_Varsomhetsomraader_Innsjoer — caution zones for lakes - Mattilsynet_Grunnvann — groundwater sources - Mattilsynet_Innsjo_Drikkevann — drinking-water lakes (current) - Mattilsynet_Vannverk_Inntakspunkter — waterworks intake points",
			"when_not_to_use": "Do not use for spatial analysis or attribute data extraction — this is a WMS rendering endpoint only; use WFS for feature-level data. Maximum image size is 4000x4000 pixels; requests exceeding this dimension will fail. The service is a tile cache; data snapshots (especially the 2018-dated layers) may not reflect the current register state.",
			"sample_request": "# GetCapabilities — discover available layers and CRS\ncurl -sSL 'https://kart.mattilsynet.no/wmscache/service?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities'\n\n# GetMap — render production-animal holdings over Norway in EPSG:4326\ncurl -sSL -o produksjonsdyr.png \\\n  'https://kart.mattilsynet.no/wmscache/service?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetMap&LAYERS=Mattilsynet_Dyrehold_Produksjonsdyr&STYLES=&WIDTH=400&HEIGHT=400&CRS=EPSG:4326&BBOX=4.5,58,31.5,71&FORMAT=image/png'",
			"agent_recipe": "1. **Discover layers** — GET the GetCapabilities URL:\n   `https://kart.mattilsynet.no/wmscache/service?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities`\n   Parse the `<Layer>` elements to confirm available layer names and supported CRS codes.\n   Supported CRS: EPSG:4326, EPSG:3857, EPSG:25833, EPSG:32633, EPSG:32632, EPSG:32833.\n\n2. **Choose a layer** for the task:\n   - `Mattilsynet_Dyrehold_Produksjonsdyr` — production-animal holdings\n   - `Mattilsynet_Dyrehold_Fjoerfehold` — poultry holdings\n   - `Mattilsynet_Bigaardsplasser` — apiaries\n   - `Mattilsynet_Innsjoer_Drikkevann_201804010` — drinking-water lakes (2018 snapshot)\n   - `Mattilsynet_Drikkevann_Bronn` — drinking-water wells\n   - `Mattilsynet_Vann_Drikkevannsformaal_20180410` — water extraction sites (2018)\n   - `Mattilsynet_Varsomhetsomraader_Innsjoer` — caution zones for lakes\n   - `Mattilsynet_Grunnvann` — groundwater sources\n   - `Mattilsynet_Innsjo_Drikkevann` — drinking-water lakes (current)\n   - `Mattilsynet_Vannverk_Inntakspunkter` — waterworks intake points\n\n3. **Build a GetMap request**:\n   - `LAYERS`: chosen layer name (step 2)\n   - `CRS`: `EPSG:4326` for geographic coords or `EPSG:3857` for web maps\n   - `BBOX`: Norway extent in EPSG:4326 is approximately `4.5,58,31.5,71`\n     (minLon, minLat, maxLon, maxLat — note axis order for WMS 1.3.0 with\n     EPSG:4326 is lat/lon: `55.77,−9.22,72.80,45.02`)\n   - `WIDTH`/`HEIGHT`: up to 4000 pixels each\n   - `FORMAT`: `image/png` (preferred) or `image/jpeg`\n\n4. **Fetch the map tile** — issue the GetMap GET request, receive a binary PNG.\n   No JSON parsing; display or overlay the image directly.\n\n5. **Constraints to observe**:\n   - This is a **visualisation/rendering service** — not suitable for vector\n     feature extraction or attribute lookups.\n   - Maximum image dimensions: 4000 × 4000 pixels.\n   - No authentication required; no API key needed.\n   - Dated layers (e.g. 20180410) represent snapshots and may lag the current register.\n   - Contact: per-odin.eiterjord@mattilsynet.no (Mattilsynet IKT).",
			"composes_with": [],
			"last_verified": "2026-05-22T07:12:28.000Z",
			"source_urls": [
				"https://kart.mattilsynet.no/wmscache/service?service=WMS&request=GetCapabilities",
				"https://kart.mattilsynet.no/wmscache/service?service=WMS&version=1.3.0&request=GetMap&layers=Mattilsynet_Dyrehold_Produksjonsdyr&styles=&width=400&height=400&crs=EPSG:4326&bbox=4.5,58,31.5,71&format=image/png"
			],
			"probe": {
				"method": "GET",
				"url": "https://kart.mattilsynet.no/wmscache/service?SERVICE=WMS&VERSION=1.3.0&REQUEST=GetCapabilities",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "met.locationforecast",
			"name": "Locationforecast 2.0",
			"provider": "Meteorologisk institutt",
			"provider_org_nr": "971274042",
			"category": "weather",
			"api_style": "rest",
			"auth_type": "user_agent_required",
			"auth_details": "No API key. Every request MUST include a User-Agent header that identifies the caller (project name + contact URL or email). Generic UAs (curl/python-requests defaults) are blocked with 403.",
			"status": "active",
			"license": "CC-BY-4.0",
			"base_url": "https://api.met.no/weatherapi/locationforecast/2.0/",
			"docs_url": "https://api.met.no/weatherapi/locationforecast/2.0/documentation",
			"tags": [
				"met",
				"yr",
				"forecast",
				"norway",
				"global"
			],
			"description": "Free weather forecast API from the Norwegian Meteorological Institute. Returns hourly forecasts (temperature, precipitation, wind, humidity, cloud cover) for any coordinate on Earth, up to ~10 days ahead. Used by yr.no.",
			"when_to_use": "User asks for current or forecast weather at a Norwegian or worldwide location: \"været i Bergen\", \"weather forecast for Tromsø next week\", \"regn i morgen i Oslo\", \"temperature at lat=59.9, lon=10.7\". For place names, geocode first via the geonorge-stedsnavn or kartverket-adresser entry.",
			"when_not_to_use": "Not suitable for upper-air or aviation forecasts above ground level. Do not use for high-frequency polling — cache responses until the Expires header. For nowcast (next 90 min, Nordic only), use met.nowcast instead.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=59.91&lon=10.75'",
			"agent_recipe": "1. If the user gave a place name (not coordinates), first call the geocoding\n   entry (geonorge.stedsnavn) to resolve to lat/lon. Round to 4 decimals for\n   privacy and cache friendliness.\n2. Call the smoke_test URL pattern with the resolved coordinates.\n3. Parse `properties.timeseries[]` — each element has a `time` (UTC) and `data.instant.details`\n   for current values. `data.next_1_hours.details.precipitation_amount` is mm of rain in the\n   next hour.\n4. Convert times to Europe/Oslo for user-facing output.\n5. Cache responses until the `Expires` HTTP header. Repeated requests will get your UA blocked.",
			"composes_with": [],
			"last_verified": "2026-05-05T22:00:00.000Z",
			"source_urls": [
				"https://api.met.no/doc/TermsOfService",
				"https://api.met.no/weatherapi/locationforecast/2.0/documentation"
			],
			"probe": {
				"method": "GET",
				"url": "https://api.met.no/weatherapi/locationforecast/2.0/compact?lat=59.91&lon=10.75",
				"accept": null,
				"expect_status": [
					200,
					203
				]
			}
		},
		{
			"id": "met.metalerts",
			"name": "MetAlerts — weather alerts (CAP) from MET Norway",
			"provider": "Meteorologisk institutt",
			"provider_org_nr": "971274042",
			"category": "weather",
			"api_style": "rest",
			"auth_type": "user_agent_required",
			"auth_details": "Free, no API key or token. However every request must send an identifying User-Agent header with your application/domain name and a contact (company email or website); generic or missing User-Agents are blocked with HTTP 403. From the Terms of Service: \"All requests must (if possible) include an identifying User Agent-string (UA) in the request\" — \"If we cannot contact you in case of problems, you risk being blocked without warning.\" Stay under 20 requests/second (total per application) and respect Expires/If-Modified-Since caching. Example UA: \"your-app/1.0 (+https://your-site.example)\".",
			"status": "active",
			"license": "CC-BY-4.0",
			"base_url": "https://api.met.no/weatherapi/metalerts/2.0",
			"docs_url": "https://api.met.no/weatherapi/metalerts/2.0/documentation",
			"tags": [
				"met",
				"alerts",
				"cap",
				"realtime",
				"rss",
				"geojson",
				"norway"
			],
			"description": "MetAlerts is MET Norway's free feed of official meteorological warnings (CAP) for Norwegian land, coastal and sea regions — covering severe weather such as gale, forest fire, rain flood, snow, ice and lightning at yellow/orange/red levels. Alerts are delivered natively as CAP (XML) plus an RSS 2.0 feed, with an experimental GeoJSON version in beta.",
			"when_to_use": "User asks about active or upcoming weather warnings / danger alerts in Norway: \"er det farevarsel i Oslo nå\", \"obsvarsel uvær Vestlandet\", \"weather alerts Norway today\", \"ekstremvær gult/oransje/rødt nivå\", \"kuling- eller stormvarsel på kysten\", \"skogbrannfare\", \"any active alerts for these coordinates\". Also for apps that want to poll current warnings or filter alerts by county (fylke), event type, or lat/lon and render the CAP/GeoJSON on a map.",
			"when_not_to_use": "Not for flood warnings — those come from NVE (api.nve.no), also in CAP format. Not a weather forecast service: use met.locationforecast for forecasts and met.frost for historical observations. Do not poll the GeoJSON output for high volume or for whole archive months — \"This is currently considered a beta feature\" and is slow/costly; filter on geographicDomain/county/event first. Do not re-download each CAP file repeatedly (the file never changes once issued) or you risk being throttled. Note that /current may legitimately return an empty FeatureCollection (or empty RSS) when no alerts are active — treat an empty result as \"no warnings\", not as an error.",
			"sample_request": "# Current active alerts as GeoJSON (may be an empty FeatureCollection when none active)\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://api.met.no/weatherapi/metalerts/2.0/current.json'\n\n# RSS 2.0 feed of current alerts in English\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://api.met.no/weatherapi/metalerts/2.0/current.rss?lang=en'\n\n# All alerts (active + inactive, last 30 days) for one county, e.g. Agder (42)\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://api.met.no/weatherapi/metalerts/2.0/all.xml?county=42'",
			"agent_recipe": "1. Always send the project User-Agent header on every request; a generic or\n   missing UA returns HTTP 403 Forbidden.\n2. For a place name, geocode it to lat/lon first (e.g. via a geocoding API),\n   then query alerts covering that point:\n   GET https://api.met.no/weatherapi/metalerts/2.0/current.json?lat=<lat>&lon=<lon>\n3. To list every active warning, call /current (active only) or /all (active +\n   inactive issued in the last 30 days). Add lang=en for English text.\n4. Choose a format via the file extension: .rss (RSS 2.0, the default when no\n   `cap` param), .xml (CAP/XML with browser-friendly MIME type), or .json\n   (experimental GeoJSON beta — convenient because all info is inlined, but\n   slow; do not use for high volume or whole archive months).\n5. Filter to reduce volume: event (blowingSnow, forestFire, gale, ice, icing,\n   lightning, polarLow, rain, rainFlood, snow, stormSurge, wind),\n   geographicDomain (land|marine), county (2-digit fylke number, land only),\n   incidentName, or sort.\n6. An empty FeatureCollection / empty RSS means there are no matching warnings —\n   this is a valid \"all clear\" response, not a failure.\n7. Each alert is identified by a CAP id and never changes once issued; fetch a\n   given CAP file at most once and cache it locally. Respect the Expires header\n   and do not poll more than once every 10 minutes for push-style use.\n8. For historical warnings use /archive with period=YYYY-MM (or date=YYYY-MM-DD),\n   narrowing with geographicDomain/county to avoid timeouts.\n9. For flood warnings, use NVE (api.nve.no) instead — MetAlerts does not cover\n   floods. For ordinary forecasts use met.locationforecast; for past\n   observations use met.frost.",
			"composes_with": [
				"met.locationforecast",
				"met.frost"
			],
			"last_verified": "2026-05-31T07:24:11.000Z",
			"source_urls": [
				"https://api.met.no/",
				"https://api.met.no/doc/License",
				"https://api.met.no/doc/TermsOfService",
				"https://api.met.no/weatherapi/metalerts/2.0/all.json",
				"https://api.met.no/weatherapi/metalerts/2.0/documentation",
				"https://api.met.no/weatherapi/metalerts/2.0/swagger"
			],
			"probe": {
				"method": "GET",
				"url": "https://api.met.no/weatherapi/metalerts/2.0/current.json",
				"accept": null,
				"expect_status": [
					200
				]
			}
		},
		{
			"id": "met.nowcast",
			"name": "Nowcast 2.0",
			"provider": "Meteorologisk institutt",
			"provider_org_nr": "971274042",
			"category": "weather",
			"api_style": "rest",
			"auth_type": "user_agent_required",
			"auth_details": "No API key required. All requests must include an identifying User-Agent header with application/domain name and contact info. Missing or generic UAs receive 403 Forbidden. Per ToS: \"All requests must (if possible) include an identifying User Agent-string (UA) in the request with the application/domain name, optionally version number.\"",
			"status": "active",
			"license": "CC-BY-4.0",
			"base_url": "https://api.met.no/weatherapi/nowcast/2.0/",
			"docs_url": "https://api.met.no/weatherapi/nowcast/2.0/documentation",
			"tags": [
				"met",
				"nowcast",
				"precipitation",
				"realtime",
				"nordic"
			],
			"description": "Two-hour precipitation nowcast from the Norwegian Meteorological Institute. Returns temperature, precipitation rate, wind, and humidity for locations in Norway, Sweden, Finland and Denmark. Forecasts are updated every 5 minutes and are especially useful for predicting immediate precipitation.",
			"when_to_use": "User asks about precipitation or weather in the next 0–2 hours for a Nordic location: \"regner det nå i Oslo?\", \"will it rain in the next hour in Bergen?\", \"is it raining right now in Tromsø?\", \"precipitation radar for Trondheim\". Also use when a real-time weather snapshot is needed rather than a multi-day forecast.",
			"when_not_to_use": "Do not use for forecasts beyond 2 hours — use met.locationforecast for multi-day planning. Not suitable for locations outside the Nordic radar coverage area (Norway, Sweden, Finland, Denmark); radar gaps due to topography or technical outages will produce no precipitation forecast. Check the RadarCoverage field in the response before displaying precipitation values.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://api.met.no/weatherapi/nowcast/2.0/complete?lat=59.93&lon=10.72'",
			"agent_recipe": "1. If the user gave a place name (not coordinates), geocode first to resolve to lat/lon.\n2. Call complete?lat=<lat>&lon=<lon> with the User-Agent header set.\n3. Check `properties.meta.radar_coverage` in the response:\n   - \"ok\" → radar data is available, precipitation forecast is reliable.\n   - \"temporarily unavailable\" → radar down, omit precipitation values.\n   - \"no coverage\" → location outside radar range; fall back to met.locationforecast.\n4. The first timeseries element has full `instant.details` (temperature, wind, humidity,\n   precipitation_rate). Subsequent 5-minute steps carry only precipitation_rate.\n5. `data.next_1_hours.details.precipitation_amount` gives expected mm in the next hour.\n6. For forecasts beyond the ~2-hour nowcast window, chain to met.locationforecast.\n7. Cache responses until the `Expires` HTTP header. The data updates every 5 minutes;\n   polling faster will get the UA blocked.",
			"composes_with": [
				"met.locationforecast"
			],
			"last_verified": "2026-05-11T07:07:50.000Z",
			"source_urls": [
				"https://api.met.no/doc/TermsOfService",
				"https://api.met.no/weatherapi/nowcast/2.0/complete?lat=59.93&lon=10.72",
				"https://api.met.no/weatherapi/nowcast/2.0/documentation"
			],
			"probe": {
				"method": "GET",
				"url": "https://api.met.no/weatherapi/nowcast/2.0/complete?lat=59.93&lon=10.72",
				"accept": null,
				"expect_status": [
					200,
					203
				]
			}
		},
		{
			"id": "met.sigcharts",
			"name": "Sigcharts 2.0",
			"provider": "Meteorologisk institutt",
			"provider_org_nr": "971274042",
			"category": "aviation",
			"api_style": "rest",
			"auth_type": "user_agent_required",
			"auth_details": "No API key. Every request MUST include a User-Agent header that identifies the caller (project name + contact URL or email). Generic UAs are blocked with 403. See terms: \"All requests must (if possible) include an identifying User Agent-string (UA) in the request with the application/domain name, optionally version number.\"",
			"status": "active",
			"license": "CC-BY-4.0",
			"base_url": "https://api.met.no/weatherapi/sigcharts/2.0/",
			"docs_url": "https://api.met.no/weatherapi/sigcharts/2.0/documentation",
			"tags": [
				"met",
				"aviation",
				"forecast",
				"nordic",
				"png"
			],
			"description": "Significant Weather Charts for aviation from the Norwegian Meteorological Institute. Delivers PNG charts covering the Nordic area, Svalbard and the Norwegian Sea, issued every six hours for forecast valid times 00, 06, 12 and 18 UTC.",
			"when_to_use": "User needs aviation weather charts for the Nordic region: \"significant weather chart Norway\", \"sigchart nordic area\", \"aviation weather PNG Svalbard\", \"SIGWX chart for Norwegian Sea\". Use to display or embed pre-rendered PNG charts for flight planning or briefing tools covering norway or nordic areas.",
			"when_not_to_use": "Not suitable for weekend Norway-area charts — charts for Norway are not produced during the weekend. Do not use for detailed point forecasts or upper-air numerical data; use met.locationforecast instead. Do not poll repeatedly — cache responses until the Expires header and check available.json first to avoid 204 No Content responses.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://api.met.no/weatherapi/sigcharts/2.0/available.json?area=norway'",
			"agent_recipe": "1. Call available.json to discover which charts exist for the desired area:\n     GET https://api.met.no/weatherapi/sigcharts/2.0/available.json?area=norway\n   (or area=nordic). Parse the JSON array — each element has `params.area`,\n   `params.time` (UTC ISO-8601), `updated`, and `uri`.\n2. Select the `uri` for the desired valid time (00, 06, 12, or 18 UTC).\n   Charts are issued every six hours; at least 4 are available per area.\n3. Fetch the PNG chart by making a GET request to the chosen `uri` (or use\n   the base URL with query params: ?area=norway&time=2026-05-21T12:00:00Z).\n   Include the User-Agent header on every request.\n4. Alternatively, use the `offset` param (1–3) to count back from the latest:\n     GET https://api.met.no/weatherapi/sigcharts/2.0/?area=nordic&offset=1\n5. Cache PNG responses until the `Expires` HTTP header. Avoid re-fetching\n   images that have not changed — use If-Modified-Since with Last-Modified.\n6. Note: Norway charts are not produced on weekends — check available.json\n   first to confirm the desired time is present before requesting the PNG.\n7. For the full parameter reference (area, time, offset, format), see the\n   OpenAPI spec at https://api.met.no/weatherapi/sigcharts/2.0/swagger.",
			"composes_with": [],
			"last_verified": "2026-05-21T07:00:00.000Z",
			"source_urls": [
				"https://api.met.no/doc/License",
				"https://api.met.no/doc/TermsOfService",
				"https://api.met.no/weatherapi/sigcharts/2.0/available.json?area=norway",
				"https://api.met.no/weatherapi/sigcharts/2.0/documentation",
				"https://api.met.no/weatherapi/sigcharts/2.0/swagger"
			],
			"probe": {
				"method": "GET",
				"url": "https://api.met.no/weatherapi/sigcharts/2.0/available.json?area=norway",
				"accept": null,
				"expect_status": [
					200,
					203
				]
			}
		},
		{
			"id": "met.tidalwater",
			"name": "Tidalwater 1.1",
			"provider": "Meteorologisk institutt",
			"provider_org_nr": "971274042",
			"category": "maritime",
			"api_style": "rest",
			"auth_type": "user_agent_required",
			"auth_details": "No API key. Every request MUST include a User-Agent header that identifies the caller (project name + contact URL or email). Generic UAs (curl/python-requests defaults) are blocked with 403.",
			"status": "active",
			"license": "CC-BY-4.0",
			"base_url": "https://api.met.no/weatherapi/tidalwater/1.1/",
			"docs_url": "https://api.met.no/weatherapi/tidalwater/1.1/documentation",
			"tags": [
				"met",
				"tidal",
				"water-level",
				"storm-surge",
				"norway",
				"harbor"
			],
			"description": "Water level forecast API from the Norwegian Meteorological Institute. Returns tidal water levels (TIDE, SURGE, TOTAL) in 10-minute resolution for a fixed set of Norwegian harbors. Data is delivered as plaintext and updated 1-2 times per hour.",
			"when_to_use": "User asks about tidal water levels, storm surge, or sea level at a Norwegian harbor: \"tidevann i Bergen\", \"vannstand i Stavanger\", \"stormflo i Tromsø\", \"tidal water level for Oslo harbor\", \"sea level forecast Trondheim\". Use for any of the ~30 supported Norwegian harbors (andenes, bergen, bodø, stavanger, oslo, tromsø, trondheim, etc.).",
			"when_not_to_use": "Do not use for wave height — waves are explicitly excluded. Do not use for weather forecasts (temperature, wind, precipitation) — use met.locationforecast instead. Do not use for locations outside the supported harbor list; arbitrary coordinates are not accepted. Do not poll more than 1-2x per hour — the data is only updated that often.",
			"sample_request": "curl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://api.met.no/weatherapi/tidalwater/1.1/?harbor=stavanger'",
			"agent_recipe": "1. Identify which Norwegian harbor the user is asking about. Match to the\n   supported harbor list: andenes, bergen, bodø, bruravik, bøfjorden,\n   hammerfest, harstad, heimsjø, helgeroa, honningsvåg, kabelvåg,\n   kristiansund, leirvik, mausund, måløy, narvik, ny-ålesund, oscarsborg,\n   oslo, rørvik, sandnes, sirevåg, solumstrand, stavanger, tregde, tromsø,\n   trondheim, træna, vardø, viker, ålesund.\n2. Call GET /weatherapi/tidalwater/1.1/?harbor=<name> with the project\n   User-Agent header.\n3. Parse the fixed-column plaintext response. Columns are:\n   AAR MND DAG TIM MIN  SURGE  TIDE   TOTAL  0p 25p 50p 75p 100p\n   All values are in meters above mean sea level (middelvannstand). Times are UTC.\n4. SURGE = weather-driven component (wind, air pressure).\n   TIDE = astronomical tidal component from Kartverket.\n   TOTAL = SURGE + TIDE = actual water level forecast.\n5. Convert times from UTC to Europe/Oslo for user-facing output.\n6. Cache responses until the Expires header — data is updated 1-2x per hour.\n7. For weather context at the same location, chain with met.locationforecast\n   using the harbor's approximate coordinates.",
			"composes_with": [
				"met.locationforecast"
			],
			"last_verified": "2026-05-05T07:27:35.000Z",
			"source_urls": [
				"https://api.met.no/doc/TermsOfService",
				"https://api.met.no/weatherapi/tidalwater/1.1/?harbor=stavanger",
				"https://api.met.no/weatherapi/tidalwater/1.1/documentation"
			],
			"probe": {
				"method": "GET",
				"url": "https://api.met.no/weatherapi/tidalwater/1.1/?harbor=stavanger",
				"accept": null,
				"expect_status": [
					200,
					203
				]
			}
		},
		{
			"id": "met.turbulence",
			"name": "Turbulence 2.0",
			"provider": "Meteorologisk institutt",
			"provider_org_nr": "971274042",
			"category": "aviation",
			"api_style": "rest",
			"auth_type": "user_agent_required",
			"auth_details": "No API key required. Every request MUST include a descriptive User-Agent header identifying the caller. Generic UAs are blocked with 403 Forbidden. See MET FAQ: \"Are you getting 403 Forbidden errors? Read the FAQ and check your User-Agent header!\"",
			"status": "active",
			"license": "CC-BY-4.0",
			"base_url": "https://api.met.no/weatherapi/turbulence/2.0/",
			"docs_url": "https://api.met.no/weatherapi/turbulence/2.0/documentation",
			"tags": [
				"met",
				"aviation",
				"turbulence",
				"forecast",
				"norway"
			],
			"description": "Aviation turbulence forecast API from the Norwegian Meteorological Institute. Returns pre-rendered PNG images (maps and vertical cross-sections) for 19 Norwegian airports, covering 0-18 hours ahead, updated every three hours.",
			"when_to_use": "Use when an agent needs aviation turbulence prognosis charts for a specific Norwegian airport: \"turbulence forecast for Tromsø\", \"is there turbulence near ENTC\", \"show me the turbulence map for Bergen airport (ENBR)\", \"vertical cross-section of turbulence for Bodø\". Useful for flight planning tools, dispatch briefings, and pilot self-briefing systems. Use /available.json to discover which ICAO codes and time steps are available.",
			"when_not_to_use": "Do not use for general-purpose or non-aviation turbulence data — this API is exclusively for Norwegian airport ICAO codes (ENAL, ENBL, ENBN, ENDU, ENEV, ENHF, ENHK, ENHV, ENLK, ENMH, ENMS, ENOV, ENRA, ENSB, ENSD, ENSH, ENST, ENTC, ENVA). Response is a pre-rendered PNG image, not raw numeric grid data — do not use if your application needs machine-readable turbulence values or gridded fields. For ground-level weather forecasts use met.locationforecast.",
			"sample_request": "# Discover available forecasts\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://api.met.no/weatherapi/turbulence/2.0/available.json'\n\n# Fetch turbulence map for Tromsø (ENTC) — current hour\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://api.met.no/weatherapi/turbulence/2.0/map?icao=ENTC' \\\n  -o turbulence_map_ENTC.png\n\n# Fetch vertical cross-section for Tromsø at a specific time\ncurl -sSL \\\n  -H 'User-Agent: your-app/1.0 (+https://your-site.example)' \\\n  'https://api.met.no/weatherapi/turbulence/2.0/cross_section?icao=ENTC&time=2026-05-22T08:00:00Z' \\\n  -o turbulence_cross_section_ENTC.png",
			"agent_recipe": "1. Call GET /available.json (no parameters) to retrieve the full list of\n   available forecast images as a JSON array. Each element has `params.icao`,\n   `params.time`, `params.type`, and `uri`.\n2. Filter the list to the desired ICAO airport code and forecast type\n   (\"map\" for a top-down area map, \"cross_section\" for a vertical profile).\n   Valid ICAO codes: ENAL ENBL ENBN ENDU ENEV ENHF ENHK ENHV ENLK ENMH\n   ENMS ENOV ENRA ENSB ENSD ENSH ENST ENTC ENVA.\n3. Select the `uri` for the desired time step (forecasts run 0-18 hours\n   ahead in 1-hour steps, updated every 3 hours).\n4. Fetch the PNG image from the selected `uri` with the required User-Agent\n   header. The response is a PNG — display it directly or embed it.\n5. If the user did not specify a time, omit the `time` parameter and the\n   API will default to the current hour.\n6. Cache responses: forecasts update every 3 hours. Re-fetching the same\n   hour within that window returns identical data.",
			"composes_with": [
				"met.locationforecast"
			],
			"last_verified": "2026-05-22T09:13:00.000Z",
			"source_urls": [
				"https://api.met.no/doc/License",
				"https://api.met.no/weatherapi/turbulence/2.0/available.json",
				"https://api.met.no/weatherapi/turbulence/2.0/documentation",
				"https://api.met.no/weatherapi/turbulence/2.0/swagger"
			],
			"probe": {
				"method": "GET",
				"url": "https://api.met.no/weatherapi/turbulence/2.0/available.json",
				"accept": null,
				"expect_status": [
					200
				]
			}
		}
	]
}