Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
BHOONIDHI_PASSWORDNoOptional headless login. Prefer bhd auth login; fill these out of band, never commit them.
BHOONIDHI_USERNAMENoOptional headless login. Prefer bhd auth login; fill these out of band, never commit them.
BHOONIDHI_MCP_MAX_RESULTSNoMaximum scenes returned inline by search_scenes.50
BHOONIDHI_MCP_DOWNLOAD_ROOTNoAllow-listed root every download writes under, as <root>/<slug>/. The agent cannot choose an arbitrary path.~/Downloads
BHOONIDHI_MCP_FUZZY_THRESHOLDNoScore (0–100) a satellite-name match must clear to be confident; below it, candidates are returned for the agent to confirm.88
BHOONIDHI_MCP_DOWNLOAD_PARALLELNoParallel download workers.4
BHOONIDHI_MCP_LARGE_DOWNLOAD_MBNoOnce a download's live byte total (or known size) passes this, the status flags it large and steers the agent to hand off or run a standalone command.500
BHOONIDHI_MCP_GEOCODER_USER_AGENTNoUser-Agent sent to Nominatim (its usage policy asks for a descriptive one).bhoonidhi-mcp/0.2

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_archiveA

List every satellite and sensor the Bhoonidhi portal supports.

Returns the vocabulary of valid satellites, sensors, and exact search tokens, with each product's resolution and date coverage. Call this to discover what can be searched. Set refresh=True to bypass the local cache.

resolve_locationA

Resolve a place name to a centroid and bounding box.

Turns a place like "Shillong" or "Loktak Lake" into latitude/longitude and a bounding box (minx, miny, maxx, maxy) that search_scenes can use as its area of interest. Returns found=False when the place can't be resolved.

search_scenesA

Search Bhoonidhi scenes for a satellite over an area and date range.

The satellite may be a casual name ("Sentinel-2", "cartosat"); it is matched to the portal's exact tokens, and a constellation expands to all its platforms. Dates are ISO (YYYY-MM-DD). Give the area either as a bounding box (minx/maxx/miny/maxy) or a point with radius (lat/lon/radius_km) — typically from resolve_location. sensor narrows to one sensor on the matched satellite(s) (e.g. "SSAR", "LISS3"); product further narrows to one product under that sensor (e.g. "GCOV", "L2C-Chlorophyll") — see list_archive for the exact sensor/product names each satellite carries. The search is stateless and needs no login.

If the satellite name is ambiguous, returns status="ambiguous_satellite" with candidate names instead of guessing.

Each scene carries an "availability": Ready (downloadable now), Archived (open data but may need a portal request first), OnOrder (must be requested), or Priced (must be purchased). The result includes a plain-English "summary" of these counts and a "how_to_act" block. Tell the user clearly when scenes are Archived, OnOrder, or Priced and what each needs. This search is stateless: to act on these scenes, call save_query with the same arguments to persist them and get a , then download_query (open data) or cart_add (on-order / priced) on that slug — both need a login (see auth_status). Downloads cannot be resumed if interrupted (the portal has no range support).

preview_downloadA

Dry-run a download for a search: show what would be fetched, no login.

Takes the same arguments as search_scenes, plus out_dir (where files would go) and force (preview re-downloading files already present). It runs the search and predicts, per scene, what a real download would do: would_download (staged, ready), may_404 (open data but archived — attempted but may fail until requested on the portal), already_here / already_elsewhere (a matching file exists), or skipped_on_order / skipped_priced (needs the portal).

Use this before telling a user to download, so they know how many scenes are actually fetchable. Nothing is downloaded and no login is used. File sizes are not known until a download starts (the portal exposes them only in the download response headers), and interrupted downloads cannot be resumed — both are stated in the result's disclaimers.

save_queryA

Persist a search as a saved query and return a reusable slug.

Takes the same arguments as search_scenes, plus an optional name and description. Unlike search_scenes (which is stateless and leaves nothing behind), this saves the search on the portal so it can be acted on later: the returned slug is what downloading and cart staging key off. Call this once the user has confirmed a search returns the scenes they want, then hand the slug to the bhd CLI (download / cart) until those actions land in-server.

