Skip to main content
Glama

GBIF MCP Server

MCP 2026-07-28 Node 20+ 58 tools License: CC BY 4.0

A Model Context Protocol server that gives AI assistants programmatic access to the Global Biodiversity Information Facility (GBIF) API: species taxonomy, 2+ billion occurrence records, datasets and publishers, map tiles, literature citing GBIF data, controlled vocabularies and data validation.

Works with Claude Code, Claude Desktop, OpenAI Codex CLI, Gemini CLI, Goose, OpenCode and any other MCP client that can launch a stdio server.

Quick start

git clone https://github.com/idss-mesa/gbif-mcp.git
cd gbif-mcp
npm install
npm run build

# Register the server with every supported agent found on this machine
npm run install:agents

Then ask your assistant something like "Search GBIF for Panthera leo occurrences in Kenya".

Requires Node.js 20 or newer. GBIF credentials are optional and only needed for occurrence download requests (see Configuration).

Related MCP server: gbif-mcp

Contents

Protocol support

The server implements MCP protocol revision 2026-07-28 through the v2 TypeScript SDK (@modelcontextprotocol/server). Each connection is served in whichever era the client speaks:

Client

Handshake

Served

2026-07-28

per-request _meta envelope, optional server/discover probe

yes

2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05

classic initialize

yes (default)

Current Claude Desktop and Claude Code builds still use the initialize handshake and work without any configuration change. Set MCP_LEGACY_CLIENTS=reject to accept 2026-07-28 clients only; older clients then receive error -32022 (unsupported protocol version).

Other 2026-07-28 details:

  • tools/list is advertised as cacheable (ttlMs 1 hour, cacheScope: public).

  • Every tool carries annotations (readOnlyHint, idempotentHint, openWorldHint). Only the download and validator tools, which create jobs on GBIF, are marked non-read-only.

  • Tool arguments are validated against the advertised JSON Schema before execution. Invalid arguments and unknown tools return JSON-RPC error -32602.

  • Failed GBIF calls come back as tool results with isError: true and a JSON error envelope, never as a crashed connection.

  • ping, logging/setLevel, sampling, roots and elicitation are not used. Logs go to stderr.

  • The process exits when the client closes stdin, so no orphaned servers are left behind.

Installation

Install script

scripts/install.sh registers the server with every supported agent it finds. It builds the server if build/index.js is missing, prefers each agent's own CLI when one is installed (claude mcp add, codex mcp add, gemini mcp add) and otherwise merges an entry into the agent's config file, keeping everything else in the file and leaving a .bak copy.

npm run install:agents                           # every agent detected on this machine
scripts/install.sh --agents all --dry-run        # preview the change for every agent
scripts/install.sh --agents claude,goose         # just Claude Code and Goose
scripts/install.sh --scope project               # project-level config (claude, codex, gemini, opencode)
scripts/install.sh --username you --password …   # store GBIF credentials for download requests
scripts/install.sh --env LOG_LEVEL=debug         # any extra environment variable
scripts/install.sh --uninstall                   # remove the registration everywhere

Agent

What the script does

claude (Claude Code)

claude mcp add --scope user gbif -- node build/index.js

claude-desktop

adds mcpServers.gbif to claude_desktop_config.json (macOS / Linux paths)

codex (OpenAI Codex CLI)

codex mcp add gbif -- node build/index.js, or a [mcp_servers.gbif] table in ~/.codex/config.toml

gemini (Gemini CLI)

gemini mcp add --scope user gbif node build/index.js, or mcpServers.gbif in ~/.gemini/settings.json

goose

adds a gbif stdio extension to ~/.config/goose/config.yaml

opencode

adds mcp.servers.gbif (v2) or mcp.gbif (v1) to ~/.config/opencode/opencode.json

The script writes absolute paths for node and build/index.js, because desktop apps do not inherit your shell PATH. It needs bash and Node.js 20+. On Windows run it from WSL or Git Bash, or follow the manual steps below. Restart desktop apps (Claude Desktop, Goose Desktop) after installing.

Claude Code

cd /path/to/gbif-mcp
claude mcp add gbif -- node "$(pwd)/build/index.js"

# with GBIF credentials for download requests
claude mcp add gbif -e GBIF_USERNAME=you -e GBIF_PASSWORD=secret -- node "$(pwd)/build/index.js"

claude mcp list        # shows gbif with a health check
claude mcp get gbif    # details and connection status
claude mcp remove gbif

Use --scope project to write the entry to .mcp.json in the current repository instead of your user config.

Claude Desktop

Add the server to the configuration file and restart Claude Desktop:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "gbif": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/gbif-mcp/build/index.js"],
      "env": {
        "GBIF_USERNAME": "optional-username",
        "GBIF_PASSWORD": "optional-password"
      }
    }
  }
}

Use absolute paths (not ~/ or ./). On Windows escape backslashes: "C:\\Users\\You\\gbif-mcp\\build\\index.js". If node is not found, replace "command": "node" with the full path printed by which node (or where node on Windows).

Codex CLI, Gemini CLI, Goose, OpenCode

The install script handles all four. The equivalent manual entries are:

# ~/.codex/config.toml
[mcp_servers.gbif]
command = "node"
args = ["/ABSOLUTE/PATH/TO/gbif-mcp/build/index.js"]
// ~/.gemini/settings.json
{ "mcpServers": { "gbif": { "command": "node", "args": ["/ABSOLUTE/PATH/TO/gbif-mcp/build/index.js"] } } }
# ~/.config/goose/config.yaml
extensions:
  gbif:
    enabled: true
    type: stdio
    name: gbif
    cmd: node
    args: ["/ABSOLUTE/PATH/TO/gbif-mcp/build/index.js"]
    envs: {}
    timeout: 300
// ~/.config/opencode/opencode.json (OpenCode v2; v1 uses "mcp": { "gbif": … })
{ "mcp": { "servers": { "gbif": { "type": "local", "command": ["node", "/ABSOLUTE/PATH/TO/gbif-mcp/build/index.js"], "enabled": true } } } }

Any other MCP client that can launch a stdio command works the same way: node /ABSOLUTE/PATH/TO/gbif-mcp/build/index.js.

Docker

docker build -t gbif-mcp:latest .
docker run -i --rm gbif-mcp:latest            # stdio: keep -i, never -d

Claude Desktop / any JSON-configured client:

{
  "mcpServers": {
    "gbif": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "GBIF_USERNAME=you", "-e", "GBIF_PASSWORD=secret", "gbif-mcp:latest"]
    }
  }
}

Claude Code:

claude mcp add gbif -- docker run -i --rm gbif-mcp:latest

With Docker Compose, build with docker compose build and point the client at docker compose run --rm gbif-mcp. The image is a multi-stage Node 20 Alpine build (about 150 MB) that runs as a non-root user on a read-only root filesystem.

Configuration

All settings are environment variables. Defaults are shown; nothing is required.

# GBIF credentials (only for occurrence download requests)
GBIF_USERNAME=
GBIF_PASSWORD=

# GBIF API
GBIF_BASE_URL=https://api.gbif.org/v1
GBIF_USER_AGENT=GBIF-MCP-Server/1.1.0
GBIF_TIMEOUT=30000

# Rate limiting and caching
RATE_LIMIT_MAX_REQUESTS=100
RATE_LIMIT_CONCURRENT=10
CACHE_ENABLED=true
CACHE_MAX_SIZE=100
CACHE_TTL=3600000

# Response size limits (see below)
RESPONSE_MAX_SIZE_KB=250
RESPONSE_WARN_SIZE_KB=200
RESPONSE_ENABLE_TRUNCATION=true
RESPONSE_ENABLE_SIZE_LOGGING=true

# Logging (stderr; stdout is reserved for the protocol)
LOG_LEVEL=info          # error | warn | info | debug
LOG_FORMAT=json

# MCP protocol: serve (also accept 2025-era `initialize` clients) or reject
MCP_LEGACY_CLIENTS=serve

A .env file in the project root is read during local development.

Available tools

58 tools across seven GBIF API sections. Every parameter carries a description, valid values and a real example value (for instance taxonKey: 212 for family Felidae), so assistants can build correct queries without guessing. Results are paginated with offset/limit and an endOfRecords flag.

Species (14)

Tool

Purpose

gbif_species_search

Full-text search of the taxonomic backbone with rank, status, habitat, threat and dataset filters

gbif_species_get

Full record for a taxon key

gbif_species_match

Fuzzy-match a scientific name to the backbone

gbif_species_suggest

Autocomplete name suggestions

gbif_species_parse_names

Parse scientific names into their components

gbif_species_children

Direct taxonomic children

gbif_species_parents

Full classification path

gbif_species_related

Sibling and related taxa under the same parent

gbif_species_synonyms

Synonyms of a taxon

gbif_species_vernacular_names

Common names by language

gbif_species_descriptions

Textual descriptions

gbif_species_distributions

Geographic distributions

gbif_species_media

Images, sounds and videos

gbif_species_metrics

Occurrence statistics for a species: record, dataset and country counts, basis-of-record breakdown

Occurrence (14)

Tool

Purpose

gbif_occurrence_search

Search records with 40+ filters (taxon, country, coordinates, dates, basis of record, media, issues…)

gbif_occurrence_get

A single interpreted record

gbif_occurrence_verbatim

The original, uninterpreted record

gbif_occurrence_count

Count records matching a filter

gbif_occurrence_counts_by_basis_of_record

Breakdown by basis of record

gbif_occurrence_counts_by_year

Breakdown by year

gbif_occurrence_counts_by_country

Breakdown by country

gbif_occurrence_counts_by_publishing_country

Breakdown by publishing country

gbif_occurrence_counts_by_dataset

Breakdown by dataset

gbif_occurrence_counts_by_taxon

Breakdown by species within a higher taxon

gbif_occurrence_counts_by_publishing_org

Breakdown by publishing organization

gbif_occurrence_download_predicate_builder

Build a download predicate from search filters

gbif_occurrence_download_request

Request a download (needs credentials)

gbif_occurrence_download_status

Check a download's status

The "counts by" tools use GBIF faceted search, so every filter of gbif_occurrence_search applies to them.

Registry (18)

Tool

Purpose

gbif_registry_search_datasets, gbif_registry_get_dataset

Datasets

gbif_registry_dataset_metrics, gbif_registry_dataset_document

Occurrence/quality metrics and the EML metadata document

gbif_registry_search_organizations, gbif_registry_get_organization, gbif_registry_organization_datasets

Publishing organizations

gbif_registry_search_networks, gbif_registry_get_network, gbif_registry_network_datasets

Networks

gbif_registry_search_installations, gbif_registry_get_installation

Technical installations (IPTs etc.)

gbif_registry_list_nodes, gbif_registry_get_node

GBIF participant nodes

gbif_registry_search_collections, gbif_registry_get_collection

GRSciColl collections

gbif_registry_search_institutions, gbif_registry_get_institution

GRSciColl institutions

Maps (4)

gbif_maps_get_tile_url, gbif_maps_get_raster_tile_url, gbif_maps_get_vector_tile_url, gbif_maps_list_styles. These build GBIF map tile URLs (density maps of occurrences for any search filter) rather than returning image bytes.

Literature (2)

gbif_literature_search (papers citing GBIF-mediated data, with topic, year, dataset, peer-review and open-access filters) and gbif_literature_get (one paper by DOI).

Vocabularies (3)

gbif_vocabularies_list, gbif_vocabularies_get, gbif_vocabularies_get_concept for GBIF's controlled vocabularies (LifeStage, Sex, BasisOfRecord, …).

Validator (3)

gbif_validator_validate_dwca, gbif_validator_validate_tabular (submit a Darwin Core archive or a CSV/TSV file for validation) and gbif_validator_get_status.

The full reference with every parameter is in TOOLS.md and under docs/api-reference.

Usage examples

Once a client is connected, ask in plain language:

  • "Search for occurrence records of Panthera tigris in India since 2020."

  • "What is the GBIF backbone key for Quercus robur, and what are its common names in German?"

  • "How many bird observations were recorded in California in 2023, broken down by month?"

  • "Find preserved orchid specimens collected before 1900 that have images."

  • "Which datasets does the Natural History Museum publish, and which is the largest?"

  • "Show me recent papers that used GBIF data on pollinators."

  • "Give me a map tile URL for all Apis mellifera records in Europe."

Response size limits

To fit AI context windows the server limits every tool result to 250 KB by default (RESPONSE_MAX_SIZE_KB). For paginated GBIF responses it keeps as many results as fit and adds pagination guidance; for other responses it returns metadata only. A truncated result looks like:

{
  "truncated": true,
  "originalSize": "1.2MB",
  "returnedSize": "248KB",
  "metadata": { "totalCount": 1000, "returnedCount": 23 },
  "pagination": {
    "suggestion": "Use limit=20 with offset=0, then offset=20, offset=40...",
    "example": { "taxonKey": 212, "limit": 20, "offset": 0 }
  },
  "data": { "...": "..." }
}

Set RESPONSE_ENABLE_TRUNCATION=false to disable it.

Verifying the server

From Claude Code, claude mcp list runs a health check and should show gbif as connected. To exercise the stdio surface directly:

npm run build

# 2026-07-28 client: every request carries the protocol envelope in _meta
echo '{"jsonrpc":"2.0","id":1,"method":"server/discover","params":{"_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28","io.modelcontextprotocol/clientCapabilities":{},"io.modelcontextprotocol/clientInfo":{"name":"manual","version":"0"}}}}' \
  | node build/index.js

# 2025-era client: classic initialize handshake, then tools/list
printf '%s\n%s\n%s\n' \
  '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"manual","version":"0"}}}' \
  '{"jsonrpc":"2.0","method":"notifications/initialized"}' \
  '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
  | node build/index.js

Both commands print JSON-RPC responses on stdout and exit once stdin closes.

Troubleshooting

Server does not connect. Check that build/index.js exists, that the config uses absolute paths, and that node --version reports 20 or newer. Claude Desktop logs live in ~/Library/Logs/Claude/ (macOS) or %APPDATA%\Claude\logs\ (Windows). In Claude Code, claude mcp get gbif shows the connection status and claude mcp remove gbif followed by claude mcp add re-registers it.

