Skip to main content
Glama
rteina

geoparquet-mcp

by rteina

geoparquet_aggregate_attribute

Group rows of a remote GeoParquet dataset by any column and aggregate with count, sum, avg, min, or max, optionally inside a lon/lat rectangle. Returns only summarized groups, saving bandwidth.

Instructions

Group the rows of a dataset by one column and aggregate them, optionally inside a lon/lat rectangle. The grouping runs inside the remote file.

WHEN TO USE IT. For "how many of each", "what is the average", "which is the most common" — any question whose answer is a table of groups rather than a set of features. This is the tool that makes a 10 GB dataset answerable in kilobytes: the grouping happens remotely and only the group rows cross the network, however many rows went into them. Reach for it before geoparquet_filter_spatial whenever counting would do.

PARAMETERS. source: dataset name. group_by: the column whose distinct values become the groups, for example 'categories.primary'. aggregate: one of count, sum, avg, min, max. Default count. measure: the column to aggregate. Required for sum, avg, min and max, and rejected for count, which counts rows. It must be numeric; a non-numeric one is refused before any byte is fetched. min_lon, min_lat, max_lon, max_lat: restrict the aggregate to a rectangle. Pass all four or none. Omitting them aggregates the entire dataset, which reads the grouped and measured columns in full — slow and expensive on a multi-gigabyte source. Pass a box unless you truly mean the whole world. limit: maximum groups returned, ordered by the aggregate descending.

WHAT COMES BACK. groups, each with group_value, value (the aggregate) and row_count (rows in the group); rows_aggregated; truncated; the sql that ran; and the scan block.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNo
sourceNooverture_places
max_latNo
max_lonNo
measureNo
min_latNo
min_lonNo
group_byYes
aggregateNocount

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observedv0.1.0

TDQS

A5/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and excels. It discloses that grouping executes server-side ('only the group rows cross the network'), that a non-numeric measure is 'refused before any byte is fetched', that omitting the rectangle reads the full dataset, and that results are 'ordered by the aggregate descending'. It even lists the complete return payload (groups, rows_aggregated, truncated, sql, scan), which is behavioral disclosure beyond the structured schema.

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 long but densely organized into four labeled sections (overview, WHEN TO USE IT, PARAMETERS, WHAT COMES BACK) with one semantic fact per parameter line. No sentence is filler — even asides like 'which counts rows' clarify a conditional rule. The length is proportionate to the tool's genuine complexity (9 params, 5 aggregate modes, spatial constraints).

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?

For a complex 9-parameter tool with zero schema descriptions and zero annotations, the description covers everything needed to invoke it correctly: operation, selection criteria, per-parameter semantics, relational constraints between parameters, performance trade-offs, and return shape. The output schema exists and is also described in prose, which is belt-and-suspenders completeness.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully compensate, and it does: every one of the 9 parameters gets semantic meaning beyond type/default. It explains the conditional relationship between aggregate and measure ('Required for sum, avg, min and max, and rejected for count'), the 'Pass all four or none' invariant for the lon/lat box, and the ordering semantics of limit.

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 opening sentence states a specific verb and resource: 'Group the rows of a dataset by one column and aggregate them', with the distinctive detail that grouping runs remotely. It is explicitly differentiated from the sibling geoparquet_filter_spatial ('Reach for it before geoparquet_filter_spatial whenever counting would do'), so an agent can tell them apart without opening schemas.

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

Usage Guidelines5/5

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

A dedicated 'WHEN TO USE IT' section gives concrete query shapes ('how many of each', 'what is the average', 'which is the most common') and states the decision rule against a named alternative: 'Reach for it before geoparquet_filter_spatial whenever counting would do.' It also warns about the expensive full-dataset path ('slow and expensive on a multi-gigabyte source'), which implicitly tells the agent when to add a bounding box.

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rteina/geoparquet-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server