worms-marine-taxa-mcp-server
An MCP server that resolves WoRMS marine species names, fetches classifications, synonyms, distributions, traits, and IDs via STDIO or Streamable HTTP.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://worms-marine-taxa.caseyjhand.com/mcpWhat you can do with it
- Resolve scientific or common names to AphiaIDs
- Fetch full Aphia records by AphiaID
- List synonyms of the accepted taxon
- Fetch recorded distributions filtered by status
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- worms-marine-taxa-mcp-server 0.2.0
- MCP protocol
- 2025-06-18
- Tools
- 8 advertised
- Resources
- 1 advertised
- Resource templates
- 1 advertised
- Prompts
- 0 advertised
{
"tools": {
"listChanged": true
},
"logging": {},
"prompts": {
"listChanged": true
},
"resources": {
"subscribe": true,
"listChanged": true
},
"extensions": {
"io.modelcontextprotocol/skills": {
"directoryRead": true
}
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
8 advertised
worms_list_reference — Worms List Reference
List supported external identifier systems, a non-exhaustive taxonomic-status guide grouped as accepted, unaccepted, uncertain, or technical, environment-flag semantics, observed worms_get_distributions filter values, live taxonomic ranks, or live trait definitions. Resume nextResultOffset as resultOffset with the same topic. Identifier codes, statuses, environment flags, and distribution terms are available offline. A record status can be the specific reason itself, such as junior subjective synonym, rather than unaccepted. IUCN identifiers are not threat categories; null flags mean not recorded. Trait definitions retain complete-tree preorder indices across pages; parents may be on earlier pages.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"topic"
],
"properties": {
"topic": {
"enum": [
"external_id_types",
"statuses",
"environment_flags",
"distribution_terms",
"ranks",
"trait_types"
],
"type": "string",
"description": "Reference topic: external_id_types, statuses, environment_flags, distribution_terms, ranks, or trait_types."
},
"resultOffset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based local position; resubmit unchanged selectors and options."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"resultOffset",
"returnedCount",
"totalCount",
"nextResultOffset",
"byteBudget",
"budgetLimited",
"oversizedItem",
"topic",
"entries",
"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": [
"upstream_rejected",
"upstream_rate_limited",
"upstream_access_denied",
"upstream_unavailable",
"upstream_timeout",
"invalid_upstream_response",
"response_too_large"
],
"description": "Machine-readable failure mode. Declared by this tool: `upstream_rejected`: HTTP 400/422 rejected the inputs. `upstream_rate_limited`: Upstream rate limit or local queue overflow. `upstream_access_denied`: Keyless upstream denies access. `upstream_unavailable`: Network, server, or HTML failure. `upstream_timeout`: Request or whole-tool deadline expired. `invalid_upstream_response`: Malformed or incompatible upstream response. `response_too_large`: Upstream response exceeds 8 MiB. 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": {}
},
"topic": {
"enum": [
"external_id_types",
"statuses",
"environment_flags",
"distribution_terms",
"ranks",
"trait_types"
],
"type": "string",
"description": "Requested reference topic."
},
"notice": {
"type": "string",
"description": "Guidance for empty live references."
},
"entries": {
"type": "array",
"items": {
"anyOf": [
{
"type": "object",
"required": [
"code",
"label",
"description"
],
"properties": {
"code": {
"type": "string",
"description": "External identifier code."
},
"label": {
"type": "string",
"description": "System name."
},
"description": {
"type": "string",
"description": "Identifier semantics."
}
},
"description": "External identifier vocabulary entry.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"value",
"description",
"group"
],
"properties": {
"group": {
"enum": [
"accepted",
"unaccepted",
"uncertain",
"technical"
],
"type": "string",
"description": "accepted (name in use), unaccepted (follow validAphiaId to the accepted name), uncertain (validAphiaId is the record itself or null), or technical (editorial state)."
},
"value": {
"type": "string",
"description": "Status value as WoRMS records it."
},
"description": {
"type": "string",
"description": "One-line meaning and how to read validAphiaId."
}
},
"description": "Non-exhaustive status vocabulary entry.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"field",
"description",
"upstreamValues",
"interpretation"
],
"properties": {
"field": {
"type": "string",
"description": "Environment flag."
},
"description": {
"type": "string",
"description": "Flag semantics."
},
"interpretation": {
"type": "object",
"required": [
"zero",
"one",
"null"
],
"properties": {
"one": {
"type": "string",
"description": "Meaning of one."
},
"null": {
"type": "string",
"description": "Meaning of null."
},
"zero": {
"type": "string",
"description": "Meaning of zero."
}
},
"description": "Tri-state interpretation.",
"additionalProperties": false
},
"upstreamValues": {
"type": "array",
"items": false,
"maxItems": 3,
"minItems": 3,
"description": "Known upstream values.",
"prefixItems": [
{
"type": "number",
"const": 0
},
{
"type": "number",
"const": 1
},
{
"type": "null"
}
]
}
},
"description": "Environment flag vocabulary entry.",
"additionalProperties": false
},
{
"type": "object",
"properties": {
"kingdom": {
"type": [
"string",
"null"
],
"description": "Kingdom name."
},
"taxonRank": {
"type": [
"string",
"null"
],
"description": "Rank name."
},
"taxonRankId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Rank identifier."
},
"kingdomAphiaId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Kingdom identifier."
}
},
"description": "Live rank vocabulary entry.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"nodeIndex",
"parentIndex",
"depth"
],
"properties": {
"depth": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Tree depth."
},
"inputId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Integer identifier."
},
{
"type": "string",
"pattern": "^\\d+$",
"description": "Numeric string identifier preserved verbatim."
},
{
"type": "null",
"description": "Unknown identifier."
}
],
"description": "Input data type identifier."
},
"nodeIndex": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Preorder node index."
},
"categoryId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Integer identifier."
},
{
"type": "string",
"pattern": "^\\d+$",
"description": "Numeric string identifier preserved verbatim."
},
{
"type": "null",
"description": "Unknown identifier."
}
],
"description": "Attribute category identifier."
},
"parentIndex": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Parent index, null at roots."
},
"measurementType": {
"type": [
"string",
"null"
],
"description": "Measurement description."
},
"measurementTypeId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Integer identifier."
},
{
"type": "string",
"pattern": "^\\d+$",
"description": "Numeric string identifier preserved verbatim."
},
{
"type": "null",
"description": "Unknown identifier."
}
],
"description": "Measurement type identifier."
}
},
"description": "Live trait-key vocabulary entry.",
"additionalProperties": false
},
{
"type": "object",
"required": [
"field",
"description",
"observedValues"
],
"properties": {
"field": {
"type": "string",
"description": "worms_get_distributions filter field."
},
"description": {
"type": "string",
"description": "Matching rule and coverage of the observed values."
},
"observedValues": {
"type": "array",
"items": {
"type": "string"
},
"description": "Recorded values seen in WoRMS distributions; non-exhaustive."
}
},
"description": "Distribution filter vocabulary entry.",
"additionalProperties": false
}
],
"description": "Topic-specific reference entry."
},
"description": "Whole reference entries in this segment with topic-specific fields."
},
"byteBudget": {
"type": "number",
"const": 24000,
"description": "Complete serialized response byte target."
},
"totalCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Known local sequence length before pagination."
},
"attribution": {
"type": "object",
"required": [
"citation",
"sourceUrl",
"accessedDate"
],
"properties": {
"citation": {
"type": "string",
"description": "WoRMS attribution."
},
"sourceUrl": {
"type": "string",
"description": "Canonical source URL."
},
"accessedDate": {
"type": "string",
"description": "UTC access date."
}
},
"description": "WoRMS source attribution.",
"additionalProperties": false
},
"resultOffset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Zero-based starting position in the complete local sequence."
},
"budgetLimited": {
"type": "boolean",
"description": "Whether the byte budget ended this local page early."
},
"oversizedItem": {
"type": "boolean",
"description": "One indivisible scientific item exceeds the target; retained intact with forward progress."
},
"requiredBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Serialized paired-surface result bytes for an oversized item, excluding transport-added metadata."
},
"returnedCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Whole scientific items returned on this segment."
},
"nextResultOffset": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Next local position; null when consumed."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}worms_resolve_taxon — Worms Resolve Taxon
Resolve exact or explicitly fuzzy scientific names, or search one vernacular name as a whole recorded common name or, with vernacularMatch: "contains", as part of one. Names default to marine-or-brackish and extant taxa; vernacular cannot filter. Resume scientific segments with nextInputOffset and nextMatchOffset against unchanged names and options; inputIndex preserves duplicates and partialGroup identifies split groups. For vernacular, consume nextResultOffset within the same upstream offset before advancing page.nextOffset and resetting resultOffset to zero. Full 50-match upstream groups remain completeness-unknown; accepted-name fields do not choose an ambiguous match.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"fuzzy": {
"type": "boolean",
"default": false,
"description": "Explicit fuzzy scientific-name matching; unavailable for vernacular."
},
"names": {
"type": "array",
"items": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Nonempty name, at most 512 characters."
},
"minItems": 1,
"description": "Nonempty original scientific-name list, with no total-input ceiling; at most 50 positions fetched per call. Resubmit unchanged with continuation offsets, preserving duplicates."
},
"offset": {
"type": "integer",
"default": 1,
"maximum": 9007199254740941,
"description": "Vernacular only: one-based upstream starting record, advancing by 50; default 1. Scientific names accept only 1.",
"exclusiveMinimum": 0
},
"extantOnly": {
"type": "boolean",
"default": true,
"description": "Filter scientific names to extant taxa; vernacular cannot filter and rejects false."
},
"marineOnly": {
"type": "boolean",
"default": true,
"description": "Filter scientific names to taxa WoRMS flags marine or brackish; false also admits freshwater-only and terrestrial taxa. Vernacular cannot filter and rejects false."
},
"vernacular": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Common name, mutually exclusive with names; blank means unset."
},
"inputOffset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based original scientific names position; inactive for vernacular."
},
"matchOffset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based match within the scientific-name group at inputOffset; inactive for vernacular."
},
"resultOffset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based match within the fetched vernacular page; keep upstream offset until consumed. Inactive for scientific names."
},
"vernacularMatch": {
"enum": [
"exact",
"contains"
],
"type": "string",
"default": "exact",
"description": "Vernacular only: exact matches a whole recorded common name; contains matches every recorded common name containing the text, such as grouper in Nassau grouper. Names accept only exact; blank means exact."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"byteBudget",
"budgetLimited",
"oversizedItem",
"nextInputOffset",
"nextMatchOffset",
"deferredCount",
"mode",
"results",
"attribution",
"echo"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"echo": {
"type": "object",
"required": [
"marineOnly",
"extantOnly",
"fuzzy"
],
"properties": {
"fuzzy": {
"type": "boolean",
"description": "Effective fuzzy mode."
},
"offset": {
"type": "number",
"description": "Vernacular offset."
},
"extantOnly": {
"type": [
"boolean",
"null"
],
"description": "Effective extant filter, null when unsupported."
},
"marineOnly": {
"type": [
"boolean",
"null"
],
"description": "Effective marine filter, null when unsupported."
},
"matchAuthority": {
"type": "boolean",
"description": "Fuzzy authority matching, always false."
},
"vernacularMatch": {
"enum": [
"exact",
"contains"
],
"type": "string",
"description": "Effective vernacular match mode."
}
},
"description": "Effective matching options.",
"additionalProperties": false
},
"mode": {
"enum": [
"exact",
"fuzzy",
"vernacular"
],
"type": "string",
"description": "Matching mode."
},
"page": {
"type": "object",
"required": [
"offset",
"pageSize",
"returnedCount",
"hasMore",
"nextOffset"
],
"properties": {
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "One-based start."
},
"hasMore": {
"anyOf": [
{
"type": "boolean",
"const": false
},
{
"type": "null"
}
],
"description": "False if exhausted; null if unknown."
},
"pageSize": {
"type": "number",
"const": 50,
"description": "Upstream page size."
},
"nextOffset": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Candidate next offset, or null."
},
"returnedCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Rows returned."
}
},
"description": "Vernacular page only.",
"additionalProperties": false
},
"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": [
"upstream_rejected",
"upstream_rate_limited",
"upstream_access_denied",
"upstream_unavailable",
"upstream_timeout",
"invalid_upstream_response",
"response_too_large",
"invalid_selector",
"unsupported_mode_options"
],
"description": "Machine-readable failure mode. Declared by this tool: `upstream_rejected`: HTTP 400/422 rejected the inputs. `upstream_rate_limited`: Upstream rate limit or local queue overflow. `upstream_access_denied`: Keyless upstream denies access. `upstream_unavailable`: Network, server, or HTML failure. `upstream_timeout`: Request or whole-tool deadline expired. `invalid_upstream_response`: Malformed or incompatible upstream response. `response_too_large`: Upstream response exceeds 8 MiB. `invalid_selector`: Both or neither selector was supplied, or vernacular is exactly \".\" or \"..\". `unsupported_mode_options`: Options cannot apply to the selected matching mode. 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": "Empty vernacular-page guidance, or the inputIndex of each returned 50-match scientific-name group, whose completeness is unknown, with the change that narrows it."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"inputIndex",
"matchOffset",
"partialGroup",
"input",
"matches",
"guidance"
],
"properties": {
"input": {
"type": "string",
"description": "Submitted name."
},
"matches": {
"type": "array",
"items": {
"type": "object",
"required": [
"aphiaId"
],
"properties": {
"url": {
"type": [
"string",
"null"
],
"description": "Upstream taxon URL."
},
"rank": {
"type": [
"string",
"null"
],
"description": "Open taxonomic rank."
},
"status": {
"type": [
"string",
"null"
],
"description": "Open taxonomic status."
},
"aphiaId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
"authority": {
"type": [
"string",
"null"
],
"description": "Authorship."
},
"matchType": {
"type": [
"string",
"null"
],
"description": "Upstream match type."
},
"validName": {
"type": [
"string",
"null"
],
"description": "Accepted scientific name."
},
"validAphiaId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Accepted taxon identifier."
},
"scientificname": {
"type": [
"string",
"null"
],
"description": "Scientific name."
},
"unacceptreason": {
"type": [
"string",
"null"
],
"description": "Reason for nonacceptance."
},
"validAuthority": {
"type": [
"string",
"null"
],
"description": "Accepted authorship."
}
},
"description": "Scientific name match.",
"additionalProperties": false
},
"description": "All returned matches in source order."
},
"guidance": {
"type": [
"string",
"null"
],
"description": "Recovery guidance for a miss."
},
"inputIndex": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Original zero-based input position."
},
"matchOffset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Starting match position in the original group."
},
"partialGroup": {
"type": "boolean",
"description": "This segment does not contain the entire fetched group."
}
},
"description": "Positional name result.",
"additionalProperties": false
},
"description": "One result per processed input."
},
"byteBudget": {
"type": "number",
"const": 24000,
"description": "Complete serialized response byte target."
},
"totalCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Known local sequence length before pagination."
},
"attribution": {
"type": "object",
"required": [
"citation",
"sourceUrl",
"accessedDate"
],
"properties": {
"citation": {
"type": "string",
"description": "WoRMS attribution."
},
"sourceUrl": {
"type": "string",
"description": "Canonical source URL."
},
"accessedDate": {
"type": "string",
"description": "UTC access date."
}
},
"description": "WoRMS source attribution.",
"additionalProperties": false
},
"resultOffset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Zero-based starting position in the complete local sequence."
},
"budgetLimited": {
"type": "boolean",
"description": "Whether the byte budget ended this local page early."
},
"deferredCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Original input positions not fully consumed."
},
"oversizedItem": {
"type": "boolean",
"description": "One indivisible scientific item exceeds the target; retained intact with forward progress."
},
"requiredBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Serialized paired-surface result bytes for an oversized item, excluding transport-added metadata."
},
"returnedCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Whole scientific items returned on this segment."
},
"nextInputOffset": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Next original names position; resubmit unchanged names and options."
},
"nextMatchOffset": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Next match position at nextInputOffset; null when names consumed."
},
"nextResultOffset": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Next local position; null when consumed."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}worms_get_taxon — Worms Get Taxon
Retrieve full Aphia records by numeric IDs or canonical WoRMS LSIDs in byte-budgeted segments. Resume nextInputOffset as inputOffset using unchanged aphiaIds and options; inputIndex preserves duplicate and missing positions. includeVernaculars (common names) or includeSources (original description, basis of record, and other sources) requires one submitted ID, one of the two per call; resume nextVernacularOffset as vernacularOffset or nextSourceOffset as sourceOffset, repeating the full primary record. sourceUse filters whole use values ignoring case before sourceOffset; populated values are not trimmed. Successful source results report sourceTotalCount before slicing and unfilteredSourceCount only with an effective filter. Optional failure retains the record without source counts; unknown facts remain omitted or null.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"aphiaIds"
],
"properties": {
"aphiaIds": {
"type": "array",
"items": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
{
"type": "string",
"description": "Decimal AphiaID or canonical urn:lsid:marinespecies.org:taxname:<AphiaID>."
}
],
"description": "Positive safe-integer AphiaID, decimal string, or canonical urn:lsid:marinespecies.org:taxname:<AphiaID>; outputs remain numeric."
},
"minItems": 1,
"description": "Nonempty original AphiaID list, with no total-input ceiling; at most 50 positions fetched per call. Resubmit unchanged with inputOffset, without deduplicating."
},
"sourceUse": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Case-insensitive whole-value source use, such as original description; populated values are not trimmed, blanks omitted. Filters before sourceOffset; inactive without includeSources."
},
"inputOffset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based local position; resubmit unchanged selectors and options."
},
"sourceOffset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based position in the sourceUse-selected list for the singleton ID; repeat unchanged options. Inactive without includeSources."
},
"includeSources": {
"type": "boolean",
"default": false,
"description": "Retrieve the taxon sources, such as its original description and basis of record; requires exactly one submitted ID and cannot combine with includeVernaculars."
},
"vernacularOffset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based common-name position for the singleton ID; repeat unchanged options. Inactive without includeVernaculars."
},
"includeVernaculars": {
"type": "boolean",
"default": false,
"description": "Retrieve common names; requires exactly one submitted ID."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"byteBudget",
"budgetLimited",
"oversizedItem",
"nextInputOffset",
"deferredCount",
"nextVernacularOffset",
"nextSourceOffset",
"results",
"attribution",
"echo"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"echo": {
"type": "object",
"required": [
"includeVernaculars",
"includeSources"
],
"properties": {
"sourceUse": {
"type": "string",
"description": "Effective source-use filter with its original value; only with includeSources."
},
"includeSources": {
"type": "boolean",
"description": "Effective source enrichment option."
},
"includeVernaculars": {
"type": "boolean",
"description": "Effective common-name enrichment option."
}
},
"description": "Effective options.",
"additionalProperties": false
},
"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": [
"upstream_rejected",
"upstream_rate_limited",
"upstream_access_denied",
"upstream_unavailable",
"upstream_timeout",
"invalid_upstream_response",
"response_too_large",
"vernacular_batch",
"sources_batch",
"enrichment_conflict"
],
"description": "Machine-readable failure mode. Declared by this tool: `upstream_rejected`: HTTP 400/422 rejected the inputs. `upstream_rate_limited`: Upstream rate limit or local queue overflow. `upstream_access_denied`: Keyless upstream denies access. `upstream_unavailable`: Network, server, or HTML failure. `upstream_timeout`: Request or whole-tool deadline expired. `invalid_upstream_response`: Malformed or incompatible upstream response. `response_too_large`: Upstream response exceeds 8 MiB. `vernacular_batch`: Common names requested for multiple submitted IDs. `sources_batch`: Sources requested for multiple submitted IDs. `enrichment_conflict`: Common names and sources requested in one call. 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 for deferred work."
},
"results": {
"type": "array",
"items": {
"type": "object",
"required": [
"inputIndex",
"requestedAphiaId",
"found",
"record",
"guidance"
],
"properties": {
"found": {
"type": "boolean",
"description": "Whether a record exists."
},
"record": {
"anyOf": [
{
"type": "object",
"required": [
"aphiaId"
],
"properties": {
"url": {
"type": [
"string",
"null"
],
"description": "Upstream taxon URL."
},
"lsid": {
"type": [
"string",
"null"
],
"description": "Life science identifier."
},
"rank": {
"type": [
"string",
"null"
],
"description": "Open taxonomic rank."
},
"class": {
"type": [
"string",
"null"
],
"description": "Class."
},
"genus": {
"type": [
"string",
"null"
],
"description": "Genus."
},
"order": {
"type": [
"string",
"null"
],
"description": "Order."
},
"family": {
"type": [
"string",
"null"
],
"description": "Family."
},
"phylum": {
"type": [
"string",
"null"
],
"description": "Phylum."
},
"status": {
"type": [
"string",
"null"
],
"description": "Open taxonomic status."
},
"aphiaId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
"kingdom": {
"type": [
"string",
"null"
],
"description": "Kingdom."
},
"citation": {
"type": [
"string",
"null"
],
"description": "Unmodified record citation."
},
"isMarine": {
"type": [
"boolean",
"null"
],
"description": "Marine flag; null means unknown."
},
"modified": {
"type": [
"string",
"null"
],
"description": "Unmodified modification date."
},
"authority": {
"type": [
"string",
"null"
],
"description": "Authorship."
},
"isExtinct": {
"type": [
"boolean",
"null"
],
"description": "Extinct flag."
},
"matchType": {
"type": [
"string",
"null"
],
"description": "Upstream match type."
},
"validName": {
"type": [
"string",
"null"
],
"description": "Accepted scientific name."
},
"isBrackish": {
"type": [
"boolean",
"null"
],
"description": "Brackish flag."
},
"taxonRankId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Rank identifier."
},
"isFreshwater": {
"type": [
"boolean",
"null"
],
"description": "Freshwater flag."
},
"validAphiaId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Accepted taxon identifier."
},
"isTerrestrial": {
"type": [
"boolean",
"null"
],
"description": "Terrestrial flag."
},
"parentAphiaId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Parent usage identifier."
},
"scientificname": {
"type": [
"string",
"null"
],
"description": "Scientific name."
},
"unacceptreason": {
"type": [
"string",
"null"
],
"description": "Reason for nonacceptance."
},
"validAuthority": {
"type": [
"string",
"null"
],
"description": "Accepted authorship."
},
"originalAphiaId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Original usage identifier."
}
},
"description": "Documented Aphia record; omitted or null scientific facts and flags are unknown.",
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Full documented taxon record, or null."
},
"sources": {
"type": "array",
"items": {
"type": "object",
"properties": {
"doi": {
"type": [
"string",
"null"
],
"description": "Source DOI."
},
"url": {
"type": [
"string",
"null"
],
"description": "WoRMS source detail URL."
},
"use": {
"type": [
"string",
"null"
],
"description": "How the source supports the name, such as original description or basis of record; open vocabulary."
},
"link": {
"type": [
"string",
"null"
],
"description": "External link to the source."
},
"page": {
"type": [
"string",
"null"
],
"description": "Cited page."
},
"fulltext": {
"type": [
"string",
"null"
],
"description": "Full-text URL."
},
"sourceId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "AphiaSource identifier."
},
"reference": {
"type": [
"string",
"null"
],
"description": "Unmodified bibliographic reference."
}
},
"description": "Taxon source record; omitted or null fields are unknown.",
"additionalProperties": false
},
"description": "Sources in upstream order, only when requested and successfully retrieved."
},
"guidance": {
"type": [
"string",
"null"
],
"description": "Next step for absent records."
},
"inputIndex": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Original zero-based submitted ID position."
},
"vernaculars": {
"type": "array",
"items": {
"type": "object",
"properties": {
"language": {
"type": [
"string",
"null"
],
"description": "Language name."
},
"vernacular": {
"type": [
"string",
"null"
],
"description": "Common name."
},
"languageCode": {
"type": [
"string",
"null"
],
"description": "Language code."
}
},
"description": "Recorded common name.",
"additionalProperties": false
},
"description": "Common names only when requested and successfully retrieved."
},
"sourcesError": {
"type": "object",
"required": [
"reason",
"code",
"message",
"recovery",
"retryable"
],
"properties": {
"code": {
"type": "number",
"description": "JSON-RPC code."
},
"reason": {
"type": "string",
"description": "Classified reason."
},
"message": {
"type": "string",
"description": "Safe failure message."
},
"recovery": {
"type": "string",
"description": "Recovery guidance."
},
"retryable": {
"type": "boolean",
"description": "Whether retry can succeed."
}
},
"description": "Optional source retrieval failure.",
"additionalProperties": false
},
"vernacularError": {
"type": "object",
"required": [
"reason",
"code",
"message",
"recovery",
"retryable"
],
"properties": {
"code": {
"type": "number",
"description": "JSON-RPC code."
},
"reason": {
"type": "string",
"description": "Classified reason."
},
"message": {
"type": "string",
"description": "Safe failure message."
},
"recovery": {
"type": "string",
"description": "Recovery guidance."
},
"retryable": {
"type": "boolean",
"description": "Whether retry can succeed."
}
},
"description": "Optional common-name retrieval failure.",
"additionalProperties": false
},
"requestedAphiaId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
"sourceTotalCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Complete selected source count, before sourceOffset and the byte budget; only after a successful source read."
},
"unfilteredSourceCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Complete source count before an effective sourceUse filter; only after a successful filtered source read."
}
},
"description": "Positional taxon retrieval result.",
"additionalProperties": false
},
"description": "One positional result per processed ID."
},
"byteBudget": {
"type": "number",
"const": 24000,
"description": "Complete serialized response byte target."
},
"attribution": {
"type": "object",
"required": [
"citation",
"sourceUrl",
"accessedDate"
],
"properties": {
"citation": {
"type": "string",
"description": "WoRMS attribution."
},
"sourceUrl": {
"type": "string",
"description": "Canonical source URL."
},
"accessedDate": {
"type": "string",
"description": "UTC access date."
}
},
"description": "WoRMS source attribution.",
"additionalProperties": false
},
"budgetLimited": {
"type": "boolean",
"description": "Whether the byte budget ended this local page early."
},
"deferredCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Number of original ID positions still deferred."
},
"oversizedItem": {
"type": "boolean",
"description": "One indivisible scientific item exceeds the target; retained intact with forward progress."
},
"requiredBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Serialized paired-surface result bytes for an oversized item, excluding transport-added metadata."
},
"nextInputOffset": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Resume position in the unchanged original aphiaIds; null when consumed."
},
"nextSourceOffset": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Resume sources for the same singleton record; null when consumed or not requested."
},
"nextVernacularOffset": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Resume common names for the same singleton record; null when consumed or not requested."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}worms_get_classification — Worms Get Classification
Retrieve root-to-tip classification and optional direct children for an AphiaID or canonical WoRMS LSID. resultOffset indexes lineage followed by fetched children; consume nextResultOffset with unchanged options and upstream offset before advancing page.nextOffset and resetting resultOffset to zero. Missing ranks remain unknown; child offset and filters are inactive without includeChildren. A full fetched 50-row child page has uncertain continuation and can lead to an empty page. The submitted ID keeps its own recorded lineage; a notice names its linked accepted ID, distinguishing an accepted alternative representation from its preferred ID.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"aphiaId"
],
"properties": {
"offset": {
"type": "integer",
"default": 1,
"maximum": 9007199254740941,
"description": "One-based starting record, advancing by 50; default 1.",
"exclusiveMinimum": 0
},
"aphiaId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
{
"type": "string",
"description": "Decimal AphiaID or canonical urn:lsid:marinespecies.org:taxname:<AphiaID>."
}
],
"description": "Positive safe-integer AphiaID, decimal string, or canonical urn:lsid:marinespecies.org:taxname:<AphiaID>; outputs remain numeric."
},
"extantOnly": {
"type": "boolean",
"default": true,
"description": "Extant children only; inactive without includeChildren."
},
"marineOnly": {
"type": "boolean",
"default": true,
"description": "Marine or brackish children only; inactive without includeChildren."
},
"resultOffset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based position in lineage followed by fetched children; keep upstream offset unchanged until nextResultOffset is null."
},
"includeChildren": {
"type": "boolean",
"default": false,
"description": "Also fetch one page of direct children."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"resultOffset",
"returnedCount",
"totalCount",
"nextResultOffset",
"byteBudget",
"budgetLimited",
"oversizedItem",
"aphiaId",
"found",
"ranks",
"guidance",
"attribution",
"echo"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"echo": {
"type": "object",
"required": [
"includeChildren",
"marineOnly",
"extantOnly",
"offset"
],
"properties": {
"offset": {
"type": "number",
"description": "Child starting offset."
},
"extantOnly": {
"type": "boolean",
"description": "Child extant filter."
},
"marineOnly": {
"type": "boolean",
"description": "Child marine filter."
},
"includeChildren": {
"type": "boolean",
"description": "Whether children requested."
}
},
"description": "Effective options; child-only options inactive when includeChildren is false.",
"additionalProperties": false
},
"page": {
"type": "object",
"required": [
"offset",
"pageSize",
"returnedCount",
"hasMore",
"nextOffset"
],
"properties": {
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "One-based start."
},
"hasMore": {
"anyOf": [
{
"type": "boolean",
"const": false
},
{
"type": "null"
}
],
"description": "False if exhausted; null if unknown."
},
"pageSize": {
"type": "number",
"const": 50,
"description": "Upstream page size."
},
"nextOffset": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Candidate next offset, or null."
},
"returnedCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Rows returned."
}
},
"description": "Children pagination only.",
"additionalProperties": false
},
"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": [
"upstream_rejected",
"upstream_rate_limited",
"upstream_access_denied",
"upstream_unavailable",
"upstream_timeout",
"invalid_upstream_response",
"response_too_large"
],
"description": "Machine-readable failure mode. Declared by this tool: `upstream_rejected`: HTTP 400/422 rejected the inputs. `upstream_rate_limited`: Upstream rate limit or local queue overflow. `upstream_access_denied`: Keyless upstream denies access. `upstream_unavailable`: Network, server, or HTML failure. `upstream_timeout`: Request or whole-tool deadline expired. `invalid_upstream_response`: Malformed or incompatible upstream response. `response_too_large`: Upstream response exceeds 8 MiB. 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": {}
},
"found": {
"type": "boolean",
"description": "Whether classification exists."
},
"ranks": {
"type": "array",
"items": {
"type": "object",
"required": [
"aphiaId"
],
"properties": {
"rank": {
"type": [
"string",
"null"
],
"description": "Open taxonomic rank."
},
"aphiaId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
"scientificname": {
"type": [
"string",
"null"
],
"description": "Scientific name."
}
},
"description": "Classification node.",
"additionalProperties": false
},
"description": "This segment of the root-to-tip lineage."
},
"notice": {
"type": "string",
"description": "Linked accepted/preferred-AphiaID and empty-children-page guidance, in that order."
},
"aphiaId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
"children": {
"type": "array",
"items": {
"type": "object",
"required": [
"aphiaId"
],
"properties": {
"rank": {
"type": [
"string",
"null"
],
"description": "Open taxonomic rank."
},
"status": {
"type": [
"string",
"null"
],
"description": "Open taxonomic status."
},
"aphiaId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
"scientificname": {
"type": [
"string",
"null"
],
"description": "Scientific name."
}
},
"description": "Direct child taxon.",
"additionalProperties": false
},
"description": "One page of direct children when requested and retrieved."
},
"guidance": {
"type": [
"string",
"null"
],
"description": "Next step for absent classification."
},
"byteBudget": {
"type": "number",
"const": 24000,
"description": "Complete serialized response byte target."
},
"totalCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Known local sequence length before pagination."
},
"attribution": {
"type": "object",
"required": [
"citation",
"sourceUrl",
"accessedDate"
],
"properties": {
"citation": {
"type": "string",
"description": "WoRMS attribution."
},
"sourceUrl": {
"type": "string",
"description": "Canonical source URL."
},
"accessedDate": {
"type": "string",
"description": "UTC access date."
}
},
"description": "WoRMS source attribution.",
"additionalProperties": false
},
"statusError": {
"type": "object",
"required": [
"reason",
"code",
"message",
"recovery",
"retryable"
],
"properties": {
"code": {
"type": "number",
"description": "JSON-RPC code."
},
"reason": {
"type": "string",
"description": "Classified reason."
},
"message": {
"type": "string",
"description": "Safe failure message."
},
"recovery": {
"type": "string",
"description": "Recovery guidance."
},
"retryable": {
"type": "boolean",
"description": "Whether retry can succeed."
}
},
"description": "Failed taxonomic-status read; evidence is unaffected, but whether the AphiaID is its accepted name is unknown.",
"additionalProperties": false
},
"resultOffset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Zero-based starting position in the complete local sequence."
},
"budgetLimited": {
"type": "boolean",
"description": "Whether the byte budget ended this local page early."
},
"childrenError": {
"type": "object",
"required": [
"reason",
"code",
"message",
"recovery",
"retryable"
],
"properties": {
"code": {
"type": "number",
"description": "JSON-RPC code."
},
"reason": {
"type": "string",
"description": "Classified reason."
},
"message": {
"type": "string",
"description": "Safe failure message."
},
"recovery": {
"type": "string",
"description": "Recovery guidance."
},
"retryable": {
"type": "boolean",
"description": "Whether retry can succeed."
}
},
"description": "Optional children retrieval failure.",
"additionalProperties": false
},
"oversizedItem": {
"type": "boolean",
"description": "One indivisible scientific item exceeds the target; retained intact with forward progress."
},
"requiredBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Serialized paired-surface result bytes for an oversized item, excluding transport-added metadata."
},
"returnedCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Whole scientific items returned on this segment."
},
"nextResultOffset": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Next local position; null when consumed."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}worms_get_synonyms — Worms Get Synonyms
Retrieve synonyms for the accepted taxon linked from an AphiaID obtained with worms_resolve_taxon. Consume nextResultOffset within the same upstream offset before advancing page.nextOffset and resetting resultOffset to zero. A present name without an accepted ID has no synonym lookup; inspect it with worms_get_taxon. A full fetched 50-row page has uncertain continuation and may lead to an empty page.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"aphiaId"
],
"properties": {
"offset": {
"type": "integer",
"default": 1,
"maximum": 9007199254740941,
"description": "One-based starting record, advancing by 50; default 1.",
"exclusiveMinimum": 0
},
"aphiaId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
{
"type": "string",
"description": "Decimal AphiaID or canonical urn:lsid:marinespecies.org:taxname:<AphiaID>."
}
],
"description": "Positive safe-integer AphiaID, decimal string, or canonical urn:lsid:marinespecies.org:taxname:<AphiaID>; outputs remain numeric."
},
"resultOffset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based local position; resubmit unchanged selectors and options."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"resultOffset",
"returnedCount",
"totalCount",
"nextResultOffset",
"byteBudget",
"budgetLimited",
"oversizedItem",
"aphiaId",
"found",
"validAphiaId",
"synonyms",
"guidance",
"attribution",
"echo"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"echo": {
"type": "object",
"required": [
"offset"
],
"properties": {
"offset": {
"type": "number",
"description": "Requested one-based offset."
}
},
"description": "Effective pagination.",
"additionalProperties": false
},
"page": {
"type": "object",
"required": [
"offset",
"pageSize",
"returnedCount",
"hasMore",
"nextOffset"
],
"properties": {
"offset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "One-based start."
},
"hasMore": {
"anyOf": [
{
"type": "boolean",
"const": false
},
{
"type": "null"
}
],
"description": "False if exhausted; null if unknown."
},
"pageSize": {
"type": "number",
"const": 50,
"description": "Upstream page size."
},
"nextOffset": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Candidate next offset, or null."
},
"returnedCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Rows returned."
}
},
"description": "Pagination only when synonym retrieval occurred.",
"additionalProperties": false
},
"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": [
"upstream_rejected",
"upstream_rate_limited",
"upstream_access_denied",
"upstream_unavailable",
"upstream_timeout",
"invalid_upstream_response",
"response_too_large"
],
"description": "Machine-readable failure mode. Declared by this tool: `upstream_rejected`: HTTP 400/422 rejected the inputs. `upstream_rate_limited`: Upstream rate limit or local queue overflow. `upstream_access_denied`: Keyless upstream denies access. `upstream_unavailable`: Network, server, or HTML failure. `upstream_timeout`: Request or whole-tool deadline expired. `invalid_upstream_response`: Malformed or incompatible upstream response. `response_too_large`: Upstream response exceeds 8 MiB. 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": {}
},
"found": {
"type": "boolean",
"description": "Whether the supplied taxon exists."
},
"notice": {
"type": "string",
"description": "Guidance for an empty synonym page past the first."
},
"aphiaId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
"guidance": {
"type": [
"string",
"null"
],
"description": "Next step when no accepted taxon is known."
},
"synonyms": {
"type": "array",
"items": {
"type": "object",
"required": [
"aphiaId"
],
"properties": {
"status": {
"type": [
"string",
"null"
],
"description": "Open taxonomic status."
},
"aphiaId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
"authority": {
"type": [
"string",
"null"
],
"description": "Authorship."
},
"scientificname": {
"type": [
"string",
"null"
],
"description": "Scientific name."
},
"unacceptreason": {
"type": [
"string",
"null"
],
"description": "Reason for nonacceptance."
}
},
"description": "Synonym name usage.",
"additionalProperties": false
},
"description": "Whole synonym rows in this byte-budgeted segment."
},
"byteBudget": {
"type": "number",
"const": 24000,
"description": "Complete serialized response byte target."
},
"totalCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Known local sequence length before pagination."
},
"attribution": {
"type": "object",
"required": [
"citation",
"sourceUrl",
"accessedDate"
],
"properties": {
"citation": {
"type": "string",
"description": "WoRMS attribution."
},
"sourceUrl": {
"type": "string",
"description": "Canonical source URL."
},
"accessedDate": {
"type": "string",
"description": "UTC access date."
}
},
"description": "WoRMS source attribution.",
"additionalProperties": false
},
"resultOffset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Zero-based starting position in the complete local sequence."
},
"validAphiaId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "Accepted taxon ID when known."
},
"budgetLimited": {
"type": "boolean",
"description": "Whether the byte budget ended this local page early."
},
"oversizedItem": {
"type": "boolean",
"description": "One indivisible scientific item exceeds the target; retained intact with forward progress."
},
"requiredBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Serialized paired-surface result bytes for an oversized item, excluding transport-added metadata."
},
"returnedCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Whole scientific items returned on this segment."
},
"nextResultOffset": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Next local position; null when consumed."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}worms_get_distributions — Worms Get Distributions
Retrieve recorded distributions for an AphiaID or canonical WoRMS LSID in byte-budgeted segments; resume nextResultOffset as resultOffset with unchanged selectors and filters. WoRMS attaches records to individual name usages, so one AphiaID's rows can miss those of its synonyms: includeSynonyms combines the accepted taxon's rows with those of up to 10 synonyms per call, each row tagged sourceAphiaId; consume nextResultOffset before advancing synonymOffset to synonymUnion.nextSynonymOffset with resultOffset 0. Filters apply to the complete fetched set before pagination and combine by conjunction: recordStatus normalizes case and surrounding whitespace before exact matching; others use case-insensitive whole-value equality without trimming. Rows retain duplicates and source order; no rows does not prove biological or taxon absence. A notice names the linked accepted ID, distinguishing an accepted alternative representation from its preferred ID.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"aphiaId"
],
"properties": {
"aphiaId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
{
"type": "string",
"description": "Decimal AphiaID or canonical urn:lsid:marinespecies.org:taxname:<AphiaID>."
}
],
"description": "Positive safe-integer AphiaID, decimal string, or canonical urn:lsid:marinespecies.org:taxname:<AphiaID>; outputs remain numeric."
},
"occurrence": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Case-insensitive whole-value occurrence filter, such as Established; blank omitted. Observed values: worms_list_reference topic: distribution_terms."
},
"invasiveness": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Case-insensitive whole-value invasiveness filter, such as Invasive; blank omitted. Observed values: worms_list_reference topic: distribution_terms."
},
"recordStatus": {
"enum": [
"valid",
"doubtful",
"inaccurate"
],
"type": "string",
"description": "Record status valid, doubtful, or inaccurate; ignores case and surrounding whitespace; blank means no filter."
},
"resultOffset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based local position; resubmit unchanged selectors and options."
},
"synonymOffset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based synonym position; once nextResultOffset is null, resubmit synonymUnion.nextSynonymOffset here with resultOffset 0. Inactive without includeSynonyms."
},
"includeSynonyms": {
"type": "boolean",
"default": false,
"description": "Combine the accepted taxon's records with its synonyms', 10 synonyms per call; rows then carry sourceAphiaId."
},
"establishmentMeans": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Case-insensitive whole-value establishment filter, such as Alien; blank omitted. Observed values: worms_list_reference topic: distribution_terms."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"resultOffset",
"returnedCount",
"totalCount",
"nextResultOffset",
"byteBudget",
"budgetLimited",
"oversizedItem",
"aphiaId",
"unfilteredCount",
"filteredCount",
"distributions",
"attribution",
"echo"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"echo": {
"type": "object",
"properties": {
"occurrence": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Case-insensitive whole-value occurrence filter, such as Established; blank omitted. Observed values: worms_list_reference topic: distribution_terms."
},
"invasiveness": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Case-insensitive whole-value invasiveness filter, such as Invasive; blank omitted. Observed values: worms_list_reference topic: distribution_terms."
},
"recordStatus": {
"enum": [
"valid",
"doubtful",
"inaccurate"
],
"type": "string",
"description": "Record status valid, doubtful, or inaccurate; ignores case and surrounding whitespace; blank means no filter."
},
"establishmentMeans": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Case-insensitive whole-value establishment filter, such as Alien; blank omitted. Observed values: worms_list_reference topic: distribution_terms."
}
},
"description": "Only effective filters; recordStatus is canonical lowercase, other populated values are unchanged.",
"additionalProperties": false
},
"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": [
"upstream_rejected",
"upstream_rate_limited",
"upstream_access_denied",
"upstream_unavailable",
"upstream_timeout",
"invalid_upstream_response",
"response_too_large"
],
"description": "Machine-readable failure mode. Declared by this tool: `upstream_rejected`: HTTP 400/422 rejected the inputs. `upstream_rate_limited`: Upstream rate limit or local queue overflow. `upstream_access_denied`: Keyless upstream denies access. `upstream_unavailable`: Network, server, or HTML failure. `upstream_timeout`: Request or whole-tool deadline expired. `invalid_upstream_response`: Malformed or incompatible upstream response. `response_too_large`: Upstream response exceeds 8 MiB. 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": "Linked accepted/preferred-AphiaID and empty-evidence guidance, in that order."
},
"aphiaId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
"byteBudget": {
"type": "number",
"const": 24000,
"description": "Complete serialized response byte target."
},
"totalCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Known local sequence length before pagination."
},
"attribution": {
"type": "object",
"required": [
"citation",
"sourceUrl",
"accessedDate"
],
"properties": {
"citation": {
"type": "string",
"description": "WoRMS attribution."
},
"sourceUrl": {
"type": "string",
"description": "Canonical source URL."
},
"accessedDate": {
"type": "string",
"description": "UTC access date."
}
},
"description": "WoRMS source attribution.",
"additionalProperties": false
},
"statusError": {
"type": "object",
"required": [
"reason",
"code",
"message",
"recovery",
"retryable"
],
"properties": {
"code": {
"type": "number",
"description": "JSON-RPC code."
},
"reason": {
"type": "string",
"description": "Classified reason."
},
"message": {
"type": "string",
"description": "Safe failure message."
},
"recovery": {
"type": "string",
"description": "Recovery guidance."
},
"retryable": {
"type": "boolean",
"description": "Whether retry can succeed."
}
},
"description": "Failed taxonomic-status read; evidence is unaffected, but whether the AphiaID is its accepted name is unknown.",
"additionalProperties": false
},
"resultOffset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Zero-based starting position in the complete local sequence."
},
"synonymUnion": {
"type": "object",
"required": [
"acceptedAphiaId",
"synonymOffset",
"synonymAphiaIds",
"nextSynonymOffset",
"failedSynonyms"
],
"properties": {
"synonymOffset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Zero-based synonym position this window starts at."
},
"failedSynonyms": {
"type": "array",
"items": {
"type": "object",
"required": [
"aphiaId",
"error"
],
"properties": {
"error": {
"type": "object",
"required": [
"reason",
"code",
"message",
"recovery",
"retryable"
],
"properties": {
"code": {
"type": "number",
"description": "JSON-RPC code."
},
"reason": {
"type": "string",
"description": "Classified reason."
},
"message": {
"type": "string",
"description": "Safe failure message."
},
"recovery": {
"type": "string",
"description": "Recovery guidance."
},
"retryable": {
"type": "boolean",
"description": "Whether retry can succeed."
}
},
"description": "Classified distribution-read failure.",
"additionalProperties": false
},
"aphiaId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
}
},
"description": "Synonym whose records could not be read.",
"additionalProperties": false
},
"description": "Failed synonym reads; their records are absent from this window."
},
"acceptedAphiaId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "Accepted taxon whose records and synonyms are combined; null when none is linked."
},
"synonymAphiaIds": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
"description": "Synonyms in this window, in upstream order, failed reads included."
},
"nextSynonymOffset": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "synonymOffset for the next window once nextResultOffset is null; null when the synonym list is consumed. A window ending a full 50-row synonym page has uncertain continuation and can lead to an empty window."
}
},
"description": "Synonym union window; present only with includeSynonyms.",
"additionalProperties": false
},
"budgetLimited": {
"type": "boolean",
"description": "Whether the byte budget ended this local page early."
},
"distributions": {
"type": "array",
"items": {
"type": "object",
"properties": {
"latitude": {
"type": [
"number",
"null"
],
"description": "Recorded WGS84 latitude."
},
"locality": {
"type": [
"string",
"null"
],
"description": "Recorded locality."
},
"longitude": {
"type": [
"number",
"null"
],
"description": "Recorded WGS84 longitude."
},
"locationId": {
"type": [
"string",
"null"
],
"description": "Locality identifier."
},
"occurrence": {
"type": [
"string",
"null"
],
"description": "Recorded occurrence."
},
"typeStatus": {
"type": [
"string",
"null"
],
"description": "Type status."
},
"invasiveness": {
"type": [
"string",
"null"
],
"description": "Recorded invasiveness."
},
"recordStatus": {
"type": [
"string",
"null"
],
"description": "Distribution record status."
},
"qualityStatus": {
"type": [
"string",
"null"
],
"description": "Record quality status."
},
"sourceAphiaId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "AphiaID the record is attached to; present only with includeSynonyms.",
"exclusiveMinimum": 0
},
"higherGeography": {
"type": [
"string",
"null"
],
"description": "Broader recorded geography."
},
"higherGeographyId": {
"type": [
"string",
"null"
],
"description": "Broader geography identifier."
},
"establishmentMeans": {
"type": [
"string",
"null"
],
"description": "Recorded establishment means."
}
},
"description": "Recorded distribution evidence; omitted or null fields are unknown.",
"additionalProperties": false
},
"description": "Whole matching rows in this segment, in source order."
},
"filteredCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Rows passing every effective filter."
},
"oversizedItem": {
"type": "boolean",
"description": "One indivisible scientific item exceeds the target; retained intact with forward progress."
},
"requiredBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Serialized paired-surface result bytes for an oversized item, excluding transport-added metadata."
},
"returnedCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Whole scientific items returned on this segment."
},
"unfilteredCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "All recorded rows before filtering; with includeSynonyms, those of this window."
},
"nextResultOffset": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Next local position; null when consumed."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}worms_get_traits — Worms Get Traits
Retrieve recorded attributes for an AphiaID or canonical WoRMS LSID, including inherited attributes by default. Resume nextResultOffset as resultOffset with unchanged selectors and options. Whole rows retain original preorder nodeIndex and parentIndex across pages; parents may be on earlier pages. measurementType keeps each matching node with its subtree and ancestors, indices unchanged; totalCount counts that set and unfilteredCount the whole tree. Values, references and inheritance markers remain unchanged; on an accepted taxon WoRMS also returns attributes recorded on its synonyms whatever includeInherited is set to, marked by inheritedFrom. A notice names the linked accepted ID, distinguishing an accepted alternative representation from its preferred ID. Missing traits do not prove biological absence; IUCN list membership is not a threat category.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"aphiaId"
],
"properties": {
"aphiaId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
{
"type": "string",
"description": "Decimal AphiaID or canonical urn:lsid:marinespecies.org:taxname:<AphiaID>."
}
],
"description": "Positive safe-integer AphiaID, decimal string, or canonical urn:lsid:marinespecies.org:taxname:<AphiaID>; outputs remain numeric."
},
"resultOffset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based local position; resubmit unchanged selectors and options."
},
"measurementType": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Case-insensitive whole-value measurement type, not trimmed, e.g. Body size; blank means no filter. Names come from worms_list_reference with topic: trait_types."
},
"includeInherited": {
"type": "boolean",
"default": true,
"description": "Include attributes inherited from higher taxa; default true."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"resultOffset",
"returnedCount",
"totalCount",
"nextResultOffset",
"byteBudget",
"budgetLimited",
"oversizedItem",
"aphiaId",
"unfilteredCount",
"traits",
"attribution",
"echo"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"echo": {
"type": "object",
"required": [
"includeInherited"
],
"properties": {
"measurementType": {
"type": "string",
"description": "Effective measurementType filter with its original value."
},
"includeInherited": {
"type": "boolean",
"description": "Effective inheritance option."
}
},
"description": "Effective options.",
"additionalProperties": false
},
"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": [
"upstream_rejected",
"upstream_rate_limited",
"upstream_access_denied",
"upstream_unavailable",
"upstream_timeout",
"invalid_upstream_response",
"response_too_large"
],
"description": "Machine-readable failure mode. Declared by this tool: `upstream_rejected`: HTTP 400/422 rejected the inputs. `upstream_rate_limited`: Upstream rate limit or local queue overflow. `upstream_access_denied`: Keyless upstream denies access. `upstream_unavailable`: Network, server, or HTML failure. `upstream_timeout`: Request or whole-tool deadline expired. `invalid_upstream_response`: Malformed or incompatible upstream response. `response_too_large`: Upstream response exceeds 8 MiB. 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": "Linked accepted/preferred-AphiaID and absent-attribute guidance, in that order."
},
"traits": {
"type": "array",
"items": {
"type": "object",
"required": [
"nodeIndex",
"parentIndex",
"depth"
],
"properties": {
"depth": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Tree depth."
},
"aphiaId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Integer identifier."
},
{
"type": "string",
"pattern": "^\\d+$",
"description": "Numeric string preserved verbatim."
},
{
"type": "null",
"description": "Unknown identifier."
}
],
"description": "Recorded taxon identifier."
},
"sourceId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Integer identifier."
},
{
"type": "string",
"pattern": "^\\d+$",
"description": "Numeric string preserved verbatim."
},
{
"type": "null",
"description": "Unknown identifier."
}
],
"description": "Source identifier."
},
"nodeIndex": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Preorder node index."
},
"reference": {
"type": [
"string",
"null"
],
"description": "Unmodified source reference."
},
"categoryId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Integer identifier."
},
{
"type": "string",
"pattern": "^\\d+$",
"description": "Numeric string preserved verbatim."
},
{
"type": "null",
"description": "Unknown identifier."
}
],
"description": "Category identifier."
},
"parentType": {
"type": [
"string",
"null"
],
"description": "Immediate parent measurement type; null at roots."
},
"parentIndex": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Immediate parent index; null at roots."
},
"inheritedFrom": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Integer identifier."
},
{
"type": "string",
"pattern": "^\\d+$",
"description": "Numeric string preserved verbatim."
},
{
"type": "null",
"description": "Unknown identifier."
}
],
"description": "Known different source taxon (a higher taxon or a synonym), otherwise null."
},
"qualityStatus": {
"type": [
"string",
"null"
],
"description": "Recorded quality status."
},
"measurementType": {
"type": [
"string",
"null"
],
"description": "Measurement type."
},
"inheritedAphiaId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Integer identifier."
},
{
"type": "string",
"pattern": "^\\d+$",
"description": "Numeric string preserved verbatim."
},
{
"type": "null",
"description": "Unknown identifier."
}
],
"description": "Original inheritance marker."
},
"measurementValue": {
"type": [
"string",
"null"
],
"description": "Unmodified recorded value; no inferred units."
},
"measurementTypeId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Integer identifier."
},
{
"type": "string",
"pattern": "^\\d+$",
"description": "Numeric string preserved verbatim."
},
{
"type": "null",
"description": "Unknown identifier."
}
],
"description": "Measurement type identifier."
}
},
"description": "Trait evidence node with complete topology; omitted or null facts are unknown.",
"additionalProperties": false
},
"description": "This preorder segment; indices refer to the complete original tree."
},
"aphiaId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
"byteBudget": {
"type": "number",
"const": 24000,
"description": "Complete serialized response byte target."
},
"totalCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Known local sequence length before pagination."
},
"attribution": {
"type": "object",
"required": [
"citation",
"sourceUrl",
"accessedDate"
],
"properties": {
"citation": {
"type": "string",
"description": "WoRMS attribution."
},
"sourceUrl": {
"type": "string",
"description": "Canonical source URL."
},
"accessedDate": {
"type": "string",
"description": "UTC access date."
}
},
"description": "WoRMS source attribution.",
"additionalProperties": false
},
"statusError": {
"type": "object",
"required": [
"reason",
"code",
"message",
"recovery",
"retryable"
],
"properties": {
"code": {
"type": "number",
"description": "JSON-RPC code."
},
"reason": {
"type": "string",
"description": "Classified reason."
},
"message": {
"type": "string",
"description": "Safe failure message."
},
"recovery": {
"type": "string",
"description": "Recovery guidance."
},
"retryable": {
"type": "boolean",
"description": "Whether retry can succeed."
}
},
"description": "Failed taxonomic-status read; evidence is unaffected, but whether the AphiaID is its accepted name is unknown.",
"additionalProperties": false
},
"resultOffset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Zero-based starting position in the complete local sequence."
},
"budgetLimited": {
"type": "boolean",
"description": "Whether the byte budget ended this local page early."
},
"oversizedItem": {
"type": "boolean",
"description": "One indivisible scientific item exceeds the target; retained intact with forward progress."
},
"requiredBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Serialized paired-surface result bytes for an oversized item, excluding transport-added metadata."
},
"returnedCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Whole scientific items returned on this segment."
},
"unfilteredCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Nodes in the complete tree before the measurementType filter."
},
"nextResultOffset": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Next local position; null when consumed."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}worms_crosswalk_id — Worms Crosswalk Id
Crosswalk an AphiaID from worms_resolve_taxon to one or all nine external identifier systems, or reverse an externalId with required type to a full taxon record. Supply exactly one selector. Forward resultOffset indexes whole identifiers across types in requested order; resume nextResultOffset with unchanged selectors. typeTotals distinguishes successful absence from IDs on another segment; failed types remain separate. IDs stay opaque, including leading zeros and LSIDs. No IDs cannot establish taxon absence; IUCN identifiers are not threat categories.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"type": {
"enum": [
"algaebase",
"bold",
"dyntaxa",
"fishbase",
"iucn",
"lsid",
"ncbi",
"tsn",
"gisd"
],
"type": "string",
"description": "Required for reverse; omit forward to query all nine types. Codes ignore case and surrounding whitespace. See worms_list_reference external_id_types."
},
"aphiaId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
{
"type": "string",
"description": "Decimal AphiaID or canonical urn:lsid:marinespecies.org:taxname:<AphiaID>."
}
],
"description": "Forward numeric AphiaID, decimal string, or canonical WoRMS LSID; mutually exclusive with externalId."
},
"externalId": {
"type": "string",
"maxLength": 512,
"minLength": 1,
"description": "Reverse selector; opaque identifier up to 512 characters; blank omitted."
},
"resultOffset": {
"type": "integer",
"default": 0,
"maximum": 9007199254740991,
"minimum": 0,
"description": "Zero-based forward identifier position across types in requested order; repeat unchanged selectors. Inactive for reverse lookup."
}
},
"additionalProperties": false
}{
"type": "object",
"anyOf": [
{
"not": {
"required": [
"error"
]
},
"required": [
"resultOffset",
"returnedCount",
"totalCount",
"nextResultOffset",
"byteBudget",
"budgetLimited",
"oversizedItem",
"direction",
"aphiaId",
"found",
"ids",
"typeTotals",
"failedTypes",
"record",
"guidance",
"attribution",
"echo"
]
},
{
"required": [
"error"
]
}
],
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"ids": {
"type": "object",
"description": "This segment of answered types; consult typeTotals to distinguish empty evidence from IDs on another segment.",
"propertyNames": {
"enum": [
"algaebase",
"bold",
"dyntaxa",
"fishbase",
"iucn",
"lsid",
"ncbi",
"tsn",
"gisd"
],
"type": "string",
"description": "Identifier system: algaebase, bold, dyntaxa, fishbase, iucn, lsid, ncbi, tsn, or gisd; inspect worms_list_reference with topic: external_id_types."
},
"additionalProperties": {
"type": "array",
"items": {
"type": "string",
"description": "Opaque identifier."
},
"description": "IDs in upstream order."
}
},
"echo": {
"type": "object",
"properties": {
"type": {
"enum": [
"algaebase",
"bold",
"dyntaxa",
"fishbase",
"iucn",
"lsid",
"ncbi",
"tsn",
"gisd"
],
"type": "string",
"description": "Reverse system."
},
"externalId": {
"type": "string",
"description": "Reverse opaque identifier."
},
"requestedTypes": {
"type": "array",
"items": {
"enum": [
"algaebase",
"bold",
"dyntaxa",
"fishbase",
"iucn",
"lsid",
"ncbi",
"tsn",
"gisd"
],
"type": "string",
"description": "Identifier system: algaebase, bold, dyntaxa, fishbase, iucn, lsid, ncbi, tsn, or gisd; inspect worms_list_reference with topic: external_id_types."
},
"description": "Forward types in request order."
}
},
"description": "Effective crosswalk selectors.",
"additionalProperties": false
},
"type": {
"enum": [
"algaebase",
"bold",
"dyntaxa",
"fishbase",
"iucn",
"lsid",
"ncbi",
"tsn",
"gisd"
],
"type": "string",
"description": "Explicitly selected identifier system."
},
"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": [
"upstream_rejected",
"upstream_rate_limited",
"upstream_access_denied",
"upstream_unavailable",
"upstream_timeout",
"invalid_upstream_response",
"response_too_large",
"invalid_selector",
"missing_external_type"
],
"description": "Machine-readable failure mode. Declared by this tool: `upstream_rejected`: HTTP 400/422 rejected the inputs. `upstream_rate_limited`: Upstream rate limit or local queue overflow. `upstream_access_denied`: Keyless upstream denies access. `upstream_unavailable`: Network, server, or HTML failure. `upstream_timeout`: Request or whole-tool deadline expired. `invalid_upstream_response`: Malformed or incompatible upstream response. `response_too_large`: Upstream response exceeds 8 MiB. `invalid_selector`: Both or neither selector supplied, or externalId is exactly \".\" or \"..\". `missing_external_type`: Reverse selector has no identifier type. 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": {}
},
"found": {
"type": [
"boolean",
"null"
],
"description": "Reverse match state; null in forward mode."
},
"notice": {
"type": "string",
"description": "Partial-outage retry guidance."
},
"record": {
"anyOf": [
{
"type": "object",
"required": [
"aphiaId"
],
"properties": {
"url": {
"type": [
"string",
"null"
],
"description": "Upstream taxon URL."
},
"lsid": {
"type": [
"string",
"null"
],
"description": "Life science identifier."
},
"rank": {
"type": [
"string",
"null"
],
"description": "Open taxonomic rank."
},
"class": {
"type": [
"string",
"null"
],
"description": "Class."
},
"genus": {
"type": [
"string",
"null"
],
"description": "Genus."
},
"order": {
"type": [
"string",
"null"
],
"description": "Order."
},
"family": {
"type": [
"string",
"null"
],
"description": "Family."
},
"phylum": {
"type": [
"string",
"null"
],
"description": "Phylum."
},
"status": {
"type": [
"string",
"null"
],
"description": "Open taxonomic status."
},
"aphiaId": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
"kingdom": {
"type": [
"string",
"null"
],
"description": "Kingdom."
},
"citation": {
"type": [
"string",
"null"
],
"description": "Unmodified record citation."
},
"isMarine": {
"type": [
"boolean",
"null"
],
"description": "Marine flag; null means unknown."
},
"modified": {
"type": [
"string",
"null"
],
"description": "Unmodified modification date."
},
"authority": {
"type": [
"string",
"null"
],
"description": "Authorship."
},
"isExtinct": {
"type": [
"boolean",
"null"
],
"description": "Extinct flag."
},
"matchType": {
"type": [
"string",
"null"
],
"description": "Upstream match type."
},
"validName": {
"type": [
"string",
"null"
],
"description": "Accepted scientific name."
},
"isBrackish": {
"type": [
"boolean",
"null"
],
"description": "Brackish flag."
},
"taxonRankId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Rank identifier."
},
"isFreshwater": {
"type": [
"boolean",
"null"
],
"description": "Freshwater flag."
},
"validAphiaId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Accepted taxon identifier."
},
"isTerrestrial": {
"type": [
"boolean",
"null"
],
"description": "Terrestrial flag."
},
"parentAphiaId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Parent usage identifier."
},
"scientificname": {
"type": [
"string",
"null"
],
"description": "Scientific name."
},
"unacceptreason": {
"type": [
"string",
"null"
],
"description": "Reason for nonacceptance."
},
"validAuthority": {
"type": [
"string",
"null"
],
"description": "Accepted authorship."
},
"originalAphiaId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Original usage identifier."
}
},
"description": "Documented Aphia record; omitted or null scientific facts and flags are unknown.",
"additionalProperties": false
},
{
"type": "null"
}
],
"description": "Reverse matched record only."
},
"aphiaId": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"description": "Positive safe-integer AphiaID; obtain from worms_resolve_taxon.",
"exclusiveMinimum": 0
},
{
"type": "null"
}
],
"description": "Supplied or matched taxon ID; null for reverse misses."
},
"guidance": {
"type": [
"string",
"null"
],
"description": "Guidance when no identifiers or reverse match are found."
},
"direction": {
"enum": [
"forward",
"reverse"
],
"type": "string",
"description": "Selected crosswalk direction."
},
"byteBudget": {
"type": "number",
"const": 24000,
"description": "Complete serialized response byte target."
},
"externalId": {
"type": "string",
"description": "Opaque reverse identifier, preserved as text."
},
"totalCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Known local sequence length before pagination."
},
"typeTotals": {
"type": "object",
"description": "Answered types only; zero means successful absence; failed types are omitted.",
"propertyNames": {
"enum": [
"algaebase",
"bold",
"dyntaxa",
"fishbase",
"iucn",
"lsid",
"ncbi",
"tsn",
"gisd"
],
"type": "string",
"description": "Identifier system: algaebase, bold, dyntaxa, fishbase, iucn, lsid, ncbi, tsn, or gisd; inspect worms_list_reference with topic: external_id_types."
},
"additionalProperties": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": 0,
"description": "Complete fetched identifier count for this answered type."
}
},
"attribution": {
"type": "object",
"required": [
"citation",
"sourceUrl",
"accessedDate"
],
"properties": {
"citation": {
"type": "string",
"description": "WoRMS attribution."
},
"sourceUrl": {
"type": "string",
"description": "Canonical source URL."
},
"accessedDate": {
"type": "string",
"description": "UTC access date."
}
},
"description": "WoRMS source attribution.",
"additionalProperties": false
},
"failedTypes": {
"type": "array",
"items": {
"type": "object",
"required": [
"type",
"error"
],
"properties": {
"type": {
"enum": [
"algaebase",
"bold",
"dyntaxa",
"fishbase",
"iucn",
"lsid",
"ncbi",
"tsn",
"gisd"
],
"type": "string",
"description": "Identifier system: algaebase, bold, dyntaxa, fishbase, iucn, lsid, ncbi, tsn, or gisd; inspect worms_list_reference with topic: external_id_types."
},
"error": {
"type": "object",
"required": [
"reason",
"code",
"message",
"recovery",
"retryable"
],
"properties": {
"code": {
"type": "number",
"description": "JSON-RPC code."
},
"reason": {
"type": "string",
"description": "Classified reason."
},
"message": {
"type": "string",
"description": "Safe failure message."
},
"recovery": {
"type": "string",
"description": "Recovery guidance."
},
"retryable": {
"type": "boolean",
"description": "Whether retry can succeed."
}
},
"description": "Classified lookup failure.",
"additionalProperties": false
}
},
"description": "Failed identifier system.",
"additionalProperties": false
},
"description": "Failed types in fixed vocabulary order."
},
"resultOffset": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Zero-based starting position in the complete local sequence."
},
"budgetLimited": {
"type": "boolean",
"description": "Whether the byte budget ended this local page early."
},
"oversizedItem": {
"type": "boolean",
"description": "One indivisible scientific item exceeds the target; retained intact with forward progress."
},
"requiredBytes": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Serialized paired-surface result bytes for an oversized item, excluding transport-added metadata."
},
"returnedCount": {
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991,
"description": "Whole scientific items returned on this segment."
},
"nextResultOffset": {
"anyOf": [
{
"type": "integer",
"maximum": 9007199254740991,
"minimum": -9007199254740991
},
{
"type": "null"
}
],
"description": "Next local position; null when consumed."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true
}Prompts
0 advertised
Resources
1 advertised
worms-marine-taxa-guide
Gates and identifier hops for the worms_* tools (World Register of Marine Species). Use when cleaning a species list against WoRMS, turning a common name into an accepted species, answering a native, alien, or invasive range question, citing trait values, finding a taxon's original description, or reconciling AphiaIDs with FishBase, NCBI, ITIS, BOLD, or IUCN identifiers.
skill://worms-marine-taxa-guide/SKILL.mdio.modelcontextprotocol/skills
skill://{+path}30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 680 ms
- 95th percentile latency
- 680 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 680 ms · metadata changed · 8 tool(s), 1 resource(s), 1 resource template(s), 0 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http worms-marine-taxa-mcp-server https://worms-marine-taxa.caseyjhand.com/mcpCodex
codex mcp add worms-marine-taxa-mcp-server --url https://worms-marine-taxa.caseyjhand.com/mcpCursor
{
"mcpServers": {
"worms-marine-taxa-mcp-server": {
"url": "https://worms-marine-taxa.caseyjhand.com/mcp"
}
}
}Cline
{
"mcpServers": {
"worms-marine-taxa-mcp-server": {
"type": "streamableHttp",
"url": "https://worms-marine-taxa.caseyjhand.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"worms-marine-taxa-mcp-server": {
"type": "http",
"url": "https://worms-marine-taxa.caseyjhand.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http worms-marine-taxa-mcp-server https://worms-marine-taxa.caseyjhand.com/mcpClaude Desktop
{
"mcpServers": {
"worms-marine-taxa-mcp-server": {
"url": "https://worms-marine-taxa.caseyjhand.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"worms-marine-taxa-mcp-server": {
"serverUrl": "https://worms-marine-taxa.caseyjhand.com/mcp"
}
}
}Let your agent find its tools
Find servers like worms-marine-taxa-mcp-server from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.