node: command not found from a desktop app. Desktop apps do not read your shell profile. Use the full path to node as the command, which is what the install script does.

401 on download requests. Downloads need a GBIF account. Set GBIF_USERNAME and GBIF_PASSWORD in the server's env; everything else works anonymously.

Rate limiting or slow responses. Use the count and "counts by" tools before large searches, keep limit small, and use an occurrence download for anything beyond a few thousand records. The client retries 5xx and 429 answers with backoff and opens a circuit breaker after repeated service failures; 404s for unknown keys do not count.

Docker. Always run with -i (and usually --rm); never -d, since MCP needs the stdio connection. Pass credentials with -e or --env-file.

Build errors. rm -rf build node_modules && npm install && npm run build, then npm run typecheck to see TypeScript diagnostics.

Development

npm run dev                         # run from source with tsx, watch mode
npm run build                       # compile to build/
npm run typecheck                   # tsc --noEmit
npm run test:unit                   # unit tests (GBIF API mocked with MSW)
npm run test:integration:protocol   # stdio conformance: 2026-07-28 + legacy clients, official v2 client
npm run test:integration:api        # adversarial matrix: every tool against the live GBIF API
npm run test:coverage               # coverage report
npm run format                      # Prettier

Project layout:

src/
  index.ts            GBIFMCPServer: McpServer factory, serveStdio, tool dispatch, shutdown
  core/gbif-client.ts HTTP client: queue, rate limit, LRU cache, retries, circuit breaker
  services/           one service per GBIF API section
  tools/              58 tools, one class each, Zod input schemas → JSON Schema
  protocol/           error formatting, correlation IDs
  utils/              response truncation, logging
tests/
  unit/               mirrors src/
  integration/mcp/    protocol tests (stdio-protocol.test.ts spawns the real server)
  integration/api/    live GBIF tests, including all-tools.integration.test.ts
scripts/install.sh    agent registration script

Adding a GBIF endpoint: write the service method, add a BaseTool subclass under src/tools/<section>/, export it from that folder's index.ts, register it in initializeServices() in src/index.ts, and add a case to the adversarial matrix. See CLAUDE.md for conventions.

Resources

Contributing

Issues and pull requests are welcome. Fork the repository, create a branch, add tests for service or tool changes (unit plus a line in the adversarial matrix), and open a pull request.

License

Creative Commons Attribution 4.0 International (CC BY 4.0).

GBIF data accessed through this server is subject to the licence of each dataset; see GBIF's data use terms.

Available Tools

58 tools
gbif_literature_getA
Read-onlyIdempotent

Get complete metadata for a scientific publication by its DOI. Returns title, authors, abstract, journal, citation info, and GBIF usage details. Use to get full details about a specific paper that used GBIF data.

ParametersJSON Schema
NameRequiredDescriptionDefault
doiYesDOI (Digital Object Identifier) of the publication. Standard format: "10.1234/example". Example: "10.1038/nature12345" or "10.1371/journal.pone.0123456". Get DOIs from gbif_literature_search results.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, openWorld, non-destructive). The description goes beyond that by disclosing the return payload (title, authors, abstract, journal, citation info, GBIF usage details), which matters since no output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with purpose, then return contents, then usage. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-param read tool with full annotations and a rich param description, the entry is essentially complete; it explains the return payload in the absence of an output schema. Only edge cases like invalid-DOI behavior are unaddressed, which is minor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the parameter description already details DOI format, examples, and where to source DOIs, so the schema does all the work. The description adds no param-level syntax beyond it, matching the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get complete metadata for a scientific publication by its DOI') and distinguishes itself from gbif_literature_search via the by-DOI lookup nature. Names the concrete fields returned, so an agent knows exactly what it fetches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to get full details about a specific paper that used GBIF data' gives clear context for invocation and implicitly contrasts with search-style siblings. It stops short of explicitly naming the search tool or stating exclusions, but the usage condition is unambiguous.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_maps_get_raster_tile_urlA
Read-onlyIdempotent

Generate URL for pre-rendered PNG density map tiles. Raster tiles show occurrence density with various color schemes. Fast rendering, ideal for simple map displays. Use for quick visualization without client-side rendering overhead.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesTile column. Valid: 0 to (2^z - 1).
yYesTile row. Valid: 0 to (2^z - 1).
zYesZoom level (0-20). Standard web Mercator zoom.
yearNoFilter by year/range. Example: "2020,2024".
scaleNoPixel density. 1=standard (256x256), 2=retina (512x512). Default: 1.
styleNoColor scheme for density visualization. Common: "purpleHeat.point" (purple heatmap), "fire.point" (red/yellow), "glacier.point" (blue), "classic.poly" (traditional). Affects how occurrence density is visualized.
countryNoFilter to country. Example: "KE" (Kenya).
taxonKeyNoFilter to specific taxon. Example: 5231190 (lions).

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description usefully adds that tiles are pre-rendered and fast to serve, but says nothing about authentication, rate limits, or caching.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with what is produced, then characteristics. No filler, though the 'fast rendering' and 'quick visualization' points overlap slightly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool returns a URL, which the description explicitly names as the output, so no output schema is needed. Combined with full schema coverage and rich annotations, an agent has enough to call it correctly; only sibling routing remains thin.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter (x/y/z, style, scale, year, country, taxonKey) is already documented in the schema. The description's mention of 'various color schemes' duplicates the style parameter docs without adding syntax or constraints. Baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Generate URL for pre-rendered PNG density map tiles.' The PNG/raster nature clearly separates it in kind from the vector-tile sibling, even though that sibling is never named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Fast rendering, ideal for simple map displays. Use for quick visualization without client-side rendering overhead' implies the usage context but never states when to prefer this over gbif_maps_get_tile_url or gbif_maps_get_vector_tile_url, nor any exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_maps_get_tile_urlB
Read-onlyIdempotent

Generate a URL for occurrence map tiles with customizable styling and filters. Returns tile URLs in standard web Mercator projection (EPSG:3857) for use in web mapping applications, GIS software, or direct visualization.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesTile column number (X coordinate). Horizontal position in the tile grid at the given zoom level. Valid range: 0 to (2^z - 1). Example: at zoom 0, only x=0 is valid; at zoom 1, x can be 0 or 1.
yYesTile row number (Y coordinate). Vertical position in the tile grid at the given zoom level. Valid range: 0 to (2^z - 1). Uses standard TMS (Tile Map Service) row numbering.
zYesZoom level (0-20). 0 shows the entire world, 20 shows street-level detail. Common values: 0-2 (world), 3-5 (continental), 6-10 (country/regional), 11-15 (city), 16-20 (neighborhood/street). Standard web Mercator zoom levels.
srsNoSpatial Reference System. Default: EPSG:3857 (Web Mercator). Alternative: EPSG:4326 (WGS84 lat/long). Most web mapping libraries expect EPSG:3857.
yearNoFilter by observation year or year range. Format: "2024" (single year) or "2020,2024" (range from 2020-2024). Only occurrences from specified year(s) will appear.
scaleNoPixel density scale for retina displays. 1 = standard (256x256px), 2 = retina/2x (512x512px), 4 = ultra-high DPI. Higher values produce sharper images on high-DPI screens but larger file sizes. Default: 1.
styleNoMap style name. Controls color scheme and visualization type. Common values: "classic.poly" (polygons), "purpleHeat.point" (heatmap), "green.poly", "fire.point", "glacier.point". Get available styles from gbif_maps_list_styles.
formatNoTile format. PNG (raster image, best for visualization) or MVT (Mapbox Vector Tiles, best for interactive maps with client-side styling). Default: png.png
countryNoFilter to specific country. 2-letter ISO country code. Example: "US", "BR", "KE". Only occurrences from this country will be mapped.
taxonKeyNoFilter to specific taxon and all its children. GBIF taxon key. Example: 212 (all birds), 5231190 (Panthera leo - African lion). Only occurrences of this taxon will be shown on the map.
datasetKeyNoFilter to specific dataset. Dataset UUID. Only occurrences from this dataset will be mapped. Get dataset UUIDs from gbif_registry_search_datasets.
basisOfRecordNoFilter by observation type. Values: HUMAN_OBSERVATION, MACHINE_OBSERVATION, PRESERVED_SPECIMEN, FOSSIL_SPECIMEN, LIVING_SPECIMEN, MATERIAL_SAMPLE, OCCURRENCE. Controls which types of records appear on map.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, non-destructive, openWorld), so the bar is lower. The description usefully discloses the return artifact (tile URL strings) and the projection (EPSG:3857 Web Mercator), but says nothing about behavior at out-of-range coordinates, rate limits, or why a generic tool exists alongside the raster/vector variants.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action, no filler. The second sentence partially restates what the srs parameter already documents, which is minor redundancy but keeps the size appropriate.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does the right minimum of explaining that a tile URL is returned, which is adequate for a 12-parameter URL-builder. What is missing is the context an agent most needs: how this tool relates to its vector/raster siblings and the style-listing tool, leaving a real disambiguation hole.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already carries the semantics for all 12 parameters; baseline 3 applies. The description only gestures at 'customizable styling and filters' and otherwise adds nothing, and its blanket claim that tiles come back in EPSG:3857 sits slightly awkwardly against the srs parameter that permits EPSG:4326.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: 'Generate a URL for occurrence map tiles,' scoped by styling and filters. That is clear on its own, but the sibling list contains gbif_maps_get_vector_tile_url and gbif_maps_get_raster_tile_url, and the description makes no attempt to distinguish this generic tool from those two near-identical siblings, which is the main ambiguity an agent faces here.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only guidance is a downstream-consumer list ('web mapping applications, GIS software, or direct visualization'), which describes what the URL is for rather than when to call this tool instead of the raster/vector tile siblings. With three overlapping tile-URL tools available, the absence of an explicit when-to-use and when-not-to-use rule is a real gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_maps_get_vector_tile_urlA
Read-onlyIdempotent

Generate URL for occurrence vector tiles in Mapbox Vector Tile (MVT) format. Vector tiles enable client-side styling, interactivity, and dynamic rendering. Ideal for web mapping libraries like Mapbox GL JS, Leaflet with vector tile plugins, or OpenLayers.

ParametersJSON Schema
NameRequiredDescriptionDefault
xYesTile column number. Horizontal position in tile grid. Valid range: 0 to (2^z - 1).
yYesTile row number. Vertical position in tile grid. Valid range: 0 to (2^z - 1).
zYesZoom level (0-20). Controls detail level and tile grid size. Standard web Mercator zoom levels.
yearNoFilter by year or year range. Format: "2024" or "2020,2024".
styleNoStyle name for vector tiles. Common: "classic.poly", "green.poly". Get available styles from gbif_maps_list_styles.
countryNoFilter to specific country. 2-letter ISO code. Example: "US".
taxonKeyNoFilter to specific taxon. GBIF taxon key. Example: 212 (birds).
datasetKeyNoFilter to specific dataset. Dataset UUID.
basisOfRecordNoFilter by record type. Example: HUMAN_OBSERVATION, PRESERVED_SPECIMEN.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds useful context about what vector tiles enable (client-side styling, interactivity, dynamic rendering), but it does not add behavioral details beyond annotations, such as authentication requirements, rate limits, or what exactly the generated URL returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose and uses three sentences without excessive length. The second and third sentences are somewhat promotional but still useful for understanding intended use, so it is concise overall.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description appropriately conveys that the tool generates a URL and describes its format and intended use. The annotations cover safety and idempotency, and the schema fully documents parameters, leaving only minor gaps such as how the returned URL should be used or whether any authentication is required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all nine parameters are already documented in the input schema, including tile coordinates, year filtering, style names, country codes, taxon keys, dataset keys, and basis of record. The description adds no parameter-level meaning beyond what the schema provides, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (Generate) and resource (URL for occurrence vector tiles) and specifies the format (Mapbox Vector Tile / MVT). It clearly distinguishes this from a raster tile tool by naming the vector format, though it does not explicitly contrast itself with the sibling gbif_maps_get_raster_tile_url or gbif_maps_get_tile_url.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives implied usage context by naming ideal client libraries (Mapbox GL JS, Leaflet with vector tile plugins, OpenLayers), which helps an agent understand when this tool is appropriate. However, it does not provide explicit when-to-use versus when-not-to-use guidance, nor does it route the agent between this, the raster tile tool, or the generic tile URL tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_maps_list_stylesA
Read-onlyIdempotent

List all available map visualization styles for occurrence tiles. Returns style names, descriptions, and types (density/point/poly). Use to discover visualization options before generating tile URLs with gbif_maps_get_tile_url.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotentHint/openWorldHint and non-destructiveness, so the safety profile is covered. The description usefully adds the shape of the response (style names, descriptions, and types density/point/poly), which matters since no output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the core action and then the return contents and routing hint. Every clause earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter enumeration tool with no output schema, the description supplies everything needed: what it lists, what fields come back, and how it feeds into the tile-URL siblings. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so the baseline is 4. The schema itself already states 'No input parameters required' at 100% coverage, and the description adds nothing misleading about inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (map visualization styles for occurrence tiles), and immediately distinguishes itself from the tile-URL siblings as a discovery/enumeration tool. An agent can tell what it does without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent when to use it ('discover visualization options before generating tile URLs') and names the specific sibling (gbif_maps_get_tile_url) as the follow-up. No when-not guidance is given, but the usage context is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_occurrence_countA
Read-onlyIdempotent