Returns status="ok" with the slug and the shaped saved query. If the satellite is ambiguous or the request is invalid, returns the same status="ambiguous_satellite" / "invalid_request" shapes as search_scenes, and saves nothing.

list_queriesA

List every saved query as compact summaries.

Returns each saved query's slug, name, date range, satellites, area of interest, scene count, and a plain-English availability summary — but not the full scene lists (call show_query for one query's scenes). Use this to find the slug for a query the user saved earlier.

show_queryA

Return one saved query by slug, with its scenes.

Give the slug from save_query or list_queries. Returns the full saved query: its selections, area of interest, date range, and shaped scenes with availability. Returns status="not_found" if no query has that slug.

remove_queryA

Delete a saved query by slug.

Give the slug from save_query or list_queries. Removes the saved query from disk; the scenes themselves are unaffected. Returns status="not_found" if no query has that slug.

auth_statusA

Report whether a Bhoonidhi login is configured for downloads and cart.

Never asks for or returns a password or token. If credentials are set in the server's environment (BHOONIDHI_USERNAME / BHOONIDHI_PASSWORD) it establishes the session so the answer matches what a download or cart action would find. Returns authenticated=True with the username when a usable session exists, or authenticated=False with guidance to log in ('bhd auth login' out of band, or set those environment variables). Call this before download or cart actions to tell the user if a login is needed.

download_queryA

Download a saved query's open-access scenes in the background.

Give the slug from save_query or list_queries. Downloads run to a fixed, server-configured root (BHOONIDHI_MCP_DOWNLOAD_ROOT, default ~/Downloads), under a per-slug folder — you cannot choose an arbitrary path. select narrows to specific scenes (1-based indices or full scene IDs); omit it for the whole query. force re-downloads files already present.

Needs a login (see auth_status). Priced and on-order scenes are skipped — stage those with cart_add instead. Returns immediately with a job_id: the download runs on its own and does NOT depend on this conversation, so never block by sleeping and re-polling. To follow it hands-free, delegate a background watcher that loops download_wait on the job_id and reports back, keeping you free to keep talking; the result's 'handoff' note says so. File sizes are unknown until each transfer starts (the portal reveals them only then); once a download proves large, download_status/download_wait flag it and 'large_download' offers a standalone command that outlives this session. Interrupted downloads restart from scratch (no resume support).

download_statusA

Check a background download started by download_query (one-off).

Give the job_id from download_query. Returns the live state: running (with bytes_downloaded, mb_downloaded, rate_mb_s, percent when the total size is known, and per-scene detail), completed (with per-scene outcomes), or failed (with the error). Use this for a single progress check. To follow a job to completion without tying up the conversation, use download_wait from a delegated watcher instead. Jobs exist only while the server runs; an unknown id returns status="not_found".

download_waitA

Wait for a background download to finish, then report — for a watcher.

Give the job_id from download_query. Blocks inside the server and returns as soon as the download completes or fails, or after timeout_s (capped at 120s) with the latest progress if still running. This is the efficient way to follow a job: a delegated background watcher calls it in a loop and stops when status is "completed" or "failed", so the main conversation is never blocked on sleeps. Prefer this over repeated sleep+download_status. An unknown id returns status="not_found".

cart_addA

Stage a saved query's scenes to the Bhoonidhi cart.

Give the slug from save_query or list_queries. Each scene is routed to the cart its access type needs (ready / on-order / priced); select narrows to specific scenes (1-based indices or scene IDs). Needs a login (see auth_status). Use this for on-order and priced scenes; priced ones still need purchasing on the portal afterwards. Returns counts of what was staged and what failed.

cart_listA

List scenes currently staged in the Bhoonidhi cart.

Cart items are filed by the date they were added; with no window this shows today only, so pass since/until (ISO dates, e.g. "2026-08-10") or last (e.g. "1 week") to widen it. filter_by limits to a state: ready, archived, onorder, or priced. Needs a login (see auth_status).

cart_removeA

Remove scenes from the Bhoonidhi cart.

Two ways to address rows: pass slug to index a saved query's scenes, or omit it and let select index the merged cart itself (the same row numbers cart_list shows under the same since/until/last/filter_by window). Needs a login (see auth_status).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
archive_resourceThe portal's satellite/sensor vocabulary, as read-only context.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/geovicco-dev/bhoonidhi-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server