Skip to main content
Glama

Places In Bbox

places_in_bbox
Read-onlyIdempotent

Find OSM POIs inside a bounding box. Use for "every park in this area" or "all restaurants in this neighborhood". Bounding box is (south, west, north, east) in degrees.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
tagYesOSM tag filter (e.g., "leisure=park", "amenity=hospital")
eastYesMaximum longitude
westYesMinimum longitude
limitNoMax results (1-1000, default 200)
northYesMaximum latitude
southYesMinimum latitude

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
tagYesOSM tag filter used
bboxYesBounding box coordinates
countYesNumber of places found
elementsYesArray of place elements

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "east": 2.4,
      +    "north": 48.9,
      +    "south": 48.8,
      +    "tag": "leisure=park",
      +    "west": 2.2
      +  },
      +  {
      +    "east": -73.9,
      +    "limit": 100,
      +    "north": 40.8,
      +    "south": 40.7,
      +    "tag": "amenity=hospital",
      +    "west": -74
      +  }
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "bbox": {
      +      "description": "Bounding box coordinates",
      +      "properties": {
      +        "east": {
      +          "description": "Maximum longitude",
      +          "type": "number"
      +        },
      +        "north": {
      +          "description": "Maximum latitude",
      +          "type": "number"
      +        },
      +        "south": {
      +          "description": "Minimum latitude",
      +          "type": "number"
      +        },
      +        "west": {
      +          "description": "Minimum longitude",
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "south",
      +        "west",
      +        "north",
      +        "east"
      +      ],
      +      "type": "object"
      +    },
      +    "count": {
      +      "description": "Number of places found",
      +      "type": "number"
      +    },
      +    "elements": {
      +      "description": "Array of place elements",
      +      "items": {
      +        "properties": {
      +          "id": {
      +            "description": "OSM element ID",
      +            "type": "number"
      +          },
      +          "latitude": {
      +            "description": "Latitude coordinate or null if unavailable",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "longitude": {
      +            "description": "Longitude coordinate or null if unavailable",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "name": {
      +            "description": "OSM name tag value or null",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "osm_url": {
      +            "description": "Direct link to element on OpenStreetMap",
      +            "type": "string"
      +          },
      +          "tags": {
      +            "description": "All OSM tags as key-value pairs",
      +            "type": "object"
      +          },
      +          "type": {
      +            "description": "OSM element type",
      +            "enum": [
      +              "node",
      +              "way",
      +              "relation"
      +            ],
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "type",
      +          "id",
      +          "osm_url",
      +          "latitude",
      +          "longitude",
      +          "name",
      +          "tags"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "tag": {
      +      "description": "OSM tag filter used",
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "bbox",
      +    "tag",
      +    "count",
      +    "elements"
      +  ],
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful context that the tool operates on OSM data and that the bounding box order is (south, west, north, east), but does not disclose other behavioral traits such as pagination, rate limits, or default sorting. With annotations carrying most of the burden, this is adequate but not exceptional.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary action and resource, followed by two relatable examples and the coordinate order. Every sentence carries essential information, with no filler or repetition. It is exceptionally concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (read-only POI query), the description explains what it does, when to use it, and a critical parameter detail. An output schema exists, so return values are already documented. The description is self-sufficient for an agent to select and invoke the tool correctly without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all parameters are individually documented. The description adds value by explicitly stating the bounding box order: '(south, west, north, east)'—a critical detail that the schema does not convey as a sequence. This helps agents correctly map coordinates to the south/west/north/east parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Find OSM POIs inside a bounding box.' It clearly distinguishes from sibling tools like pois_near by emphasizing the geometric approach (bounding box) and provides concrete examples ('every park in this area'). This goes beyond a generic statement and ties directly to the tool's function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit use cases: 'Use for "every park in this area" or "all restaurants in this neighborhood"'. It implies when to use this tool versus alternatives (e.g., radius-based search), though it does not name specific alternatives or explain when not to use it. The given scenarios are clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.