Fast endpoint for counting occurrences matching filters without retrieving full records. Useful for statistics, dashboards, and filter validation before running full searches.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFull-text search query
yearNoYear or year range (e.g., "2020,2024")
issueNoData quality issues
monthNoMonth (1-12)
countryNoISO country code
classKeyNoClass taxon key
genusKeyNoGenus taxon key
geometryNoWKT geometry
orderKeyNoOrder taxon key
taxonKeyNoGBIF taxon key
continentNoContinent filter
familyKeyNoFamily taxon key
phylumKeyNoPhylum taxon key
datasetKeyNoDataset UUID
kingdomKeyNoKingdom taxon key
basisOfRecordNoBasis of record types
hasCoordinateNoFilter to records with coordinates
publishingOrgNoPublishing organization UUID
scientificNameNoScientific name to search for

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive, open-world behavior; the description adds the 'fast' performance trait and that no full records are returned, but says nothing about return shape (single total vs. breakdown) or throttling limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the fast/no-records distinction, and every phrase (statistics, dashboards, filter validation) adds real usage signal with no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only count endpoint with fully documented params, the description is largely sufficient; the main missing piece is whether the result is a single number and how multiple filters combine (AND semantics).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with every one of the 19 filter params documented inline, so the schema carries the parameter burden. The description only characterizes the filters collectively, adding no syntax or semantics beyond the schema. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (counting) and resource (occurrences) with the key differentiator 'without retrieving full records,' which cleanly separates it from gbif_occurrence_search and the counts_by_* breakdown siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage contexts (statistics, dashboards, filter validation before full searches) and implicitly positions it ahead of full searches, but does not explicitly name the sibling to use when breakdowns by dimension are wanted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_occurrence_counts_by_basis_of_recordA
Read-onlyIdempotent

Get occurrence counts broken down by basis of record type (observations, specimens, etc.). Returns a breakdown showing how many occurrences of each type match your filters. Essential for understanding dataset composition and data quality. Very fast - use for dashboards and quick statistics.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFilter by year or range. Example: "2020,2024"
countryNoFilter to country. Example: "KE" (Kenya)
taxonKeyNoFilter to specific taxon. Example: 5231190 (Panthera leo)
datasetKeyNoFilter to specific dataset UUID
hasCoordinateNoFilter to georeferenced records

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so safety is covered. The description adds genuinely new behavioral context: the output shape (a breakdown of counts per type matching the filters) and a performance claim ("Very fast"), which helps an agent decide between this and slower search/count tools.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, correctly front-loaded with what the tool does and what it returns. The final sentence is slightly promotional ("Very fast") but still carries usable signal about latency; no significant filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully explains the return shape (per-type counts matching filters). All parameters are documented in the schema, and annotations cover the safety profile. It does not mention that all filters are optional (global aggregate) or how large result sets behave, which is a minor gap for a 0-required-param facet tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five filter parameters (year, country, taxonKey, datasetKey, hasCoordinate) are already documented with examples in the schema. The description only says results "match your filters" and adds no format or semantics beyond what the schema provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (get counts), resource (occurrences), and facet (basis of record type), with concrete examples ("observations, specimens") that clarify what the grouping means. This implicitly distinguishes it from the plain gbif_occurrence_count and from other facet tools, but it never explicitly names a sibling or states how it differs from e.g. counts_by_dataset.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear use context: "Essential for understanding dataset composition and data quality" and "use for dashboards and quick statistics." However, it offers no when-not guidance and does not route the agent to alternative facet tools when a different breakdown is actually wanted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_occurrence_counts_by_countryA
Read-onlyIdempotent

Get occurrence counts broken down by country for geographic distribution analysis. Returns counts per country showing global distribution patterns. Essential for understanding species ranges, identifying data gaps by region, and prioritizing conservation efforts. Fast statistics endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFilter by year or range. Example: "2020,2024" for recent records only
taxonKeyNoFilter to specific taxon. Example: 5231190 (Panthera leo) to see lion distribution across countries
datasetKeyNoFilter to specific dataset to see its geographic coverage
basisOfRecordNoFilter by record types
hasCoordinateNoFilter to georeferenced records only

TDQS

A3.5/5.0
Behavior3/5

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 one genuinely useful trait, 'Fast statistics endpoint,' signaling lower cost/latency than a full search, plus a brief note on the return shape. It omits pagination/limits, but for a stats endpoint this is a modest gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the verb and result, followed by scope, then rationale. Four short sentences, mostly earning their place. The 'Essential for...' clause leans slightly promotional but still conveys legitimate analysis use cases.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Five optional filters, full schema coverage, and a complete safety annotation set; no output schema is present, so the description's one-line note on the return shape ('counts per country') is sufficient. Only pagination/size limits and the publishing-country distinction are unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five filters are documented in the schema with examples (year range, taxonKey example, dataset, basisOfRecord, hasCoordinate). The description adds no parameter-level meaning, which is appropriate given the schema does the work — baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get occurrence counts broken down by country.' The geographic-distribution framing makes clear this is country-of-occurrence, not publishing country. However, it never names or contrasts with the very close sibling gbif_occurrence_counts_by_publishing_country, so disambiguation is left to the agent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives use cases ('understanding species ranges, identifying data gaps by region, prioritizing conservation efforts') but these are motivations rather than when-to-use/when-not-to-use guidance. No alternatives are named, and the near-identical publishing-country sibling is not addressed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_occurrence_counts_by_datasetA
Read-onlyIdempotent

Get occurrence counts broken down by contributing dataset. Identifies which datasets contribute most records for a given query. Essential for data attribution, understanding data sources, finding primary datasets for a taxon/region, and acknowledging data providers. Returns dataset UUIDs with counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFilter by year or range. Example: "2020,2024"
countryNoFilter by occurrence country. Example: "KE" to see datasets with Kenyan data
taxonKeyNoFilter to specific taxon. Example: 5231190 (lions) to see which datasets have lion records
basisOfRecordNoFilter by record types
hasCoordinateNoFilter to georeferenced records

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and non-destructiveness, so safety is covered. The description adds the return shape ('dataset UUIDs with counts'), which is genuine value, but omits any result-set limits, ranking behavior, or pagination, which matter for a faceted count endpoint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action and closed with the return type. The middle sentence is a list of use cases that earns its place for routing, though it is slightly longer than strictly necessary.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does supply the return shape and the tool has no required parameters, so an agent can call it correctly. It stops short of describing result volume, ordering, or truncation behavior, which is the remaining gap for a count/facet tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters (year, country, taxonKey, basisOfRecord, hasCoordinate) are already documented with examples in the schema. The description adds no parameter syntax or filter-interaction detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get occurrence counts broken down by contributing dataset.' The 'by dataset' dimension clearly distinguishes it from siblings like gbif_occurrence_counts_by_year, by_country, and by_basis_of_record without needing to read any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage contexts: 'data attribution, understanding data sources, finding primary datasets for a taxon/region, and acknowledging data providers.' However, it never names an alternative tool or states when NOT to use this one (e.g., when you only need a total count).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_occurrence_counts_by_publishing_countryA
Read-onlyIdempotent

Get occurrence counts broken down by the country of the publishing organization. Shows which countries are contributing data, useful for understanding data provider distribution, identifying data collaboration opportunities, and analyzing global participation in GBIF. Different from occurrence country (where specimen was collected).

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFilter by year or range
countryNoFilter by occurrence country (where collected)
taxonKeyNoFilter to specific taxon. Example: 212 (birds) to see which countries publish bird data
datasetKeyNoFilter to specific dataset
hasCoordinateNoFilter to georeferenced records

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered by structured data. The description adds no behavioral context beyond that: no note on response size, whether counts are exact or approximate, or any rate/caching behavior for a potentially large aggregation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the operation and dimension, followed by usage and then the critical disambiguation. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and no annotation of return shape, yet the description never states what the result looks like (an array/pairs of publishing country and count). For a counts endpoint this is largely inferable, but explicitly naming the return shape would close the only real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description earns an increment because the 'different from occurrence country' sentence disambiguates the meaning of the country filter relative to the grouping dimension, which is the single most error-prone aspect of this tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific aggregation (occurrence counts) grouped by a precisely defined dimension (country of the publishing organization). The final sentence explicitly distinguishes it from occurrence country, which is the most likely confusion with the sibling gbif_occurrence_counts_by_country.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives three concrete use cases (provider distribution, collaboration opportunities, global participation) and an explicit contrast with the collection-country alternative. It stops short of stating when an agent should prefer this over gbif_occurrence_counts_by_publishing_org or gbif_occurrence_counts_by_dataset, so it is clear but not fully routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_occurrence_counts_by_publishing_orgB
Read-onlyIdempotent

Get occurrence counts broken down by publishing organization UUID. Identifies which institutions are contributing the most data for a query. Essential for data attribution, understanding institutional contributions, acknowledging data providers, and analyzing organizational participation. Returns organization UUIDs with occurrence counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFilter by year or range
countryNoFilter by occurrence country
taxonKeyNoFilter to specific taxon. Example: 212 (birds) to see which organizations publish bird data
basisOfRecordNoFilter by record types
hasCoordinateNoFilter to georeferenced records

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds one genuinely useful behavioral fact — the return shape (organization UUIDs with occurrence counts), valuable since there is no output schema — but the remaining sentences are promotional rather than disclosing ordering, ranking, or pagination behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose and return shape are correctly front-loaded in the first and last sentences. The middle sentence is a four-item promotional list ('data attribution, understanding institutional contributions, acknowledging data providers, analyzing organizational participation') that mostly restates the same idea and does not earn its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations covering safety, a 100%-covered schema, and the description supplying the return shape, an agent has enough to call the tool. The missing piece is sibling disambiguation within the large counts_by_* family, which leaves a real risk of selecting the wrong breakdown dimension.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five filters (year, country, taxonKey, basisOfRecord, hasCoordinate) are already documented, including a concrete taxonKey example. The description adds no parameter-level meaning beyond noting that results are 'for a query', so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb and resource: occurrence counts broken down by publishing organization UUID. It is clear what the tool produces, but it never differentiates itself from the many sibling aggregation tools, notably gbif_occurrence_counts_by_publishing_country and gbif_occurrence_counts_by_dataset, which an agent could easily confuse with this one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives implied use contexts (data attribution, acknowledging data providers, analyzing organizational participation), which signals when the tool is relevant. However, it offers no explicit when-to-use vs. when-not, and never names an alternative sibling such as counts_by_dataset or counts_by_country when a different breakdown is wanted.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_occurrence_counts_by_taxonA
Read-onlyIdempotent

Get occurrence counts broken down by species (GBIF backbone speciesKey) for taxonomic composition analysis. Returns counts per species within the filtered taxon, most frequent first (top 100). Useful for understanding biodiversity patterns, identifying dominant species, and analyzing taxonomic coverage within a higher taxon. Fast statistics for ecological analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFilter by year or range
countryNoFilter by country
taxonKeyNoParent taxon to analyze. Example: 2877951 (genus Quercus) returns counts for each oak species
datasetKeyNoFilter to specific dataset
hasCoordinateNoFilter to georeferenced records

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is lower. The description nevertheless adds real behavior: results are sorted most-frequent-first and truncated to the top 100, plus a note that it is a fast statistics endpoint. That ordering/cap disclosure is exactly the kind of context annotations cannot carry.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and result shape, which is good, but the second and third sentences restate the same idea three ways ('taxonomic composition analysis', 'biodiversity patterns', 'identifying dominant species', 'taxonomic coverage') and 'Fast statistics for ecological analysis' is filler. It could lose a third of its length with no information loss.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description carries the return-value burden and does so adequately (per-species counts, sorted, capped at 100). Filters are fully documented in the schema. What is missing is whether the endpoint applies implicit defaults or how a very large higher taxon is handled, but nothing critical to a correct call is absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with 5 parameters, so the schema already documents year, country, datasetKey, hasCoordinate, and gives a taxonKey example. The description adds only the framing that counts are broken down by the species under the supplied taxon; no format, range, or default semantics beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (get counts), resource (occurrences), and the breakdown dimension (species / speciesKey) that separates it from sibling count tools like gbif_occurrence_count and gbif_occurrence_counts_by_country. The scoping phrase 'within the filtered taxon' makes the aggregation level unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives implied analytical contexts ('biodiversity patterns', 'dominant species') but never states when to choose this over gbif_occurrence_count or the other counts_by_* siblings, nor any prerequisite for taxonKey. Usage is inferable from the name and description but not directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_occurrence_counts_by_yearA
Read-onlyIdempotent

Get occurrence counts broken down by year for temporal trend analysis. Returns year-by-year counts showing how observations have accumulated over time. Perfect for time series visualization, identifying data collection patterns, and understanding temporal coverage. Fast endpoint for dashboards.

ParametersJSON Schema
NameRequiredDescriptionDefault
countryNoFilter to specific country. Example: "US", "BR", "KE"
taxonKeyNoFilter to specific taxon and descendants. Example: 212 (all birds), 5231190 (lions only)
datasetKeyNoFilter to specific dataset UUID
basisOfRecordNoFilter by record types. Example: ["HUMAN_OBSERVATION", "PRESERVED_SPECIMEN"]
hasCoordinateNoFilter to records with coordinates

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the description isn't burdened with that. It adds real context beyond annotations by disclosing the return shape ('year-by-year counts') and the performance trait 'Fast endpoint for dashboards'. It omits auth, pagination, and rate-limit behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core operation and reasonably sized. There is mild redundancy across 'temporal trend analysis', 'accumulated over time', and 'temporal coverage', but every sentence still contributes angle or return-shape information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly compensates by describing the return (year-by-year counts). Five optional filters are fully documented in-schema, and annotations carry the safety profile, so an agent has enough to invoke it correctly; only pagination/limits are unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with all five filters documented in-schema, so the structured data carries the semantics. The description mentions temporal filtering implicitly but adds no format, syntax, or defaulting detail beyond what the schema already supplies. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get occurrence counts broken down by year') and the distinguishing dimension (year) is front-loaded. This separates it from sibling tools like gbif_occurrence_counts_by_country or _by_dataset. It stops short of naming those siblings explicitly, so the agent must infer the contrast.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It lists use cases ('time series visualization', 'identifying data collection patterns', 'dashboards'), which implies when the tool is appropriate, but never states when to prefer it over the other counts_by_* siblings or any exclusions. Usage is implied rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_occurrence_download_predicate_builderB
Read-onlyIdempotent

