Skip to main content
Glama

paleobiology-mcp-server: search fossil collections

paleobiology_search_collections
Read-onlyIdempotent

Find fossil collections (localities) by area and geologic time — "what has been dug up here, and from what rock." Each locality returns its location, age (named interval and Ma), formation and strata, lithology, depositional environment, and the count of co-occurring fossils. Filter by a clade-inclusive base_name (or base_id, the same clade by resolved taxon id), a named interval or max_ma/min_ma range, a lng/lat bounding box, a formation or lithology name, and/or an environment. Results page inline via limit/offset (the response discloses when more remain). Take a collection_no from a row and pass it — or the same bbox+interval — to paleobiology_search_occurrences to see the actual fauna found together.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum localities to return per page (1–500).
latmaxNoNorthern edge of the bounding box, decimal degrees (−90…90). Valid on its own — a lone latitude edge filters as a half-plane.
latminNoSouthern edge of the bounding box, decimal degrees (−90…90). Valid on its own — a lone latitude edge filters as a half-plane.
lngmaxNoEastern edge of the bounding box, decimal degrees (−180…180). Longitude is a closed pair — supply lngmin with it or neither.
lngminNoWestern edge of the bounding box, decimal degrees (−180…180). Longitude is a closed pair — supply lngmax with it or neither.
max_maNoOlder age bound in millions of years ago. When paired with min_ma it must be strictly greater — max_ma is the deeper-time end of the window.
min_maNoYounger age bound in millions of years ago. When paired with max_ma it must be strictly smaller — min_ma is the nearer-to-present end of the window.
offsetNoNumber of localities to skip — page with limit by advancing offset.
base_idNoClade-inclusive taxon filter by PBDB taxon id — the taxon_no from paleobiology_get_taxon, or accepted_no on an occurrence row. Same semantics as base_name, but unambiguous where a name is not (homonyms, synonyms, unresolved spellings). Supply this or base_name, never both.
intervalNoNamed geologic interval bounding the age, e.g. "Maastrichtian". Alternative to max_ma/min_ma.
base_nameNoClade-inclusive taxon filter — localities yielding this taxon or its descendants, e.g. "Dinosauria". Supply this or base_id, never both.
formationNoGeologic formation name to filter by, e.g. "Hell Creek".
lithologyNoLithology (rock type) to filter by, e.g. "sandstone".
environmentNoDepositional environment: "marine", "terrestrial", or "freshwater" (lacustrine + fluvial). Omit for all.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
capNoThe per-page limit that was applied (set when truncated).
errorNoPresent when the call failed. Absent on success.
shownNoNumber of localities returned in this page (set when truncated).
noticeNoGuidance when no locality matched, when localities remain past this page, or when a filter value was not recognized and ignored.
truncatedNoTrue when localities remain past this page — advance offset for more.
totalCountNoTotal localities matching the filters upstream, across all pages.
attributionNoCC-BY data attribution for the Paleobiology Database.
collectionsNoMatching localities for this page.

TDQS

A5/5.0
Behavior5/5

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

Annotations cover read-only/idempotent/open-world safety, and the description adds behavior beyond that: inline limit/offset pagination with a disclosed 'more remaining' signal, clade-inclusive taxon semantics, and edge-case filter rules (lone latitude edge, closed longitude pair, strict max_ma/min_ma ordering). No contradiction with annotations.

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 information-dense, with the core purpose first, then return fields, filters, pagination, and sibling routing in logical order. Every clause serves a distinct role and there is no filler or tautology.

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 14-parameter, 0-required search tool, this is complete: it covers what results contain, all meaningful filter families, pagination behavior, and how to continue into paleobiology_search_occurrences. The output schema exists, so not detailing return structure here is appropriate.

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 coverage is already 100%, but the description adds relational meaning: base_name and base_id are mutually exclusive alternate spellings of the same clade filter, interval is an alternative to max_ma/min_ma, and collection_no from a row can be fed into the occurrence tool. This goes well beyond the per-parameter schema text.

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 uses a specific verb ('Find') and resource ('fossil collections (localities)'), and immediately distinguishes the tool from siblings by scoping it to area and geologic time. It also states exactly what each returned locality contains, so an agent can tell this from search_occurrences.

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?

It explicitly enumerates the filter dimensions and gives concrete examples ('Dinosauria', 'Maastrichtian', 'Hell Creek'). It names the sibling paleobiology_search_occurrences and tells the agent when to move from collections to occurrences, which is clear routing guidance.

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.

TDQS

A4.7/5.0
Disambiguation5/5

Each tool targets a clearly distinct resource or workflow: taxa, intervals, occurrences, collections, diversity curves, and staged dataframe inspection. Even the two analysis-oriented tools (get_diversity and dataframe_query) are separated by whether the user needs a precomputed curve or arbitrary SQL over staged results.

Naming Consistency4/5

All tools share the paleobiology_ prefix and use clear snake_case names, so the set is predictable overall. The minor deviation is that dataframe_describe and dataframe_query place the object before the verb, while the other five tools use verb_object ordering (get_diversity, get_taxon, list_intervals, search_collections, search_occurrences).

Tool Count5/5

Seven tools is a well-scoped size for a Paleobiology Database client: two search tools, two lookup tools, two dataframe-analysis tools, and a diversity-curve tool. Each tool earns its place without redundancy or bloat.

Completeness5/5

The surface covers the full read-only workflow: resolve taxa, look up time intervals, search occurrences and collections, compute diversity curves, and run SQL analysis over large staged occurrence sets. No obvious gaps exist for the stated domain; pagination and staging hand-offs create no dead ends.