OBIS (Ocean Biodiversity Information System) MCP. Global database of marine-species occurrence records: resolve a marine taxon, find georeferenced occurrence records (lat/lng/date/depth), and get aggregate statistics. Complements GBIF with an ocean focus. Keyless.
Three tools with complete input schemas and clear descriptions. Naming follows verb_noun pattern (get_*, find_*). Descriptions are adequate (100-200 chars) and explain purpose. However, output schemas are undocumented, LLMs cannot predict response structure. Parameter descriptions lack constraints (e.g., date format, limit bounds). Error handling is minimal (generic error objects). No tool annotations (readOnlyHint, idempotentHint). Missing guidance on when to use each tool vs. alternatives.
Find georeferenced marine occurrence records (latitude, longitude, date, depth, country, locality, basis of record) for a scientific name from OBIS. Optionally filter by date range. Returns the total match count plus a sample of records.
Get aggregate OBIS statistics for a marine taxon: total occurrence records, distinct species/taxa, contributing datasets, and the observed year range.
Resolve a marine species/genus/family name against OBIS to its taxon record (taxon ID, rank, accepted name, kingdom/phylum/family/genus, and total occurrence-record count). OBIS = global ocean biodiversity occurrence database; complements GBIF with a marine focus. Keyless.
Output schemas not documented. LLMs cannot predict response structure (fields, types, nesting). Responses include raw API fields (e.g., 'records' vs 'occurrence_records') without clear semantics.
Parameter constraints missing. 'limit' in find_occurrences states 'default 20, max 100' in description but lacks minValue/maxValue in schema. Date parameters lack format specification (YYYY-MM-DD stated in text, not enforced).
Error handling is generic. callTool() catches all errors and returns {error: message}. No recovery guidance, no error classification (retryable vs. fatal), no actionable next steps for LLM.
No tool annotations. Tools lack readOnlyHint (all are read-only), idempotentHint (all are idempotent). LLMs cannot infer safety properties and may over-plan or under-retry.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
No pagination support in find_occurrences. Tool returns 'count' and 'total' but no cursor/offset/next_page mechanism. Large result sets (total >> limit) cannot be iterated.