Animal Checklist
Server Details
Search animals in eight languages with habitats, countries, photos and source credits.
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- ArneFfm/animal-checklist-agents
- GitHub Stars
- 0
TDQS
Scored across 4 tools
Each tool targets a distinct purpose: get_animal for full detail on one species, search_animals for filtered ranked lists, and list_categories/list_countries for reference lookups. The only mild overlap is between get_animal and search_animals when retrieving a single species, but the card-vs-full-detail distinction is stated clearly.
All four tools follow a clean, predictable verb_noun pattern (get_animal, list_categories, list_countries, search_animals). No mixed conventions or inconsistent verb styles.
Four tools is a bit lean for a species reference domain but each one earns its place and covers a distinct access pattern. It sits just below the ideal 3-15 range only because the surface could support a few more query variants.
This is a read-only reference dataset (iNaturalist-derived), so full CRUD does not apply; the read surface covers detail lookup, free-text/multi-filter search, and category/country enumeration. Minor gaps remain, such as no separate photo or observation-detail retrieval beyond what get_animal bundles.
Available Tools
4 toolsget_animalGet animalARead-onlyIdempotentInspect
Read one species: every common name, scientific name, habitats, country observation counts, the full photo credit and the Wikipedia summary.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Species slug from search_animals, for example `red-fox`. | |
| lang | No | Display language. | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | Slug of the animal taxon, for example `red-fox`. |
| obs | Yes | iNaturalist observation count when available. |
| name | Yes | Name in the requested language, English when none exists. |
| text | Yes | Wikipedia excerpt. Keep attribution, licence and source links, changes and supplied notices. Check source article exceptions. |
| image | Yes | |
| names | Yes | Common name per language. A language is absent when no name is known. |
| inatId | Yes | iNaturalist taxon id. |
| nameEn | Yes | English common name. |
| nameSci | Yes | Scientific name. |
| habitats | Yes | |
| tickable | No | Whether a new checklist sighting is allowed. |
| countries | Yes | Up to twelve countries with the most observations. |
| sourceUrl | No | |
| taxonRank | No | Taxonomic rank. Legacy records default to species. |
| categoryId | Yes | |
| wikidataId | Yes | |
| parentNameSci | No | Parent species scientific name for a subspecies. Null for species. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint), lowering the bar. The description adds valuable disclosure about the output payload (all common names, full photo credit, Wikipedia summary), which is beyond what annotations provide. It doesn't mention auth or rate limits, so it's not a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence that front-loads the core action and lists the payload. Every clause earns its place; there's no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is a straightforward detail lookup with only two parameters, an output schema, and full schema coverage. The description is sufficient for an agent to call it correctly: it knows the identifier comes from search_animals, that language is configurable, and what rich data to expect. No gaps that would prevent correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema documents both the slug provenance and the lang enum. The description doesn't add parameter-specific syntax, but its enumeration of returned fields implies that lang affects localized content (common names, Wikipedia summary). This goes slightly beyond the schema's generic 'Display language', though the baseline for full coverage is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb (Read) and resource (one species), and immediately enumerates the rich payload it returns. It's clear what the tool does, but it doesn't contrast itself against siblings like search_animals or list_countries, which would have earned a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer this is the detail-fetch step after a search, reinforced by the schema's note that the id comes 'from search_animals'. There's no explicit when-to-use statement, no conditions, and no mention of alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesList categoriesARead-onlyIdempotentInspect
List the seven species groups with the label in the requested language and the species count. Call first to learn the valid category values.
| Name | Required | Description | Default |
|---|---|---|---|
| lang | No | Display language. | en |
Output Schema
| Name | Required | Description |
|---|---|---|
| categories | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world behavior, and the description adds real context: the result is a fixed set of seven groups with labels and counts. It does not mention the default-language behavior or result stability, but adds value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, both earning their place: the first defines the output, the second gives the call-first directive. No filler or repetition of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value details are not needed in prose, and the description covers purpose, usage ordering, and language handling. Only minor gaps remain, such as what 'category' values look like, which the output schema presumably covers.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the enum plus default are fully documented in the schema itself. The description only alludes to 'requested language,' adding no syntax or format detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('List') and resource ('the seven species groups') with scope (label in requested language plus species count). It is immediately distinguishable from sibling lookup/search tools like get_animal and search_animals.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly directs the agent to 'Call first to learn the valid `category` values,' which gives a clear sequencing/precondition for the tool. It stops short of naming which sibling tools consume that category value or stating exclusions, so it is strong but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_countriesList countriesARead-onlyIdempotentInspect
List every ISO country code that carries observations with its species count.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| countries | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful scope ('carries observations') and notes the returned species count, but it does not discuss pagination, ordering, or edge cases, so it adds moderate value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence that front-loads the action and resource. Every word contributes meaning, with no filler or redundant qualification.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only listing tool with an output schema, the description is complete. It tells the agent exactly what is returned (ISO country codes with observations and species counts) and requires no further clarification for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and the schema is empty, so there is no parameter burden for the description to carry. The baseline of 4 applies because no parameter documentation is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: 'List every ISO country code' that has observations, and it clearly states the output includes a species count. This distinguishes it from siblings like get_animal and search_animals, which target different resources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a country-level overview of observations is needed, but it does not explicitly say when to prefer this over sibling tools or mention any exclusions. There is no direct routing to get_animal, list_categories, or search_animals.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_animalsSearch animalsARead-onlyIdempotentInspect
Search species by free text in any of eight languages or by scientific name, with optional category, habitat and ISO country filters. Ranked by iNaturalist observations. One page of card-sized records.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Free text, for example `red fox` or `Vulpes`. | |
| per | No | ||
| lang | No | Display language. | en |
| page | No | ||
| country | No | ISO 3166-1 alpha-2. | |
| habitat | No | ||
| category | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| per | Yes | |
| page | Yes | |
| items | Yes | |
| total | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds real context beyond them: results are ranked by iNaturalist observations and returned as a single page of card-sized records, which tells the agent about ordering and pagination shape.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the search capability, then ranking, then result shape. No filler or restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need not be explained, and the description still usefully notes ranking and page size. The only gap is the interplay between per and page for pagination, though that is partially covered by the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 43%, so the description must compensate, and it does: it maps free text, language, scientific name, category, habitat and ISO country to the parameters. It does not explain the per/page sizes or limits, which remain only in the schema, so this falls just short of full compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) and resource (species) plus the matching modes (free text in eight languages, scientific name) and filter dimensions. An agent can tell it apart from get_animal, list_categories and list_countries, which are single-item or enumeration lookups rather than searches.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'search ... with optional ... filters', and the sibling names make it inferable that this is the discovery entry point, but there is no explicit when-to-use, when-not-to-use, or named alternative (e.g. use get_animal once you have an id).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
get_animal7 fields changed- changed
Output schema / properties / image / anyOfPrevious value: -[ - { - "description": "Photo credit. Check the licence and source before reuse.", - "properties": { - "author": { - "description": "Credited author. Empty when the source gives no name.", - "type": "string" - }, - "license": { - "enum": [ - "CC0", - "Public domain", - "Pexels License", - "Pixabay Content License" - ], - "type": "string" - }, - "source": { - "description": "Photo source.", - "enum": [ - "inaturalist", - "commons", - "gbif", - "pexels", - "pixabay" - ], - "examples": [ - "inaturalist" - ], - "type": "string" - }, - "sourceUrl": { - "description": "Page to link when you show it.", - "format": "uri", - "type": "string" - }, - "url": { - "format": "uri", - "type": "string" - } - }, - "required": [ - "url", - "sourceUrl", - "license", - "author", - "source" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "description": "Photo credit. Check the licence and source before reuse.", + "properties": { + "author": { + "description": "Credited author. Empty when the source gives no name.", + "type": "string" + }, + "license": { + "enum": [ + "CC0", + "Public domain", + "Pexels License", + "Pixabay Content License" + ], + "type": "string" + }, + "licenseUrl": { + "description": "Licence terms or public-domain status guidance.", + "format": "uri", + "type": "string" + }, + "source": { + "description": "Photo source.", + "enum": [ + "inaturalist", + "commons", + "gbif", + "pexels", + "pixabay" + ], + "examples": [ + "inaturalist" + ], + "type": "string" + }, + "sourceUrl": { + "description": "Page to link when you show it.", + "format": "uri", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url", + "sourceUrl", + "license", + "author", + "source" + ], + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / text / descriptionPrevious value: -"Wikipedia extract, CC BY-SA 4.0. Keep the credit and the source link."New value: +"Wikipedia excerpt. Keep attribution, licence and source links, changes and supplied notices. Check source article exceptions." - added
Output schema / properties / text / properties / attributionAdded value: +{ + "type": "string" +} - added
Output schema / properties / text / properties / changesAdded value: +{ + "type": "string" +} - added
Output schema / properties / text / properties / licenseAdded value: +{ + "type": "string" +} - added
Output schema / properties / text / properties / licenseUrlAdded value: +{ + "format": "uri", + "type": "string" +} - added
Output schema / properties / text / properties / noticeAdded value: +{ + "type": "string" +}
2 tool updates
- Changed
get_animal10 fields changed- added
Output schema / properties / image / anyOfAdded value: +[ + { + "description": "Photo credit. Check the licence and source before reuse.", + "properties": { + "author": { + "description": "Credited author. Empty when the source gives no name.", + "type": "string" + }, + "license": { + "enum": [ + "CC0", + "Public domain", + "Pexels License", + "Pixabay Content License" + ], + "type": "string" + }, + "source": { + "description": "Photo source.", + "enum": [ + "inaturalist", + "commons", + "gbif", + "pexels", + "pixabay" + ], + "examples": [ + "inaturalist" + ], + "type": "string" + }, + "sourceUrl": { + "description": "Page to link when you show it.", + "format": "uri", + "type": "string" + }, + "url": { + "format": "uri", + "type": "string" + } + }, + "required": [ + "url", + "sourceUrl", + "license", + "author", + "source" + ], + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / image / descriptionRemoved value: -"Photo credit. Check the licence and source before reuse." - removed
Output schema / properties / image / propertiesRemoved value: -{ - "author": { - "description": "Credited author. Empty when the source gives no name.", - "type": "string" - }, - "license": { - "enum": [ - "CC0", - "Public domain", - "Pexels License", - "Pixabay Content License" - ], - "type": "string" - }, - "source": { - "description": "Photo source.", - "enum": [ - "inaturalist", - "commons", - "gbif", - "pexels", - "pixabay" - ], - "examples": [ - "inaturalist" - ], - "type": "string" - }, - "sourceUrl": { - "description": "Page to link when you show it.", - "format": "uri", - "type": "string" - }, - "url": { - "format": "uri", - "type": "string" - } -} - removed
Output schema / properties / image / requiredRemoved value: -[ - "url", - "sourceUrl", - "license", - "author", - "source" -] - removed
Output schema / properties / image / typeRemoved value: -"object" - changed
Output schema / properties / obs / descriptionPrevious value: -"iNaturalist observation count. Drives the ranking."New value: +"iNaturalist observation count when available." - changed
Output schema / properties / obs / typePrevious value: -"integer"New value: +[ + "integer", + "null" +] - added
Output schema / properties / sourceUrlAdded value: +{ + "format": "uri", + "type": "string" +} - removed
Output schema / properties / taxonRank / enumRemoved value: -[ - "species", - "subspecies" -] - added
Output schema / properties / tickableAdded value: +{ + "description": "Whether a new checklist sighting is allowed.", + "type": "boolean" +}
- Changed
search_animals4 fields changed- changed
Output schema / properties / items / items / properties / image / typePrevious value: -"object"New value: +[ + "object", + "null" +] - added
Output schema / properties / items / items / properties / sourceUrlAdded value: +{ + "format": "uri", + "type": "string" +} - removed
Output schema / properties / items / items / properties / taxonRank / enumRemoved value: -[ - "species", - "subspecies" -] - added
Output schema / properties / items / items / properties / tickableAdded value: +{ + "description": "Whether a new checklist sighting is allowed.", + "type": "boolean" +}
3 tool updates
- Changed
get_animal4 fields changed- changed
Output schema / descriptionPrevious value: -"One species with every name, the full photo credit, a summary and country counts."New value: +"One animal taxon with every name, photo credit, summary and country counts." - changed
Output schema / properties / id / descriptionPrevious value: -"Slug of the species, for example `red-fox`."New value: +"Slug of the animal taxon, for example `red-fox`." - added
Output schema / properties / parentNameSciAdded value: +{ + "description": "Parent species scientific name for a subspecies. Null for species.", + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / taxonRankAdded value: +{ + "default": "species", + "description": "Taxonomic rank. Legacy records default to species.", + "enum": [ + "species", + "subspecies" + ], + "type": "string" +}
- Changed
list_categories1 field changed- changed
Output schema / properties / categories / items / properties / total / descriptionPrevious value: -"Species in this category."New value: +"Catalog taxa in this category."
- Changed
search_animals4 fields changed- changed
Output schema / properties / items / items / descriptionPrevious value: -"Card-sized species record used by list and search answers."New value: +"Card-sized animal taxon used by list and search answers." - changed
Output schema / properties / items / items / properties / id / descriptionPrevious value: -"Slug of the species, for example `red-fox`."New value: +"Slug of the animal taxon, for example `red-fox`." - added
Output schema / properties / items / items / properties / parentNameSciAdded value: +{ + "description": "Parent species scientific name for a subspecies. Null for species.", + "type": [ + "string", + "null" + ] +} - added
Output schema / properties / items / items / properties / taxonRankAdded value: +{ + "default": "species", + "description": "Taxonomic rank. Legacy records default to species.", + "enum": [ + "species", + "subspecies" + ], + "type": "string" +}
4 tool updates
- First observed
get_animal - First observed
list_categories - First observed
list_countries - First observed
search_animals
Related MCP Connectors
Structured habitat data and advisory tools for aquariums, marine tanks, terrariums and paludariums.
Search iNaturalist sightings, identification threads, phenology, and look-alike species.
Search UNESCO World Heritage sites, intangible heritage, biosphere reserves, and Global Geoparks.
Search GBIF species taxonomy, occurrence records, datasets, and publishers.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides information about animals at the Taipei Zoo, including their habits, habitats, and distribution across various park areas. It enables users to search for specific animals and browse regional guides using data from the Taipei City Open Data platform.-
- FlicenseNot gradedqualityDmaintenanceProvides tools to get random zoo animals, search by name, and filter by type, returning detailed information including physical characteristics, habitat, diet, and images.-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to resolve scientific names to Taxonomic Serial Numbers, traverse complete taxonomic lineages from kingdom to children, and retrieve vernacular names in all languages from an authoritative US-government taxonomy.13 npm1MIT
- AlicenseNot gradedqualityBmaintenanceEnables searching RescueGroups.org for adoptable animals by species, postal-code radius, breed, and traits, and exploring the rescues/shelters that list them, including full details, photos, contact info, and adoption process.17 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.