Skip to main content
Glama

Passage Data — cited environmental limits

Build a Darwin Core archive

build_dwc_archive
Idempotent

A file this tool reads, sent or fetched from the address given, is read as one dropped on our website: what the read finds (column headings, the shape of its rows, the terms they became, refusal codes) is kept so the reader learns, never the file or its values. Names and contacts are dropped or replaced by a code, and protected species' locations are made coarser. How do I publish a species file on GBIF? A Darwin Core archive (DwC-A) for GBIF, built from a species occurrence or checklist file (CSV, TSV, Excel, a zipped shapefile, ...) given as file_url (a public https address the door fetches) or content_base64, or from a list of names (species: a checklist). The converter is the one behind map_to_darwin_core: it maps every column, checks every value and writes occurrence.txt (or taxon.txt), meta.xml and eml.xml. The answer: archive (core, records, rows read and lost, terms, bytes, sha256, publishable with what GBIF still needs); the zip itself, as an embedded resource when it is at most 32 KB (a larger one comes whole, as base64, from POST /api/v1/dwc/archive with the same arguments); could_not_read = each thing the converter would not guess, coded (a column no term carries, a row with no date or position, a 0,0 coordinate, a name the naming authority does not match, repeated rows), with what it costs; and notices (records of species a conservation register lists, at the precision filed). GBIF indexes an archive only with a title, an abstract, a licence and a creator and a contact (given name, surname, organisation, email): give them in metadata, nothing is filled in. chapman_category (1-4: the data holder's own sensitivity category under Chapman 2020) coarsens the coordinates of listed species and says so in the archive. columns names the column for a term where your user decided it (map_to_darwin_core's reading, corrected); the converter still checks the values and refuses what they contradict. Our counter keeps how the file came, the core and the counts. When your user confirmed columns and you send columns_confirmed_by_user: true, each confirmed column's words and its term (never a value) are also read as a label to teach the converter, and the answer's learned says so. Large files take a minute.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "build_dwc_archive"
  }
}

Input Schema

NameRequiredDescriptionDefault
coreNooccurrence (default for a file: one row an observation) or checklist (one row a taxon; the default for species).
columnsNoOptional, with a file: {Darwin Core term: the column that carries it} where your user decided (e.g. {"scientificName": "Espèce", "eventDate": "Date relevé"}). A choice, not an order: the values are still checked.
speciesNoInstead of a file: scientific names, one an entry, for a checklist archive (Taxon core).
file_urlNoA public https address of the file; the door fetches it (at most 10 MB). Not with content_base64 or species.
filenameNoThe file's name with its extension (survey.xlsx, sites.zip): it tells the converter how to read the bytes. Taken from file_url when omitted.
metadataNoThe dataset's metadata for eml.xml, as the data holder states it.
content_base64NoThe file's bytes as base64 (at most 10 MB decoded). Not with file_url or species.
chapman_categoryNoOptional: your sensitivity category under Chapman 2020 (1 = least, 4 = most withheld). Coordinates of species a conservation register lists are generalised to its grid, and the archive says so in dataGeneralizations.
columns_confirmed_by_userNotrue only when your user read and confirmed every entry of `columns` themselves (not your own reading). Each confirmed column's words and term are then kept to teach the converter; nothing else of the file is.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / columns
      Added value: +{
      +  "additionalProperties": {
      +    "type": "string"
      +  },
      +  "description": "Optional, with a file: {Darwin Core term: the column that carries it} where your user decided (e.g. {\"scientificName\": \"Espèce\", \"eventDate\": \"Date relevé\"}). A choice, not an order: the values are still checked.",
      +  "type": "object"
      +}
    • addedInput schema / properties / columns_confirmed_by_user
      Added value: +{
      +  "description": "true only when your user read and confirmed every entry of `columns` themselves (not your own reading). Each confirmed column's words and term are then kept to teach the converter; nothing else of the file is.",
      +  "type": "boolean"
      +}
  2. Added

TDQS

A3.7/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint false, idempotentHint true, openWorldHint true), the description discloses the data-retention policy (column headings, row shape, terms and refusal codes are kept to teach the reader, never the file or its values), privacy transformations (names/contacts dropped or coded, protected-species locations coarsened), a latency expectation, the 32 KB embedded-resource limit with a POST fallback endpoint, and what columns_confirmed_by_user triggers. This is substantive behavioral context that the annotations do not carry.

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

Conciseness2/5

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

The text is a single dense, run-on paragraph written in a stream-of-consciousness register, with rhetorical questions embedded mid-description ('How do I publish a species file on GBIF?', 'The answer:') and no clear front-loading. Much of the size is genuinely informative, but the structure makes it hard to parse and the key purpose sentence is not placed 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?

There is no output schema, and the description compensates by naming the response fields (`archive` with core, records, rows read and lost, terms, bytes, sha256, publishable; `could_not_read` with refusal codes and their cost; `notices`; `learned`). For a 9-parameter, nested-object tool with no output schema, this is nearly complete, though the routing to siblings and some operational limits remain 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 the baseline is 3. The description mostly restates what the schema already says about chapman_category's coordinate coarsening and columns_confirmed_by_user's learning behavior, adding little new parameter meaning; the metadata requirement note is already in the schema's contact/creator descriptions.

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?

Once past the opening privacy paragraph, the description states a specific verb and resource: it builds a Darwin Core archive for GBIF from an occurrence/checklist file (file_url or content_base64) or a species list. It also differentiates itself from the sibling map_to_darwin_core by naming the converter shared between them. The purpose is clear but buried behind a question-and-answer framing rather than front-loaded.

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 states prerequisites (GBIF indexes only with title, abstract, licence, creator and contact supplied via metadata; large files take a minute) and relates itself to map_to_darwin_core, but never explicitly says when to use this tool rather than map_to_darwin_core or audit_archive. Usage is implied through the described prerequisites rather than routed.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.