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.
| Tool | What it does |
|---|---|
list_orgs | Lists the organizations you belong to, with the web URL for each. |
list_repos | Lists repositories in an org. Supports text filtering. Returns description, visibility, and timestamps. |
get_repo_info | Full metadata for a single repo (description, visibility, creation/update times, default branch). |
search_marketplace | Searches the public Marketplace by name, org, or description. |
get_marketplace_listing | Full listing details: description, readme, license, pricing, sample queries. |
Repo exploration
Tools for looking inside a repo without downloading data.
| Tool | What it does |
|---|---|
get_repo_tree | Walks 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_info | Returns 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_info | Same as get_dataset_info but targets a public Marketplace listing. |
list_refs | Lists all branches and tags in a repo with their commit IDs. |
list_commits | Walks commit history from a branch or tag. Paginated with cursors. |
get_commit | Single-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.
| Tool | What it does |
|---|---|
list_compute_services | Lists the Flux services deployed in an org, with protocol, status, and public/private flag. |
list_service_datasets | Discovers queryable datasets on a service. Can be scoped progressively: org → repo → ref → group. |
get_service_dataset_info | Like 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_edr | Runs an OGC EDR query — position, area, or cube — and returns CSV, CoverageJSON, NetCDF, or GeoTIFF. Supports arbitrary dimension filtering. |
diagnose_compute_service | Hits /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_logs | Fetches 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:
- Timezone-naive datetime coordinates reject ISO strings with a trailing
Z. Pass2026-04-15T06:00:00, not2026-04-15T06:00:00Z. - Multi-dimensional time coordinates (e.g.
valid_time(init_time, lead_time)in a forecast dataset) can't be filtered with the standarddatetime=...range. Filter on the 1-D component dimensions instead — e.g.init_time=...andstep=....
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 withraster/.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.
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. NoAuthorizationheader 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 anAuthorization: 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_info → get_repo_tree → get_dataset_info on the largest group → list_commits → list_refs. Useful as a one-shot "show me what's in org/repo".