Skip to content
Eden Engine

OpenStreetMap Notes Search

osmapi/notes-search

Searches the text of OpenStreetMap notes and their comments for a word or phrase and returns the matches as a GeoJSON FeatureCollection, each with its position, status, dates and full comment thread. limit is 1 to 50 and defaults to 20. A search with no match returns an empty features list. The search covers the whole world and every note status; it takes no area filter, use notes-in-bbox for that. Comment text is written by the public and is not checked. Typically 3 to 25 KB. Contains data from OpenStreetMap contributors (ODbL). Served by Eden Engine; not an official OpenStreetMap 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

OpenStreetMap

© OpenStreetMap contributors, available under the Open Database Licence (https://www.openstreetmap.org/copyright). Served by Eden Engine; not an official OpenStreetMap 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: "osmapi/notes-search" })

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

// 4. run: price the exact call first, then run it
omnial_execute({ tool: "osmapi/notes-search", input: { /* see input_schema */ }, dry_run: true })
omnial_execute({ tool: "osmapi/notes-search", 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": "Words to look for in note text and comments, for example 'road closed'."
    },
    "limit": {
      "type": "integer",
      "default": 20,
      "maximum": 50,
      "minimum": 1,
      "description": "Maximum notes to return (1-50, default 20)."
    }
  },
  "additionalProperties": false
}
Output schema
output_schema.json
{
  "type": "object",
  "required": [
    "type",
    "features"
  ],
  "properties": {
    "type": {
      "enum": [
        "FeatureCollection"
      ],
      "type": "string"
    },
    "features": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "type",
          "geometry",
          "properties"
        ],
        "properties": {
          "type": {
            "enum": [
              "Feature"
            ],
            "type": "string"
          },
          "geometry": {
            "type": "object",
            "properties": {
              "type": {
                "type": "string"
              },
              "coordinates": {
                "type": "array",
                "items": {
                  "type": "number"
                },
                "description": "[longitude, latitude]"
              }
            },
            "additionalProperties": true
          },
          "properties": {
            "type": "object",
            "required": [
              "id",
              "status",
              "comments"
            ],
            "properties": {
              "id": {
                "type": "integer",
                "description": "Note id."
              },
              "url": {
                "type": "string",
                "description": "API address of the note."
              },
              "status": {
                "type": "string",
                "description": "open, closed or hidden."
              },
              "comments": {
                "type": "array",
                "items": {
                  "type": "object",
                  "required": [
                    "date",
                    "action",
                    "text"
                  ],
                  "properties": {
                    "uid": {
                      "type": "integer",
                      "description": "Account id; absent for an anonymous comment."
                    },
                    "date": {
                      "type": "string",
                      "description": "UTC time of the comment, 'YYYY-MM-DD HH:MM:SS UTC'."
                    },
                    "text": {
                      "type": "string",
                      "description": "Comment text."
                    },
                    "user": {
                      "type": "string",
                      "description": "Account name; absent for an anonymous comment."
                    },
                    "action": {
                      "type": "string",
                      "description": "opened, commented, closed, reopened or hidden."
                    },
                    "user_url": {
                      "type": "string",
                      "description": "Link to the user's page; absent for an anonymous comment."
                    }
                  },
                  "additionalProperties": true
                },
                "description": "The note's discussion, oldest first."
              },
              "closed_at": {
                "type": "string",
                "description": "UTC closing time; only on closed notes."
              },
              "date_created": {
                "type": "string",
                "description": "UTC creation time."
              }
            },
            "additionalProperties": true
          }
        },
        "additionalProperties": true
      },
      "description": "The matching notes; empty when none match."
    }
  },
  "additionalProperties": true
}