paleobiology-mcp-server
Was dieses MCP kann
Searches fossil occurrences and collections, resolves taxa, explores geologic intervals, and computes diversity and extinction patterns through deep time.
Tools
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['canvas_id'], 'properties': {'canvas_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{10}$', 'description': 'Canvas id returned by paleobiology_search_occurrences when its result spilled.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['tables']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['canvas_disabled'], 'description': 'Machine-readable failure mode. Declared by this tool: `canvas_disabled`: DataCanvas is not enabled on this deployment (CANVAS_PROVIDER_TYPE is not duckdb). Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'tables': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'kind', 'row_count', 'columns'], 'properties': {'kind': {'type': 'string', 'description': 'Object kind: "table" or "view".'}, 'name': {'type': 'string', 'description': 'Table name â\x80\x94 reference this in paleobiology_dataframe_query SQL.'}, 'columns': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'type'], 'properties': {'name': {'type': 'string', 'description': 'Column name.'}, 'type': {'type': 'string', 'description': 'SQL column type, e.g. VARCHAR, DOUBLE, BIGINT.'}, 'nullable': {'type': 'boolean', 'description': 'True when the column may contain nulls.'}}, 'description': 'A column in the staged table.', 'additionalProperties': False}, 'description': 'Columns in the table.'}, 'row_count': {'type': 'number', 'description': 'Number of rows in the table.'}}, 'description': 'A table staged on the canvas, with its columns.', 'additionalProperties': False}, 'description': 'Tables staged on the canvas.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['canvas_id', 'sql'], 'properties': {'sql': {'type': 'string', 'description': 'A read-only SQL SELECT. Reference tables by the names paleobiology_search_occurrences / _describe returned.'}, 'canvas_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{10}$', 'description': 'Canvas id returned by paleobiology_search_occurrences when its result spilled.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['rows', 'row_count']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'rows': {'type': 'array', 'items': {'type': 'object', 'propertyNames': {'type': 'string'}, 'additionalProperties': {}}, 'description': 'Result rows (capped at the canvas row limit). Keys are the selected column names.'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['canvas_disabled'], 'description': 'Machine-readable failure mode. Declared by this tool: `canvas_disabled`: DataCanvas is not enabled on this deployment (CANVAS_PROVIDER_TYPE is not duckdb). Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'row_count': {'type': 'number', 'description': 'Number of rows in the full result before any row cap.'}, 'truncated': {'type': 'boolean', 'description': 'True when the result exceeded the canvas row cap and rows were trimmed.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'count': {'enum': ['genera', 'species', 'families'], 'type': 'string', 'default': 'genera', 'description': 'What to count per bin: "genera" (default), "species", or "families".'}, 'max_ma': {'type': 'number', 'minimum': 0, 'description': 'Older bound of the span in millions of years ago. Alternative to interval. When paired with min_ma it must be strictly greater â\x80\x94 max_ma is the deeper-time end of the span.'}, 'min_ma': {'type': 'number', 'minimum': 0, 'description': 'Younger bound of the span in millions of years ago. Alternative to interval. When paired with max_ma it must be strictly smaller â\x80\x94 min_ma is the nearer-to-present end of the span.'}, 'base_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Clade-inclusive taxon to count, by PBDB taxon id â\x80\x94 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 (exactly one is required, never both).', 'exclusiveMinimum': 0}, 'interval': {'type': 'string', 'description': 'Named geologic interval bounding the span, e.g. "Mesozoic". Alternative to max_ma/min_ma.'}, 'base_name': {'type': 'string', 'description': 'Clade-inclusive taxon to count, e.g. "Dinosauria" or "Ammonoidea" â\x80\x94 this taxon and all descendants. Supply this or base_id (exactly one is required, never both).'}, 'resolution': {'enum': ['period', 'epoch', 'age'], 'type': 'string', 'default': 'period', 'description': 'Bin resolution: "period" (default, coarse), "epoch", or "age" (finest).'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['bins', 'totalCount', 'attribution']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'bins': {'type': 'array', 'items': {'type': 'object', 'required': ['interval', 'max_ma', 'min_ma', 'sampled_in_bin', 'implied', 'originations', 'extinctions', 'range_through', 'n_occurrences'], 'properties': {'max_ma': {'type': 'number', 'description': 'Older boundary of the bin in millions of years ago.'}, 'min_ma': {'type': 'number', 'description': 'Younger boundary of the bin in millions of years ago.'}, 'implied': {'type': 'number', 'description': 'Range-through taxa implied present in the bin but without an occurrence in it.'}, 'interval': {'type': 'string', 'description': 'Geologic interval (bin) name, e.g. "Cretaceous".'}, 'extinctions': {'type': 'number', 'description': 'Taxa whose last appearance is in this bin (LADs, including bin-only singletons).'}, 'originations': {'type': 'number', 'description': 'Taxa whose first appearance is in this bin (new FADs, including bin-only singletons).'}, 'n_occurrences': {'type': 'number', 'description': 'Total fossil occurrences counted in this bin.'}, 'range_through': {'type': 'number', 'description': 'Taxa whose range crosses both boundaries of this bin (present before and after).'}, 'sampled_in_bin': {'type': 'number', 'description': 'Taxa with at least one occurrence inside this bin.'}}, 'description': 'One diversity bin (a single geologic interval) with turnover counts.', 'additionalProperties': False}, 'description': 'Per-interval diversity bins over the span, ordered oldest-first (oldest geologic interval, highest max_ma, first).'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['missing_filter', 'conflicting_taxon_filter', 'inverted_ma_range'], 'description': 'Machine-readable failure mode. Declared by this tool: `missing_filter`: Neither base_name nor base_id was supplied â\x80\x94 a diversity curve needs a clade to count. `conflicting_taxon_filter`: Both base_name and base_id were supplied â\x80\x94 PBDB accepts only one clade selector. `inverted_ma_range`: min_ma was greater than or equal to max_ma â\x80\x94 the span is inverted or empty. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'Guidance when the clade or span produced no bins, or when the taxon name could not be resolved and was ignored.'}, 'totalCount': {'type': 'number', 'description': 'Number of geologic-interval bins returned.'}, 'attribution': {'type': 'string', 'description': 'CC-BY data attribution for the Paleobiology Database.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'name': {'type': 'string', 'description': 'Taxon name to resolve, e.g. "Tyrannosaurus" or "Ammonoidea". Provide this or taxon_no.'}, 'taxon_no': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'PBDB taxon id from a prior get_taxon, or accepted_no on an occurrence row. Provide this or name.', 'exclusiveMinimum': 0}, 'show_children': {'type': 'boolean', 'default': False, 'description': 'When true, include a page of the immediate child taxa of this taxon (at most 200 per call â\x80\x94 children_truncated says whether more remain).'}, 'children_offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of immediate children to skip before the returned page â\x80\x94 used only when show_children is true. Advance it by 200 while children_truncated is true to walk the whole child list.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['taxon_no', 'accepted_name', 'rank', 'classification', 'extant', 'first_appearance', 'last_appearance', 'attribution']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'rank': {'type': 'string', 'description': 'Taxonomic rank, e.g. "genus", "family", "order".'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['taxon_not_found', 'missing_selector'], 'description': 'Machine-readable failure mode. Declared by this tool: `taxon_not_found`: The name or taxon_no resolved to no PBDB taxon. `missing_selector`: Neither name nor taxon_no was provided. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'extant': {'type': 'boolean', 'description': 'True if the clade survives to the present day; false if entirely extinct.'}, 'notice': {'type': 'string', 'description': 'Guidance 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.'}, 'children': {'type': 'array', 'items': {'type': 'object', 'required': ['taxon_no'], 'properties': {'name': {'type': 'string', 'description': 'Child taxon name.'}, 'rank': {'type': 'string', 'description': 'Child taxon rank, e.g. "genus" or "subfamily".'}, 'taxon_no': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'PBDB taxon id of the child â\x80\x94 chain into paleobiology_get_taxon.'}, 'synonym_of': {'type': 'string', 'description': 'Present when this child is a synonym; names the accepted taxon it folds into.'}, 'occurrence_count': {'type': 'number', 'description': 'Fossil occurrence count for the child, when reported.'}}, 'description': 'An immediate child taxon stub.', 'additionalProperties': False}, 'description': 'One page of immediate child taxa, at most 200 â\x80\x94 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 treating it as complete.'}, 'taxon_no': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Accepted PBDB taxon id â\x80\x94 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 without re-sending a name.'}, 'parent_no': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'PBDB taxon id of the immediate parent, when known.'}, 'attribution': {'type': 'string', 'description': 'CC-BY data attribution for the Paleobiology Database.'}, 'parent_name': {'type': 'string', 'description': 'Name of the immediate parent taxon, when known.'}, 'accepted_name': {'type': 'string', 'description': 'PBDB accepted name (may differ from the searched name).'}, 'classification': {'type': 'object', 'properties': {'class': {'type': 'string', 'description': 'Class, when classified.'}, 'genus': {'type': 'string', 'description': 'Genus, when classified.'}, 'order': {'type': 'string', 'description': 'Order, when classified (PBDB sentinel orders are omitted).'}, 'family': {'type': 'string', 'description': 'Family, when classified.'}, 'phylum': {'type': 'string', 'description': 'Phylum, when classified.'}}, 'description': 'Higher classification of the taxon. Each level is present only when PBDB resolves it.', 'additionalProperties': False}, 'children_offset': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Position in the child list this page started at (0 is the first child). Present only when show_children was true.'}, 'last_appearance': {'type': 'object', 'properties': {'max_ma': {'type': 'number', 'description': 'Older bound of the appearance window (Ma).'}, 'min_ma': {'type': 'number', 'description': 'Younger bound of the appearance window (Ma).'}, 'interval': {'type': 'string', 'description': 'Named geologic interval of this appearance, when known.'}}, 'description': 'A first- or last-appearance window. Empty when PBDB has no dated occurrences.', 'additionalProperties': False}, 'first_appearance': {'type': 'object', 'properties': {'max_ma': {'type': 'number', 'description': 'Older bound of the appearance window (Ma).'}, 'min_ma': {'type': 'number', 'description': 'Younger bound of the appearance window (Ma).'}, 'interval': {'type': 'string', 'description': 'Named geologic interval of this appearance, when known.'}}, 'description': 'A first- or last-appearance window. Empty when PBDB has no dated occurrences.', 'additionalProperties': False}, 'occurrence_count': {'type': 'number', 'description': 'Number of fossil occurrences recorded in PBDB, when reported.'}, 'children_truncated': {'type': 'boolean', 'description': 'True when more immediate children remain past this page â\x80\x94 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 show_children was true.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'name': {'type': 'string', 'description': 'Case-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.'}, 'level': {'enum': ['eon', 'era', 'period', 'epoch', 'age'], 'type': 'string', 'description': 'Restrict 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_ma': {'type': 'number', 'minimum': 0, 'description': 'Older bound of an age window (Ma); intervals overlapping [min_ma, max_ma] match.'}, 'min_ma': {'type': 'number', 'minimum': 0, 'description': 'Younger bound of an age window (Ma); intervals overlapping [min_ma, max_ma] match.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['intervals', 'source', 'snapshot_version', 'totalCount']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['interval_not_found', 'interval_lookup_unavailable'], 'description': 'Machine-readable failure mode. Declared by this tool: `interval_not_found`: A named interval filter matched nothing â\x80\x94 neither the bundled international scale (after any level or Ma filters) nor a PBDB lookup across its other time scales. `interval_lookup_unavailable`: The name is outside the bundled international scale and the PBDB lookup that covers the other time scales could not be reached. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'Guidance when no interval matched the filters.'}, 'source': {'enum': ['bundled_ics', 'pbdb_upstream'], 'type': 'string', 'description': 'Which source answered: "bundled_ics" for the offline international-scale snapshot, "pbdb_upstream" for a name resolved live against PBDB\'s other time scales.'}, 'intervals': {'type': 'array', 'items': {'type': 'object', 'required': ['interval_no', 'name', 'level', 'max_ma', 'min_ma'], 'properties': {'name': {'type': 'string', 'description': 'Interval name, e.g. "Maastrichtian" or "Late Maastrichtian".'}, 'color': {'type': 'string', 'description': 'ICS chart hex color for this interval, when defined.'}, 'level': {'type': 'string', 'description': 'Rank of the interval in its time scale. The international scale uses eon > era > period > epoch > age (finest); other PBDB scales also use subepoch, subage, zone, subzone, chron, subchron, and bin.'}, 'scale': {'type': 'string', 'description': 'The PBDB time scale carrying this interval, e.g. "Mesozoic Subages" or "North American Land Mammal Ages". Present only on an interval resolved upstream â\x80\x94 every bundled interval is on the international scale, which snapshot_version names.'}, 'abbrev': {'type': 'string', 'description': 'Standard abbreviation (e.g. "K" for Cretaceous), when defined.'}, 'max_ma': {'type': 'number', 'description': 'Older (bottom) boundary in millions of years ago.'}, 'min_ma': {'type': 'number', 'description': 'Younger (top) boundary in millions of years ago.'}, 'parent_no': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'PBDB id of the containing interval (epochâ\x86\x92periodâ\x86\x92eraâ\x86\x92eon). Omitted at the top.'}, 'interval_no': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'PBDB interval id for this geologic interval.'}}, 'description': 'A geologic time interval with its rank, Ma boundaries, and parent.', 'additionalProperties': False}, 'description': 'Matching geologic intervals, sorted oldest-first.'}, 'totalCount': {'type': 'number', 'description': 'Number of intervals matched by the filters.'}, 'snapshot_version': {'type': 'string', 'description': 'ICS chart version and generation date of the bundled time scale, for citation.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 100, 'maximum': 500, 'minimum': 1, 'description': 'Maximum localities to return per page (1â\x80\x93500).'}, 'latmax': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Northern edge of the bounding box, decimal degrees (â\x88\x9290â\x80¦90). Valid on its own â\x80\x94 a lone latitude edge filters as a half-plane.'}, 'latmin': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Southern edge of the bounding box, decimal degrees (â\x88\x9290â\x80¦90). Valid on its own â\x80\x94 a lone latitude edge filters as a half-plane.'}, 'lngmax': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Eastern edge of the bounding box, decimal degrees (â\x88\x92180â\x80¦180). Longitude is a closed pair â\x80\x94 supply lngmin with it or neither.'}, 'lngmin': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Western edge of the bounding box, decimal degrees (â\x88\x92180â\x80¦180). Longitude is a closed pair â\x80\x94 supply lngmax with it or neither.'}, 'max_ma': {'type': 'number', 'minimum': 0, 'description': 'Older age bound in millions of years ago. When paired with min_ma it must be strictly greater â\x80\x94 max_ma is the deeper-time end of the window.'}, 'min_ma': {'type': 'number', 'minimum': 0, 'description': 'Younger age bound in millions of years ago. When paired with max_ma it must be strictly smaller â\x80\x94 min_ma is the nearer-to-present end of the window.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of localities to skip â\x80\x94 page with limit by advancing offset.'}, 'base_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Clade-inclusive taxon filter by PBDB taxon id â\x80\x94 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.', 'exclusiveMinimum': 0}, 'interval': {'type': 'string', 'description': 'Named geologic interval bounding the age, e.g. "Maastrichtian". Alternative to max_ma/min_ma.'}, 'base_name': {'type': 'string', 'description': 'Clade-inclusive taxon filter â\x80\x94 localities yielding this taxon or its descendants, e.g. "Dinosauria". Supply this or base_id, never both.'}, 'formation': {'type': 'string', 'description': 'Geologic formation name to filter by, e.g. "Hell Creek".'}, 'lithology': {'type': 'string', 'description': 'Lithology (rock type) to filter by, e.g. "sandstone".'}, 'environment': {'enum': ['marine', 'terrestrial', 'freshwater'], 'type': 'string', 'description': 'Depositional environment: "marine", "terrestrial", or "freshwater" (lacustrine + fluvial). Omit for all.'}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['collections', 'attribution']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'cap': {'type': 'number', 'description': 'The per-page limit that was applied (set when truncated).'}, 'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['missing_filter', 'conflicting_taxon_filter', 'incomplete_bbox', 'inverted_ma_range'], 'description': 'Machine-readable failure mode. Declared by this tool: `missing_filter`: The call carried only pagination fields â\x80\x94 no taxon, time, place, formation, lithology, or environment filter. `conflicting_taxon_filter`: Both base_name and base_id were supplied â\x80\x94 PBDB accepts only one clade selector. `incomplete_bbox`: Exactly one of lngmin/lngmax was supplied â\x80\x94 a longitude box needs both edges. `inverted_ma_range`: min_ma was greater than or equal to max_ma â\x80\x94 the age window is inverted or empty. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'shown': {'type': 'number', 'description': 'Number of localities returned in this page (set when truncated).'}, 'notice': {'type': 'string', 'description': 'Guidance when no locality matched, when localities remain past this page, or when a filter value was not recognized and ignored.'}, 'truncated': {'type': 'boolean', 'description': 'True when localities remain past this page â\x80\x94 advance offset for more.'}, 'totalCount': {'type': 'number', 'description': 'Total localities matching the filters upstream, across all pages.'}, 'attribution': {'type': 'string', 'description': 'CC-BY data attribution for the Paleobiology Database.'}, 'collections': {'type': 'array', 'items': {'type': 'object', 'required': ['collection_no'], 'properties': {'cc': {'type': 'string', 'description': 'ISO 3166-1 alpha-2 country code, when known.'}, 'lat': {'type': 'number', 'description': 'MODERN latitude of the locality (where the rock is today).'}, 'lng': {'type': 'number', 'description': 'MODERN longitude of the locality (where the rock is today).'}, 'state': {'type': 'string', 'description': 'State/province, when known.'}, 'county': {'type': 'string', 'description': 'County, when known.'}, 'max_ma': {'type': 'number', 'description': 'Older age bound in millions of years ago.'}, 'member': {'type': 'string', 'description': 'Geologic member, when recorded.'}, 'min_ma': {'type': 'number', 'description': 'Younger age bound in millions of years ago.'}, 'n_occs': {'type': 'number', 'description': 'Number of fossil occurrences (co-occurring taxa) recorded at this locality.'}, 'formation': {'type': 'string', 'description': 'Geologic formation, when recorded.'}, 'lithology': {'type': 'string', 'description': 'Primary lithology (rock type), when recorded.'}, 'environment': {'type': 'string', 'description': 'Depositional environment as PBDB recorded it (finer than the filter enum), when known.'}, 'reference_no': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'PBDB bibliographic reference id for provenance.'}, 'collection_no': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'PBDB collection (locality) id â\x80\x94 scope paleobiology_search_occurrences to it for the fauna found here.'}, 'late_interval': {'type': 'string', 'description': 'Named interval of the younger bound â\x80\x94 present when the age spans two intervals.'}, 'early_interval': {'type': 'string', 'description': 'Named interval of the older age bound, e.g. "Late Maastrichtian".'}, 'collection_name': {'type': 'string', 'description': 'Locality name, when recorded.'}, 'geological_group': {'type': 'string', 'description': 'Geologic group, when recorded.'}, 'lithology_description': {'type': 'string', 'description': 'Free-text lithology description, when recorded.'}}, 'description': 'A fossil collection (locality) with its age, strata, lithology, and environment.', 'additionalProperties': False}, 'description': 'Matching localities for this page.'}}, 'additionalProperties': False}
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'limit': {'type': 'integer', 'default': 100, 'maximum': 500, 'minimum': 1, 'description': 'Maximum occurrences to pull per page (1â\x80\x93500). 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 set.'}, 'latmax': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Northern edge of the bounding box, decimal degrees (â\x88\x9290â\x80¦90). Valid on its own â\x80\x94 a lone latitude edge filters as a half-plane.'}, 'latmin': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Southern edge of the bounding box, decimal degrees (â\x88\x9290â\x80¦90). Valid on its own â\x80\x94 a lone latitude edge filters as a half-plane.'}, 'lngmax': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Eastern edge of the bounding box, decimal degrees (â\x88\x92180â\x80¦180). Longitude is a closed pair â\x80\x94 supply lngmin with it or neither.'}, 'lngmin': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Western edge of the bounding box, decimal degrees (â\x88\x92180â\x80¦180). Longitude is a closed pair â\x80\x94 supply lngmax with it or neither.'}, 'max_ma': {'type': 'number', 'minimum': 0, 'description': 'Older age bound in millions of years ago. Alternative to interval. When paired with min_ma it must be strictly greater â\x80\x94 max_ma is the deeper-time end of the window.'}, 'min_ma': {'type': 'number', 'minimum': 0, 'description': 'Younger age bound in millions of years ago. Alternative to interval. When paired with max_ma it must be strictly smaller â\x80\x94 min_ma is the nearer-to-present end of the window.'}, 'offset': {'type': 'integer', 'default': 0, 'maximum': 9007199254740991, 'minimum': 0, 'description': 'Number of matching occurrences to skip before this page â\x80\x94 page with limit by advancing offset. The response notice names the exact offset that reaches the next page.'}, 'base_id': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Clade-inclusive taxon filter by PBDB taxon id â\x80\x94 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 name is not (homonyms, synonyms, unresolved spellings). Supply this or base_name, never both.', 'exclusiveMinimum': 0}, 'interval': {'type': 'string', 'description': 'Named geologic interval bounding the age, e.g. "Cretaceous" or "Maastrichtian". Alternative to max_ma/min_ma.'}, 'base_name': {'type': 'string', 'description': 'Clade-inclusive taxon filter â\x80\x94 this taxon and all descendants, e.g. "Dinosauria". The usual choice. Supply this or base_id, never both.'}, 'canvas_id': {'type': 'string', 'pattern': '^[A-Za-z0-9_-]{10}$', 'description': 'Canvas id from a prior call to re-stage onto the same workspace. Reusing it REPLACES (overwrites) the prior occurrence table â\x80\x94 each search restages the full result, it does not append to or accumulate across earlier ones. Omit to start fresh; the response returns a new id.'}, 'taxon_name': {'type': 'string', 'description': 'Exact taxon filter â\x80\x94 only this taxon, not descendants. Use instead of base_name when you want a single taxon.'}, 'environment': {'enum': ['marine', 'terrestrial', 'freshwater'], 'type': 'string', 'description': 'Depositional environment: "marine", "terrestrial", or "freshwater" (lacustrine + fluvial). Omit for all.'}, 'collection_no': {'type': 'integer', 'maximum': 9007199254740991, 'description': 'Restrict to one collection (locality) by its PBDB collection_no â\x80\x94 the fauna found together at that site. Take the id from a paleobiology_search_collections row to drill from a locality into its occurrences.', 'exclusiveMinimum': 0}}, 'additionalProperties': False}
Ausgabeschema
{'type': 'object', 'anyOf': [{'not': {'required': ['error']}, 'required': ['occurrences', 'spilled', 'row_count', 'totalCount', 'attribution']}, {'required': ['error']}], '$schema': 'https://json-schema.org/draft/2020-12/schema', 'properties': {'error': {'type': 'object', 'required': ['code', 'message'], 'properties': {'code': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'JSON-RPC error code for this failure.'}, 'data': {'type': 'object', 'properties': {'reason': {'type': 'string', 'examples': ['missing_filter', 'conflicting_taxon_filter', 'incomplete_bbox', 'inverted_ma_range'], 'description': 'Machine-readable failure mode. Declared by this tool: `missing_filter`: The call carried only pagination fields â\x80\x94 no taxon, time, place, environment, or collection filter. `conflicting_taxon_filter`: Both base_name and base_id were supplied â\x80\x94 PBDB accepts only one clade selector. `incomplete_bbox`: Exactly one of lngmin/lngmax was supplied â\x80\x94 a longitude box needs both edges. `inverted_ma_range`: min_ma was greater than or equal to max_ma â\x80\x94 the age window is inverted or empty. Other values are possible when a failure originates below the handler.'}, 'recovery': {'type': 'object', 'required': ['hint'], 'properties': {'hint': {'type': 'string'}}, 'description': 'Actionable next step for the caller.', 'additionalProperties': {}}, 'retryable': {'type': 'boolean', 'description': 'Whether retrying may succeed.'}}, 'additionalProperties': {}}, 'message': {'type': 'string', 'description': 'Human-readable description of what went wrong.'}}, 'description': 'Present when the call failed. Absent on success.', 'additionalProperties': {}}, 'notice': {'type': 'string', 'description': 'Guidance 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 match set, when a filter value was not recognized and ignored, or when DataCanvas is off.'}, 'spilled': {'type': 'boolean', 'description': 'True when the result exceeded the inline preview and the staged occurrence set was written to the canvas.'}, 'canvas_id': {'type': 'string', 'description': 'Canvas id holding the staged occurrence set â\x80\x94 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.'}, 'row_count': {'type': 'number', 'description': 'Rows staged on the canvas when spilled; otherwise the preview length. Capped at the per-call limit (PBDB_MAX_OCCURRENCES) â\x80\x94 compare against the totalCount enrichment for how many matched upstream.'}, 'table_name': {'type': 'string', 'description': 'Canvas table holding the staged occurrence set. Present only when spilled is true.'}, 'totalCount': {'type': 'number', 'description': 'Total occurrences matching the filters upstream â\x80\x94 the number this call was drawn from, which may exceed the staged set.'}, 'attribution': {'type': 'string', 'description': 'CC-BY data attribution for the Paleobiology Database.'}, 'occurrences': {'type': 'array', 'items': {'type': 'object', 'required': ['occurrence_no'], 'properties': {'cc': {'type': 'string', 'description': 'ISO 3166-1 alpha-2 country code of the modern locality, when known.'}, 'lat': {'type': 'number', 'description': 'MODERN latitude â\x80\x94 where the rock sits today. Not where the organism lived.'}, 'lng': {'type': 'number', 'description': 'MODERN longitude â\x80\x94 where the rock sits today. Not where the organism lived.'}, 'state': {'type': 'string', 'description': 'State/province of the modern locality, when known.'}, 'county': {'type': 'string', 'description': 'County of the modern locality, when known.'}, 'max_ma': {'type': 'number', 'description': 'Older age bound in millions of years ago.'}, 'member': {'type': 'string', 'description': 'Geologic member, when recorded.'}, 'min_ma': {'type': 'number', 'description': 'Younger age bound in millions of years ago.'}, 'geoplate': {'type': 'string', 'description': 'Tectonic plate id under the paleo-model, when reported.'}, 'paleolat': {'type': 'number', 'description': 'PALEO latitude â\x80\x94 where the landmass sat at deposition. Omitted when PBDB has no reconstruction.'}, 'paleolng': {'type': 'number', 'description': 'PALEO longitude â\x80\x94 where the landmass sat at deposition. Omitted when PBDB has no reconstruction.'}, 'formation': {'type': 'string', 'description': 'Geologic formation, when recorded.'}, 'paleomodel': {'type': 'string', 'description': 'Plate-tectonic model used for the paleo-coordinates (e.g. "gplates"). They are model-dependent.'}, 'accepted_no': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'PBDB taxon id of the accepted name â\x80\x94 chain into paleobiology_get_taxon.'}, 'reference_no': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'PBDB bibliographic reference id for provenance.'}, 'accepted_name': {'type': 'string', 'description': 'PBDB accepted name (may differ from the identification under synonymy).'}, 'accepted_rank': {'type': 'string', 'description': 'Rank of the accepted name.'}, 'collection_no': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'Locality this came from â\x80\x94 chain into paleobiology_search_collections.'}, 'late_interval': {'type': 'string', 'description': 'Named interval of the younger bound â\x80\x94 present only when the age spans two intervals.'}, 'occurrence_no': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': -9007199254740991, 'description': 'PBDB occurrence id â\x80\x94 read the full record via the paleobiology://occurrence/{occurrence_no} resource.'}, 'classification': {'type': 'object', 'properties': {'class': {'type': 'string', 'description': 'Class, when classified.'}, 'genus': {'type': 'string', 'description': 'Genus, when classified.'}, 'order': {'type': 'string', 'description': 'Order, when classified (PBDB sentinel orders are omitted).'}, 'family': {'type': 'string', 'description': 'Family, when classified.'}, 'phylum': {'type': 'string', 'description': 'Phylum, when classified.'}}, 'description': 'Higher classification of the accepted name (phylum â\x86\x92 genus) â\x80\x94 group rows by family or order without a per-row paleobiology_get_taxon call. Each level is present only when PBDB resolves it; omitted entirely when PBDB resolves none.', 'additionalProperties': False}, 'early_interval': {'type': 'string', 'description': 'Named geologic interval of the older age bound, e.g. "Late Maastrichtian".'}, 'identified_name': {'type': 'string', 'description': 'The original field/published identification.'}, 'identified_rank': {'type': 'string', 'description': 'Rank of the identified name.'}, 'geological_group': {'type': 'string', 'description': 'Geologic group, when recorded.'}}, 'description': 'A single fossil occurrence with modern and paleo coordinates, age, strata, and classification.', 'additionalProperties': False}, 'description': 'Inline preview of matching occurrences for the requested page. The staged occurrence set is on the canvas when spilled is true â\x80\x94 it is one page of the match set rather than every match (the notice states which rows this page covers, how many matched upstream, and the offset that reaches the next page).'}}, 'additionalProperties': False}
Letzte Tool-Änderungen
Ähnliche MCP-Server
osint
Provides source-cited US data and schemas for power systems, AI infrastructure, semiconductor production and trade, robotics, and…
Pubmed
Provides PubMed biomedical literature search and retrieval, including abstracts, full text where available, citation metadata, re…
Europepmc
Searches and retrieves biomedical literature from Europe PMC, including abstracts, full records, citations, publication metadata,…
Nasa
Provides NASA data and imagery for astronomy, asteroids, Mars rover photos, solar flares, coronal mass ejections, geomagnetic sto…
Nih Reporter
Searches and analyzes NIH-funded research projects, awards, publications, funding trends, expirations, investigators, organizatio…
Catalogueoflife
Provides taxonomic search and classification for species and higher taxa using the Catalogue of Life.
Chembl
Queries the ChEMBL drug-discovery database for molecules, mechanisms of action, indications, targets, and small-molecule bioactiv…
Biorxiv
Provides bioRxiv and medRxiv preprint metadata, publication status, and publisher lookups, alongside broader structured research …