Helper tool to build a download predicate from simple search parameters. Converts occurrence search filters into the complex predicate format required by the download API.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear or year range for occurrence date. Example: "2020" (single year), "2015,2020" (range from 2015 to 2020).
countryNo2-letter ISO country code where occurrence was recorded. Example: "US", "BR", "KE".
geometryNoWKT geometry polygon to limit download to geographic area. Polygons must be anticlockwise. Example: "POLYGON ((30.1 10.1, 40 40, 20 40, 10 20, 30.1 10.1))".
taxonKeyNoGBIF taxon key. A taxon key from the GBIF backbone. All child taxa are included in the download. Example: 212 (for Aves - all birds).
datasetKeyNoDataset UUID to limit download to specific dataset. Example: "13b70480-bd69-11dd-b15f-b8a03c50a862".
basisOfRecordNoBasis of record types to include. Example: ["PRESERVED_SPECIMEN", "FOSSIL_SPECIMEN"] for museum specimens only. Values: OBSERVATION (general), HUMAN_OBSERVATION, MACHINE_OBSERVATION, MATERIAL_SAMPLE, PRESERVED_SPECIMEN, FOSSIL_SPECIMEN, LIVING_SPECIMEN, MATERIAL_CITATION, OCCURRENCE.
hasCoordinateNoFilter to records with (true) or without (false) geographic coordinates. Example: true for georeferenced records only.
scientificNameNoScientific name from the GBIF backbone. Example: "Panthera leo". All synonyms and child taxa included.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds that the output is a predicate consumed by the download API, which is useful context, but says nothing about return format, whether the output must be passed through unchanged, or error behavior for invalid filters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler, and the core purpose is front-loaded. However, the second sentence largely restates the first ('build a download predicate from simple search parameters' vs 'converts occurrence search filters into the complex predicate format'), so there is mild redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 8-parameter helper with no output schema, the description should at least characterize the return value (the predicate shape/format) and how it feeds the download tool. It explains the role but leaves the agent uncertain about what it actually produces and how to use it next, which is a real gap for a tool with no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 8 parameters with examples (year ranges, ISO country codes, WKT winding order, taxonKey semantics). The description contributes no additional parameter meaning beyond what the schema provides, which is the expected baseline here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it builds a download predicate from simple search parameters and converts occurrence search filters into the predicate format required by the download API. This is clearly distinguishable from listing/searching siblings, though it never names the specific download tool whose input it produces (e.g. gbif_occurrence_download_request).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'required by the download API', suggesting this runs before a download request, but the description never says when to use this versus other occurrence tools or explicitly names the alternative. No exclusions or prerequisites are given, so the agent must infer the workflow position.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_occurrence_download_requestA

Request an asynchronous download for large occurrence datasets beyond pagination limits (100,000+ records). Returns a download key for checking status. REQUIRES AUTHENTICATION: Set GBIF_USERNAME and GBIF_PASSWORD environment variables.

ParametersJSON Schema
NameRequiredDescriptionDefault
formatNoDownload format. DWCA (Darwin Core Archive) = Full format with metadata and extensions, most comprehensive. SIMPLE_CSV = Simplified CSV format, easier to work with in spreadsheets. SPECIES_LIST = List of unique species only, no occurrence records. Default: SIMPLE_CSV.SIMPLE_CSV
creatorYesGBIF username (creator of the download). This is your GBIF.org username. Example: "john.smith". Required for download attribution and access control.
predicateNoDownload predicate defining filters (REQUIRED). Complex JSON structure specifying which records to include. Use gbif_occurrence_download_predicate_builder tool to construct this from simple search parameters, or build manually following GBIF download API predicate format. Example: {type: "equals", key: "TAXON_KEY", value: "212"} for all bird records.
sendNotificationNoSend email notification on completion. Set to true (default) to receive email when download is ready, false to skip notifications. Recommended: true for downloads that take more than a few minutes.
notificationAddressesNoEmail addresses to notify when download completes. Receives notification with download link when processing is finished. Example: ["user@example.com"]. Optional, but highly recommended for large downloads that may take hours to process.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, non-idempotent, open-world operation, but the description adds real value beyond them: it is asynchronous, it returns a download key, and it REQUIRES authentication via GBIF_USERNAME/GBIF_PASSWORD environment variables. Auth and async behavior are exactly the kind of operational context annotations cannot convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with zero waste: purpose and scope first, return behavior second, authentication requirement last. The most decision-relevant constraint (large datasets / async) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an async job-creating tool with no output schema, the description covers the essential gaps: async execution, the returned download key, and the auth prerequisite. It could go slightly further by stating what to do next (poll gbif_occurrence_download_status), but nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and every parameter (format, creator, predicate, sendNotification, notificationAddresses) is fully documented in the schema, so the schema carries the parameter burden. The description only alludes to the predicate indirectly via the status/predicate-builder mention, adding no new parameter syntax or semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Request an asynchronous download') and scopes it precisely: 'for large occurrence datasets beyond pagination limits (100,000+ records)'. The pagination threshold implicitly distinguishes it from gbif_occurrence_search without the agent opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear condition for use (datasets beyond pagination limits, 100,000+ records) and hints at follow-up via 'checking status', implying gbif_occurrence_download_status. It does not explicitly name the alternative for smaller queries or state exclusions, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_occurrence_download_statusA
Read-onlyIdempotent

Check the status and retrieve metadata for an occurrence download request. Returns status, download link when ready, record count, and file size.

ParametersJSON Schema
NameRequiredDescriptionDefault
downloadKeyYesDownload key returned from gbif_occurrence_download_request

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds useful non-annotation detail about the readiness lifecycle and return payload (status, link, record count, file size).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and followed by the return payload; no redundant or filler content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates the return fields, filling that gap. It stops short of describing non-ready states (e.g., pending/failed) or retry guidance, which would complete the polling picture.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter with 100% schema description coverage, which already states it is the key returned from gbif_occurrence_download_request. The description repeats rather than extends this, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb ('Check the status and retrieve metadata') and resource ('occurrence download request'), and clearly contrasts with the sibling gbif_occurrence_download_request by focusing on status retrieval rather than initiating a download.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'when ready' phrasing implies this is polled after a download request, and the downloadKey param references gbif_occurrence_download_request, so the workflow context is inferable. However, there is no explicit statement of when to call this versus alternatives or how often to poll.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_occurrence_getA
Read-onlyIdempotent

Get complete details for a single occurrence record including verbatim fields, interpretation history, media, and data quality issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesGBIF occurrence key (unique identifier). This is a numeric key that uniquely identifies an occurrence record in GBIF. Example: 1258202889 (a specific specimen record). You can find occurrence keys from search results.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, openWorld), so the bar is low. Because there is no output schema, the enumeration of returned content (verbatim fields, interpretation history, media, quality issues) is genuinely useful behavioral context that tells the agent what data it will receive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One sentence, front-loaded with the verb and resource, with zero filler. Every clause earns its place by expanding what 'complete details' includes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with full annotation coverage, the description plus schema is nearly complete; the content enumeration compensates for the missing output schema. Only the routing against sibling lookup tools (search vs. verbatim vs. this) is left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'key' parameter is fully documented in the schema, including format, example and provenance ('found from search results'). The description adds no parameter-level detail beyond that, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (a single occurrence record) and enumerates the payload categories: verbatim fields, interpretation history, media, data quality issues. This clearly separates it from gbif_occurrence_search/count (bulk) and gbif_occurrence_verbatim, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no guidance on when to call this versus gbif_occurrence_search or gbif_occurrence_verbatim, nor any prerequisite such as needing a key obtained from a prior search (that hint lives only in the schema). Usage is only inferable from the word 'single'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_occurrence_verbatimA
Read-onlyIdempotent

Get the original, unprocessed occurrence record as provided by the publisher, before GBIF interpretation. Includes all original Darwin Core fields with full URIs.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesGBIF occurrence key (unique identifier). This is a numeric key that uniquely identifies an occurrence record. Example: 1258202889. Use this to retrieve the original record exactly as submitted by the data publisher, before GBIF processing and interpretation.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint). The description adds genuinely useful context beyond that: the record is the publisher's raw submission and contains full Darwin Core fields with URIs. It does not cover auth or rate limits, but the annotation coverage lowers the bar.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with zero filler, front-loading what the record is before the detail about containing original Darwin Core fields.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, so the description carries the return-value burden, and it does so reasonably by stating the record is the unprocessed publisher submission with all original Darwin Core fields and full URIs. It could say more about the exact payload shape, but it is sufficient for a single-key read-only tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage and a single parameter, the schema already documents 'key' thoroughly (type, uniqueness, example, and purpose). The description adds nothing about the parameter, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (get) and resource (the original, unprocessed occurrence record as provided by the publisher) and adds a distinguishing scope qualifier: 'before GBIF interpretation.' This lets an agent separate it conceptually from the interpreted-record sibling, though it never names gbif_occurrence_get explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: an agent can infer this is for retrieving publisher-original data instead of interpreted data, but there is no explicit when-to-use, when-not-to-use, or named alternative. The contrast with GBIF interpretation is the only routing signal.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_registry_dataset_documentA
Read-onlyIdempotent

Get the EML (Ecological Metadata Language) metadata document for a dataset. Returns structured XML metadata including dataset description, contacts, geographic/taxonomic/temporal coverage, methods, and project information. Essential for proper dataset citation, understanding data collection methods, and accessing complete metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesDataset UUID. The unique identifier of the dataset whose EML document you want. EML is the standard metadata format for ecological datasets. Example: "50c9509d-22c7-4a22-a47d-8c48425ef4a7". Returns XML document.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive and open-world, so the safety profile is covered. The description adds behavior annotations do not: it enumerates the content of the returned document (description, contacts, coverage, methods, project info) and states the format is structured XML, which matters given there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the core action before the return description and use case. Each sentence carries information, though the final 'Essential for...' clause leans slightly promotional rather than operational.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly compensates by describing what the returned XML contains. Safety is covered by annotations and the single parameter is schema-documented, leaving little an agent needs that is missing; a note on document size or that XML parsing is required would close the remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'key' parameter is fully documented in the schema, including format, example, and return type. The description adds no new parameter meaning (no format hints, no alternative identifier types like DOI), so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get the EML (Ecological Metadata Language) metadata document for a dataset,' which is sharply distinct from the plain metadata returned by gbif_registry_get_dataset. It does not explicitly name that sibling or contrast the two, so an agent must infer the difference from the 'EML document' phrasing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete usage contexts ('proper dataset citation,' 'understanding data collection methods,' 'accessing complete metadata'), which tells the agent when this tool is the right one. It stops short of naming alternatives or exclusions, so there is no explicit when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_registry_dataset_metricsA
Read-onlyIdempotent

Get occurrence statistics and quality metrics for a dataset. Returns counts by basis of record, country, year, and data quality indicators. Useful for understanding dataset composition and coverage.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesDataset UUID. The unique identifier of the dataset whose metrics you want to retrieve. Example: "50c9509d-22c7-4a22-a47d-8c48425ef4a7". Get from gbif_registry_search_datasets or gbif_registry_get_dataset.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered. The description adds the shape of the output (counts by basis of record, country, year, quality indicators) but says nothing about auth needs, caching, latency, or stability of the metrics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the verb+resource and followed by the return shape and a use case. No filler, though the final sentence is somewhat redundant with the second.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully enumerates what is returned, and the lone parameter is fully specified in the schema. Safety is covered by annotations. Only the absence of guidance on when to prefer this over related dataset/occurrence tools keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'key' parameter is thoroughly documented in the schema itself (UUID format, example value, and where to obtain it). The description adds nothing about the parameter, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get occurrence statistics and quality metrics for a dataset.' An agent can tell it apart from gbif_registry_get_dataset (metadata) and gbif_species_metrics (taxon-level). It does not, however, explicitly name or contrast any sibling, so it stays at 4 rather than 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Useful for understanding dataset composition and coverage' implies a use case but gives no when-to-use vs when-not, no prerequisites, and no alternative tools (e.g. get_dataset for metadata, occurrence counts tools for live queries). Usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_registry_get_collectionA
Read-onlyIdempotent

Get complete details for a specific scientific collection from GRSciColl. Returns collection metadata, institutional affiliation, specimen holdings, contacts, and preservation methods. Essential for understanding physical specimen repositories.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesCollection UUID from GRSciColl. The unique identifier for the collection. Example: UUID for USNM Entomology Collection or Kew Herbarium. Get from gbif_registry_search_collections.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint), so the bar is lower. The description adds genuine value by enumerating the returned content categories, which partially compensates for the missing output schema. It stops short of describing completeness, size, or error behavior for an unknown key.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the action and resource, and the payload list is efficient. The final 'Essential for...' sentence is mild promotional filler that could be cut without losing selection signal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read with no output schema, the description does the necessary work by telling the agent what fields come back. Combined with full annotation coverage and a fully documented key, an agent has enough to call it correctly; only the absence of failure-mode detail keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'key' parameter is fully documented in the schema, including its source ('Get from gbif_registry_search_collections'). The description adds nothing about the key beyond what the schema states, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get complete details for a specific scientific collection'), names the source registry (GRSciColl), and enumerates the payload (metadata, affiliation, holdings, contacts, preservation methods). This clearly separates it from the sibling gbif_registry_search_collections, which lists rather than retrieves a single record.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The closing line ('Essential for understanding physical specimen repositories') gestures at when the tool is useful but names no alternative and no exclusion. It never says to obtain the key via gbif_registry_search_collections, nor how it relates to gbif_registry_get_institution. Usage is implied rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_registry_get_datasetA
Read-onlyIdempotent

Get complete metadata for a specific GBIF dataset by its UUID. Returns full dataset details including title, description, contacts, endpoints, geographic/taxonomic coverage, and citation information.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesDataset UUID (universally unique identifier). A unique identifier for the dataset in GBIF registry. Example: "50c9509d-22c7-4a22-a47d-8c48425ef4a7" (GBIF Backbone Taxonomy). Get UUIDs from gbif_registry_search_datasets.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this read-only, idempotent, open-world and non-destructive, so the safety profile is covered. The description adds useful payload context by enumerating what comes back (title, contacts, endpoints, coverage, citation), which matters since there is no output schema, but it says nothing about auth needs, rate limits, or errors.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler, with the operation and its key qualifier front-loaded and the return contents following. Nothing here would be cut without losing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with annotations covering safety, the description is complete: it names what is fetched and enumerates the returned fields, compensating for the absent output schema. Only minor operational details (failure behavior on unknown UUIDs, rate limits) are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; the schema already fully documents 'key' (UUID format, example value, and how to obtain UUIDs from gbif_registry_search_datasets). The description only restates 'by its UUID' and therefore earns the baseline 3 rather than adding new parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (complete metadata for a GBIF dataset) qualified by the lookup key (by its UUID), so the agent can immediately tell this is a point-fetch rather than the listing tool gbif_registry_search_datasets. It does not explicitly distinguish itself from the other per-dataset siblings (dataset_metrics, dataset_document), which is the only thing keeping it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: fetching 'by its UUID' signals it is only appropriate when the UUID is already known, and the schema points to gbif_registry_search_datasets for discovery. There is no explicit when-not or named alternative (metrics/document) to route the agent among the per-dataset siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_registry_get_installationA
Read-onlyIdempotent

