Skip to content
Eden Engine

ArcGIS Hub Datasets: Search

arcgishubitems/search-datasets

Keyword search over the datasets published on ArcGIS Hub by any organisation (opendata.arcgis.com datasets API, a global index): returns up to 10 matching items per call (default 5) with each one's id, name, description (plain text, the first 500 characters), tags, type, publishing organisation, source, declared licence, last modified time, record count, geometry type, the first 40 field names, the ArcGIS service address and the Hub page address, plus the total number of matches. Page through further matches with page. Use it to find the item id for the get-dataset tool. A search with no match returns totalCount 0 and an empty results list. Dataset metadata as served by Eden Engine; not an official Esri product.

activeper callv1

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

ArcGIS Hub Datasets API (opendata.arcgis.com)

Dataset metadata from the ArcGIS Hub datasets API (opendata.arcgis.com). Credit the publishing organisation named in each item's organization and source fields and honour the licence each item declares. Served by Eden Engine; not an official Esri 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.

agent
// 1. search: find the tool
omnial_search({ query: "what you need" })

// 2. inspect: price and input schema
omnial_inspect({ tool: "arcgishubitems/search-datasets" })

// 3. learn: read the usage guide at runtime
omnial_learn({ tool: "arcgishubitems/search-datasets" })

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "arcgishubitems/search-datasets", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "arcgishubitems/search-datasets", input: { /* ... */ } })

// 5. settle: the call is charged when it finishes, nothing to do

Not 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.

ChargePrice
Per call
$0.0026
Updated
Oct 25, 2026

Input and output schemas

Input schema
input_schema.json
{
  "type": "object",
  "required": [
    "q"
  ],
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 200,
      "minLength": 1,
      "description": "Search words, for example parks. Matches item names, descriptions and tags. An empty value is refused before the call (the API would answer it with no items)."
    },
    "page": {
      "type": "integer",
      "maximum": 1000,
      "minimum": 1,
      "description": "Page number, counting from 1, in pages of limit items. Leave out for the first page. A page past the last match returns an empty results list."
    },
    "limit": {
      "type": "integer",
      "default": 5,
      "maximum": 10,
      "minimum": 1,
      "description": "How many items to return, 1 to 10. Defaults to 5."
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "required": [
    "totalCount",
    "page",
    "pageSize",
    "results"
  ],
  "properties": {
    "page": {
      "type": "integer",
      "description": "The page number of this answer, counting from 1."
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "id",
          "name",
          "description",
          "descriptionTruncated",
          "tags",
          "type",
          "organization",
          "source",
          "license",
          "modified",
          "recordCount",
          "geometryType",
          "fieldNames",
          "url",
          "landingPage"
        ],
        "properties": {
          "id": {
            "type": "string",
            "description": "The item's id: 32 hexadecimal characters, followed by an underscore and a layer number when the item is one layer of a service; pass it to the get-dataset tool."
          },
          "url": {
            "type": [
              "string",
              "null"
            ],
            "description": "The address of the item's ArcGIS service or file when it is an https address; null otherwise. The tools never call it."
          },
          "name": {
            "type": [
              "string",
              "null"
            ],
            "description": "The item's title; null when the publisher set none."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The publisher's tags, at most the first 30; empty when there are none."
          },
          "type": {
            "type": [
              "string",
              "null"
            ],
            "description": "The ArcGIS item type, for example Feature Layer, Table or CSV; null when absent."
          },
          "source": {
            "type": [
              "string",
              "null"
            ],
            "description": "The data source or department the publisher named; null when absent."
          },
          "license": {
            "type": [
              "string",
              "null"
            ],
            "description": "The licence id the publisher declared on this item, for example CC-BY-4.0, custom or none (none means no licence was declared); null when absent."
          },
          "modified": {
            "type": [
              "string",
              "null"
            ],
            "description": "When the item was last modified, ISO 8601; null when absent."
          },
          "fieldNames": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "The names of the layer's fields, the first 40 in the service's own order; empty when the item has no fields."
          },
          "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 the publisher wrote none."
          },
          "landingPage": {
            "type": [
              "string",
              "null"
            ],
            "description": "The item's page on ArcGIS Hub (https://hub.arcgis.com/datasets/<id>)."
          },
          "recordCount": {
            "type": [
              "integer",
              "null"
            ],
            "description": "The number of records in the layer when the service reports it; null when it does not."
          },
          "geometryType": {
            "type": [
              "string",
              "null"
            ],
            "description": "The layer's geometry type, for example esriGeometryPolygon or esriGeometryPoint; null for tables and files."
          },
          "organization": {
            "type": [
              "string",
              "null"
            ],
            "description": "The organisation that publishes the item; null when absent."
          },
          "descriptionTruncated": {
            "type": "boolean",
            "description": "True when the description was cut to its first 500 characters."
          }
        },
        "additionalProperties": false
      },
      "description": "One entry per returned item (at most 10); empty when nothing matches."
    },
    "pageSize": {
      "type": "integer",
      "description": "How many items this page holds at most (the limit that was sent)."
    },
    "totalCount": {
      "type": "integer",
      "description": "How many items match the search in total."
    }
  },
  "description": "The search answer: the total match count, the page, the page size and the items.",
  "additionalProperties": false
}