Skip to main content
Glama

A commune's neighbourhoods and postcodes

get_neighbourhoods
Read-onlyIdempotent

The neighbourhoods OpenStreetMap and Poste Maroc name in a commune, a city's arrondissements included, with the arrondissement each was placed in where it has a point, where its name comes from, and the postcodes Poste Maroc lists under it; and the commune's postcodes. The census publishes nothing by neighbourhood: the figures are the commune's, or the arrondissement's. To find which commune a neighbourhood is in, call search with its name instead.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
unitYesA commune, by code or slug.
limitNoHow many neighbourhoods, in alphabetical order. 200 when left out; Casablanca has over 1,400.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
unitYes
totalYesHow many neighbourhoods the commune has, whatever the limit.
messageNoPresent when the commune has no named neighbourhoods, whether or not it has postcodes.
postcodesYes
neighbourhoodsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / neighbourhoods / items / properties / source / enum
      Previous value: -[
      -  "osm",
      -  "poste",
      -  "hand"
      -]New value: +[
      +  "osm",
      +  "poste",
      +  "hand",
      +  "village"
      +]
  2. Added

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint=false, so the safety profile is covered. The description usefully adds the data provenance (OSM + Poste Maroc) and the granularity limitation (census publishes nothing by neighbourhood), which is genuine added context. However it says nothing about the large result sets implied by the limit param (Casablanca has 1,400+), page behavior, or cost. Output schema covers the return shape, so this is a solid-but-not-rich 3-4; I settle at 3 given the behavioral gaps around bulk results.

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

Conciseness3/5

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

Every sentence carries information (sources, granularity caveat, reverse-lookup routing), but the first sentence is an overstuffed clause chain that buries the primary purpose. The key resource statement should be front-loaded as its own sentence rather than wrapped in subordinate clauses, so structure is adequate but not efficient.

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

Completeness4/5

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

An output schema exists, so return structure needn't be explained, and annotations carry the safety profile. The description supplies provenance, the census granularity caveat, and reverse-lookup routing — enough for a 2-param read tool. Minor gap: no guidance on handling the very large result sets the limit parameter implies.

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

Parameters3/5

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

Schema description coverage is 100%: `unit` is documented as a commune by code or slug, and `limit` documents its default (200) and max (2000) plus the ordering (alphabetical). The description adds no parameter-level detail beyond what the schema already provides, so baseline 3 applies.

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

Purpose4/5

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

States a specific resource (neighbourhoods and postcodes of a commune) with named sources (OpenStreetMap, Poste Maroc) and included sub-entities (arrondissements, name origins). It distinguishes itself from the sibling `search` for the reverse lookup, though the dense run-on opening sentence makes the core purpose slower to extract than it should be.

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?

Explicitly routes the reverse case away: 'To find which commune a neighbourhood is in, call search with its name instead.' It also clarifies via the census note that figures are not available at neighbourhood granularity, implying when this data is and isn't the right source. No exclusion vs. commune_at/get_douars, but the primary alternative is named.

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.