{"x402Version":2,"type":"bazaar-listing","service":{"name":"HALOWERK naturwerk","url":"https://natur.halowerk.com","version":"1.0.0","icon":"https://natur.halowerk.com/favicon.svg"},"items":[{"id":"naturwerk.earthquake_brief","name":"earthquake_brief","title":"Condense one earthquake into what a decision needs — magnitude with its type, depth, distance from your location, reported intensity, tsunami flag, and whether the solution is reviewed or still automatic.","description":"Returns a single earthquake in decision-ready form, either by its USGS event identifier or as the most significant event matching a search. Magnitude is reported with the magnitude type, because moment magnitude and local magnitude are not interchangeable at the edges of their ranges. Depth and, when a reference point is supplied, distance from it are given equal standing with magnitude, since a magnitude six at three hundred kilometres depth is harmless and a magnitude four and a half at five kilometres under a city is not. Where USGS carries intensity products they are included: the maximum reported Modified Mercalli intensity, the estimated peak ground acceleration, and how many felt reports were submitted, which together say more about effect than any magnitude does. The review status is reported prominently: an automatic solution is frequently revised downward within hours, and alerting on a number that will change tomorrow is the most common mistake made with this dataset. Alert level and tsunami flag come through as USGS sets them, unmodified.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/earthquake-brief","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","additionalProperties":false,"properties":{"event_id":{"type":"string","maxLength":40,"description":"USGS event id, e.g. us7000abcd. Without it the strongest recent event matching the filters is returned."},"min_magnitude":{"type":"number","minimum":0,"maximum":10,"default":5,"description":"Used only when no event_id is given."},"hours":{"type":"integer","minimum":1,"maximum":720,"default":24,"description":"Search window when no event_id is given."},"reference_lat":{"type":"number","minimum":-90,"maximum":90,"description":"Your location, to get distance and bearing."},"reference_lon":{"type":"number","minimum":-180,"maximum":180}}},"outputSchema":{"type":"object"},"price":{"amount":"4000","currency":"USDC","decimals":6,"human":"0.004 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"4000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.seismic_proximity","name":"seismic_proximity","title":"Compute distance- and magnitude-weighted seismic exposure for a location over a time window, with the formula stated and every contributing event returned so the weighting can be redone.","description":"Retrieves the earthquakes within a radius and time window of a point and turns them into an exposure figure. Each event contributes according to its magnitude and its distance, using an explicit formula that is returned with the result: energy scales exponentially with magnitude and attenuates with distance, so a distant large event and a near small one can contribute comparably, which is the behaviour that makes a single count useless. Depth is factored in because a deep event affects the surface far less than a shallow one of the same size. The response gives the total exposure, the strongest single contributor, the closest event, counts by magnitude band, and the full list of contributing events so a different weighting can be applied to the same data. This is explicitly not a seismic hazard assessment: hazard is derived from fault mapping, recurrence intervals and site soil conditions, none of which is in this dataset, and thirty days of recent activity says little about the next thirty years. What it does answer is how much shaking a location has actually seen lately.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/seismic-proximity","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["lat","lon"],"additionalProperties":false,"properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"radius_km":{"type":"number","minimum":10,"maximum":2000,"default":300},"days":{"type":"integer","minimum":1,"maximum":3650,"default":30},"min_magnitude":{"type":"number","minimum":0,"maximum":9,"default":2.5}}},"outputSchema":{"type":"object"},"price":{"amount":"5000","currency":"USDC","decimals":6,"human":"0.005 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"5000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.quake_sequence","name":"quake_sequence","title":"Group spatially and temporally related earthquakes into sequences and identify the strongest event in each, with what came before and after it — without claiming to know which were foreshocks.","description":"Clusters earthquakes that are close in space and time into sequences, using a single-link approach with an explicit distance and time threshold that both appear in the result. For each sequence you get the strongest event, the events that preceded it and those that followed, the duration, the spatial extent, the magnitude range and the rate of events per day. The naming is deliberate: the fields are before_strongest and after_strongest, not foreshocks and aftershocks. Whether an event was a foreshock is knowable only after the fact, and a service that labels one in advance is claiming more than the data supports — roughly one sequence in twenty continues upward, and the rest do not. What the response does offer for that question is the observable evidence: whether the sequence rate is rising or falling, whether the largest event came early or late in the sequence, and how the magnitudes are distributed, all of which a seismologist would want and none of which is a prediction. Sequences are reported ordered by strongest magnitude.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/quake-sequence","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["lat","lon"],"additionalProperties":false,"properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"radius_km":{"type":"number","minimum":10,"maximum":1500,"default":200},"days":{"type":"integer","minimum":1,"maximum":365,"default":30},"min_magnitude":{"type":"number","minimum":0,"maximum":8,"default":2.5},"cluster_km":{"type":"number","minimum":5,"maximum":200,"default":50,"description":"Events closer than this and within cluster_hours are joined."},"cluster_hours":{"type":"integer","minimum":1,"maximum":720,"default":72}}},"outputSchema":{"type":"object"},"price":{"amount":"5000","currency":"USDC","decimals":6,"human":"0.005 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"5000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.river_gauge","name":"river_gauge","title":"Get the current stage, discharge and water temperature at a USGS gauge with the measurement time, the station status, and the reading placed against that station own recent statistics — never a bare number.","description":"Returns the latest instantaneous values at a USGS streamgage, together with what makes them readable. A stage of three point four feet means nothing on its own, so each value is placed against the station own record for the requested reference period: the minimum, median and maximum, and the percentile the current reading falls at. The reference period is stated with the comparison, because a percentile without a window is not a statistic. Measurement time is returned as reported by the station rather than as retrieval time, and the gap between the two is given, since a gauge that last reported eleven hours ago is telling you about yesterday. Qualifier codes attached to a reading — ice-affected, estimated, provisional — are passed through and expanded, because a provisional value that gets revised is normal for this dataset and treating it as final is the standard error. Stations that report nothing at all are distinguished from stations that report a zero.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/river-gauge","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["site_id"],"additionalProperties":false,"properties":{"site_id":{"type":"string","minLength":6,"maxLength":20,"description":"USGS site number, e.g. 01646500."},"reference_days":{"type":"integer","minimum":2,"maximum":365,"default":30,"description":"Window used to place the current reading in context."}}},"outputSchema":{"type":"object"},"price":{"amount":"4000","currency":"USDC","decimals":6,"human":"0.004 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"4000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.river_anomaly","name":"river_anomaly","title":"Detect unusual river level and discharge behaviour at a USGS gauge — extreme values, unusual rates of rise, and physically implausible jumps — all measured against that station own record.","description":"Compares the recent record of a gauge against its own longer history and reports three kinds of finding, kept separate because their causes differ. An extreme level is a reading in the top or bottom percentile of the reference period. An unusual rate of rise is a change per hour exceeding the station own typical rate by a stated factor — this is the figure that matters in a flood and it leads the level rather than following it, so it is reported even when the absolute value is still ordinary. A break is a jump between consecutive measurements that exceeds what the river can physically do, which is almost always an instrument fault or a datum change, and naming it as such prevents a sensor glitch being sold as an event. Every threshold is returned, the reference period is stated with every percentile, and the readings that produced each finding are included. Values USGS marks as provisional, ice-affected or estimated are excluded from the baseline and counted, because a baseline built from bad readings makes every good one look anomalous.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/river-anomaly","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["site_id"],"additionalProperties":false,"properties":{"site_id":{"type":"string","minLength":6,"maxLength":20},"parameter":{"type":"string","enum":["discharge","gauge_height"],"default":"gauge_height"},"recent_hours":{"type":"integer","minimum":2,"maximum":168,"default":24},"reference_days":{"type":"integer","minimum":7,"maximum":365,"default":60},"sensitivity":{"type":"string","enum":["low","normal","high"],"default":"normal"}}},"outputSchema":{"type":"object"},"price":{"amount":"5000","currency":"USDC","decimals":6,"human":"0.005 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"5000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.water_quality","name":"water_quality","title":"Summarise water quality samples for a monitoring site — values, units normalised where that is safe, detection limits, quality flags and sample counts per parameter — without passing judgement against any regulatory limit.","description":"Retrieves water quality results for a monitoring site from the Water Quality Portal and normalises them into a comparable shape. The real work is units: the same measurement appears there as mg/L, ug/L, ppm and mg/l in mixed case, and combining them unchecked puts factor-of-thousand errors into any statistic built on top. Conversion is therefore applied only where it is unambiguous, the assumption behind ppm to mg/L is stated rather than made silently, and anything not safely convertible is returned in its original unit and counted separately. Per parameter you get the sample count, minimum, median and maximum of the convertible values, the date range, the detection condition where a result was below the reporting limit — which is not the same as zero and is kept distinct — and the reporting organisation, since a state agency and a volunteer programme are not equally comparable. No result is judged against a regulatory limit: limits depend on country, on the intended use of the water and on the legal regime, and a service that applies one silently is applying the wrong one somewhere.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/water-quality","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["site_id"],"additionalProperties":false,"properties":{"site_id":{"type":"string","minLength":4,"maxLength":60,"description":"Monitoring location id, e.g. USGS-01646500."},"start_date":{"type":"string","maxLength":10,"description":"ISO date; defaults to two years back."},"characteristic":{"type":"string","maxLength":80,"description":"Restrict to one characteristic name, e.g. Nitrate."},"max_results":{"type":"integer","minimum":10,"maximum":3000,"default":800}}},"outputSchema":{"type":"object"},"price":{"amount":"5000","currency":"USDC","decimals":6,"human":"0.005 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"5000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.climate_normals","name":"climate_normals","title":"Get the official 1991–2020 climate normals for a location in Germany — monthly temperature, precipitation, sunshine and the counts of frost, ice, summer and hot days — with the distance and altitude difference to the station stated.","description":"Returns the German Weather Service reference-period values for the station nearest a coordinate: monthly means and annual totals for air temperature, precipitation and sunshine duration, plus the mean annual counts of frost days, ice days, summer days and hot days. Which station supplied the values is always named with its identifier, its altitude and its distance from your point, and the altitude difference is reported explicitly — in mountainous terrain the nearest station can sit eight hundred metres below the site, which shifts temperature normals by several degrees and makes the nearest station the wrong one. Values the source marks as missing are returned as null rather than as zero, and the count of missing months per quantity is reported, since a station that operated for part of the period produces a plausible-looking annual figure from incomplete data. The response states plainly that normals are not a forecast: a July mean of nineteen degrees does not exclude thirty-five, and using a normal as an expectation for a particular day is the standard misuse of this dataset. Germany only; the source covers no other country.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/climate-normals","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["lat","lon"],"additionalProperties":false,"properties":{"lat":{"type":"number","minimum":47,"maximum":56,"description":"Within Germany; the source covers no other country."},"lon":{"type":"number","minimum":5,"maximum":16},"quantities":{"type":"array","maxItems":7,"items":{"type":"string","enum":["temperature","precipitation","sunshine","frost_days","ice_days","summer_days","hot_days"]},"description":"Which quantities to return. All by default."},"max_station_distance_km":{"type":"number","minimum":1,"maximum":200,"default":50}}},"outputSchema":{"type":"object"},"price":{"amount":"5000","currency":"USDC","decimals":6,"human":"0.005 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"5000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.frost_window","name":"frost_window","title":"Find the coming periods of air or ground frost at a location as continuous windows with start, end, duration, minimum temperature and a stated confidence that falls with lead time.","description":"Turns an hourly forecast into the thing that is actually planned around: continuous frost windows. Each window carries its start and end hour, its duration, the lowest temperature within it and the hour that low occurs, so a two-hour dip at dawn is distinguishable from a night-long freeze. Air frost and ground frost are reported against separate thresholds and never conflated: forecasts are for two metres above ground, and on clear calm nights the surface runs three to five degrees colder, so a two-metre temperature of plus two can still mean ground frost. Rather than silently applying an offset, the response evaluates both thresholds and states the assumption behind the ground one. Confidence is attached per window and declines with lead time, because a frost forecast for tomorrow morning and one for day nine are not the same statement, and reporting them with equal weight is how a forecast gets misused. Wind speed and cloud cover are included per window since both suppress radiative frost, which is the factor that decides whether a marginal night actually freezes.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/frost-window","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["lat","lon"],"additionalProperties":false,"properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"hours":{"type":"integer","minimum":6,"maximum":240,"default":96,"description":"How far ahead to look."},"air_threshold_c":{"type":"number","minimum":-20,"maximum":10,"default":0,"description":"Air frost threshold at two metres."},"ground_offset_c":{"type":"number","minimum":0,"maximum":8,"default":4,"description":"Assumed difference between two-metre and ground temperature on clear nights. Stated, not hidden."}}},"outputSchema":{"type":"object"},"price":{"amount":"5000","currency":"USDC","decimals":6,"human":"0.005 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"5000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.growing_degree_days","name":"growing_degree_days","title":"Compute growing degree days for a chosen base temperature over the forecast period, hourly and by the conventional daily method side by side, with an optional upper cut-off and missing hours reported rather than filled in.","description":"Accumulates growing degree days at a location from the hourly forecast, for a base temperature you choose. Two methods are returned side by side: the hourly integration, which is the more accurate, and the conventional average of daily maximum and minimum, which is what agronomic tables and most published thresholds are built on. Reporting only one would either be less accurate or incomparable with the literature, so both are given with the difference between them stated. An optional upper cut-off caps the contribution of very hot hours, because most crops do not develop faster above their optimum and an uncapped sum turns a heatwave into growth that did not happen. Missing hours are counted and excluded, never filled with an average — a data gap that is quietly interpolated becomes accumulated heat that was never measured. Daily breakdown, running total and the date each supplied phenological threshold would be reached are included, with the threshold dates marked as forecast-based and therefore provisional.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/growing-degree-days","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["lat","lon"],"additionalProperties":false,"properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"base_temp_c":{"type":"number","minimum":-5,"maximum":25,"default":10,"description":"Base temperature. 10 °C is common for maize, 5 °C for cereals."},"upper_cutoff_c":{"type":"number","minimum":15,"maximum":45,"description":"Optional upper limit above which extra heat does not count."},"thresholds":{"type":"array","maxItems":6,"items":{"type":"number","minimum":1,"maximum":5000},"description":"Accumulated GDD values whose reaching date you want."}}},"outputSchema":{"type":"object"},"price":{"amount":"5000","currency":"USDC","decimals":6,"human":"0.005 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"5000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.irrigation_need","name":"irrigation_need","title":"Estimate irrigation need from forecast rainfall, temperature, humidity, wind and radiation using the FAO-56 reference method — with every assumption named in the response rather than buried.","description":"Computes reference evapotranspiration by the FAO-56 Penman-Monteith method from hourly forecast data, applies a crop coefficient, subtracts effective rainfall and returns the resulting daily water deficit and its running total. The method is named because it matters: a simple temperature-based estimate and Penman-Monteith diverge substantially in windy or dry conditions, and a number without its method cannot be compared with anything. Radiation is taken from the forecast where available and otherwise estimated from cloud cover and solar geometry, with which of the two was used stated per day, because that substitution is the largest single source of error. The assumptions are returned as a list rather than a footnote: reference grass unless a crop is given, no knowledge of the soil, no field capacity, no groundwater contribution, and no irrigation already applied. Those are the things that turn this estimate into an actual recommendation, and none of them is available here. What it does provide is the atmospheric side of the water balance, computed properly and stated honestly.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/irrigation-need","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["lat","lon"],"additionalProperties":false,"properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"crop":{"type":"string","enum":["reference_grass","maize","wheat","potato","tomato","vine","lawn","orchard"],"default":"reference_grass"},"altitude_m":{"type":"number","minimum":-400,"maximum":5000,"default":100,"description":"Site altitude; affects atmospheric pressure in the calculation."},"effective_rain_factor":{"type":"number","minimum":0.3,"maximum":1,"default":0.8,"description":"Share of rainfall that reaches the root zone rather than running off. An assumption, stated."}}},"outputSchema":{"type":"object"},"price":{"amount":"5000","currency":"USDC","decimals":6,"human":"0.005 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"5000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.fire_weather","name":"fire_weather","title":"Compute a fire weather signal from forecast dryness, temperature, humidity, wind and rain using the Canadian FWI components — with every sub-index exposed and an explicit statement that this is not a fire prediction.","description":"Calculates the Canadian Fire Weather Index components from an hourly forecast: the Fine Fuel Moisture Code for the surface litter that carries ignition, the Duff Moisture Code and Drought Code for the deeper layers that determine whether a fire keeps going, the Initial Spread Index combining wind with surface dryness, the Buildup Index, and the resulting Fire Weather Index. Each is returned separately rather than only as a final number, because they answer different questions: a high FFMC with a low DC means easy ignition but little to sustain it, and the reverse means a fire that will be hard to put out once started. The codes are recursive and need a starting state; standard spring startup values are used, which is stated, and the response says how many days of spin-up have been applied, since the deep codes need weeks of history to be meaningful and a short forecast cannot supply that. This is not a fire prediction and does not claim to be: the index describes how fire would behave if there were one, and whether there is one depends on ignition sources, which are almost always people.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/fire-weather","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["lat","lon"],"additionalProperties":false,"properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"initial_ffmc":{"type":"number","minimum":0,"maximum":101,"default":85,"description":"Starting Fine Fuel Moisture Code. 85 is the standard spring startup value."},"initial_dmc":{"type":"number","minimum":0,"maximum":500,"default":6},"initial_dc":{"type":"number","minimum":0,"maximum":1500,"default":15}}},"outputSchema":{"type":"object"},"price":{"amount":"5000","currency":"USDC","decimals":6,"human":"0.005 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"5000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.solar_storm","name":"solar_storm","title":"Combine the planetary Kp index, real-time solar wind at L1, GOES X-ray flux and the official three-day forecast into one time-referenced geomagnetic risk signal — with Kp and solar wind kept apart because one lags and the other leads.","description":"Assembles the current state of geomagnetic activity from four NOAA sources and says what each one is good for. The planetary Kp index is the standard scale and maps to the G-scale storm levels, but it is computed from ground magnetometers and therefore describes a storm that has already arrived. Real-time solar wind measured at the L1 Lagrange point — speed, density and the southward component of the interplanetary magnetic field — sees the same event thirty to sixty minutes earlier, and a strongly southward field with high speed is the combination that actually drives a storm. Both are returned with their lead or lag stated rather than blended into one number. GOES X-ray flux gives the current flare class, which matters for radio blackouts rather than for geomagnetic effects, and is labelled as such. The official three-day forecast is parsed and included because a forecast from the responsible agency outranks anything derived here. The overall level is the highest of observed and forecast, with the reason stated.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/solar-storm","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","additionalProperties":false,"properties":{"include_forecast":{"type":"boolean","default":true,"description":"Include the official NOAA three-day forecast."}}},"outputSchema":{"type":"object"},"price":{"amount":"4000","currency":"USDC","decimals":6,"human":"0.004 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"4000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.gnss_degradation","name":"gnss_degradation","title":"Assess the risk of GNSS position degradation from geomagnetic and solar activity for a given latitude and receiver type — separating ionospheric error from signal scintillation, because they have different causes and different victims.","description":"Estimates how likely satellite navigation is to be degraded, keeping two distinct mechanisms apart. Ionospheric delay error rises with geomagnetic activity, affects single-frequency receivers far more than dual-frequency ones, and shifts the computed position without any obvious sign that something is wrong. Scintillation, driven by X-ray and proton events, makes the signal fade or drop out entirely and affects even dual-frequency receivers, so a service that only watches the Kp index misses it completely. Both are evaluated separately with the measurement behind each. Latitude is taken into account rather than ignored: the same Kp value means auroral-zone conditions at seventy degrees and almost nothing at forty, and the response states which latitude band applies. The receiver type you declare changes the assessment, since the mitigation differs — dual-frequency and augmentation systems remove most of the ionospheric term but nothing of the scintillation term. Thresholds and the reasoning are returned; this is an exposure assessment from space weather indices, not a measurement of your actual position error.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/gnss-degradation","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["lat"],"additionalProperties":false,"properties":{"lat":{"type":"number","minimum":-90,"maximum":90,"description":"Latitude of operation. Decisive: the same activity means different things at 70 and at 40 degrees."},"lon":{"type":"number","minimum":-180,"maximum":180},"receiver":{"type":"string","enum":["single_frequency","dual_frequency","sbas_augmented","rtk"],"default":"single_frequency"}}},"outputSchema":{"type":"object"},"price":{"amount":"4000","currency":"USDC","decimals":6,"human":"0.004 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"4000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.aviation_brief","name":"aviation_brief","title":"Normalise METAR, TAF, PIREP and SIGMET for one or more airports into a single operations JSON with flight rule category, ceiling and the age of every report — explicitly not for flight preparation.","description":"Collects the current observation, the terminal forecast, nearby pilot reports and active SIGMETs for the requested airports and returns them in one shape. The observation carries temperature, dewpoint, wind with gusts, visibility, altimeter setting, the cloud layers with their bases, and the derived ceiling — the lowest broken or overcast layer, which is the value that matters and is not the same as the lowest layer reported. From ceiling and visibility a flight rule category is derived with the thresholds returned alongside, since the US convention used here draws those lines differently from other states. Every report carries its age in minutes, because a METAR from ninety minutes ago at an airport that reports half-hourly means the station has stopped reporting. Raw text is always included next to the parsed fields so nothing is lost in normalisation. This is for operations planning, dispatch analysis and monitoring, and explicitly not for flight preparation: the legally binding briefing comes from the responsible air navigation service provider and from nowhere else.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/aviation-brief","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["airports"],"additionalProperties":false,"properties":{"airports":{"type":"array","minItems":1,"maxItems":12,"items":{"type":"string","minLength":3,"maxLength":4},"description":"ICAO codes, e.g. EDDB, KJFK."},"include_taf":{"type":"boolean","default":true},"include_pireps":{"type":"boolean","default":false,"description":"Pilot reports near the field. Adds an upstream call."},"include_sigmets":{"type":"boolean","default":true}}},"outputSchema":{"type":"object"},"price":{"amount":"5000","currency":"USDC","decimals":6,"human":"0.005 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"5000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.runway_crosswind","name":"runway_crosswind","title":"Compute headwind, tailwind and crosswind for every runway at an airport from the current observation and the runway bearings, with gusts evaluated separately from steady wind.","description":"Combines the current wind at an airport with the bearings of its runways to give, per runway direction, the headwind or tailwind component and the crosswind component. Runway geometry comes from OpenStreetMap, where runways carry an explicit bearing or one derived from their designator, and both the source and the derivation are stated per runway because a designator gives the bearing only to the nearest ten degrees. Gusts are evaluated as a second, separate case rather than averaged into the steady wind: aircraft crosswind limits are stated against the gust, so computing only from the mean removes the number that actually matters. When the observation reports variable wind direction, or reports no direction at all, the components are returned as null with the reason given rather than computed from an assumed heading — a plausible-looking crosswind figure derived from a direction nobody measured is worse than an honest gap. The best runway by lowest crosswind and the best by highest headwind are both named, since they are frequently not the same one.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/runway-crosswind","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["airport"],"additionalProperties":false,"properties":{"airport":{"type":"string","minLength":3,"maxLength":4,"description":"ICAO code."},"crosswind_limit_kt":{"type":"number","minimum":5,"maximum":60,"description":"Your aircraft crosswind limit. Each runway is then marked within or over limit."},"tailwind_limit_kt":{"type":"number","minimum":0,"maximum":20,"default":10}}},"outputSchema":{"type":"object"},"price":{"amount":"5000","currency":"USDC","decimals":6,"human":"0.005 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"5000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.volcanic_ash_route","name":"volcanic_ash_route","title":"Check a flight route against active volcanic ash SIGMETs, naming the affected segments, the validity times and the vertical extent — with polygon intersection and mere proximity kept clearly apart.","description":"Takes a route as an ordered list of waypoints, samples it at a chosen spacing and tests every sample against the currently active SIGMETs carrying a volcanic ash hazard. For each hit you get the affected segment as a from-to pair of waypoints, the SIGMET issuing centre and flight information region, the validity window, the reported base and top of the ash layer, and the raw text. The distinction the response insists on is between intersection and proximity: where the source supplies a polygon, the route is genuinely tested against it and the result is an intersection; where it supplies only a reference point, the distance is reported and the result is explicitly labelled as proximity rather than intersection, because treating the two alike would suggest a precision the data does not carry. Vertical extent is reported but not applied as a filter unless a cruising level is supplied, since an ash layer between twenty and thirty thousand feet is irrelevant to an aircraft above it and decisive to one climbing through. Advisory only: routing decisions belong to the operator and the responsible air navigation service.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/volcanic-ash-route","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["waypoints"],"additionalProperties":false,"properties":{"waypoints":{"type":"array","minItems":2,"maxItems":40,"description":"Ordered route points.","items":{"type":"object","required":["lat","lon"],"additionalProperties":false,"properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"name":{"type":"string","maxLength":20}}}},"sample_km":{"type":"number","minimum":10,"maximum":500,"default":100,"description":"Spacing at which the route is sampled."},"cruise_level_ft":{"type":"integer","minimum":0,"maximum":60000,"description":"If given, SIGMETs whose layer does not include this level are reported separately as not affecting you."},"proximity_km":{"type":"number","minimum":10,"maximum":500,"default":150,"description":"Distance at which a point-only SIGMET counts as nearby."}}},"outputSchema":{"type":"object"},"price":{"amount":"6000","currency":"USDC","decimals":6,"human":"0.006 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"6000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.species_taxonomy","name":"species_taxonomy","title":"Resolve a scientific or common species name to the currently accepted taxon with rank, full classification and identifiers — with the match confidence and the accepted-versus-synonym distinction both carried through.","description":"Takes a scientific or vernacular name and returns the accepted taxon it belongs to, with the complete classification from kingdom down to species, the taxonomic authority, the GBIF key and any linked identifiers. The distinction the response keeps is the one that matters for anything downstream: whether the name you supplied is the accepted name or a synonym, and if it is a synonym, what the accepted name is. Searching occurrence data with a synonym returns a subset of the records without any indication that the rest exist, which is the quiet way a survey ends up incomplete. Match confidence as GBIF reports it is passed through rather than dropped, because a hit at confidence sixty-two and one at ninety-nine are different claims and presenting them identically sells a guess as an identification. Vernacular names are resolved where GBIF holds them but are flagged as ambiguous by nature: the same common name covers different species in different regions and languages, and alternatives are listed rather than the first hit being presented as the answer.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/species-taxonomy","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["name"],"additionalProperties":false,"properties":{"name":{"type":"string","minLength":2,"maxLength":200,"description":"Scientific name, e.g. Bufo bufo, or a vernacular name."},"kingdom":{"type":"string","maxLength":40,"description":"Narrows the match when a name exists in more than one kingdom, which happens more often than expected."},"strict":{"type":"boolean","default":false,"description":"Only accept high-confidence matches; otherwise a low-confidence match is returned but marked."}}},"outputSchema":{"type":"object"},"price":{"amount":"4000","currency":"USDC","decimals":6,"human":"0.004 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"4000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.species_occurrence","name":"species_occurrence","title":"List documented occurrences of a species near a point with date, coordinate uncertainty, dataset and per-record licence — returning only records whose licence permits commercial reuse and counting the ones excluded.","description":"Retrieves occurrence records for a species within a radius of a coordinate and returns each with what makes it usable or not: the observation date, the coordinate uncertainty in metres, the basis of record — whether it is a preserved specimen, a human observation or a machine detection — the publishing dataset, and the licence of that record. Licence filtering is applied and stated: GBIF aggregates records under different licences and some prohibit commercial redistribution, so only CC0 and CC BY records are returned, and the number excluded for licence reasons is reported rather than the result quietly shrinking. Coordinate uncertainty is treated as a first-class field, not a footnote: a record with fifty kilometres of uncertainty does not establish that the species occurs at your point, and records are flagged when their uncertainty exceeds the search radius. Records without any uncertainty stated are marked as such, because absent uncertainty is not zero uncertainty. Absence of records is never reported as absence of the species — it means nobody recorded one, which in under-surveyed areas is the usual case.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/species-occurrence","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["species","lat","lon"],"additionalProperties":false,"properties":{"species":{"type":"string","minLength":2,"maxLength":200,"description":"Accepted scientific name. Resolve it first if unsure."},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"radius_km":{"type":"number","minimum":1,"maximum":300,"default":25},"years_back":{"type":"integer","minimum":1,"maximum":200,"default":25},"limit":{"type":"integer","minimum":1,"maximum":300,"default":100}}},"outputSchema":{"type":"object"},"price":{"amount":"5000","currency":"USDC","decimals":6,"human":"0.005 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"5000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.biodiversity_density","name":"biodiversity_density","title":"Measure species richness, record density, recency and survey coverage for an area from licence-compatible GBIF records — with richness always reported alongside a measure normalised for observer effort.","description":"Assesses the recorded biodiversity of an area around a point: how many distinct species appear, how many records support them, how recent those records are, how many separate datasets contributed, and the breakdown by kingdom. The trap this service is built around is that record density measures observers, not organisms — a city park with heavy footfall carries more records than a roadless reserve and is not thereby richer. Every richness figure is therefore paired with a normalised one: species per hundred records, which rises when a place is genuinely diverse and stays flat when it is merely well visited. The number of contributing datasets is reported for the same reason, since a thousand records from one bird survey describe one taxon group thoroughly and everything else not at all. Only records under CC0 or CC BY are counted, and the number excluded on licence grounds is stated. Records are attributed to observation effort over the chosen period, and a sparse result is reported as thin survey coverage rather than as low diversity.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/biodiversity-density","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["lat","lon"],"additionalProperties":false,"properties":{"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"radius_km":{"type":"number","minimum":1,"maximum":100,"default":10},"years_back":{"type":"integer","minimum":1,"maximum":100,"default":20},"kingdom":{"type":"string","maxLength":40,"description":"Restrict to one kingdom, e.g. Animalia, Plantae, Fungi."}}},"outputSchema":{"type":"object"},"price":{"amount":"6000","currency":"USDC","decimals":6,"human":"0.006 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"6000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.seasonal_species","name":"seasonal_species","title":"Derive the months in which a species is typically recorded at a location, corrected against the seasonal pattern of all observation effort in the same area so the answer describes the species and not the observers.","description":"Builds a monthly profile of when a species is recorded near a point, from historical occurrence data, and corrects it for observation effort. The correction is the substance of the service: raw monthly counts follow the observers, who are outdoors more in May than in November, so an uncorrected profile makes almost every species look like a spring species. The monthly distribution of the target species is therefore divided by the monthly distribution of all records in the same area and period, producing a relative index where one means the species is recorded exactly as often as the average effort would predict. Both the raw counts and the corrected index are returned, along with the peak months by each measure, since they frequently differ and the difference is informative. The number of records behind each month is given so a peak resting on three observations is visible as such, and months with too few records to say anything are marked rather than shown as zero. This describes recording, not presence: a nocturnal or cryptic species is under-recorded in every month.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/seasonal-species","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["species","lat","lon"],"additionalProperties":false,"properties":{"species":{"type":"string","minLength":2,"maxLength":200},"lat":{"type":"number","minimum":-90,"maximum":90},"lon":{"type":"number","minimum":-180,"maximum":180},"radius_km":{"type":"number","minimum":5,"maximum":500,"default":100},"years_back":{"type":"integer","minimum":3,"maximum":100,"default":30}}},"outputSchema":{"type":"object"},"price":{"amount":"5000","currency":"USDC","decimals":6,"human":"0.005 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"5000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.marine_species","name":"marine_species","title":"Resolve a marine species name against the World Register of Marine Species — accepted name, AphiaID, rank, classification, synonyms and the status that explains why a name was superseded.","description":"Looks a marine organism up in the taxonomically curated register rather than in an aggregator, and returns the accepted name with its AphiaID, the authority, the rank, the full classification and the recorded status. Where the queried name is not the accepted one, the accepted name is given together with the status term that explains why — unaccepted, alternate representation, nomen dubium and the rest each mean something different to a taxonomist and are passed through rather than flattened into synonym. Known synonyms of the accepted taxon are listed on request, which is what you need when reconciling historical datasets where the same animal appears under three names across four decades. Whether the taxon is marine, brackish, freshwater or terrestrial is reported, since the register covers non-marine taxa too and a name matching here does not by itself mean a marine organism. Bulk harvesting through the public interface is not permitted by the source and is not offered: this resolves names one at a time.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/marine-species","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["name"],"additionalProperties":false,"properties":{"name":{"type":"string","minLength":2,"maxLength":200,"description":"Scientific name, e.g. Gadus morhua."},"fuzzy":{"type":"boolean","default":false,"description":"Allow approximate matching. Off by default because a near miss in taxonomy is a wrong answer."},"include_synonyms":{"type":"boolean","default":true},"marine_only":{"type":"boolean","default":false,"description":"Restrict to taxa the register marks as marine."}}},"outputSchema":{"type":"object"},"price":{"amount":"4000","currency":"USDC","decimals":6,"human":"0.004 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"4000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]},{"id":"naturwerk.synonym_graph","name":"synonym_graph","title":"Build the graph of every name a taxon has been published under, from GBIF and WoRMS together — and report where the two registers disagree instead of picking a winner.","description":"Assembles all names associated with one taxon into a graph with the accepted name at the centre and every synonym, basionym and alternate representation as a node carrying its status, authority and the register that supplied it. Two registers are queried rather than one because their disagreement is the finding: reconciling datasets that span decades regularly turns up names that GBIF treats as a synonym and WoRMS treats as a separate species, or the reverse, and a service that silently follows one register hands the user a merge that quietly loses records. Conflicts are therefore listed explicitly with what each register says. For marine taxa WoRMS is noted as the specialist authority and GBIF as the aggregator, which is the ordering a taxonomist would apply, but the response states that rather than acting on it unilaterally. Names are returned with their publication authority so the same binomial published by different authors — a homonym, not a synonym — can be told apart, which is the failure mode that silently merges two unrelated organisms.","category":"naturwerk","keywords":[],"resource":"https://natur.halowerk.com/v1/synonym-graph","method":"POST","mimeType":"application/json","inputSchema":{"type":"object","required":["name"],"additionalProperties":false,"properties":{"name":{"type":"string","minLength":2,"maxLength":200},"include_worms":{"type":"boolean","default":true,"description":"Query WoRMS as well. Only meaningful for marine taxa but harmless otherwise."}}},"outputSchema":{"type":"object"},"price":{"amount":"6000","currency":"USDC","decimals":6,"human":"0.006 USDC"},"accepts":[{"scheme":"exact","network":"eip155:8453","payTo":"0x2880EdfFF13100677Bf97A3CBdF3Bc34771C4E5E","price":{"amount":"6000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","extra":{"asset":"USDC","network_name":"Base Mainnet","name":"USD Coin","version":"2","assetTransferMethod":"eip3009","eip712Domain":{"name":"USD Coin","version":"2","chainId":8453,"verifyingContract":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}},"maxTimeoutSeconds":300}]}],"capability_request":{"url":"https://bedarf.halowerk.com/capabilities/request","method":"POST","cost":"free","description":"Missing a capability, or does the scope not fit? Report the need here - no payment required. Similar reports are bundled; the response returns an id you can check back on.","body_example":{"requested_capability":"short label","description":"what exactly is needed","max_price":0.01}},"updated_at":"2026-08-11T20:50:28.153Z"}