Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.cyanheads/paleobiology-mcp-server

REMOTE · PALEOBIOLOGY.CASEYJHAND.COM · 2 COMPONENTS · SCANNED SEP 21

Search fossil occurrences, taxon ranges, diversity through deep time, and the geologic time scale.

+3 this week 78 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security66
  • The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
  • Authorisation not fully verified: no authorisation is required to call this server, and 7 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe. See how to fix → View diagnostics → Unverified
  • HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
  • The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
  • DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
Schema Quality & AI Usability62
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 3338 tokens (~476/item across 7 items; 7 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management90
  • Stability observed for 27 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • We read all 7 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
  • An AI judge read all 8 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the io.github.cyanheads/paleobiology-mcp-server server?

io.github.cyanheads/paleobiology-mcp-server is a hosted endpoint at https://paleobiology.caseyjhand.com/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · paleobiology.caseyjhand.com

# add to Claude Code
claude mcp add --transport http cyanheads-paleobiology-mcp-server 'https://paleobiology.caseyjhand.com/mcp'
// .cursor/mcp.json
{
  "mcpServers": {
    "cyanheads-paleobiology-mcp-server": {
      "url": "https://paleobiology.caseyjhand.com/mcp"
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "cyanheads-paleobiology-mcp-server": {
      "type": "http",
      "url": "https://paleobiology.caseyjhand.com/mcp"
    }
  }
}
# ~/.codex/config.toml
[mcp_servers.cyanheads-paleobiology-mcp-server]
url = "https://paleobiology.caseyjhand.com/mcp"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "cyanheads-paleobiology-mcp-server": {
      "type": "remote",
      "url": "https://paleobiology.caseyjhand.com/mcp",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add cyanheads-paleobiology-mcp-server --url 'https://paleobiology.caseyjhand.com/mcp' --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  cyanheads-paleobiology-mcp-server:
    url: "https://paleobiology.caseyjhand.com/mcp"
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "cyanheads-paleobiology-mcp-server": {
      "Transport": "http",
      "Url": "https://paleobiology.caseyjhand.com/mcp"
    }
  }
}
# add to Vellum
assistant mcp add cyanheads-paleobiology-mcp-server -t streamable-http -u 'https://paleobiology.caseyjhand.com/mcp'
// mcp.json
{
  "mcpServers": {
    "cyanheads-paleobiology-mcp-server": {
      "type": "http",
      "url": "https://paleobiology.caseyjhand.com/mcp"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 19 Sept 26 0
    • Server version: 0.3.5 → 0.3.6 functional
  • 18 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.

  • 16 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 70 to 73. That category is still filling its 30-day observation window: 21 days of observed history at the previous scan, 22 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

  • 9 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.

  • 7 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 40 to 43. That category is still filling its 30-day observation window: 12 days of observed history at the previous scan, 13 at this one. The score rises as the window fills, whether or not the server changes.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 21 Sept 2026 · Probed https://paleobiology.caseyjhand.com/mcp

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=caseyjhand.com CN=WE1,O=Google Trust Services,C=US 4 Sept 2026 3 Dec 2026 ECDSA 256 ECDSA-SHA256 a6985204ed51ae050e7738aa6be668e9
SANs: caseyjhand.com, *.caseyjhand.com
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC secure

Validation of paleobiology.caseyjhand.com. Secure

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
caseyjhand.com. present 2371 13 Verified
paleobiology.caseyjhand.com. Verified address RRset verified with the apex keys
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 200
Header Value
strict-transport-security max-age=63072000; includeSubDomains; preload
x-content-type-options nosniff

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://paleobiology.caseyjhand.com/mcp Verified 200
http (plaintext) http://paleobiology.caseyjhand.com/mcp HTTPS enforced 301 https://paleobiology.caseyjhand.com/mcp
MCP tools · 7 exposed · ~3,134 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
paleobiology_dataframe_describe ~75

List the tables and their columns staged on a DataCanvas by paleobiology_search_occurrences. Call this before paleobiology_dataframe_query to discover the exact table_name and column names to reference in SQL.

NameTypeReqDescription
canvas_idstringyesCanvas id returned by paleobiology_search_occurrences when its result spilled.
NameTypeReqDescription
errorobjectPresent when the call failed. Absent on success.
tablesarrayTables staged on the canvas.

No examples provided.

paleobiology_dataframe_query ~224

Run a read-only SQL SELECT against occurrence result sets staged on a DataCanvas by paleobiology_search_occurrences. This is how you analyze a large fossil set without re-fetching it: count occurrences by early_interval, group by formation, country (cc), or accepted_name, or filter by a paleo/modern coordinate range. The classification column is JSON — roll up by rank with json_extract_string(classification, '$.family') (also $.phylum, $.class, $.order, $.genus). Staged rows are occurrences, so collection-only fields such as lithology are not present. Reference tables by the table_name that search_occurrences returned — call paleobiology_dataframe_describe first if you do not know the table or column names. SELECT only; writes and file-reading functions are rejected.

NameTypeReqDescription
canvas_idstringyesCanvas id returned by paleobiology_search_occurrences when its result spilled.
sqlstringyesA read-only SQL SELECT. Reference tables by the names paleobiology_search_occurrences / _describe returned.
NameTypeReqDescription
errorobjectPresent when the call failed. Absent on success.
row_countnumberNumber of rows in the full result before any row cap.
rowsarrayResult rows (capped at the canvas row limit). Keys are the selected column names.
truncatedbooleanTrue when the result exceeded the canvas row cap and rows were trimmed.

No examples provided.

paleobiology_get_diversity ~492

Compute a diversity / origination / extinction curve for a clade across geologic time, binned by period, epoch, or age — answers "plot dinosaur genus diversity across the Mesozoic." Pass a clade-inclusive base_name (or base_id, the same clade by resolved taxon id — exactly one of the two) and bound the span by a named interval (e.g. "Mesozoic") or a max_ma/min_ma range; choose what to count (genera, species, or families) and the bin resolution. The full bin set returns inline — a diversity series is a bounded set of geologic intervals — so you read the curve, the turnover, and the per-bin origination/extinction directly. Counts reflect SAMPLED diversity, biased by collection effort and rock availability, not true past diversity.

NameTypeReqDescription
base_idintegerClade-inclusive taxon to count, 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 (hom…
base_namestringClade-inclusive taxon to count, e.g. "Dinosauria" or "Ammonoidea" — this taxon and all descendants. Supply this or base_id (exactly one is required, never both).
countstringWhat to count per bin: "genera" (default), "species", or "families".
intervalstringNamed geologic interval bounding the span, e.g. "Mesozoic". Alternative to max_ma/min_ma.
max_manumberOlder bound of the span in millions of years ago. Alternative to interval. When paired with min_ma it must be strictly greater — max_ma is the deeper-time end of the span.
min_manumberYounger bound of the span in millions of years ago. Alternative to interval. When paired with max_ma it must be strictly smaller — min_ma is the nearer-to-present end of the span.
resolutionstringBin resolution: "period" (default, coarse), "epoch", or "age" (finest).
NameTypeReqDescription
attributionstringCC-BY data attribution for the Paleobiology Database.
binsarrayPer-interval diversity bins over the span, ordered oldest-first (oldest geologic interval, highest max_ma, first).
errorobjectPresent when the call failed. Absent on success.
noticestringGuidance when the clade or span produced no bins, or when the taxon name could not be resolved and was ignored.
totalCountnumberNumber of geologic-interval bins returned.

No examples provided.

paleobiology_get_taxon ~339

Resolve a taxon by name (e.g. "Tyrannosaurus") or by integer taxon_no to its accepted name, rank, higher classification, immediate parent, fossil occurrence count, and first/last appearance (FAD/LAD) range in millions of years — "when did this clade exist, and what is it." Run this first to resolve a name into the accepted name and taxon_no, then pass that id as base_id to paleobiology_search_occurrences, paleobiology_get_diversity, or paleobiology_search_collections for a clade-inclusive filter that carries no name ambiguity (the same id also appears as accepted_no on occurrence rows). Set show_children to also list immediate child taxa. PBDB taxonomy is opinionated and can differ from GBIF's backbone, so the accepted name may differ from the name you searched.

NameTypeReqDescription
children_offsetintegerNumber of immediate children to skip before the returned page — used only when show_children is true. Advance it by 200 while children_truncated is true to walk the whole child list.
namestringTaxon name to resolve, e.g. "Tyrannosaurus" or "Ammonoidea". Provide this or taxon_no.
show_childrenbooleanWhen true, include a page of the immediate child taxa of this taxon (at most 200 per call — children_truncated says whether more remain).
taxon_nointegerPBDB taxon id from a prior get_taxon, or accepted_no on an occurrence row. Provide this or name.
NameTypeReqDescription
accepted_namestringPBDB accepted name (may differ from the searched name).
attributionstringCC-BY data attribution for the Paleobiology Database.
childrenarrayOne page of immediate child taxa, at most 200 — present only when show_children was true. A taxon with more children than that returns a page, not the full list; read children_truncated before treati…
children_offsetintegerPosition in the child list this page started at (0 is the first child). Present only when show_children was true.
children_truncatedbooleanTrue when more immediate children remain past this page — re-call with children_offset advanced by 200 to read the next. False means this page runs to the end of the child list. Present only when sho…
classificationobjectHigher classification of the taxon. Each level is present only when PBDB resolves it.
errorobjectPresent when the call failed. Absent on success.
extantbooleanTrue if the clade survives to the present day; false if entirely extinct.
first_appearanceobjectA first- or last-appearance window. Empty when PBDB has no dated occurrences.
last_appearanceobjectA first- or last-appearance window. Empty when PBDB has no dated occurrences.
noticestringGuidance when the child list was cut off at the per-page cap (naming the children_offset that reaches the next page), or when children_offset ran past the end of the child list.
occurrence_countnumberNumber of fossil occurrences recorded in PBDB, when reported.
parent_namestringName of the immediate parent taxon, when known.
parent_nointegerPBDB taxon id of the immediate parent, when known.
rankstringTaxonomic rank, e.g. "genus", "family", "order".
taxon_nointegerAccepted PBDB taxon id — the canonical id for this taxon. Pass it as base_id to paleobiology_search_occurrences, paleobiology_get_diversity, or paleobiology_search_collections to filter on this clade…

No examples provided.

paleobiology_list_intervals ~343

Look up the geologic time scale — eons, eras, periods, epochs, and ages with their absolute-age boundaries in millions of years (Ma) and nesting. This is the reference that grounds every temporal filter on the other tools and translates a named interval like "Late Cretaceous" to its 100.5–66.0 Ma boundaries (and back). Filter by a name substring, a Ma range (overlap match), and/or a level; call with no filters to browse the full scale. Browsing and every name on the bundled ICS international-scale snapshot are answered offline. A name the snapshot does not carry — the sub-stage and regional names that occurrence and collection rows report, such as "Late Maastrichtian" or "Lancian" — costs one PBDB lookup across its other time scales; the response names which source answered and which scale the interval belongs to.

NameTypeReqDescription
levelstringRestrict to one rank of the international scale: eon, era, period, epoch, or age (finest). Browsing is bounded to that scale, so the sub-stage and regional ranks are not selectable here.
max_manumberOlder bound of an age window (Ma); intervals overlapping [min_ma, max_ma] match.
min_manumberYounger bound of an age window (Ma); intervals overlapping [min_ma, max_ma] match.
namestringCase-insensitive substring of the interval name, e.g. "cretaceous" or "Jurassic". A name the bundled international scale does not carry is matched exactly against PBDB's other time scales.
NameTypeReqDescription
errorobjectPresent when the call failed. Absent on success.
intervalsarrayMatching geologic intervals, sorted oldest-first.
noticestringGuidance when no interval matched the filters.
snapshot_versionstringICS chart version and generation date of the bundled time scale, for citation.
sourcestringWhich source answered: "bundled_ics" for the offline international-scale snapshot, "pbdb_upstream" for a name resolved live against PBDB's other time scales.
totalCountnumberNumber of intervals matched by the filters.

No examples provided.

paleobiology_search_collections ~659

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.

NameTypeReqDescription
base_idintegerClade-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 (homony…
base_namestringClade-inclusive taxon filter — localities yielding this taxon or its descendants, e.g. "Dinosauria". Supply this or base_id, never both.
environmentstringDepositional environment: "marine", "terrestrial", or "freshwater" (lacustrine + fluvial). Omit for all.
formationstringGeologic formation name to filter by, e.g. "Hell Creek".
intervalstringNamed geologic interval bounding the age, e.g. "Maastrichtian". Alternative to max_ma/min_ma.
latmaxnumberNorthern edge of the bounding box, decimal degrees (−90…90). Valid on its own — a lone latitude edge filters as a half-plane.
latminnumberSouthern edge of the bounding box, decimal degrees (−90…90). Valid on its own — a lone latitude edge filters as a half-plane.
limitintegerMaximum localities to return per page (1–500).
lithologystringLithology (rock type) to filter by, e.g. "sandstone".
lngmaxnumberEastern edge of the bounding box, decimal degrees (−180…180). Longitude is a closed pair — supply lngmin with it or neither.
lngminnumberWestern edge of the bounding box, decimal degrees (−180…180). Longitude is a closed pair — supply lngmax with it or neither.
max_manumberOlder 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_manumberYounger 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.
offsetintegerNumber of localities to skip — page with limit by advancing offset.
NameTypeReqDescription
attributionstringCC-BY data attribution for the Paleobiology Database.
capnumberThe per-page limit that was applied (set when truncated).
collectionsarrayMatching localities for this page.
errorobjectPresent when the call failed. Absent on success.
noticestringGuidance when no locality matched, when localities remain past this page, or when a filter value was not recognized and ignored.
shownnumberNumber of localities returned in this page (set when truncated).
totalCountnumberTotal localities matching the filters upstream, across all pages.
truncatedbooleanTrue when localities remain past this page — advance offset for more.

No examples provided.

paleobiology_search_occurrences ~1,002

Search fossil occurrences filtered by taxon, geologic time, geography, and depositional environment — the flagship. Use base_name for a clade and all its descendants (what "Tyrannosaurus occurrences" usually means), base_id for that same clade by resolved taxon id, or taxon_name for an exact taxon. Bound the age by a named interval (e.g. "Maastrichtian") or a max_ma/min_ma range, and/or a lng/lat bounding box; scope to a single locality with collection_no (take it from a paleobiology_search_collections row). At least one filter is required — taxon, time, place, environment, or collection_no. Every row carries two distinct coordinate systems — modern lng/lat (where the rock is today) and paleo lng/lat (where the landmass sat at deposition) — plus the formation, age interval, and higher classification (phylum through genus); never plot a deep-time occurrence on a modern coastline. Resolve a name with paleobiology_get_taxon first if unsure. Broad queries return many rows: an inline preview answers the immediate question, and when the set outgrows that preview the matching occurrences — up to the per-call cap — stage on a DataCanvas (canvas_id + table_name, returned only then) for SQL via paleobiology_dataframe_query (count by interval, group by formation/country, map by region). The response reports how many occurrences matched in total, which rows this page covers, and the offset that reaches the next page — page through the whole match set with limit/offset.

NameTypeReqDescription
base_idintegerClade-inclusive taxon filter by PBDB taxon id — the taxon_no from paleobiology_get_taxon, or accepted_no on an occurrence row. Same clade-inclusive semantics as base_name, but unambiguous where a nam…
base_namestringClade-inclusive taxon filter — this taxon and all descendants, e.g. "Dinosauria". The usual choice. Supply this or base_id, never both.
canvas_idstringCanvas id from a prior call to re-stage onto the same workspace. Reusing it REPLACES (overwrites) the prior occurrence table — each search restages the full result, it does not append to or accumulat…
collection_nointegerRestrict to one collection (locality) by its PBDB collection_no — the fauna found together at that site. Take the id from a paleobiology_search_collections row to drill from a locality into its occur…
environmentstringDepositional environment: "marine", "terrestrial", or "freshwater" (lacustrine + fluvial). Omit for all.
intervalstringNamed geologic interval bounding the age, e.g. "Cretaceous" or "Maastrichtian". Alternative to max_ma/min_ma.
latmaxnumberNorthern edge of the bounding box, decimal degrees (−90…90). Valid on its own — a lone latitude edge filters as a half-plane.
latminnumberSouthern edge of the bounding box, decimal degrees (−90…90). Valid on its own — a lone latitude edge filters as a half-plane.
limitintegerMaximum occurrences to pull per page (1–500). Caps the pull (further bounded by PBDB_MAX_OCCURRENCES); broad queries stage that page on the canvas for SQL. Pair with offset to walk the whole match se…
lngmaxnumberEastern edge of the bounding box, decimal degrees (−180…180). Longitude is a closed pair — supply lngmin with it or neither.
lngminnumberWestern edge of the bounding box, decimal degrees (−180…180). Longitude is a closed pair — supply lngmax with it or neither.
max_manumberOlder age bound in millions of years ago. Alternative to interval. When paired with min_ma it must be strictly greater — max_ma is the deeper-time end of the window.
min_manumberYounger age bound in millions of years ago. Alternative to interval. When paired with max_ma it must be strictly smaller — min_ma is the nearer-to-present end of the window.
offsetintegerNumber of matching occurrences to skip before this page — page with limit by advancing offset. The response notice names the exact offset that reaches the next page.
taxon_namestringExact taxon filter — only this taxon, not descendants. Use instead of base_name when you want a single taxon.
NameTypeReqDescription
attributionstringCC-BY data attribution for the Paleobiology Database.
canvas_idstringCanvas id holding the staged occurrence set — pass to paleobiology_dataframe_query. Present only when spilled is true; a result that fit inline stages nothing, so there is no table to query.
errorobjectPresent when the call failed. Absent on success.
noticestringGuidance when no occurrence matched, when results spilled to the canvas, when occurrences remain past this page (naming the offset that reaches the next one), when offset ran past the end of the matc…
occurrencesarrayInline preview of matching occurrences for the requested page. The staged occurrence set is on the canvas when spilled is true — it is one page of the match set rather than every match (the notice st…
row_countnumberRows staged on the canvas when spilled; otherwise the preview length. Capped at the per-call limit (PBDB_MAX_OCCURRENCES) — compare against the totalCount enrichment for how many matched upstream.
spilledbooleanTrue when the result exceeded the inline preview and the staged occurrence set was written to the canvas.
table_namestringCanvas table holding the staged occurrence set. Present only when spilled is true.
totalCountnumberTotal occurrences matching the filters upstream — the number this call was drawn from, which may exceed the staged set.

No examples provided.

Common questions

What is the io.github.cyanheads/paleobiology-mcp-server server?

io.github.cyanheads/paleobiology-mcp-server is listed in the public MCP registry as io.github.cyanheads/paleobiology-mcp-server. Search fossil occurrences, taxon ranges, diversity through deep time, and the geologic time scale. This page covers its hosted endpoint (https://paleobiology.caseyjhand.com/mcp).

Is the io.github.cyanheads/paleobiology-mcp-server server safe to use?

io.github.cyanheads/paleobiology-mcp-server scores 78 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.cyanheads/paleobiology-mcp-server server expose?

io.github.cyanheads/paleobiology-mcp-server exposes 7 tools: paleobiology_search_occurrences, paleobiology_get_taxon, paleobiology_get_diversity, paleobiology_list_intervals, paleobiology_search_collections, and 2 more. Their descriptions and schemas cost roughly 3,134 tokens of context every time the server is loaded.

Does the io.github.cyanheads/paleobiology-mcp-server server require authentication?

No. We connected to io.github.cyanheads/paleobiology-mcp-server without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

Is the io.github.cyanheads/paleobiology-mcp-server server still maintained?

io.github.cyanheads/paleobiology-mcp-server is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.