Get complete details for a specific IPT or data server installation. Returns technical endpoint information, hosting organization, and datasets served by this installation.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesInstallation UUID. The unique identifier for the installation server. Get from gbif_registry_search_installations.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description adds real value on top by disclosing what the response contains (technical endpoint information, hosting organization, datasets served), which matters because there is no output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, zero filler, front-loaded with the action and resource before the return-value detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read with full schema coverage and rich annotations, the description supplies enough; the return-content summary compensates for the absent output schema. It is only slightly thin on how the result differs from a search hit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already documents the key as a UUID with its source tool, so the baseline is 3. The description adds nothing about the parameter itself.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('a specific IPT or data server installation') and even names the returned content. The word 'specific' implicitly separates it from gbif_registry_search_installations, but no sibling is named explicitly, so it falls just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the word 'specific' suggests this is the detail-fetch to follow a search, and the schema's key description points to gbif_registry_search_installations. The description itself gives no explicit when-to-use or when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_registry_get_institutionA
Read-onlyIdempotent

Get complete details for a specific scientific institution from GRSciColl. Returns institutional metadata, collections housed, contacts, addresses, and identifiers. Use to understand institution profiles and their collection holdings.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesInstitution UUID from GRSciColl. The unique identifier for the institution. Example: UUID for Smithsonian Institution or Natural History Museum London. Get from gbif_registry_search_institutions.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description goes beyond them by naming the return payload (metadata, collections, contacts, addresses, identifiers), which matters since there is no output schema. It does not mention auth, rate limits, or error behavior for unknown keys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the action and resource, followed by the payload and a use case. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with no output schema, the description covers action, returns, and intent adequately. Minor gaps remain around absent-key behavior and the relationship to the search tool, but nothing essential to invoking it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'key' parameter is fully documented, including format (uuid), an example, and the source sibling (gbif_registry_search_institutions). The description adds nothing beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get complete details for a specific scientific institution from GRSciColl') and enumerates the returned content. The singular 'specific institution' implicitly contrasts with the sibling search tool, but no sibling is named explicitly in the description itself.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to understand institution profiles and their collection holdings' gives a purpose-driven context, but there is no explicit when-to-use versus gbif_registry_search_institutions, nor any exclusion or prerequisite (e.g. needing a key from search first). Usage is implied rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_registry_get_networkA
Read-onlyIdempotent

Get complete details for a specific dataset network. Returns network metadata, constituent datasets, contacts, and description. Use to understand collaborative data initiatives and their scope.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesNetwork UUID. The unique identifier for the network. Example: UUID for eBird network or iNaturalist network. Get from gbif_registry_search_networks.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered structurally. The description adds that the response includes constituent datasets, contacts, and description text, which is useful given there is no output schema, but it says nothing about invalid-key behavior or pagination of the constituent datasets.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the action and resource, followed by return contents and intended use. No filler, though the final 'Use to...' sentence is the weakest and could be more directive.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with no output schema, the description compensates reasonably by naming the return payload (metadata, constituent datasets, contacts, description). Errors and response shape details are absent but minor for a simple lookup.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the key parameter is fully described (UUID format, examples, and where to obtain it). The description adds nothing beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get complete details for a specific dataset network') and enumerates what it returns (metadata, datasets, contacts, description). It reads as the by-id counterpart to gbif_registry_search_networks, but it never names that sibling explicitly, so differentiation relies on the sibling's own name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to understand collaborative data initiatives and their scope' gives a purpose but not a when-to-use rule or an alternative. The routing hint (get the key from gbif_registry_search_networks) lives in the schema, not the description, so usage is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_registry_get_nodeA
Read-onlyIdempotent

Get complete details for a GBIF participant node. Returns node metadata, contacts, participation type, country information, and endorsement details. Use to understand national GBIF participation, governance structure, and institutional membership.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesNode UUID. The unique identifier for the GBIF node. Get from gbif_registry_list_nodes.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, open-world behavior. The description adds the shape of returned fields, which is useful, but doesn't disclose error behavior (e.g., invalid UUID, not found) or anything beyond the annotation profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: purpose, return contents, usage context. Front-loaded and no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single required-param read tool with full schema coverage and comprehensive annotations, the description covers purpose, return shape, and usage context adequately. No output schema exists, but the description enumerates the main returned fields, which is sufficient; arguably could mention key sourcing but the schema already does.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema description already explains the key is a node UUID obtained from gbif_registry_list_nodes. The description adds no parameter-level detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (GBIF participant node), and enumerates what the response contains (metadata, contacts, participation type, country, endorsement). Clearly distinguishable from siblings like gbif_registry_list_nodes or gbif_registry_get_organization.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear purpose context ('Use to understand national GBIF participation, governance structure, and institutional membership') implying when to reach for it. Does not explicitly name an alternative tool or exclusion criteria, so not a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_registry_get_organizationA
Read-onlyIdempotent

Get complete details for a specific data-publishing organization. Returns contacts, addresses, datasets published, endorsement status, and institutional information.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesOrganization UUID. The unique identifier for the organization in GBIF registry. Example: "07f617d0-c688-11d8-bf62-b8a03c50a862" (GBIF Secretariat). Get from gbif_registry_search_organizations.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description still adds value by disclosing the payload contents (contacts, addresses, datasets published, endorsement status, institutional information), which matters because no output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler: purpose first, returned fields second. Every clause earns its place and the core action is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

A simple idempotent read with full schema coverage and annotations carrying the safety profile. The description compensates for the missing output schema by listing key returned fields; only richer detail on the returned structure would push it higher.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter at 100% schema coverage, the schema already documents 'key' fully, including its UUID format, an example, and the sibling tool to obtain it. The description adds no further parameter meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb 'Get' plus a precise resource ('a specific data-publishing organization') and an enumeration of what comes back. The resource noun cleanly separates it from sibling lookups like get_network, get_installation, get_collection and get_institution without the agent needing to open any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: it is a fetch-by-key operation for one known organization. There is no statement of when to prefer it over gbif_registry_search_organizations or gbif_registry_organization_datasets, and no prerequisites or exclusions are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_registry_list_nodesA
Read-onlyIdempotent

List GBIF participant nodes (national/organizational participants). Nodes represent countries or organizations that participate in GBIF governance and data sharing. Essential for understanding GBIF network structure, national participation, and institutional membership.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum nodes to return. Range: 1-1000, default: 20.
offsetNoPagination offset. Default: 0.
countryNoFilter to specific country node. 2-letter ISO code.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, open-world, non-destructive, so safety profile is covered. The description adds conceptual context about what nodes represent but discloses nothing about pagination behavior, result size, or return shape beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three compact sentences, front-loaded with the core action, followed by definitional context. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with full schema coverage and annotations, the description supplies adequate conceptual grounding. Only a note on when to prefer sibling search tools is missing, a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (limit, offset, country) are fully documented in the schema. The description adds no parameter detail beyond the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb 'List' plus resource 'GBIF participant nodes' with a clarifying gloss that nodes are national/organizational participants. Clearly distinguished from siblings like gbif_registry_get_node (single node fetch) and search_organizations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

States it is 'essential for understanding GBIF network structure...' which implies context of use, but never says when to use this versus search_organizations, search_networks, or get_node, and gives no exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_registry_network_datasetsA
Read-onlyIdempotent

List all constituent datasets within a specific network. Shows which datasets are part of a collaborative network. Useful for exploring thematic data collections like eBird observations or marine biodiversity networks.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of datasets to return per page. Range: 1-1000, default: 20.
offsetNoPagination offset. Number of datasets to skip. Default: 0.
networkKeyYesNetwork UUID. The unique identifier of the network whose constituent datasets you want to list. Get from gbif_registry_search_networks or gbif_registry_get_network.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered. The description adds domain context about what a network represents but says nothing about pagination behavior, result size, or rate limits beyond what the schema already documents.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action before the explanatory context. No filler, though the second sentence ('Shows which datasets are part of a collaborative network') largely restates the first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple paginated read-only list with 100% schema coverage and annotations carrying the safety profile, the definition covers what an agent needs. It omits any note on the returned list shape, which is a minor gap given there is no output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, including how to obtain networkKey and the limit/offset semantics, so the baseline is 3. The description adds no parameter-level meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb ('List') plus a precisely scoped resource ('constituent datasets within a specific network'). The 'within a network' qualifier implicitly separates it from siblings like gbif_registry_organization_datasets and gbif_registry_search_datasets, but no sibling is named, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The closing sentence hints at usage ('useful for exploring thematic data collections like eBird...'), which is implied guidance rather than an explicit when-to-use rule. It never states when NOT to use this tool or which alternative to pick (e.g., search_datasets for non-network scoping).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_registry_organization_datasetsB
Read-onlyIdempotent

List all datasets published by a specific organization. Shows the complete catalog of datasets contributed by an institution. Useful for understanding an organization's data contributions and portfolio.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter datasets by type. OCCURRENCE (specimen/observation records), CHECKLIST (species lists), SAMPLING_EVENT (survey data), METADATA (descriptions only). Omit to get all types.
limitNoMaximum number of datasets to return per page. Range: 1-1000, default: 20.
offsetNoPagination offset. Number of datasets to skip. Default: 0.
organizationKeyYesOrganization UUID. The unique identifier of the publishing organization. Example: "07f617d0-c688-11d8-bf62-b8a03c50a862". Get from gbif_registry_search_organizations or gbif_registry_get_organization.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds only a mild scope claim ('complete catalog') but says nothing about pagination behavior, result volume, or what happens with very large publishers, so it does not meaningfully extend 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.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action, which is good, but the second and third sentences restate the same idea twice ('complete catalog of datasets contributed by an institution' / 'useful for understanding an organization's data contributions and portfolio'), so two of three sentences are largely redundant padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, yet the description does not indicate what a returned dataset entry contains, and parameter behavior is left entirely to the schema. For a simple read/list tool with full schema coverage this is adequate but leaves the agent with no picture of the response shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the enum values for type, the range/default for limit and offset, and the UUID format plus source tools for organizationKey are all documented inline. The description adds no additional parameter meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (datasets) with a clear scope qualifier (published by a specific organization), so an agent can distinguish it from the generic gbif_registry_search_datasets. However, it never names or routes against siblings like gbif_registry_search_datasets, gbif_registry_get_organization, or gbif_registry_network_datasets, which is the classic 'clear but no sibling differentiation' case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Useful for understanding an organization's data contributions and portfolio' gestures at a use case but gives no when-to-use condition, no exclusions, and no alternative tools (e.g., use search_datasets instead when organization is unknown). Nothing tells an agent when this tool is the wrong choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_registry_search_collectionsA
Read-onlyIdempotent

Search the Global Registry of Scientific Collections (GRSciColl) for natural history collections. Find museum collections, herbaria, tissue collections, and other scientific collections worldwide. Use to discover physical specimen holdings and their metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFree text search across collection names, codes, and descriptions. Example: "herbarium", "mammal collection", "Smithsonian", "entomology".
cityNoFilter by city name where the collection is located. Example: "London", "Washington", "Paris", "Sydney".
codeNoCollection code filter. The institutional code or acronym for the collection. Example: "USNM" (US National Museum), "K" (Kew Herbarium), "AMNH" (American Museum of Natural History).
limitNoMaximum collections to return per page. Range: 1-1000, default: 20.
offsetNoPagination offset. Default: 0.
countryNoFilter by collection country. 2-letter ISO country code where the collection is physically located. Example: "US", "GB", "FR", "AU".
institutionNoFilter by parent institution UUID. Returns all collections belonging to a specific institution. Get institution UUIDs from gbif_registry_search_institutions.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorld, so the agent knows this is a safe, repeatable read against an open registry. The description adds no behavioral context beyond that - no pagination semantics, result ordering, or registry coverage limits - so it neither contradicts nor enriches the annotation profile.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the resource name and scope, with no filler. The last sentence is somewhat thin ("and their metadata") but still earns its place as a usage cue.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description shoulders the return-value burden; "discover physical specimen holdings and their metadata" only loosely signals the return shape, and pagination via limit/offset is left to the schema. For a 7-param, optional-only search tool with full annotation coverage, this is nearly complete but not fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all seven parameters (q, city, code, limit, offset, country, institution) already carry examples and constraints in the schema. The description adds no additional filter semantics, which makes the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) and resource (GRSciColl natural history collections) and enumerates the collection types covered (museum, herbarium, tissue). It is clearly distinct from siblings like gbif_registry_search_datasets or gbif_registry_search_occurrences, but it never names the nearest-neighbor alternative (gbif_registry_search_institutions), leaving that differentiation to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use to discover physical specimen holdings and their metadata" gives a usage context, so it is more than nothing. However, it offers no when-not guidance, no mention of when to prefer search_institutions or get_collection, and no prerequisites (e.g., obtain institution UUIDs first, which the schema mentions but the description does not reinforce).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_registry_search_datasetsB
Read-onlyIdempotent

