Releases: cyanheads/paleobiology-mcp-server
Release list
v0.3.4: PBDB interval fallback
PBDB interval fallback
- paleobiology_list_intervals falls back to a live PBDB lookup for sub-stage and regional interval names (e.g. Late Maastrichtian, Lancian) the bundled ICS snapshot does not carry, labeled with a new source field and the resolving time scale (#19)
- new interval_lookup_unavailable error (retryable) keeps an unreachable PBDB from reading as a nonexistent interval; level widens to accept any PBDB rank string
- fixed pre-existing docs/design.md drift (stale snapshot filename, two removed IntervalIndex methods, wrong interval count) and a false no-network-call claim in README/CLAUDE.md/AGENTS.md
v0.3.3: offset paging, base_id clade filter, and paged taxon children
offset paging, base_id clade filter, and paged taxon children
- paleobiology_search_occurrences gains offset paging with exact next-page notices against PBDB's true match count (#14)
- base_id accepted as a clade filter on paleobiology_search_occurrences, paleobiology_get_diversity, and paleobiology_search_collections, alongside base_name (#20)
- paleobiology_get_taxon's show_children pages past 200 immediate children via children_offset/children_truncated (#15)
v0.3.2: PBDB warnings and true match totals
PBDB warnings and true match totals
- search_occurrences, search_collections, and get_diversity surface PBDB's warnings[] instead of discarding them — an unrecognized lithology value no longer silently returns PBDB's full unfiltered set (#12)
- search_occurrences and search_collections send rowcount and read records_found, so totalCount and truncation reflect the true upstream match count instead of a page-filled guess; an offset past the end of a match set reports the overshoot instead of "widen your filters" (#13)
v0.3.1: PBDB error fidelity, classification, and attribution
PBDB error fidelity, classification, and attribution
- search_occurrences, search_collections, and get_diversity reject a half-specified lngmin/lngmax box and an inverted/equal min_ma/max_ma range at the tool boundary, before any PBDB request (#10)
- PBDB not-found reclassification narrowed to taxa/single only; every other endpoint's 400 now surfaces as InvalidParams carrying PBDB's own rejection text, and single-record 404s log at debug via the framework's expectedStatuses (#10)
- search_occurrences returns canvas_id only when the result actually spilled to a canvas (#16)
- occurrence rows and paleobiology_get_taxon gain a classification field; dataframe_query documents the JSON rollup pattern and corrects staged-row field guidance (#17, #18)
- paleobiology_get_taxon and the occurrence/taxon resources carry a CC BY 4.0 attribution (#21)
- list_intervals sorts filtered results oldest-first, matching the schema (#11)
- mcp-ts-core adoption, Docker/bundle hardening, and skill/script resync (build config, repo hygiene)
- deps:
@cyanheads/mcp-ts-core^0.10.9 → ^0.11.0
v0.3.0: collection_no drilldown, honest spill cap, filterless guard
collection_no drilldown, honest spill cap, filterless guard
paleobiology_search_occurrences gains a locality drilldown; the canvas spill and filterless calls now fail honestly.
Added:
- collection_no input on paleobiology_search_occurrences, mapped to PBDB coll_id — the search_collections to occurrence drilldown (#5)
Fixed:
- DataCanvas spill discloses a capped page instead of claiming the full set when the per-call cap (limit, bounded by PBDB_MAX_OCCURRENCES) is hit (#6)
- paleobiology_search_occurrences and paleobiology_search_collections reject filterless calls with a typed missing_filter error before any PBDB request (#8)
94 tests pass; bun run devcheck clean.
v0.2.0: Taxon resource FAD/LAD top-level, diversity bins oldest-first
Taxon resource FAD/LAD top-level, diversity bins oldest-first
Breaking: the paleobiology://taxon/{taxon_no} resource returns first_appearance/last_appearance at the top level (was wrapped in range{}), matching paleobiology_get_taxon.
Fixed:
- Taxon resource is a true mirror of paleobiology_get_taxon via a shared shapeTaxon helper — FAD/LAD lifted top-level, no range{} wrapper (#1)
- paleobiology_get_diversity bins ordered oldest-first (highest max_ma first) in structuredContent and the content[] table (#2)
- accepted_name/rank (get_taxon) and interval/max_ma/min_ma (diversity bins) marked required; handler and normalizer fail loud when PBDB omits them (#4)
89 tests pass; bun run devcheck clean.
v0.1.1: initial release — fossil biodiversity over the Paleobiology Database
initial release — fossil biodiversity over the Paleobiology Database
Keyless MCP access to PBDB fossil occurrences, taxon ranges, diversity curves, fossil localities, and the geologic time scale. STDIO or Streamable HTTP.
Added:
- Tools — fossil occurrence search (spills to a DataCanvas for SQL), taxon resolution, diversity curves, collection/locality search, the bundled ICS geologic time scale, plus the opt-in
dataframe_drop - Resources —
paleobiology://occurrence/{occurrence_no}andpaleobiology://taxon/{taxon_no} - STDIO and Streamable HTTP transports on
@cyanheads/mcp-ts-core
Changed:
- Package name scoped to
@cyanheads/paleobiology-mcp-server; install and registry surfaces aligned - One-line description unified across
package.json,server.json,manifest.json, the Dockerfile, and both plugin manifests
Dependency bumps:
@types/node^26.0.0 → ^26.0.1 (dev)
84 tests pass; bun run devcheck clean.