
Key Takeaways
- Stratigraphic Amenity is a free AI for geology tool from Eigenform that AI assistants can use to work with geologic maps (maps that show which rocks lie where). Its mineral feature,
mineral_occurrences, lists the places in an area where a mineral such as gold or copper has already been found, using official government records. - It comes with the records of two Canadian provinces, Ontario and Quebec, as a working example. You can add your own regions or countries by connecting their official records; that takes a little code, not just a setting.
- Use it to see which known mineral finds lie in or near an area a company is exploring, so an AI assistant can point to real records instead of someone searching each government website by hand.
- It stays off unless you ask for it and needs an internet connection. The Ontario example is a copy from 2013, not today’s list, and an empty result does not prove there are no minerals there.
TL;DR
Point this AI for geology tool at an area on a map, and it lists the minerals already found there: each find’s name, the main metal or mineral, how far it has been developed (for example, just discovered or once mined), and where it is. Out of the box it reads the official records of Ontario and Quebec, as an example of how a region is connected, and other regions or countries can be added the same way. It tells you when your area is outside the regions it knows, and when nothing turns up it says so plainly instead of calling the area empty.
What Is the mineral_occurrences Provider?
mineral_occurrences is one of the knowledge providers in Stratigraphic Amenity. It returns mineral occurrence records that fall inside a bounding box, either one you pass directly or the stored area of a registered map.
Unlike earthquakes and faults, it is explicit-only, so an agent gets it only when it names it while it looks up earthquakes, faults and minerals for an area.
How Does AI for Geology Find Mineral Occurrences?
The provider reads regional sources. Each source is one region’s mineral occurrence database with a coverage box that says where it applies, and a query only reaches the sources whose box overlaps yours. Two are configured out of the box, and a query considers both unless provider_options.mineral_occurrences narrows it with source or sources.
Two example sources: Ontario and Quebec
The project ships with two Canadian provincial databases. They are the example implementation of a regional source, not the limit of the design:
| Source | Publisher | Coverage box (lon, lat) | Licence |
|---|---|---|---|
ontario_mineral_deposit_inventory | Ontario Geological Survey | -95.2 to -74.3, 41.6 to 56.9 | Ontario Open Government Licence |
sigeom_mineral_occurrences | Quebec Ministry of Natural Resources and Forests | -79.8 to -57.1, 44.8 to 62.7 | CC BY 4.0 (verify before redistribution) |
Ontario’s inventory is served as an ArcGIS FeatureServer, and Quebec’s as the SIGEOM WFS layer SGM:Substances_metalliques.
The coverage boxes decide which source is asked, nothing more. They are rectangles, not province outlines, so they overlap near the border between the two provinces, and a box over a neighbouring US state can still reach the Ontario service, which simply has no records there.
Adding your own regions or countries
Any mineral occurrence database that can be queried by bounding box can be added, such as another province, a state survey or a national geological survey, so an AI for geology agent working there gets the same kind of records. The provider’s code describes this as region-aware source selection, where a new region is an appended source and coverage box, not a rewrite. It is a change to the code, though, not a setting. The steps follow the two example sources:
- Write a source adapter. A class with a
normalizer_versionand aquery_bboxmethod that sends the box to the service and returns GeoJSON features. The Ontario adapter insources/ogs_minerals.pyis the simplest model. - Write a normalizer. A function that maps the service’s field names to
name,primary_commodity,secondary_commodity,statusanddeposit_class, addslongitudeandlatitudefrom the point, and keeps the raw properties. - Register the source. Add a
SourceDefinitionin themineral_occurrencesfamily to the source registry, with the publisher, licence, citation, attribution and acoverage_boundsbox. - Bind it in the knowledge service.
_mineral_occurrence_provider_factorypairs each configured source ID with its adapter and normalizer, so add a branch for the new ID. - Switch it on. List the ID in
GEOMAP_MINERAL_OCCURRENCE_SOURCE_IDS, together with any example IDs you want to keep, because the variable replaces the default list.
One trap: an ID that is registered but has no binding is skipped without an error, and when no source ends up bound, the provider falls back to the Ontario source. If a box in your new region comes back with Ontario’s coverage warning, check step 4 first.
Once bound, the new ID also works in source and sources, and the provenance reports its licence and attribution like the examples'.
Asking for it
The provider needs the knowledge-network extra; without it, the capability check lists “install the ‘knowledge-network’ extra” as a missing requirement. A knowledge-only request looks like this:
{
"bounds": {"min_lon": -80.2, "min_lat": 46.1, "max_lon": -79.8, "max_lat": 46.4, "crs": "EPSG:4326"},
"include": ["mineral_occurrences"],
"max_records": 25
}provider_options.mineral_occurrences accepts only source, sources and source_mode, and the only valid source_mode is "live", because there is no offline mirror yet. Each source that covers the box receives it over HTTP, and the server writes a local cache entry and a bundle resource. The project’s agent guide asks for this call only with the operator’s authorisation.
What comes back
Each record keeps name, primary_commodity, secondary_commodity, status and deposit_class, plus its longitude and latitude. The Quebec layer uses French field names, such as NOM_CORPS_MINR and SUBST_PRINC, which the server maps to the same English keys.
Records from every source that covers the box are merged, de-duplicated on name, longitude and latitude, sorted by name, and limited to 50 by default. The provenance names the licence, citation and attribution of every source used, and the knowledge overlay draws each occurrence as a labelled point on the map.
Limits of Mineral Occurrence Data
An AI for geology tool only knows the regions behind it, so coverage is as wide as the configured sources. With the two examples, a box outside Ontario and Quebec returns a coverage warning rather than records, until a source for that region is added.
Age is the other limit, and it depends on the source. The Ontario example is a third-party republication of the Mineral Deposit Inventory as it stood in March 2013, not the continuously updated inventory, which the province distributes through data.ontario.ca and GeologyOntario. A deposit found or re-classified since then will be missing or out of date.
Every result also carries the source’s own caveat, for example “‘ontario_mineral_deposit_inventory’ is queried live; absence/counts reflect source vintage and coverage.”
When a box falls outside a source’s coverage, the result says: “Query falls outside the Quebec coverage of ‘sigeom_mineral_occurrences’; this is not evidence that no occurrences exist.” When a covered box returns nothing, the summary reads: “No mineral occurrences intersected the bounds within configured source coverage; this is not evidence that no occurrences exist (source vintage/coverage).”
Results are cached by box and options, so asking again does not hit the services. The cache does not freeze the source, though: a later uncached query can return different records if the live service changes.
FAQs
Can I add my own region or country?
Yes. Ontario and Quebec are the example implementation, not a fixed limit. Any mineral occurrence database that can be queried by bounding box can be connected with a source adapter, a normalizer, a registry entry with its coverage box and a binding in the knowledge service, then switched on in GEOMAP_MINERAL_OCCURRENCE_SOURCE_IDS. It is a code change, not a setting.
Why does my search return no mineral occurrences?
Check three things. The provider is off by default, so the request must include mineral_occurrences. The box must overlap a configured source, which out of the box means Ontario or Quebec. And the sources must be reachable online. If all three hold and nothing returns, the result says so, adding that this is not evidence that no occurrences exist.
Is the Ontario mineral data up to date?
No. The Ontario service is a republished snapshot of the Mineral Deposit Inventory from March 2013. The authoritative, continuously updated inventory is published by the province through data.ontario.ca and GeologyOntario. Treat Ontario results as a starting list and confirm current status against the official inventory before relying on it.
Can I search only the Quebec source?
Yes. Set source to sigeom_mineral_occurrences in provider_options.mineral_occurrences, or pass several source IDs in sources, including any you have added. Use source or sources, not both. The only accepted source_mode is "live"; any other value is rejected because there is no offline mirror yet.
Try It With Geocluster
Stratigraphic Amenity is one of the Geocluster tools, MCP servers that let AI agents work with geology data and maps.
Known mineral finds say what is underground; land cover and population density say what is on the surface above it.