Search for datasets in the GBIF registry. Find published datasets by type, keyword, publisher, geographic coverage, and taxonomic scope. Essential for discovering data sources and understanding dataset metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFree text search query across dataset title, description, and metadata. Searches in dataset titles, descriptions, keywords, and publishing organization names. Example: "birds", "reef fish", "herbarium specimens".
typeNoDataset type filter. OCCURRENCE (observation/specimen records with coordinates and dates), CHECKLIST (species lists without occurrences), SAMPLING_EVENT (structured surveys with effort data), METADATA (dataset descriptions only). Most common: OCCURRENCE.
limitNoMaximum number of datasets to return per page. Range: 1-1000, default: 20. Use with offset for pagination through large result sets.
decadeNoFilter by decade of temporal coverage. Format: "1980,1990" for data from the 1980s and 1990s. Filters datasets by the decade their occurrence records cover, not publication date.
offsetNoPagination offset. Number of results to skip. A limit of 20 and offset of 40 will get the third page. Default: 0. Maximum offset varies by endpoint.
keywordNoFilter by dataset keyword. Keywords are controlled vocabulary terms assigned to datasets. Example: "bird", "invasive species", "endangered species". Case-insensitive.
hostingOrgNoFilter by hosting organization UUID. The organization that hosts the data infrastructure (may differ from publisher). Example: UUID of a data center or aggregator.
publishingOrgNoFilter by publishing organization UUID. Returns datasets published by a specific organization. Get organization UUIDs from gbif_registry_search_organizations. Example: "07f617d0-c688-11d8-bf62-b8a03c50a862" (GBIF Secretariat).
publishingCountryNoFilter by publishing organization country. 2-letter ISO country code. Example: "US" (United States), "GB" (United Kingdom), "BR" (Brazil). Returns datasets published by organizations in that country.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld, and non-destructive behavior, so the safety profile is covered. The description adds one useful behavioral detail — that only *published* datasets are returned — but says nothing about result caps, pagination limits, or response shape. A 3 is appropriate against a strong annotation set.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with the core action front-loaded and zero filler. The final sentence is somewhat soft ('Essential for...') but not wasteful enough to drop below 4.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Nine parameters are fully documented in the schema, but with no output schema the description carries some burden for explaining returns and it stays silent on result structure, total counts, and pagination behavior beyond what the limit/offset schema params imply. Adequate but with a visible gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all nine parameters in detail; baseline 3 applies. The description's filter list adds no syntax or format detail beyond the schema, and its mention of 'taxonomic scope' corresponds to no actual parameter, which is mildly imprecise.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Search for datasets in the GBIF registry,' and names the filtering dimensions. It is clearly distinguishable from gbif_registry_get_dataset (single fetch) and gbif_registry_dataset_metrics, though it never names those siblings explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Essential for discovering data sources' implies a discovery use case but gives no explicit when-to-use/when-not guidance, no mention of the alternative get_dataset for full metadata, and no prerequisites. Usage is inferable but not stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_registry_search_installationsA
Read-onlyIdempotent

Search for IPT (Integrated Publishing Toolkit) installations in the GBIF network. IPTs are servers that host and publish biodiversity datasets. Use to find technical infrastructure and data hosting platforms.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFree text search query. Searches installation names and descriptions. Example: "herbarium IPT", "museum server".
typeNoInstallation type filter. Common values: IPT_INSTALLATION, DIGIR_INSTALLATION, TAPIR_INSTALLATION, BIOCASE_INSTALLATION. Most common: IPT_INSTALLATION.
limitNoMaximum installations to return per page. Range: 1-1000, default: 20.
offsetNoPagination offset. Default: 0.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds conceptual context about what IPTs are but says nothing about result volume, pagination behavior, or return shape, so it adds only modest value beyond structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with the core verb-resource pairing front-loaded and zero filler; every sentence (including the IPT definition) earns its place by aiding selection.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only search with full schema coverage and no output schema, the definition covers purpose and domain context adequately. It stops short of describing result structure or paging semantics, but nothing essential to correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with q, type, limit, and offset each fully documented in the schema. The description adds no parameter-level meaning, so the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ("Search") and resource ("IPT installations") and explicitly disambiguates from siblings searching organizations, networks, datasets, and collections. It even defines what an IPT is, so an agent can select it without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use to find technical infrastructure and data hosting platforms" gives a use context, but no when-not guidance and no reference to the sibling gbif_registry_get_installation (lookup by key) that would let an agent distinguish search from retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_registry_search_institutionsC
Read-onlyIdempotent

Search for scientific institutions in the Global Registry of Scientific Collections (GRSciColl). Find museums, herbaria, universities, and research institutions that house natural history collections worldwide.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFree text search across institution names and descriptions. Searches in institution name, alternative names, and descriptions. Example: "Natural History Museum", "Smithsonian", "Botanischer Garten", "herbarium".
cityNoFilter by city name where the institution is based. Example: "Washington", "London", "Paris", "Berlin", "Tokyo".
codeNoInstitution code filter. The institutional code or acronym. Example: "NMNH" (National Museum of Natural History), "NYBG" (New York Botanical Garden), "AMNH".
limitNoMaximum institutions to return per page. Range: 1-1000, default: 20.
offsetNoPagination offset. Number of results to skip. Default: 0.
countryNoFilter by institution country. 2-letter ISO country code where the institution is located. Example: "US" (United States), "GB" (United Kingdom), "BR" (Brazil), "AU" (Australia).

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond that — no mention of pagination behavior (limit/offset), result volume, or what a result record contains — so it earns no extra credit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the purpose front-loaded and no filler; the second sentence usefully enumerates the institution types returned. It is well-sized, though the second sentence does not add routing or behavioral value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Annotations carry the safety profile and the schema fully documents all parameters, so the core need is met. Still, with no output schema, the description could reasonably say what a result contains (name, code, city, country) or note pagination via limit/offset; that gap keeps it merely adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with each of the six filters (q, city, code, limit, offset, country) documented with examples and constraints. The description contributes no additional parameter semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb (Search) and resource (scientific institutions in GRSciColl) and enumerates the kinds of entities returned (museums, herbaria, universities). However, it does not distinguish 'institutions' from the closely related sibling tools gbif_registry_search_organizations and gbif_registry_search_collections, so an agent must infer which registry entity type it needs.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus gbif_registry_search_organizations, gbif_registry_search_collections, gbif_registry_get_institution, or gbif_registry_list_nodes. The description describes the content available but gives no routing guidance or prerequisites, leaving selection entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_registry_search_networksA
Read-onlyIdempotent

Search for dataset networks in GBIF. Networks are collaborative groups that organize related datasets (e.g., eBird, iNaturalist, Ocean Biodiversity Information System). Use to discover thematic data collections and partnerships.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFree text search query across network names and descriptions. Example: "eBird", "iNaturalist", "ocean", "herbarium network".
limitNoMaximum number of networks to return per page. Range: 1-1000, default: 20.
offsetNoPagination offset. Number of results to skip. Default: 0.
identifierNoFilter by network identifier. A unique identifier for the network. Example: network DOI or other persistent identifier.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety and repeatability are fully covered structurally. The description contributes domain context (what networks are) but says nothing extra about result format or pagination semantics beyond what the schema's limit/offset descriptions give. Adequate, not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences: purpose first, domain explanation second. No wasted clauses. The parenthetical example list is slightly long but earns its place by disambiguating the term 'network'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple, read-only, open-world search tool with 100% schema coverage and full annotations, the definition supplies what the structured fields cannot: the meaning of 'network'. No output schema exists, but for a list endpoint the return shape is predictable. Minor gap: no note on pagination behavior when results exceed limit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (q, limit, offset, identifier) are documented in the schema with examples and ranges. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Search for dataset networks in GBIF', and defines what a network is with concrete examples (eBird, iNaturalist, OBIS). It does not explicitly distinguish itself from siblings like gbif_registry_get_network or gbif_registry_search_organizations, but the resource noun 'networks' is clear enough to route by.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Use to discover thematic data collections and partnerships' implies the browse/discovery use case but names no alternatives and gives no when-not condition. An agent can infer it should use get_network for a single known network, but the description never says so.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_registry_search_organizationsB
Read-onlyIdempotent

Search for data-publishing organizations in the GBIF network. Find museums, herbaria, research institutions, and other biodiversity data publishers. Use to discover data providers and understand institutional participation.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoFree text search across organization names and descriptions. Searches in organization title, description, and abbreviations. Example: "Natural History Museum", "Smithsonian", "herbarium".
limitNoMaximum number of organizations to return per page. Range: 1-1000, default: 20.
offsetNoPagination offset. Number of results to skip before returning results. Default: 0.
countryNoFilter by organization country. 2-letter ISO country code where the organization is based. Example: "US" (United States), "GB" (United Kingdom), "AU" (Australia).
isEndorsedNoFilter by GBIF endorsement status. Set to true for GBIF-endorsed organizations (officially recognized data publishers), false for non-endorsed. Most data publishers are endorsed. Default: no filter (both endorsed and non-endorsed).

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, openWorldHint, destructiveHint=false), so the bar is lowered. The description adds no behavioral context beyond this—nothing about pagination interaction between limit/offset, rate limits, or the shape/volume of results—so it earns little credit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three front-loaded sentences: purpose, concrete examples, then use case. All sentences contribute; no filler or repetition. Slightly more verbose than strictly necessary but well structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-param read-only search with full schema coverage and no output schema, the description covers purpose, examples, and intended use. Annotations carry the safety profile. It is essentially complete, though return-value expectations are left implicit.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters (q, limit, offset, country, isEndorsed) with examples and ranges. The description adds no parameter-level meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) and resource (data-publishing organizations in the GBIF network), and names concrete examples (museums, herbaria, research institutions). It does not explicitly distinguish itself from sibling search tools like gbif_registry_search_networks or gbif_registry_get_organization, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use to discover data providers and understand institutional participation" gives an implied use case, but there is no when-not guidance and no routing to alternatives such as get_organization (for a single org) or organization_datasets. Adequate but with clear gaps.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_species_childrenB
Read-onlyIdempotent

Get direct taxonomic children of a taxon (e.g., species under a genus, subspecies under a species). Useful for exploring taxonomy hierarchically.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesParent taxon GBIF key. The unique identifier of the parent taxon whose direct children you want to retrieve. Example: 5219173 (genus Panthera) returns species like P. leo, P. tigris, P. pardus, etc.
limitNoMaximum number of children to return per page. Controls pagination. Range: 1-1000, default: 20.
offsetNoPagination offset. Determines the starting point for results. A limit of 20 and offset of 40 will get the third page of 20 results. Default: 0.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds one genuinely useful behavioral fact — that only direct children are returned, not the full descendant subtree — but says nothing about result format or ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action and scope qualifier; the parenthetical example earns its place by making the hierarchy direction unambiguous. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup with full schema coverage, the essentials are present, and pagination is handled by the schema's limit/offset docs. However, with no output schema, the description does not indicate what a returned child entry contains (key, name, rank), leaving a modest gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents key, limit, and offset thoroughly, including an example parent key. The description's parenthetical examples echo that without adding syntax or semantics 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get direct taxonomic children of a taxon', with concrete examples (species under a genus). The word 'direct' contrasts implicitly with the sibling gbif_species_parents and with recursive descendants, but no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Useful for exploring taxonomy hierarchically' implies a use case but gives no explicit when-to-use/when-not guidance against alternatives such as gbif_species_parents, gbif_species_related, or gbif_species_get. The agent must infer which taxonomy-navigation tool fits.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_species_descriptionsA
Read-onlyIdempotent

Get textual descriptions for a species from various sources. Includes morphological descriptions, habitat information, behavior, and other narrative content.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesGBIF species key. The unique identifier of the species whose textual descriptions you want to retrieve. Example: 5219404 (Panthera leo) returns descriptions about lion morphology, behavior, habitat preferences, and life history from various authoritative sources.
limitNoMaximum number of description records to return per page. A species may have multiple descriptions from different sources. Range: 1-1000, default: 20.
offsetNoPagination offset. Determines the starting point for results. A limit of 20 and offset of 40 will get the third page of 20 results. Default: 0.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/openWorld/non-destructive, so the safety profile is covered. The description adds useful context beyond that: descriptions come 'from various sources' (implying variable provenance and possibly multiple records per species) and the content is narrative, not structured.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, front-loaded with the action and resource, followed by the content scope. No redundant or padding language.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only lookup with full schema coverage and no output schema, the description tells the agent what kind of content comes back and that sources vary. It is nearly complete, missing only an explicit pointer to sibling species tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; key, limit and offset are fully documented in the schema, including a Panthera leo example and pagination semantics. The description adds no parameter-level information, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get textual descriptions for a species') and enumerates the content types (morphology, habitat, behavior). It is clearly distinguishable from functional siblings like gbif_species_media or gbif_species_distributions, though it does not explicitly name them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: fetch narrative text for a species. There is no explicit when-to-use, no exclusions, and no mention of the related species siblings (media, vernacular_names, distributions) that an agent might confuse it with.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_species_distributionsB
Read-onlyIdempotent

Get known geographic distribution records for a species. Includes information about occurrence status, establishment means, and locality details.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesGBIF species key. The unique identifier of the species whose geographic distribution you want to retrieve. Example: 5219404 (Panthera leo) returns distribution records showing where lions occur (e.g., sub-Saharan Africa), their establishment status (native/introduced), and occurrence status (present/absent/extinct). Includes both native and introduced ranges.
limitNoMaximum number of distribution records to return per page. A species may have distribution records for multiple regions/countries. Range: 1-1000, default: 20.
offsetNoPagination offset. Determines the starting point for results. A limit of 20 and offset of 40 will get the third page of 20 results. Default: 0.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered. The description adds useful content context by naming the record fields (occurrence status, establishment means, locality details), but it does not mention pagination behavior, rate limits, or authentication requirements. This is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste, and the core purpose is front-loaded. The second sentence efficiently lists the record contents without padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only list tool with a fully described schema and safety annotations, the description is nearly complete. It conveys the return-content categories, though it stops short of noting that results are paginated or describing the record shape, which would help since no output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already fully documents key, limit, and offset. The description adds no parameter-level meaning, syntax, or format details beyond what the schema provides. A baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Get known geographic distribution records for a species.' It clarifies the kind of data returned (occurrence status, establishment means, locality details), which separates it from generic species lookup tools. It does not explicitly name sibling alternatives like gbif_species_get or gbif_occurrence_search, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no mention of alternative tools. An agent must infer that this is for distribution data specifically and cannot tell from the description alone how it differs in use case from gbif_species_get, gbif_maps_get_tile_url, or gbif_occurrence_search.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_species_getB
Read-onlyIdempotent

