Skip to main content

Tool Reference

The MCP server exposes tools in four groups: discovery, repo exploration, Flux compute, and visualization. In practice, you don't call these directly — the AI assistant picks and chains them based on your question — but understanding what's available helps you ask better questions and debug unexpected answers.

Every discovery and lookup tool returns a web_url field pointing at the corresponding page in the Arraylake web app. A well-behaved assistant will surface these as clickable links in its response.

Discovery

Tools for finding your way around.

ToolWhat it does
list_orgsLists the organizations you belong to, with the web URL for each.
list_reposLists repositories in an org. Supports text filtering. Returns description, visibility, and timestamps.
get_repo_infoFull metadata for a single repo (description, visibility, creation/update times, default branch).
search_marketplaceSearches the public Marketplace by name, org, or description.
get_marketplace_listingFull listing details: description, readme, license, pricing, sample queries.

Repo exploration

Tools for looking inside a repo without downloading data.

ToolWhat it does
get_repo_treeWalks the hierarchical group/array structure of a repo at a given ref. Reports dtype, shape, and dimensions for each array. Configurable depth up to 5.
get_dataset_infoReturns the xarray schema for a group — dimensions, coordinates, variables, attributes — plus enriched flags (is_datetime, tz_aware, is_multi_dim, indexable_as_range) that help the assistant build valid queries.
get_marketplace_dataset_infoSame as get_dataset_info but targets a public Marketplace listing.
list_refsLists all branches and tags in a repo with their commit IDs.
list_commitsWalks commit history from a branch or tag. Paginated with cursors.
get_commitSingle-commit metadata plus the full diff (new/deleted/updated groups and arrays, chunk counts).

Flux compute

Tools for running actual queries against deployed Flux services. These return live data.

ToolWhat it does
list_compute_servicesLists the Flux services deployed in an org, with protocol, status, and public/private flag.
list_service_datasetsDiscovers queryable datasets on a service. Can be scoped progressively: org → repo → ref → group.
get_service_dataset_infoLike get_dataset_info, but reads the schema via Flux's /_meta/datasets endpoint. Adds filter_hints per variable that encode EDR query pitfalls (see below).
query_edrRuns an OGC EDR query — position, area, or cube — and returns CSV, CoverageJSON, NetCDF, or GeoTIFF. Supports arbitrary dimension filtering.
diagnose_compute_serviceHits /health and /_meta/discovery on a service to distinguish auth problems from deployment problems. Use when any other Flux tool returns an error.
get_service_logsFetches logs from a Flux service. Requires org admin. Capped at 50k characters.

EDR query pitfalls

EDR queries have two traps that return HTTP 500 instead of a nice 400. The get_service_dataset_info response flags both of them in filter_hints per variable, and the MCP server's system instructions tell the assistant to check before querying:

  1. Timezone-naive datetime coordinates reject ISO strings with a trailing Z. Pass 2026-04-15T06:00:00, not 2026-04-15T06:00:00Z.
  2. Multi-dimensional time coordinates (e.g. valid_time(init_time, lead_time) in a forecast dataset) can't be filtered with the standard datetime=... range. Filter on the 1-D component dimensions instead — e.g. init_time=... and step=....

If you see the assistant hit one of these, ask it to call get_service_dataset_info first; the hints make the correct query obvious.

Visualization

Two ways to put data on a map. Either works — which one the assistant picks depends on whether you want to see the map in the chat or embed it somewhere.

render_dataset_map

Opens an interactive pan/zoom map widget directly in the conversation. The widget streams live raster tiles from Flux and supports the full MapLibre interaction model. Parameters include:

  • style — a matplotlib colormap name (viridis, plasma, RdBu_r, …) prefixed with raster/.
  • colorscalerange[min, max] for the colormap.
  • belowmincolor / abovemaxcolor — colors for out-of-range values.
  • Arbitrary dimension filters — time, step, level, etc.

This is the right default for "just show me the data" questions in chat.

note

render_dataset_map is an MCP Apps Extension tool — it returns an embedded interactive widget rather than a plain text/JSON payload. It only works in clients that implement the Apps extension (today, that's Claude.ai and ChatGPT). In other clients its best to fall back to get_tile_url, which any client can render as a Markdown link or use to build its own map.

get_tile_url

Returns an XYZ tile URL template you can plug into MapLibre, Leaflet, Mapbox, OpenLayers, deck.gl, or any other tile-based map library. Two variants come back:

  • tile_url — same-origin, proxied through Arraylake, with a one-hour ticket embedded in the URL. No Authorization header required. Safe to share in a public artifact or static HTML page. Re-mint if you need it longer.
  • upstream_tile_url — direct Flux endpoint. Requires Flux authentication — either an Authorization: Bearer <token> header or HTTP Basic Auth ({org}:{api_key}). Never expires, but exposes your credentials — keep it server-side.

Also returns the dataset's bounding box, center, recommended zoom, and attribution.

Use get_tile_url when the user wants to build their own map — in an artifact, a static HTML page, or an app they're editing.

Prompts

The server also registers one MCP prompt, explore_repo, which walks the assistant through a guided exploration: get_repo_infoget_repo_treeget_dataset_info on the largest group → list_commitslist_refs. Useful as a one-shot "show me what's in org/repo".