St.Gallen Open Data: Search Datasets
sgchdatenkanton/search-datasets
Text search over the dataset catalogue of Open Data Kanton St.Gallen (daten.sg.ch, Switzerland): returns up to 10 matching datasets per call (default 5) with each one's id, title, description (plain text, the first 500 characters), publishing office, declared licence and licence link, last modified time, keywords, themes, row count and portal page, plus the total number of matches. Pass a returned id to the query-records tool to read its rows. Texts are mostly German. Canton of St.Gallen data, most of it under 'Freie Nutzung mit Quellenangabe'; served by Eden Engine; not an official Kanton St.Gallen product.
Price
$0.0026 per call
You pay the price shown. If a call turns out to cost more than its quote, you pay the actual price, capped at twice the quote. No monthly minimum. Top-ups start at $0.50.
Data source
Source: Open Data Kanton St.Gallen (daten.sg.ch). Most data is released under 'Freie Nutzung mit Quellenangabe' (commercial use allowed, source must be named); credit the source and follow the licence each dataset declares. Served by Eden Engine; not an official Kanton St.Gallen product.
Use it
Five steps: search, inspect, learn, run, settle. No per-tool setup; your agent reaches this tool through the meta-tools it already has.
Connect once and your AI can find and run this tool, and any other it needs.
// 1. search: find the tool
omnial_search({ query: "what you need" })
// 2. inspect: price and input schema
omnial_inspect({ tool: "sgchdatenkanton/search-datasets" })
// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "sgchdatenkanton/search-datasets" })
// 4. run: price the exact call first, then run it
omnial_execute({ tool: "sgchdatenkanton/search-datasets", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "sgchdatenkanton/search-datasets", input: { /* ... */ } })
// 5. settle: the call is charged when it finishes, nothing to doNot connected yet? Point your MCP client at https://mcp.eden-engine.com/mcp, then copy a config for your client.
Pricing
Every charge this tool can incur.
| Charge | Price |
|---|---|
Per call | $0.0026 |
- Updated
- Oct 25, 2026
Input and output schemas
Input schema
{
"type": "object",
"required": [
"search"
],
"properties": {
"limit": {
"type": "integer",
"default": 5,
"maximum": 10,
"minimum": 1,
"description": "How many datasets to return, 1 to 10. Defaults to 5."
},
"offset": {
"type": "integer",
"maximum": 1000,
"minimum": 0,
"description": "Matches to skip, for reading further pages. Leave out for the first page. An offset past the last match returns an empty results list."
},
"search": {
"type": "string",
"pattern": "^[^\"\\\\]{1,100}$",
"maxLength": 100,
"minLength": 1,
"description": "Words to look for, for example wasser or verkehr. Matches title, description, keywords and themes; double quotes and backslashes are not allowed. A word that matches nothing returns an empty results list."
}
},
"additionalProperties": false
}Output schema
{
"type": "object",
"required": [
"totalCount",
"results"
],
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"title",
"description",
"descriptionTruncated",
"publisher",
"license",
"licenseUrl",
"modified",
"keywords",
"themes",
"recordsCount",
"landingPage"
],
"properties": {
"id": {
"type": [
"string",
"null"
],
"description": "The dataset id; pass it to the query-records tool."
},
"title": {
"type": [
"string",
"null"
],
"description": "The dataset title (as published, mostly German); null when absent."
},
"themes": {
"type": "array",
"items": {
"type": "string"
},
"description": "The portal themes, at most the first 20; empty when there are none."
},
"license": {
"type": [
"string",
"null"
],
"description": "The licence name the dataset declares, for example CC BY; null when absent."
},
"keywords": {
"type": "array",
"items": {
"type": "string"
},
"description": "The publisher's keywords, at most the first 20; empty when there are none."
},
"modified": {
"type": [
"string",
"null"
],
"description": "Last modified time as the portal reports it (ISO 8601); null when absent."
},
"publisher": {
"type": [
"string",
"null"
],
"description": "The cantonal office that publishes the dataset; null when absent."
},
"licenseUrl": {
"type": [
"string",
"null"
],
"description": "Link to the declared licence text; null when absent."
},
"description": {
"type": [
"string",
"null"
],
"description": "The publisher's description as plain text, markup removed and cut to the first 500 characters (ending in \"...\" when cut); null when absent."
},
"landingPage": {
"type": [
"string",
"null"
],
"description": "The dataset's page on daten.sg.ch, built from the id."
},
"recordsCount": {
"type": [
"integer",
"null"
],
"description": "Number of rows stored for the dataset; 0 for a map layer or file-only dataset; null when absent."
},
"descriptionTruncated": {
"type": "boolean",
"description": "True when the description was cut to its first 500 characters."
}
},
"additionalProperties": false
},
"description": "The datasets of this page, at most 10; empty when nothing matches."
},
"totalCount": {
"type": "integer",
"description": "Number of datasets matching the search."
}
},
"additionalProperties": false
}