Get detailed information about a specific species by its GBIF key.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesThe GBIF unique identifier for a species (usageKey). This is a numeric key that uniquely identifies a taxon in the GBIF backbone taxonomy. Example: 5219404 (Panthera leo - African lion).

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safe-read profile is fully covered and the bar is low. The description adds no behavioral context beyond the annotations (no note on what the record contains, caching, or missing-key behavior), so it is merely adequate rather than enriching.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the verb, resource, and input are all in one clause.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with comprehensive annotations and no output schema, the definition is nearly sufficient. The remaining gap is that it never characterizes what 'detailed information' comprises, which matters given how many sibling tools carve up species data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: the 'key' property is documented in rich detail (usageKey, backbone taxonomy, worked example 5219404 for Panthera leo). The description adds nothing beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('detailed information about a specific species') keyed by GBIF key. However, 'detailed information' is vague against a large sibling family (gbif_species_descriptions, gbif_species_media, gbif_species_metrics, gbif_species_synonyms, gbif_species_vernacular_names) that each return a specific slice; the description does not clarify that this returns the core species record as opposed to those specialized subsets.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use, when-not-to-use, or alternative is mentioned. It gives the input form ('by its GBIF key') but nothing that helps an agent choose between this and the many other species tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_species_matchB
Read-onlyIdempotent

Fuzzy match a species name against the GBIF backbone taxonomy.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSpecies scientific name to match against the GBIF backbone taxonomy. Can be a full or partial scientific name. Example: "Panthera leo" or "Puma concolor". The matching algorithm is fuzzy and will try to find the best match even with misspellings.
strictNoUse strict matching mode. When false (default), allows fuzzy matching with typo tolerance. When true, only exact matches are returned. Recommended: false for most use cases to handle name variations and historical synonyms.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the behavioral notion that matching is fuzzy, but says nothing about result confidence, no-match behavior, or what happens with ambiguous names. With annotations doing the heavy lifting, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single tight sentence with the core action front-loaded and no filler. It is efficient, though it is arguably too sparse for a tool whose output shape and disambiguation behavior matter.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, fully-schema-documented tool this is nearly adequate, but with no output schema the agent has no idea what a 'match' returns (accepted name, taxon key, confidence, alternatives). That gap matters for deciding whether to call this versus sibling species tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: both 'name' and 'strict' are fully documented in the input schema, including the fuzzy/strict distinction and an example. The description adds no syntax or format detail beyond what the schema already provides, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (fuzzy match) and resource (species name) plus the target authority (GBIF backbone taxonomy), so the agent knows exactly what the tool does. However, it does not distinguish itself from near-neighbors like gbif_species_parse_names, gbif_species_suggest, or gbif_species_search, leaving the agent to guess which matching tool fits a given case.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no when-to-use guidance, prerequisites, or named alternatives, despite several similar species tools in the sibling list. The only usage-like hint (fuzzy vs strict) lives in the schema, not the description, so the agent gets no routing help here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_species_mediaA
Read-onlyIdempotent

Get associated multimedia records for a species including images, sounds, and videos. Returns URLs and metadata for media resources from various sources.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesGBIF species key. The unique identifier of the species whose multimedia you want to retrieve. Example: 5219404 (Panthera leo) returns images, videos, and sound recordings of lions from sources like Wikimedia Commons, Encyclopedia of Life, iNaturalist, and other providers. Each media record includes URLs, license information, and attribution.
limitNoMaximum number of media records to return per page. A species can have many photos, videos, and sounds from various sources. Range: 1-1000, default: 20.
offsetNoPagination offset. Determines the starting point for results. A limit of 20 and offset of 40 will get the third page of 20 results. Default: 0.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld, and non-destructive, so the safety profile is covered. The description reinforces openWorld by noting media come 'from various sources' and that it returns URLs plus metadata, but adds no auth, rate-limit, or pagination-behavior detail beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loaded with the core action and content types, with the return-shape note second. No filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully states that it returns URLs and metadata, and all three parameters are fully specified in the schema. Missing only minor context such as typical volume of results or attribution/licensing caveats hinted at in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%; the key, limit, and offset parameters are all thoroughly documented in the schema, including an example species key and pagination semantics. The description adds no parameter-level meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get associated multimedia records for a species') and enumerates the content types (images, sounds, videos), so the agent can tell it apart from gbif_species_get or gbif_species_descriptions conceptually. It does not, however, explicitly name or contrast with any sibling tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the purpose: call it when you want media for a known species key. There is no explicit when-to-use, when-not-to-use, or alternative routing (e.g., when to prefer occurrence media or how it relates to gbif_species_descriptions).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_species_metricsA
Read-onlyIdempotent

Get quick occurrence statistics for a species without running full searches. Returns total occurrence count, dataset count, country count, and basis of record breakdown. Fast endpoint perfect for species profile pages, dashboards, and quick data availability checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesGBIF species key. The unique identifier of the species whose metrics you want. Example: 5231190 (Panthera leo) returns occurrence count, geographic spread, and data quality metrics.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context by disclosing exactly which aggregates come back and that the endpoint is fast/lightweight, though it says nothing about rate limits or pagination behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with the core action and output list, followed by usage context. The 'perfect for...' phrasing is slightly promotional but still earns its place as routing guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only aggregate tool with no output schema, the definition is largely complete: it explains what is returned and when to use it, and annotations cover safety. Only minor gaps remain (no mention of what happens with an invalid key or any caching/limits).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'key' parameter is already fully documented in the schema, including an example. The description adds nothing about the parameter itself, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (get occurrence statistics for a species) and enumerates the exact metrics returned, which helps distinguish it from the many search/count siblings. It contrasts with 'full searches' but never names the specific alternative tools (e.g. gbif_occurrence_count or gbif_occurrence_search), so differentiation is implied rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides clear usage context ('perfect for species profile pages, dashboards, and quick data availability checks') and implicitly routes away from heavyweight searches. However it never states when NOT to use it or names a concrete alternative endpoint, so it stops short of explicit when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_species_parentsA
Read-onlyIdempotent

Get the complete taxonomic classification path from kingdom down to the specified taxon. Returns the full hierarchy including all parent taxa. Useful for breadcrumb navigation and understanding taxonomic position.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesGBIF species/taxon key. The unique identifier of the taxon whose complete classification path you want to retrieve. Example: 5219404 (Panthera leo) returns the full hierarchy: Kingdom Animalia → Phylum Chordata → Class Mammalia → Order Carnivora → Family Felidae → Genus Panthera → Species Panthera leo. Useful for displaying breadcrumb navigation and understanding where a taxon fits in the tree of life.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is fully covered. The description adds that the response is the full hierarchy of parent taxa, which is useful given there is no output schema, but says nothing about behavior for root taxa or invalid keys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action. Minor redundancy between 'complete taxonomic classification path' and 'full hierarchy including all parent taxa,' but no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only tool with full annotation coverage, a 100%-documented schema, and no output schema, the description supplies the response shape (kingdom-to-taxon lineage). Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'key' parameter is documented in the schema with an example (5219404 Panthera leo) showing the exact return lineage. The description adds no meaning beyond what the schema already provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get the complete taxonomic classification path from kingdom down to the specified taxon.' The upward direction of traversal is clear, which implicitly separates it from descendant-oriented siblings, but no sibling is named explicitly (e.g., gbif_species_children, gbif_species_get).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Useful for breadcrumb navigation and understanding taxonomic position' gives an implied usage context, but there is no explicit when-to-use guidance or when-to-prefer-an-alternative statement among the many species_* siblings. Adequate but leaves routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_species_parse_namesA
Read-onlyIdempotent

Parse and standardize scientific names in batch using GBIF's name parser. Extracts genus, species, authorship, rank, and more from scientific name strings. Essential for data cleaning, quality checking, and standardizing names from spreadsheets or databases. Handles up to 1000 names per request.

ParametersJSON Schema
NameRequiredDescriptionDefault
namesYesArray of scientific names to parse. Each name is a string that may include authorship, year, and infraspecific epithets. Examples: ["Panthera leo (Linnaeus, 1758)", "Puma concolor", "Quercus robur L."]. Maximum: 1000 names per request. Returns parsed components for each name including: genus, specificEpithet, scientificName, authorship, year, rank, and parsing quality indicators.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, open-world, and non-destructive, so the safety profile is covered. The description's only behavioral addition is the 1000-name batch cap, which is duplicated in the schema, and it says nothing about how unparseable names are reported or what the quality indicators mean. Modest added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tightly packed sentences: what it does, what it extracts, why it matters, and the size limit. Front-loaded and free of redundancy, though 'Essential for...' is mildly promotional rather than informational.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read-only parser with no output schema, the description supplies the batch limit, the extracted components, and the use context; the schema's parameter text also enumerates returned fields. Missing only failure/quality behavior for unparseable names, which is a minor gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage, including format examples and a list of returned components, so the schema carries the load. The description only restates the batch limit and extracted fields rather than adding new semantics. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Parse and standardize scientific names') and adds scope ('in batch') plus output fields (genus, species, authorship, rank). However, it never distinguishes itself from close siblings like gbif_species_match, gbif_species_suggest, or gbif_species_search, which an agent could plausibly confuse with name parsing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete contexts for use: data cleaning, quality checking, and standardizing names from spreadsheets or databases. It stops short of naming alternatives or stating when NOT to use it (e.g., single-name lookups should go to gbif_species_match), so it is clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_species_suggestA
Read-onlyIdempotent

Get species name suggestions for autocomplete functionality.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesPartial species name for autocomplete suggestions. Minimum 2 characters required. Example: "Pant" to get suggestions like "Panthera", "Panthera leo", etc.
limitNoMaximum number of suggestions to return. Controls the number of autocomplete results. Range: 1-100, default: 10.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description's only added behavioral signal is the autocomplete framing (partial-match, suggestion-style output); it says nothing about ranking, whether vernacular names are included, or result ordering.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single eight-word sentence with the verb and purpose front-loaded; nothing is wasted or buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter lookup with full schema coverage and annotations carrying the safety profile, the definition is minimally viable. It is still thin on the one thing that matters here: how suggestions differ from gbif_species_search results, which is not covered by any structured field.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the q/limit parameters are fully documented in the schema (min length, range, defaults, example). The description adds no syntax or format detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ("Get species name suggestions") and the "autocomplete" framing signals partial/prefix lookup rather than full search. However, it never names or contrasts with close siblings like gbif_species_search, gbif_species_match, or gbif_species_parse_names, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by "for autocomplete functionality," which tells the agent this is a typeahead-style lookup rather than a full search. There is no explicit when-to-use/when-not guidance and no alternative tool named, leaving the routing decision against gbif_species_search to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_species_synonymsA
Read-onlyIdempotent

Get all synonyms and alternative scientific names for a species. Useful for name resolution and historical name tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesGBIF species key. The unique identifier of the accepted species whose synonyms you want to retrieve. Example: 2435099 (Felis leo) shows that this is a synonym of Panthera leo, along with other historical names. Synonyms include both homotypic (same type specimen) and heterotypic (different type specimen) synonyms.
limitNoMaximum number of synonyms to return per page. Controls pagination. A species can have many historical synonyms. Range: 1-1000, default: 20.
offsetNoPagination offset. Determines the starting point for results. A limit of 20 and offset of 40 will get the third page of 20 results. Default: 0.

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds no behavioral context beyond that, such as whether results are paginated or how synonyms are ordered. With annotations carrying the safety burden, a 3 is appropriate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with no redundancy. The second sentence is slightly soft ('useful for...') but does earn its place as the only usage signal present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only lookup with fully documented parameters and annotations covering safety and idempotency, the description is nearly sufficient. Since there is no output schema, it could say more about the shape of the returned synonym records, but nothing an agent needs to call it correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the 'key', 'limit', and 'offset' descriptions are unusually rich (they even explain homotypic vs heterotypic synonyms and give an example key). The description adds no parameter meaning of its own, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get all synonyms and alternative scientific names for a species.' This clearly separates it from gbif_species_get (accepted taxon) and hints at the scientific-name domain versus gbif_species_vernacular_names, but it never explicitly names those siblings or draws the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Useful for name resolution and historical name tracking' implies when the tool is relevant but gives no conditions, prerequisites, or alternatives (e.g., when to use this versus gbif_species_match or gbif_species_parse_names). Usage is implied rather than directed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_species_vernacular_namesB
Read-onlyIdempotent

Get vernacular (common) names for a species in multiple languages. Returns preferred names when available.

ParametersJSON Schema
NameRequiredDescriptionDefault
keyYesGBIF species key. The unique identifier of the species whose common names you want to retrieve. Example: 5219404 (Panthera leo) returns "African Lion", "Lion", "León", etc.
limitNoMaximum number of vernacular names to return per page. Controls pagination. Range: 1-1000, default: 20.
offsetNoPagination offset. Determines the starting point for results. A limit of 20 and offset of 40 will get the third page of 20 results. Default: 0.
languageNoISO 639-1 language code filter to retrieve names in a specific language. 2-letter code. Example: "en" (English), "es" (Spanish), "fr" (French), "de" (German), "pt" (Portuguese), "zh" (Chinese), "ja" (Japanese). Omit to get names in all available languages.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and non-destructive behavior, so the safety profile is covered. The description adds one behavioral note—that preferred names are returned when available—but says nothing about empty results, per-language coverage, or pagination behavior beyond what the schema states.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with the core purpose front-loaded and no filler. The second sentence ('Returns preferred names when available') is mildly vague but does add a distinct point rather than restating the first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a four-parameter tool with full schema coverage and rich annotations, the description is adequate but thin on the output side: there is no output schema, yet the shape of a vernacular-name result (name, language, preferred flag) is never described. Inputs and safety are well covered; returns are not.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: key, limit, offset, and language are each documented with examples and defaults in the schema itself. The description mentions multi-language support but adds no syntax, defaults, 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.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Get vernacular (common) names for a species' clearly distinguishes it from siblings like gbif_species_synonyms, gbif_species_descriptions, and gbif_species_distributions. It does not name any sibling explicitly, but the resource is unambiguous enough that an agent can route without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance is given, and no alternative is named (e.g., would an agent use this or gbif_species_get for common names?). The phrase 'in multiple languages' implies a use case for language filtering, but that is inference, not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_validator_get_statusA
Read-onlyIdempotent

