Resolve WoRMS marine species names; fetch classifications, synonyms, distributions, traits, and IDs.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
Required for reverse; omit forward to query all nine types. Codes ignore case and surrounding whitespace. See worms_list_reference external_id_types.
Forward numeric AphiaID, decimal string, or canonical WoRMS LSID; mutually exclusive with externalId.
Reverse selector; opaque identifier up to 512 characters; blank omitted.
Zero-based forward identifier position across types in requested order; repeat unchanged selectors. Inactive for reverse lookup.
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.
| Argument | Type | Description |
|---|---|---|
| type | string | Required for reverse; omit forward to query all nine types. Codes ignore case and surrounding whitespace. See worms_list_reference external_id_types. |
| aphiaId | any | Forward numeric AphiaID, decimal string, or canonical WoRMS LSID; mutually exclusive with externalId. |
| externalId | string | Reverse selector; opaque identifier up to 512 characters; blank omitted. |
| resultOffset | integer | Zero-based forward identifier position across types in requested order; repeat unchanged selectors. Inactive for reverse lookup. |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| offset | integer | One-based starting record, advancing by 50; default 1. |
| aphiaId* | any | Positive safe-integer AphiaID, decimal string, or canonical urn:lsid:marinespecies.org:taxname:<AphiaID>; outputs remain numeric. |
| extantOnly | boolean | Extant children only; inactive without includeChildren. |
| marineOnly | boolean | Marine children only; inactive without includeChildren. |
| resultOffset | integer | Zero-based position in lineage followed by fetched children; keep upstream offset unchanged until nextResultOffset is null. |
| includeChildren | boolean |
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.
| Argument | Type | Description |
|---|---|---|
| aphiaId* | any | Positive safe-integer AphiaID, decimal string, or canonical urn:lsid:marinespecies.org:taxname:<AphiaID>; outputs remain numeric. |
| occurrence | string | Case-insensitive whole-value occurrence filter, such as Established; blank omitted. Observed values: worms_list_reference topic: distribution_terms. |
| invasiveness | string | Case-insensitive whole-value invasiveness filter, such as Invasive; blank omitted. Observed values: worms_list_reference topic: distribution_terms. |
| recordStatus | string | Record status valid, doubtful, or inaccurate; ignores case and surrounding whitespace; blank means no filter. |
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.
| Argument | Type | Description |
|---|---|---|
| offset | integer | One-based starting record, advancing by 50; default 1. |
| aphiaId* | any | Positive safe-integer AphiaID, decimal string, or canonical urn:lsid:marinespecies.org:taxname:<AphiaID>; outputs remain numeric. |
| resultOffset | integer | Zero-based local position; resubmit unchanged selectors and options. |
{
"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
}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.
| Argument | Type | Description |
|---|---|---|
| aphiaIds* | array | Nonempty original AphiaID list, with no total-input ceiling; at most 50 positions fetched per call. Resubmit unchanged with inputOffset, without deduplicating. |
| sourceUse | string | Case-insensitive whole-value source use, such as original description; populated values are not trimmed, blanks omitted. Filters before sourceOffset; inactive without includeSources. |
| inputOffset | integer | Zero-based local position; resubmit unchanged selectors and options. |
| sourceOffset | integer | Zero-based position in the sourceUse-selected list for the singleton ID; repeat unchanged options. Inactive without includeSources. |
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.
| Argument | Type | Description |
|---|---|---|
| aphiaId* | any | Positive safe-integer AphiaID, decimal string, or canonical urn:lsid:marinespecies.org:taxname:<AphiaID>; outputs remain numeric. |
| resultOffset | integer | Zero-based local position; resubmit unchanged selectors and options. |
| measurementType | string | 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 | boolean | Include attributes inherited from higher taxa; default true. |
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.
| Argument | Type | Description |
|---|---|---|
| topic* | string | Reference topic: external_id_types, statuses, environment_flags, distribution_terms, ranks, or trait_types. |
| resultOffset | integer | Zero-based local position; resubmit unchanged selectors and options. |
{
"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
}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 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.
| Argument | Type | Description |
|---|---|---|
| fuzzy | boolean | Explicit fuzzy scientific-name matching; unavailable for vernacular. |
| names | array | 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 | integer | Vernacular only: one-based upstream starting record, advancing by 50; default 1. Scientific names accept only 1. |
| extantOnly | boolean | Filter scientific names to extant taxa; vernacular cannot filter and rejects false. |
| marineOnly | boolean | Filter scientific names to marine taxa; vernacular cannot filter and rejects false. |
| vernacular |
| Also fetch one page of direct children. |
{
"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 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
}| resultOffset | integer | Zero-based local position; resubmit unchanged selectors and options. |
| synonymOffset | integer | Zero-based synonym position; once nextResultOffset is null, resubmit synonymUnion.nextSynonymOffset here with resultOffset 0. Inactive without includeSynonyms. |
| includeSynonyms | boolean | Combine the accepted taxon's records with its synonyms', 10 synonyms per call; rows then carry sourceAphiaId. |
| establishmentMeans | string | Case-insensitive whole-value establishment filter, such as Alien; blank omitted. Observed values: worms_list_reference topic: distribution_terms. |
{
"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
}| includeSources |
| boolean |
| Retrieve the taxon sources, such as its original description and basis of record; requires exactly one submitted ID and cannot combine with includeVernaculars. |
| vernacularOffset | integer | Zero-based common-name position for the singleton ID; repeat unchanged options. Inactive without includeVernaculars. |
| includeVernaculars | boolean | Retrieve common names; requires exactly one submitted ID. |
{
"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",
"$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
}| string |
| Common name, mutually exclusive with names; blank means unset. |
| inputOffset | integer | Zero-based original scientific names position; inactive for vernacular. |
| matchOffset | integer | Zero-based match within the scientific-name group at inputOffset; inactive for vernacular. |
| resultOffset | integer | Zero-based match within the fetched vernacular page; keep upstream offset until consumed. Inactive for scientific names. |
| vernacularMatch | string | 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. |
{
"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 marine 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
}