Check the status of an asynchronous Darwin Core Archive validation job. Validation is processed asynchronously, so use this tool to poll for completion and retrieve results. Returns validation status, progress, and results when complete.

ParametersJSON Schema
NameRequiredDescriptionDefault
validationKeyYesValidation job key/ID returned by gbif_validator_validate_dwca. Unique identifier for the validation task. Use to check progress and retrieve results. Example: validation key from previous validation request.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds behavior beyond the annotations: validation runs asynchronously, so this is a polling operation that returns status, progress, and results only once complete. Annotations already cover safety (readOnly, idempotent, non-destructive), so this added polling/return context is the right kind of contribution; it omits only error/retry behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core purpose followed by the polling rationale and return contents; every sentence is relevant. Minor redundancy in restating 'asynchronous' across the first two sentences keeps it from a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, and the description compensates by naming what is returned (status, progress, results). Missing details about polling cadence or behavior on an invalid/expired key are minor gaps for a single-key read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is one required parameter (validationKey) with 100% schema coverage, so the schema already explains it as the ID returned by gbif_validator_validate_dwca. The description adds nothing about the parameter, which is the expected baseline when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource — 'Check the status of an asynchronous Darwin Core Archive validation job' — and frames the scope as polling an existing job rather than creating one. This cleanly separates it from the sibling gbif_validator_validate_dwca, which starts validation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells the agent to use it 'to poll for completion and retrieve results' after an async job exists, which implies the correct point in the workflow. It stops short of naming the alternative tool or stating what to do if the key is unknown/expired, so it is strong but not fully specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_validator_validate_dwcaA

Validate a Darwin Core Archive (DwC-A) file against GBIF standards. Checks data structure, required fields, data quality, and format compliance. Returns validation report with issues, warnings, and recommendations. Essential before publishing datasets to GBIF.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileUrlYesPublic URL of the Darwin Core Archive (.zip file). Must be publicly accessible via HTTP/HTTPS. The archive should contain meta.xml, occurrence.txt or equivalent core file, and optional extension files. Example: "https://example.com/dataset.zip". File will be downloaded and validated asynchronously.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=false, idempotentHint=false and openWorldHint=true, and the description adds useful scope about what is checked (structure, required fields, quality, format) and that a report is returned. However, it omits the asynchronous download/validation behavior that the schema mentions, which is the most consequential trait for an agent to know.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the action and followed by scope, output, and usage. Each sentence contributes, though "checks data structure, required fields, data quality, and format compliance" partially restates "validate against GBIF standards."

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does supply the return shape (issues, warnings, recommendations) and the validation scope. The main gap is the asynchronous execution model, which is left only to the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema coverage is 100%, so the schema fully documents fileUrl's format, accessibility requirement, and contents. The description adds only the general notion of a DwC-A file, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (validate a Darwin Core Archive file) plus the standard it validates against (GBIF), which cleanly separates it from gbif_validator_validate_tabular and gbif_validator_get_status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Essential before publishing datasets to GBIF" gives one when-to-use cue, but there is no explicit contrast with the sibling gbif_validator_validate_tabular or gbif_validator_get_status, so the agent must infer which validator applies to which input.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_validator_validate_tabularB

Validate tabular data files (CSV, TSV) against Darwin Core standards before creating archives. Checks column headers, data types, required fields, and format compliance. Useful for data preparation workflows, pre-publication validation, and quality assurance before creating Darwin Core Archives. Returns validation report with field-level issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
fileUrlYesPublic URL of the tabular file (.csv or .tsv). Must be publicly accessible. The file should have Darwin Core term headers (scientificName, decimalLatitude, etc.). Example: "https://example.com/occurrences.csv". Will be validated against DwC standards.
fileTypeNoFile format. CSV (comma-separated) or TSV (tab-separated). Default: CSV. Determines delimiter used for parsing.CSV

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=false, idempotentHint=false, openWorldHint=true, so the agent knows this is a non-idempotent open-world operation. The description adds that a validation report with field-level issues is returned, but it does not explain the non-read-only/non-idempotent behavior (likely job creation) or that the URL must be publicly fetchable – a key operational constraint left to the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and resource, then checks, then use cases, then return value – a sensible order. Slight redundancy between 'before creating archives' and 'before creating Darwin Core Archives', which costs a bit of tightness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description does carry some return-value burden and addresses it briefly ('validation report with field-level issues'). But for an open-world, non-idempotent tool that fetches a remote URL, it omits whether validation is synchronous or job-based (the existence of gbif_validator_get_status hints at the latter) and any URL accessibility failure behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both fileUrl (file format expectations, DwC headers, public accessibility) and fileType (enum, delimiter) are fully documented by the schema. The description adds no parameter detail beyond naming CSV/TSV, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (validate) and resource (tabular CSV/TSV files) plus what is checked (headers, types, required fields, format compliance). It implicitly separates itself from gbif_validator_validate_dwca by scoping to raw tabular files, but never names that sibling, so the differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives usage context ('data preparation workflows, pre-publication validation, quality assurance before creating Darwin Core Archives'), which implies when to reach for it. However, it never states when NOT to use it or which sibling to pick instead – notably when to use this versus gbif_validator_validate_dwca (whole archive) or gbif_validator_get_status (job results).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_vocabularies_getA
Read-onlyIdempotent

Get a specific controlled vocabulary with all its concepts and definitions. Returns the complete vocabulary including all valid values, descriptions, and usage notes. Use to understand valid values for specific GBIF fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesVocabulary name. The identifier of the vocabulary to retrieve. Common vocabularies: "BasisOfRecord" (observation types), "EstablishmentMeans" (native/introduced status), "DegreeOfEstablishment" (invasion stages), "Pathway" (introduction routes), "OccurrenceStatus" (present/absent). Get names from gbif_vocabularies_list.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, and open-world, so the safety profile is covered. The description adds useful return-content disclosure (all valid values, descriptions, usage notes), which matters because no output schema exists, though it says nothing about size or pagination for large vocabularies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with the core action before the return detail and the use case. The second sentence largely restates the first's 'all its concepts and definitions' clause, which is minor duplication rather than a structural flaw.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with full schema coverage and complete annotations, the definition supplies what is missing: a plain-language statement of what comes back. No output schema exists, so the return summary is genuinely additive; only pagination/size behavior remains unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema itself lists example vocabulary names and points to gbif_vocabularies_list. The description contributes no parameter-level detail beyond what the schema already provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get a specific controlled vocabulary') and clarifies scope by saying it returns the complete vocabulary with all concepts and definitions, which separates it from the list and single-concept siblings. It never names those siblings explicitly, so the differentiation is implied rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use to understand valid values for specific GBIF fields" gives a positive use case, so usage is implied rather than absent. There is no when-not guidance and no reference to gbif_vocabularies_list or gbif_vocabularies_get_concept as alternatives, even though those are the obvious near-neighbors.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_vocabularies_get_conceptA
Read-onlyIdempotent

Get detailed information about a specific concept within a controlled vocabulary. Returns the concept definition, usage notes, related terms, and examples. Use to understand the precise meaning and usage of specific vocabulary terms.

ParametersJSON Schema
NameRequiredDescriptionDefault
conceptYesConcept name within the vocabulary. The specific term to look up. Examples: For BasisOfRecord: "HUMAN_OBSERVATION", "PRESERVED_SPECIMEN". For EstablishmentMeans: "NATIVE", "INTRODUCED", "NATURALISED". Case-sensitive.
vocabularyYesVocabulary name. The controlled vocabulary containing the concept. Example: "BasisOfRecord", "EstablishmentMeans", "DegreeOfEstablishment". Get from gbif_vocabularies_list.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, covering the safety profile. The description adds genuine behavioral value by disclosing the return contents (definition, usage notes, related terms, examples), which annotations cannot express.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action, and no filler. The third sentence overlaps somewhat with the opening purpose statement, a minor redundancy that keeps it from a top score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly compensates by naming the returned fields, and the read-only annotations cover the rest of the safety profile. For a simple two-parameter lookup, this is nearly complete; only the relationship to sibling vocabulary tools is unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: the schema already documents that vocabulary comes from gbif_vocabularies_list and gives case-sensitive examples per vocabulary. The description adds no parameter-level detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (get) and resource (a concept within a controlled vocabulary) and enumerates what comes back: definition, usage notes, related terms, examples. However, it does not distinguish itself from the sibling gbif_vocabularies_get, which presumably retrieves the vocabulary itself, leaving the agent to infer the boundary between the two.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use to understand the precise meaning and usage of specific vocabulary terms" gives a clear context for invocation. It stops short of naming when NOT to use it or pointing to the sibling vocabulary-level tool, so it is clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

gbif_vocabularies_listA
Read-onlyIdempotent

List all controlled vocabularies used in GBIF. Vocabularies define valid values for fields like basisOfRecord, establishmentMeans, occurrenceStatus, etc. Essential for understanding valid filter values and data standardization.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly=true, idempotent=true, openWorld=true, so the safety profile is covered. The description adds that vocabularies enumerate valid field values (basisOfRecord, occurrenceStatus, etc.), which is useful context, but says nothing about return size or response shape beyond the schema note.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with the action and scope, each adding a distinct piece of information. The closing 'Essential for...' sentence is mildly promotional but still justifies the tool's relevance to filter-value discovery.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a parameterless read-only list tool with no output schema, the description supplies enough conceptual context (what vocabularies are, which fields they govern) for an agent to use it correctly. Return-value details are absent but reasonably unnecessary here.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero input parameters, so parameter semantics carry no burden; the baseline of 4 applies. The schema description and the prose agree that no filtering is offered.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb+resource: 'List all controlled vocabularies used in GBIF.' The 'all' scope implicitly distinguishes it from the gbif_vocabularies_get_concept sibling, though it never names that alternative explicitly, keeping it just short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear usage context: 'Essential for understanding valid filter values and data standardization,' telling the agent why it would call this. It stops short of stating when NOT to use it or pointing to the get_concept sibling for single-concept lookups.

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. 58 tool updatesv1.1.0
    • First observedgbif_literature_get
    • First observedgbif_literature_search
    • First observedgbif_maps_get_raster_tile_url
    • First observedgbif_maps_get_tile_url
    • First observedgbif_maps_get_vector_tile_url
    • First observedgbif_maps_list_styles
    • First observedgbif_occurrence_count
    • First observedgbif_occurrence_counts_by_basis_of_record
    • First observedgbif_occurrence_counts_by_country
    • First observedgbif_occurrence_counts_by_dataset
    • First observedgbif_occurrence_counts_by_publishing_country
    • First observedgbif_occurrence_counts_by_publishing_org
    • First observedgbif_occurrence_counts_by_taxon
    • First observedgbif_occurrence_counts_by_year
    • First observedgbif_occurrence_download_predicate_builder
    • First observedgbif_occurrence_download_request
    • First observedgbif_occurrence_download_status
    • First observedgbif_occurrence_get
    • First observedgbif_occurrence_search
    • First observedgbif_occurrence_verbatim
    • First observedgbif_registry_dataset_document
    • First observedgbif_registry_dataset_metrics
    • First observedgbif_registry_get_collection
    • First observedgbif_registry_get_dataset
    • First observedgbif_registry_get_installation
    • First observedgbif_registry_get_institution
    • First observedgbif_registry_get_network
    • First observedgbif_registry_get_node
    • First observedgbif_registry_get_organization
    • First observedgbif_registry_list_nodes
    • First observedgbif_registry_network_datasets
    • First observedgbif_registry_organization_datasets
    • First observedgbif_registry_search_collections
    • First observedgbif_registry_search_datasets
    • First observedgbif_registry_search_installations
    • First observedgbif_registry_search_institutions
    • First observedgbif_registry_search_networks
    • First observedgbif_registry_search_organizations
    • First observedgbif_species_children
    • First observedgbif_species_descriptions
    • First observedgbif_species_distributions
    • First observedgbif_species_get
    • First observedgbif_species_match
    • First observedgbif_species_media
    • First observedgbif_species_metrics
    • First observedgbif_species_parents
    • First observedgbif_species_parse_names
    • First observedgbif_species_related
    • First observedgbif_species_search
    • First observedgbif_species_suggest
    • First observedgbif_species_synonyms
    • First observedgbif_species_vernacular_names
    • First observedgbif_validator_get_status
    • First observedgbif_validator_validate_dwca
    • First observedgbif_validator_validate_tabular
    • First observedgbif_vocabularies_get
    • First observedgbif_vocabularies_get_concept
    • First observedgbif_vocabularies_list

TDQS

B3.4/5.0

Scored across 58 tools

Disambiguation4/5

Most tools have distinct purposes, but several families overlap: seven occurrence counts_by_* tools, three map tile URL generators, and species search/suggest/match could cause misselection. Descriptions help, but boundaries are not always crisply distinct.

Naming Consistency5/5

All tools follow a consistent gbif_{domain}_{action} snake_case convention. There is no mixing of camelCase or vague verb styles, making the naming predictable and readable.

Tool Count1/5

58 tools is an extreme mismatch for a single server; many could be consolidated (e.g., facet counts, tile URL types). This bloats the surface and increases the selection burden on agents.

Completeness5/5

The surface covers all major GBIF domains: species taxonomy, occurrence search/download/counts, registry (datasets, organizations, networks, installations, collections, institutions, nodes), maps, literature, vocabularies, and validation. The read-only scope is appropriate for a data access API.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables interaction with the Atlas of Living Australia API to search and access 152+ million biodiversity records. Supports occurrence searches, spatial queries, bulk data downloads, and taxonomic data retrieval through natural language.
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Enables AI assistants to query and retrieve biodiversity data from the Global Biodiversity Information Facility (GBIF), including species, occurrences, datasets, and literature.
    58
    51 npm
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables querying biodiversity data from the Global Biodiversity Information Facility (GBIF) API v1, supporting species occurrence searches and other GBIF endpoints through natural language.
    11 npm
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI clients to access virome datasets and external bioinformatics APIs through MCP tools, including Wikipedia, PubMed, NCBI Taxonomy, read-only SQL over S3 Parquet, pandas/Plotly analyses, and map visualizations, while keeping the client decoupled from data and business logic.
    -